Analytics

Поделки

Каждый сейчас и потом я достаточно повезло, чтобы иметь возможность публиковать гостевые посты прославленных людей в аналитики и цифрового маркетинга. На этот раз, я работаю с коллегой, у которого настоящий мастер, когда дело доходит до построения решений, которые делают нашу повседневную работу в цифровой индустрии так гладко.

Эрик Grönroos работает в качестве аналитика в MarkkinointiAkatemia, финская цифровой привлечение клиентов агентства. Работа Эрика-использовать данные и аналитику, чтобы помочь вырасти агентства, а также компании, клиентов с которыми он работает.

В данном руководстве, Эрик поделюсь с вами, как построить приложение, которое поможет вам автоматизировать контроль вашего объявления аккаунтов в Google с помощью языка программирования р с помощью AdWords API интерфейса API и для слабина.

DIY

Я особенно взволнован, чтобы опубликовать эту статью, так как это первый раз (если я правильно помню), что объявления от Google и Р описаны в блоге.

В любом случае, как редактор, все ошибки и ошибки, которые вы можете найти в статье на 100% моя вина, так дайте мне знать в комментариях, если ошибки сохраняются в окончательный проект. Спасибо!

Оглавление

  • Введение
  • Как решение работает
  • Требования
  • О Р
  • Я Эпизод: сценарий Р
  • Теперь, давайте скрипт!
  • Эпизод второй: провисание бот наносит ответный удар
  • Эпизод третий: возвращение хрон
  • Резюме
  • Введение

    В этой статье я покажу вам, как реализовать автоматизированный мониторинг приложение для держать глаз на ваши объявления в google аккаунтов. Поскольку характер реализации является доказательством концепции (псу), я постараюсь сохранить его простым, используя только один практический случай применения для демонстрации сквозного трубопровода:

    С нулевой стоимостью обнаружения в объявлениях счетов, для контроля сроков действия кредитной карты или другие проблемы, которые мешают вашей рекламы от скатывания.

    Эта реализация использует Р и Гугл Эдвордс по API-интерфейса для проверки данных, слабину по API-интерфейс для оповещения в реальном времени через свой вялый бот, если что-то критическое не обнаружено, и хороший ол’ хрон для планирования сценария.

    Если вы-маркетинговое агентство, типичная ситуация заключается в том, что у вас есть много объявлений учетные записи в Google, чтобы заботиться. Когда количество аккаунтов нарушает сотни или тысячи, ручное управление, мониторинг и поддержание их действительно не вариант больше.

    Что вы можете сделать, конечно, настроить рекламу в Гугле предупреждения, по одному для каждой из ваших учетных записей. Можно даже управлять этими оповещениями через объявления в Google API-интерфейс или использовать скрипты объявления в Google. Но проблема с этим является то, что они включают уведомления по электронной почте по умолчанию. Эй, это 2019. Электронная почта является, вероятно, не единственный канал, который можно использовать для автоматизации зданий на.

    Итак, мы решили использовать АПИ силу и, как результат, спасли галактику!

    Как решение работает

    Скрипт заполняется список объявлений Гугле идентификаторов учетной записи, мы хотим контролировать. Система мониторинга сама запрашивает данные о стоимости каждого идентификатора с помощью Гугл Эдвордс по АПИ, и анализирует результаты для тех счетов, которые накопились совершенно бесплатно, сигнализация потенциальные проблемы с ваших бюджетов и конфигураций.

    Когда эта информация была проанализирована, счета идентификаторы, которые были помечены записываются в базу данных для дальнейшего анализа, и уведомление отправляется слабину бот так, чтобы командой, ответственной могут быть немедленно уведомлены, когда возникают проблемы.

    Требования

  • Р Кинк на Линукс сервер (для хрон , чтобы запустить скрипт Р)
  • В RStudio для развивающихся
    – Требуемые пакеты Р: RAdwords, httr, jsonlite
    – Дополнительные пакеты Р: дБи, RMariaDB
  • В Гугл API и идентификатор клиента и секрет клиента
  • Разработчик Гугл Адвордс Маркер
  • Слабину URL-адрес-адрес веб-перехватчик
  • Кронтаб доступ (на тот же сервер Линукс)
  • О Р

    Р-статистический язык программирования, который сегодня поддерживает почти то же машинное обучение (мл) трюки, которые он делает. Р и питон-это давняя дискуссия, так что это действительно сводится к предпочтения языка: какой из них вы хотите использовать для классных данных! Ладно, я надеть штаны, держись.

    Мы не нуждаемся в этом простом примере мониторинга мл, но мы используем это для более продвинутых решений. Поэтому Р является инструментом выбора для нас.

    В в RStudio-это язь для Р, это облегчает Р для использования. Цитата из Сайт в RStudio это:

    В в RStudio-интегрированная среда разработки (ИСР) для р. Он включает в себя консоли, подсветки синтаксиса редактор, который поддерживает прямое выполнение кода, а также инструменты для черчения, истории, отладка и управление рабочей средой.
     

    В в RStudio доступен с открытым исходным кодом и коммерческих изданий и работает на рабочем столе (для Windows, для Mac и для Linux) и в браузере связаны с в RStudio сервер или сервер в про в RStudio (Дебиан/Убунту, Редхат/в и в CentOS и SUSE Линукс).

    В Если вы еще не установили в RStudio, захватить ваши загрузки в в RStudio.

    DIY

    Мы не будем попасть в RStudio в подробности установки в этой статье. В RStudio Сайт предоставляет исчерпывающую документацию и пошаговые инструкции для этого.

    После в настройки в RStudio работает и, давай сценарий!

    Я Эпизод: сценарий Р

    Мы используем версию версию MariaDB для хранения объявления Гугле идентификаторы поддержки наших клиентов, где они могут быть получены из других интеграции и автоматизации целей нужна.

    Если вы используете некоторые другие сервера базы данных, необходимо внести изменения в БД часть кода, чтобы удовлетворить ваши потребности. Р имеет полную поддержку разнообразных баз данных, возможно даже все из них. В принципе, если это как-то связано с данными, то R может читать из него.

    Если вы не используете базу данных, вы можете пропустить часть БД. Дополнительно, Р также может считывать идентификаторы из листов, например, в Google или в CSV-файл. В это Как сделать Р-это ваше домашнее задание!

    Вы, наверное, думаете: “Но почему вы не читаете идентификаторы непосредственно из токенов”?

    Ну, беда в том, что RAdwords, Р Эдвордс в пакет, реализующий в AdWords и API-интерфейс для службы отчетов только и Служба отчетов не поддерживает запрос к Гуглу по объявлениям идентификаторы аккаунта уровне (ранее известный как мой клиент-центр или в Гугле ЦУП). Вместо этого вам понадобится доступ к токенов и управляемая служба поддержки для этого.

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

    Если вам нужно прочитать коды прямо из аккаунта в AdWords по API, вы можете получить доступ к управляемой обслуживания клиентов с помощью новых пакета Р называется adwordsR.

    Теперь, давайте скрипт!

    Создать новый файл в р в RStudio со следующим содержимым, настройка БД, пользователя и пароль, и сохраните файл как db_credentials.Р в /YOUR_R_USER_ROOT_DIR/авт/. Это ваш файл ДБ авт.

    db_username = "YOUR_USERNAME"
    пароль_базы_данных = "ВАШ_ПАРОЛЬ"

    Создайте еще один файл, в том числе следующий код и сохраните файл как connect_db.Р в /YOUR_R_USER_ROOT_DIR/. Это ваш разъем ДБ.

    # Включать учетные данные БД из /авт/ реж
    источник("~/авт/db_credentials.Р")
    
    # Проверяем, если установлены необходимые пакеты, установить, если не
    если(!требуется(дБи)) установить.пакеты("ДБ") 
    если(!требуется(RMariaDB)) установить.пакеты("RMariaDB")
    
    # Пакеты нагрузки 
    библиотека(дБи)
    библиотека(RMariaDB)
    
    # Создаем подключение к БД обращаться
    кон <- dbConnect(
     ДРВ = RMariaDB::в рамках MariaDB(),
     имя пользователя = db_username,
     пароль = пароль_базы_данных,
     хост = "YOUR_DB_HOST",
     порт = 3306,
    "YOUR_DB_NAME"
    )

    И, наконец, фактическое объявления, Р-скрипта, включить следующий код и сохраните его как Гугл-Реклама-с нулевой стоимостью-монитор.Р в /YOUR_R_USER_ROOT_DIR/.

    # Инициализировать подключение к БД 
    источник("~/connect_db.Р")
    
    # Проверяем, если установлены необходимые пакеты, установить, если не
    если(!требуется(RAdwords)) установить.пакеты("RAdwords")
    
    # Пакеты нагрузки 
    библиотека(RAdwords)
    
    # Определить путь к файлу, где ваш файл токенов и протокол OAuth на данные rdata должен быть сохранен, нам понадобится следующая
    google_ads_auth_file <- "~/авт/google_ads_auth.Данные данные rdata"
    
    # Проверить, если файл google_auth данные данные rdata уже существует, создать если не
    если(!файл.существует(google_ads_auth_file)) {
     # Шаги Двиг:
     # 1) Вам нужен API для Гугл идентификатор клиента, секрет клиента и Эдвордс здесь ключ разработчика для проверки подлинности см. В разделе https://github.com/jburkhardt/RAdwords подробнее
     # 2) После того как вы ввели в консоли Р, когда Р просит их, вы попадаете в OAuth с экрана в браузере
     # 3) проверки подлинности с вашим аккаунтом в Google (то же, что имеет доступ к вашему аккаунту)
     # 4) Вы будете перенаправлены на экран успеха протокол OAuth, который обеспечивает окончательный код маркера и просит вас, чтобы копировать/вставить его в ваше приложение (консоль Р в данном случае)
     google_auth <- doAuth(экономия = ложь)
    
     # Сохранить учетные данные для проверки подлинности, которые будут использоваться авторизации из файла отныне
     сохранить(google_auth, файл = google_ads_auth_file)
    }
    
    # Загрузить Гугл учетные данные для проверки подлинности
    загрузить(файл = google_ads_auth_file)
    
    # Дата инит Варс
    dayBeforeYesterday <- из sys файла.Даты() - 2
    вчера <- из sys файла.Даты() - 1
    
    # Принести рекламу в Google поддержки ИД из БД
    ads_accounts <- dbGetQuery(кон, "выберите ads_customer_id от ads_accounts")
    
    # Создаем список идентификаторов для последующего цикла
    account_list <- ads_accounts$ads_customer_id
    
    # Кроме того, если вы хотите, чтобы пропустить вещи, дБ, можно определить свои объявления в Google идентификаторы клиента вручную, раскомментировав следующую строку и список кодов здесь:
    # account_list <- с("123-123-1234", "234-234-2345")
    
    # API-интерфейс для инициализации запрос Эдвордс 
    # Мы проверяем данные, Стоимость от двух предыдущих дней
    тела <- заявление(выберите = С('стоимость'),
     отчет = "ACCOUNT_PERFORMANCE_REPORT",
     пуск = dayBeforeYesterday,
     конец = вчера)
    
    # Инициализировать данные по рамки для сбора данных и индексной переменной для отслеживания прогрессирует в течение цикла
    adsdata <- данных.рама()
    progressIndex <- 0
    
    # Сделать рекламу стоимость данных
    для (в Счет account_list) {
    
     # Получаем данные, стоимость 
     ads_api_response <- метода метода GetData(clientCustomerId = счета,
     google_auth = google_auth,
     заявление = тело)
    
     # Продолжить только если в API не возвращает ошибку (бывает, когда нет данных для возврата или когда по API не удается), это для высадки ложных предупреждений ноль затрат 
     если(!это.нуль(Дим(ads_api_response))) {
    
     # Инициализировать пустой фрейм данных 
     adsdata_temp <- setNames(данные.каркас(матрица(номер колонки = 2, номер строки = 1)), С("стоимость", "счет"))
    
     # Включать идентификатор учетной записи 
     счета adsdata_temp$ < - счета
    
     # Включить данные затраты 
     # Если данных нет, то результат удваивается по какой-то причине
     # Исправить это всегда значение 1-е значение только с [1]
     adsdata_temp$стоимость <- ads_api_response$стоимость[1]
    
     # Если стоимость равна нулю, на возвращается, замените его с нуля
     если(это.на(adsdata_temp$стоить)) adsdata_temp$стоимость <- 0
    
     Время # Собирать во каждой итерации
     adsdata <- rbind(adsdata, adsdata_temp, stringsAsFactors = ложь)
    
    }
    
     Печать в # прогресса консоли Р 
     progressIndex <- progressIndex + 1
     кошка(вставить("запрос ", progressIndex, " в ", номер строки(account_list), "сделанорн", сентября = ""))
    
    }
    
    # Вести бухгалтерию с нуля стоимость только
    ads_accounts_with_zero_cost <- подмножество(adsdata, стоимость == 0)
    
    # Граф бутадиен-нитрильный каучук из насторожило счетов
    nbr_of_accounts_with_alerts <- номер строки(ads_accounts_with_zero_cost)
    
    # Сохраните все предупреждения в БД, если есть
    # Это предполагает, что у вас есть БД таблица с именем "тревога" с полями: 
    # ads_customer_id тип данных varchar
    категория # тип данных varchar
    # поле поле status_id которых содержит значение которых содержит значение типа инт
    # ДАТАВРЕМЯ created_at 
    # ДАТАВРЕМЯ updated_at 
    
    если(nbr_of_accounts_with_alerts > 0) {
    
     Для (я в 1:номер строки(ads_accounts_with_zero_cost)) {
     строк <- ads_accounts_with_zero_cost[я, ]
    
     ads_customer_id <- рядка$ads_customer_id
     категория <- "ALERT_ZERO_COST" # для классификации различных типов оповещений
     поле поле status_id которых содержит значение которых содержит значение <- 0 # должен быть установлен ЭГ. 1 Если оповещение осуществляется через пользовательский интерфейс
    
     # Сохранить каждый элемент в БД
     запрос < вставить("вставить в предупреждениях (
    ads_customer_id,
    категории
    поле поле status_id которых содержит значение которых содержит значение,
    created_at,
    updated_at)
     Значений (",
     "'", ads_customer_id, "', ",
     "'", категории "', ",
     поле поле status_id которых содержит значение которых содержит значение, ", ",
     "сейчас(), ",
    "теперь())",
     сентября = ""
    )
     dbExecute(кон, запрос)
    }
    
    # Если вы хотите проверить/отладить того, что было сохранено, раскомментировать и запустить эти строки
    # db_alerts <- dbGetQuery(кон, "выбрать * из предупреждений")
    # Смотреть(db_alerts)
    
    }

    Теперь у вас есть ваши объявления нулевыми затратами контролировать сценарий готов и можно переходить к настройке бота слабину.

    Эпизод второй: провисание бот наносит ответный удар

    Потому что ребята в слабину являются удивительными, они написал отличное руководство о том, как создать свой бот. Они даже служить вам виртуальную печеньку! Слэк направляющие хрестоматийный пример о том, как должна быть написана документация — их всегда приятно читать и следить! Спасибо, ребята!

    Итак, следуйте слабину пользователи бота руководства. Необходимые шаги для нашего уведомления являются:

    1. Создать свою приложение слабину

    2. Создать пользователя бот

    3. Установить ваш скрипт на свой вялый рабочей области

    Как только вам удастся сделать ваш бот установлен в вашу слабину пространство, вы получите URL-адрес-адрес веб-перехватчик , что вам потребуется в следующий сценарий.

    DIY

    Частью Бот сценария-это здесь:

    ### СЛЭК #УВЕДОМЛЕНИЯ##
    
    # Замените значение по УРЛ-адрес умолчанию веб-перехватчик, которую вы получили от халявы
    webhook_url <- "https://hooks.slack.com/services/12345"
    
    # Проверяем, если установлены необходимые пакеты, установить, если не
    если(!требуется(jsonlite)) установить.пакеты("jsonlite") 
    если(!требуется(httr)) установить.пакеты("httr")
    
    # Пакеты нагрузки 
    библиотека(jsonlite)
    библиотека(httr)
    
    # НБР счетов за уведомление слабину 
    nbr_of_accounts <- номер строки(account_list)
    
    # Настройки сообщение, которое вы хотите отправить в слабину
    msg_desc < вставить("количество объявления аккаунтов Гугл проверил: ",
    nbr_of_accounts,
     сентября = "")
    
    msg_title < вставить("предупреждение - количество нулевых затратах счетов обнаружены: ",
    nbr_of_accounts_with_alerts,
     сентября = "")
    
    # Это канал пинг, если были случаи с нулевой стоимостью, если и не, по умолчанию пустое сообщение
    если(nbr_of_accounts_with_alerts > 0) {
     msg_body <- "оповещения сохраняется в базе! <!канал>"
    } еще {
     msg_body <- ""
    }
    
    # Слабину Предупреждение - разместить сообщение
    запрос <- пост(webhook_url,
     тело = вставить(
     '{"вложения": [{',
    
     '"название": "',
    msg_title,
    '",',
    
     '"предлог": "',
    msg_desc,
    '",',
    
     '"текст": "',
    msg_body,
     '", "цвет": "#ee0000"',
    
    '}]}',
    
     сентября = "
    )
    )

    Как только вы установите эту тему, включают выше слабину часть в свой Гугл-рекламы-ноль-стоимость-монитор.Сценарий Р. Ваш скрипт мониторинга это делается сейчас!

    Это образец уведомление будет выглядеть в слабину:

    DIY

    Проверьте его внимательно в в RStudio и убедиться, что все работает правильно. После этого, вы готовы, чтобы переместить ваш сценарий в производство, запланировав его через хрон.

    Эпизод третий: возвращение хрон

    Открыть файл кронтаб в Линукс оболочку для редактирования:

    кронтаб -е

    Задание Добавить хрон, которое соответствует вашим потребностям. Вот пример синтаксиса с планировщиком, который работает на Р скрипта мониторинга ежедневно в 10 утра.

    # Ежедневно в 10 утра
    0 10 * * * Rscript в папке /home/YOUR_USERNAME/Гугл-Реклама-с нулевой стоимостью-монитор.Р

    Резюме

    Вы создали потенциально мощной рекламы Гугл мониторинга трубопроводов, которая имеет неограниченные возможности для расширения. Другие полезные варианты использования для использования трубопровода, например, обнаружение аномалий, высокой тратить отслеживание на уровне материалов кампании, автоматизация оптимизации размещения рекламы, и так далее.

    Само собой разумеется, что автоматизация является абсолютно необходимым в этот день и возраст, когда это может спасти вас и вашу команду от бесчисленных часов ручного труда. Благодаря автоматизации тривиальные процессы, такие как мониторинг и обнаружение аномалий, вы не освобождая свой самый ценный ресурс (люди) для работы на более амбициозные задачи.

    Как всегда, мы с нетерпением ждем Ваши комментарии и вопросы. Дайте нам знать, что вы думаете о решении, если оно может быть улучшено, и если у вас уже есть расширения в виду!

    Related posts

    Что не так с экспериментом Microsoft про 4-х дневную неделю или не теряем голову при виде 40% эффективности

    admin

    Как использовать Microsoft SQL для отчётов в Power BI. На примере Mindbox

    admin

    Как я Telegram ломал

    admin

    Leave a Comment