Как автоматически проверять ссылки Яндекс Директа на 404 с отправкой в TG

Как автоматически проверять ссылки Яндекс Директа на 404 с отправкой в TG

Привет! Отслеживание ошибки 404 очень важно, так как из-за неработающих ссылок можно потерять бюджет, получить тумаков от клиента и разочароваться в своем профессионализме). Хотя Яндекс автоматически останавливает рекламные кампании при недоступных ссылках, это происходит не всегда и не оперативно.

Поэтому было принято решение, а можно ли написать скрипт(ы), которые позволят получать все активные ссылки из всех текущих аккаунтов клиентов, проверить их на доступность, делать это автоматически и как бонусом отправлять это всё в TG?

Сами скрипты:

За базу возьмем гугл-таблицы (ее функционала и возможностей тут будет достаточно), никакого Python и установок, просто базовый функционал App Script. Делайте по шагам, и у вас всё получится:

1. Для начала готовим пустую гугл-таблицу.

2. В ней создаем лист «config», в нем будут содержаться все логины и токены клиента. Где взять токен? Воспользоваться ссылкой.

Итог, как должна выглядеть таблица.
Итог, как должна выглядеть таблица.

3. Создаем листы content_ads_unique_hrefs, urls_unique, sitelinks_unique, feeds. Про каждый поговорим ниже.

4. Заполняем лист «urls_unique» — сюда будут попадать все уникальные активные ссылки из всего списка аккаунтов, которые вы укажете в config. Единственное, что пока нужно сделать, это добавить заголовок URL.

Вид urls_unique
Вид urls_unique

Открываем App Script.

Расширения - Apps Script
Расширения - Apps Script

Открываем файл из архива: «Парсинг ссылок.txt», копируем код и вставляем в первый исполняемый файл (его можно переименовать).

Код выглядит так.
Код выглядит так.

Сохраняем и запускаем, проверяем работоспособность на парочке аккаунтов.

При первом запуске нужно будет выдать доступ к аккаунту гугла.
При первом запуске нужно будет выдать доступ к аккаунту гугла.
Перейти на страницу.
Перейти на страницу.
Выбрать все доступы и нажать «Продолжить».
Выбрать все доступы и нажать «Продолжить».
Ждем выполнения. Сам скрипт работает долго, имеет задержки и чанки, которые не позволяют крашится, поэтому отнеситесь к задержке с пониманием.
Ждем выполнения. Сам скрипт работает долго, имеет задержки и чанки, которые не позволяют крашится, поэтому отнеситесь к задержке с пониманием.
Всё работает, убедились, поехали дальше.
Всё работает, убедились, поехали дальше.

5. Заполняем остальные аккаунты в config (логин и токен) и переходим в создание триггеров (триггер будет рассматриваться только один раз, по аналогии делается всё остальное).

Переходим в триггеры
Переходим в триггеры
Нажимаем кнопку «Добавить триггер».
Нажимаем кнопку «Добавить триггер».
А далее выбираем все то, что на скрине. Функция основная, которая запускает все dailyActiveUrlsJob. По времени советую ставить ночью.
А далее выбираем все то, что на скрине. Функция основная, которая запускает все dailyActiveUrlsJob. По времени советую ставить ночью.

6. Разбираем лист "sitelinks_unique" - это уникальные быстрые ссылки.

Добавляем еще один скрипт.
Добавляем еще один скрипт.

Вставляем в него код из "Парсинг быстрых ссылок.txt". Сохраняем и запускаем, также проверяя, что все работает корректно.

Если вдруг встретили такую ошибку, просто еще раз сохраните и запустите.
Если вдруг встретили такую ошибку, просто еще раз сохраните и запустите.

Проверяем, что всё работает корректно, и ставим следующий триггер.

Обычно его лучше разнести по времени с проверкой по ссылке, чтобы не было одновременного обращения по API. Поэтому ставим с 4 до 5. За это время скрипт обычно обрабатывает все ссылки (на самом деле быстрее на 47 аккаунтов, но мы для перестраховки берем).
Обычно его лучше разнести по времени с проверкой по ссылке, чтобы не было одновременного обращения по API. Поэтому ставим с 4 до 5. За это время скрипт обычно обрабатывает все ссылки (на самом деле быстрее на 47 аккаунтов, но мы для перестраховки берем).

7. Всё, проверку настроили, теперь нам нужен лист «feeds» — по сути, это единственная ручная работа, которая требует обновления и поддержания актуальности. Так как обращений к фиду через API на текущий момент нет.

Выглядит так же, как и остальные листы.
Выглядит так же, как и остальные листы.

8. Переходим к листу «content_ads_unique_hrefs» — по этому листу будут проверки всех 404 ошибок. Логика работы: сначала делаются редиректы (чтобы исключить появления 301 ошибки, после которой может быть 404), а потом уже по конечной ссылке проверяются коды ответа сервера. Так точнее. Но для начала его нужно подготовить.

Как вы уже наверное поняли, нам нужно сцепить все листы с ссылками в один, убрать дубли.

Вставляем на этот лист заголовок в А1 - TextAd_Href. А в ячейке А2 пишем формулу:

=UNIQUE(
FILTER(
{urls_unique!A2:A;
sitelinks_unique!A2:A; feeds!A2:A};
ДЛСТР({urls_unique!A2:A;
sitelinks_unique!A2:A;feeds!A2:A})
)
)

И получаем все уникальные ссылки со всех 3 листов, больше с этим листом делать ничего не надо.

Лист должен выглядеть так.
Лист должен выглядеть так.

10. Переходим в App Script. Создаём ещё один файл скрипта и вставляем значения из «Проверка 404.txt».

Запустите скрипт. Он сразу начнет работать, но данные появятся позже. Не волнуйтесь, это всего лишь активируется цепочка триггеров. Процесс может занять больше времени из-за строгих правил проверки.
Запустите скрипт. Он сразу начнет работать, но данные появятся позже. Не волнуйтесь, это всего лишь активируется цепочка триггеров. Процесс может занять больше времени из-за строгих правил проверки.
Выдаст примерно такое, в правой колонке будет конечная ссылка, по которой он и проверял код ответа. 200 — хорошо, 404 — плохо, ссылка нерабочая.
Выдаст примерно такое, в правой колонке будет конечная ссылка, по которой он и проверял код ответа. 200 — хорошо, 404 — плохо, ссылка нерабочая.

11. Ставим триггер на это событие.

Просто копируйте настройки. Время выбрано чтобы точно все предыдущие скрипты уже были обработаны.
Просто копируйте настройки. Время выбрано чтобы точно все предыдущие скрипты уже были обработаны.

12. Последний штрих, регаем бота в ТГ. Сам процесс создания бота описывать не буду, вам всего лишь нужно получить API при создании бота + chat ID через бота @username_to_id_bot, инструкция по созданию бота будет ниже. Туда будут приходить все 404 ошибки.

13. Создаём ещё один файл скрипта и вставляем туда код из «Отправка в бота.txt».

Можно протестировать, оставив на листе «content_ads_unique_hrefs» 404 в одном из значений, и запустить.
Можно протестировать, оставив на листе «content_ads_unique_hrefs» 404 в одном из значений, и запустить.
В бот должен прийти список ссылок.
В бот должен прийти список ссылок.

14. Последний шаг, нам нужно опять сделать триггер по времени на отправку в бот.

Копируем настройки и наслаждаемся.
Копируем настройки и наслаждаемся.

Давайте подытожим

1. Скрипт парсит только активные ссылки, сначала из обычных ссылок, потом из быстрых.

2. Скрипт не проверяет фиды, фиды вы должны держать в актуальном состоянии сами.

3. Скрипт проверяет редиректы, в том числе, отдает код ответа сервера и шлет это вам в ТГ в течение дня.

4. Вы самостоятельно можете подбирать тайминги, если вам нужна другая скорость реакции.

5. Удалять ссылки, править что-то еще не нужно. Скрипт делает это автоматом.

На текущем объеме в 47 аккаунтов багов не замечено, если будут вопросы — задавайте. Делитесь с друзьями, так как я пытаюсь сделать всю нашу рекламную жизнь чуть проще каждый день. Успехов!

3
1
Начать дискуссию