Пример использования Google AdWords API


Многие рекламодатели знают о преимуществах использования API в контекстной рекламе. Допустим, вам нужно запустить рекламную кампанию с большим количеством однотипных объявлений, но для разных товаров. В этом случае и приходит на помощь API-интерфейс. Вы легко и быстро переносите данные из базы MySQL в рекламную кампанию. И все! Дело сделано. Можно немного подредактировать и запускать. Именно такой схемой мы неоднократно пользовались для рекламы нашего книжного магазина в Яндекс.Директе.

А вот с Google Adwords все оказалось далеко не так просто. Мы долго пытались использовать эту схему в Adwords, переворошили кучу информации в Интернете, пока не узнали следующее от службы поддержки Google:

На данный момент AdWords API не доступен для рекламодателей РФ. Приносим извинения за неудобства.
На данный момент мы не имеем точных сроков запуска. Как только это будет сделано, мы обязательно сообщим рекламодателям РФ о данной функции.

Очень-очень жаль. Но мы не теряем надежды, что рано или поздно Google откроет возможность использовать API-интерфейс и у нас в России. Именно для такого случая мы решили рассказать подробно о нашем примере использования API в Adwords. Наш пример на ура работал на тестовом сервере Google, но не заработал на рабочем сервере по вышеуказанным причинам.
Схема эта довольно нетривиальна, поэтому в будущем (когда API для Adwods в России будет открыт) многим облегчит жизнь.

Шаг 1. Создание PHP кода


Сначала создаем PHP код для переноса данных из базы MySQL сайта в AdWords. Последнюю версию PHP библиотеки можно скачать с этой страницы. Так же, по этой ссылке можно найти много полезной информации, которая необходима в процессе написания кода.

Наш пример использования Google AdWords API для переноса данных из базы MySQL сайта в AdWords можно скачать здесь в виде архива. Примечание: при скачивании этого архива в Windows антивирус NOD может на долго задуматься.
Данный архив содержит следующие файлы:
  • aw_api_php_lib_2.2.0 — библиотека PHP от Google
  • example.php — исполняемый файл содержащий пример кода
  • logfile_2011_01_26_13_58_09.txt — пример лога в результате работы example.php

Стоит обратить внимание, что на данный момент последняя версия библиотеки — 2.4.1
В примере используется более старая версия — 2.2.0

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

1.1 Инициализация начальных параметров

Блок кода содержит инициализацию параметров и создание необходимых объектов из библиотеки aw_api_php_lib_2.2.0. Во время работы программы библиотека пишет свои логи в директорию ./aw_api_php_lib_2.2.0/src/Logs Помимо этого скрипт example.php записывает процесс работы в свой собственный лог файл.

1.2 Получение данных из SQL и заполнение $booksArray

На наш взгляд данный блок кода является самым сложным участком работы. В нем необходимо реализовать алгоритм, который будет превращать информацию о товаре в объявление в AdWords. Сложность заключается в том, чтобы применяя один и тот же алгоритм, формировать эффективные объявления для всех товаров.
В примере используется следующий алгоритм экспорта данных:
  1. Из SQL берется информация о книге: автор, название, url.
  2. Из информации об авторе формируется заголовок для объявления.
  3. Из информации о названии книги формируются два текстовых поля для тела объявления.
  4. Из информации об авторе и названии книги формируются ключевые фразы для объявления.
  5. Сформированная информация сохраняется в массив $booksArray для дальнейшей отправки на сервер.

При формировании объявления мы не забываем о правилах Adwords:
  • Длинна заголовка объявления должна быть меньше 25 символов. Подробнее.
  • Длинна одного блока в теле объявления должна быть меньше 35 символов. Блоков должно быть два.
  • Слов в фразе для объявления должно быть меньше 10.
  • Некоторые символы использовать в объявлении нельзя. Подробнее.


1.3 Остальные блоки кода

Остальные блоки кода в примере на основе сформированных данных в $booksArray создают объекты библиотеки aw_api_php_lib_2.2.0 и отправляют их на сервер Google.
Порядок создания и отправки информации следующий:
  1. При необходимости создаем кампанию или используем уже существующую.
  2. Создаем группы, которые будут содержать объявления.
  3. В группы добавляем объявления.
  4. В группы добавляем ключевые фразы для объявлений.


Шаг 2. Тестирование кода


Для тестирования Google предоставляет специальный тестовый сервер, на котором можно проверить работу скриптов. Чтобы использовать тестовый сервер, делаем следующее:
  1. Создаем Google акаунт с определенным email.

  2. Определяем, какой сервер использовать (тестовый или рабочий), в файле ./aw_api_php_lib_2.2.0/src/Google/Api/Ads/AdWords/settings.ini

    Для работы с тестовым сервером необходимо поставить
    DEFAULT_SERVER = "https://adwords-sandbox.google.com"

    Для работы с рабочим сервером необходимо поставить
    DEFAULT_SERVER = "https://adwords.google.com"

    Стоит обратить внимание на параметр DEFAULT_VERSION = "v200909". Он определяет версию библиотеки, которая будет использоваться.

  3. Данные для аутентификации библиотека берет из файла ./aw_api_php_lib_2.2.0/src/Google/Api/Ads/AdWords/auth.ini
    Пример содержания файла для тестового сервера:

    email = "adwords@rekomenda.ru"
    password = "password"
    userAgent = "Rekomenda"
    applicationToken = "ignored"
    developerToken = "adwords@rekomenda.ru++RUB"

    ; Uncomment to make requests against a client account.
    clientId = "client_1+adwords@rekomenda.ru"


    Пример содержания файла для рабочего сервера:

    email = "adwords@rekomenda.ru"
    password = "password"
    userAgent = "Rekomenda"
    applicationToken = "ignored"
    developerToken = "ro_GxDwRQebsFELl34jknEVg"

    ; Uncomment to make requests against a client account.
    clientId = "123-456-7890"


  4. Создаем аккаунт My Client Center (MCC) в тестовом сервере. Для этого необходимо вызвать метод GetCampaignService(). Этот метод есть в примере, поэтому можно отдельно его не вызывать.



Шаг 3. Создание My Client Center


У нас уже есть обычный аккаунт AdWords. Но как оказалось, обычного аккаунта AdWords для использования API недостаточно. Для использования AdWords API необходимо создать My Client Center (MCC) и привязать его к обычному акаунту AdWords.

  1. Создаем MCC на этой странице.
  2. Связываем обычный аккаунт AdWords c MCC.
  3. В MCC настраиваем и активируем AdWords API Center. Стоит обратить внимание, что при активации можно указать, что вы используете API для своего личного бизнеса. В этом случае, возможно, вам будут предоставлены бесплатные API юниты. Подробнее о стоимости юнитов здесь.


После активации MCC AdWords API Center будет выглядеть приблизительно так:


Полученный Developer token необходимо указать в auth.ini файле.
Изменяем параметры файлов settings.ini и auth.ini для использования рабочего сервера (как было указано выше) и в теории можно приступать к экспорту данных в рабочий AdWords.

Шаг 4. Ожидание у моря погоды



При попытке экспортировать данные не в тестовый сервер, а в рабочий возникает ошибка: INCOMPLETE_SIGNUP_LATEST_NETAPI_TNC_NOT_AGREED

Эта ошибка как раз и означает то, что Google Adwords API не поддерживается в России.
Будем надеяться, что возможность использовать AdWords API все таки в России появится.
В дальнейших постах планируем описать более удачный пример экспорта данных с использованием Яндекс.Директ API.

UPD В комментариях к этому топику мне подсказали, что на самом деле AdWords API в РФ доступен и активно используется многими компаниями. А служба поддержки ввела меня в заблуждение.
Однако оплатить использование АПИ банковской картой пока нельзя. Чтобы получить доступ, необходимо обратиться в тех поддержку и организовать кредитную линию. Для этого придется подписать соглашение (Terms and Conditions) на бумаге, на русском. Соглашение можно отправить по почте. Тех. поддержка включает после этого доступ вручную.
Строго списка требований для открытия кредитной линии нет, часть требований можно посмотреть здесь. Решение принимается в индивидуальном порядке, по заявке.

UPD 2 Этот топик был по ошибке удален, но поскольку информация была полезна для некоторых пользователей, и к тому же в статье появилась новая актуальная информация, я решила опубликовать топик еще раз.
+4
27 января 2011, 15:09
20

комментарии (14)

0
kochetkovweb #
О, спасибо! На будущее пригодится.
Как-то освещали вопрос с API Директа, но одним глазком. Очень хотелось бы хорошего и подробного руководства. Количество РК растет и остро встает вопрос об автоматизации некоторых операций, а я ни разу не программист…
0
RekomendaRu #
К сожалению, помощь программиста скорее всего понадобиться для написания PHP кода для переноса данных из базы MySQL в AdWords или Директ.
0
ebogdanov #
На сайте API Яндекс.Директ очень хорошая документация, да и поддержка, как правило отвеачет в течение пары часов. Так что дерзайте. :)
0
Stac #
Документация не такая уж и хорошая (когда смотрел последний раз, не весь функционал новой версии был описан).
но поддержка, действительно, отвечает оперативно.
0
ebogdanov #
Вот уж странно. :) Не знал я что Adwords API недоступно для России. Работаю с ним еще с 4-ой версии…
0
RekomendaRu #
Очень интересно. А вы в России работаете с API? И именно с Adwords API?
Еще вопрос: что вы подразумеваете под 4-ой версией? На сайте Adwords API не нашла упоминаний о четвертой версии.
Или вы имеете ввиду какую-то версию библиотеки?
0
ebogdanov #
Да, именно с Adwords API. Начать работать с Adsense API не так просто, там очень жесткие требования для получения доступа.

До версии 13 (это старая ветка API, которая была до выхода v200909) у меня было 2 проекта из России (один из них — крупный и известный на рынке).
Потом (уже начиная c v200909) было несколько для заказчиков из США, Японии, и один из Украины буквально осенью). Аккаунты в первом случае были русские, в остальных — заказчиков (себе руки не дошли сделать). Все равно как-то странно это что есть ограничение на использование API в России. Будет время надо будет заплатить за свой аккаунт и проверить. :) Мне в это верится с трудом, если честно. Подозреваю что проблема в варианте оплаты. Т.к. Adwords снимает деньги зачастую напрямую с карты, а в случае оплаты через банковский перевод, им это сделать тяжеловато :) Вот и блокируют.
0
RekomendaRu #
Мы используем для обычного AdWords банковскую карту. Банковским переводом не пользуемся.

В My Client Center в разделе Биллинга ввести данные для счета не возможно.
Процесс попытки ввести реквизиты выглядит так:




Если Вас не затруднит, можете детально рассказать как у Вас получилось использовать Adwords API в России?
Так как немножко обидно, что проделана была работа, а в конце оказалось, что она не может быть использована.
0
Danial #
На самом деле AdWords API в РФ доступен и активно используется многими компаниями. Мне было бы очень интересно узнать кто и когда ответил вам обратное.

Однако, это верно, оплатить использование АПИ банковской картой пока нельзя. Чтобы получить к доступ, необходимо обратиться в тех поддержку и организовать кредитную линию. Так же придется подписать соглашение (Terms and Conditions) на бумаге, на русском. Тех поддержка включает после этого доступ вручную.

Должен заметить, что данные сложности связаны с определенными юридическими особенностями в РФ, технически нет никакой разницы откуда идет доступ к АПИ.
0
RekomendaRu #
День добрый.
Спасибо, что откликнулись на мой пост.

Если Вас интересуют подробности, то номер тикета в службу поддержки AdWords был 686220812. Вопрос задавался 03.09.2010

Соответственно к Вам есть сопутствующие вопросы:
1) По какому адресу в Москве можно подписать Terms and Conditions?
2) Кто может подписывать это соглашение: юрлицо, ИП, физлицо?
3) Какие документы нужны для каждого варианта из пункта 2.
4) После подписания соглашения и открытия кредитной линии, каким способом эта кредитная линия может быть оплачена?

Насчет «определенными юридическими особенностями»:
1) Почему AdWords можно оплатить кредиткой, а API нет?
2) Как решают эти «особенности» Яндекс.Директ?
0
Danial #
Да, ответ на тот тикет вводил в заблуждение. В настоящее время команда поддержки более осведомлена об АПИ ;)

1. Бланк можно получить, обратившись в службу поддержки. По почте/факсу/pdf.

2. Юр лицо. Для использования АПИ необходимо открыть кредитную линию, в связи с этим есть некоторые ограничения (компания не должна быть зарегистрирована вчера и т.п.).

3. Только договор (T&C).

4. Выставляем счет — банковский перевод.

Про кредитку — для AdWords есть позможность внести средства заранее (PrePay), для АПИ сейчас доступна только опция PostPay (по факту расхода). Оплата по кредитной карте через систему assist в данный момент возможна только для предоплаты.

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

В итоге реальная возможность использовать и оплатить АПИ для компаний есть. А для частных лиц, честно говоря, необходимость доступа к АПИ неоднозначна. (да, тестовый режим (sandbox) доступен для всех и бесплатно).
0
RekomendaRu #
Немножко еще уточню:

1. В первом пункте указан только способ получения бланка? Или получения и отправки соглашения? «По почте/факсу/pdf» —это способ отправки подписанного соглашения?

2. В понятие «Юр лицо» входит Индивидуальный Предприниматель(ИП)? Может ли ИП подписать соглашение?

3. Есть ли полный список требований, которым необходимо соответствовать, что бы была открыта кредитная линия («компания не должна быть зарегистрирована вчера и т.п.»)? Или решение принимается в индивидуальном порядке? Если такой список есть, можете ли его написать (добавлю его в топик)?

4. Насчет необходимости API для частных лиц — вопрос конечно спорный. Но будем наедятся, что процесс использования API упростится. Повторюсь, у Яндекс.Директ API все намного проще и они не делают из этого «элитный клуб пользователей API» :)

5. Про sandbox в топике написано, что он работает. Если Вы принимаете пожелание от пользователей, то было бы здорово в инструкциях к API написать про данные особенности работы API в России. Потому что, получилось так, что был сделан экспортер, который работал в sandbox, но на реальном сервере не работал. И причину, по которой этот экспортер не работает, долго не удавалось выяснить. Ни в инструкциях к API, ни в Интернете не удавалось найти ответ. Только написав тикет в службу поддержки Google, получилось прояснить ситуацию. И то, как сейчас выяснилось, ответ был не актуален. Кстати, написать тикет в Вашу службу поддержки тоже не тривиальная задача.
0
RekomendaRu #
Случайно удалила пост. Пока востанавливала Danial прислал ответ на почту:

«Отвечаю здесь, так как статья закрыта ;)

1. Подписанное соглашение нужно присылать в оригинале. Почтой / занести.

2. Ответ коллег — «только юр. лица».

3. Строго списка нет, часть требований тут: adwords.google.com/support/aw/bin/topic.py?hl=ru&topic=15960 (да, путано, к сожалению). Решение принимается в индивидуальном порядке, по заявке.

4. Мы стараемся не делать «элитный клуб пользователей API», но есть ряд сложностей (поддельные кредитки и т.п.). Так же, обычно АПИ используется там, где необходимо создать большое количество объектов, частным лицам это редко нужно.

5. К сожалению, мы не поддерживаем техническую документацию на русском языке в актуальном состоянии. Но наша поддержка всегда здесь ;) Можно обращаться туда, либо на наш форум: www.google.com/support/forum/p/adwords?hl=ru. Тогда у нас будет шанс ответить оперативно. ;)»
0
RekomendaRu #
Спасибо всем, кто слил карму.

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