Это краткое руководство поможет вам выполнить первый вызов Google Ads API.
Основные понятия
- Проект Google Cloud. Проект Google Cloud – это основа для создания, включения и использования всех сервисов Google, включая управление API и учетными данными OAuth 2.0 API. Его можно создать в консоли Google Cloud.
- Уровень доступа к API. Уровень доступа к API в вашем облачном проекте Google Cloud определяет, сколько вызовов API вы можете делать в день и в каких средах. Уровень доступа к API указан на обзорной странице Google Ads API.
- Управляющий аккаунт Google Рекламы используется для управления другими аккаунтами Google Рекламы, которые могут быть набором клиентских аккаунтов Google Рекламы или другими управляющими аккаунтами Google Рекламы.
- Клиентский аккаунт Google Рекламы. Аккаунт Google Рекламы, используемый для показа объявлений, на которые вы хотите настроить таргетинг с помощью вызовов API.
- Идентификатор клиента. Десятизначный номер, который идентифицирует клиентский аккаунт Google Рекламы. Если вы скопировали этот идентификатор из интерфейса Google Рекламы, удалите дефисы.
- OAuth 2.0. OAuth 2.0 – это стандартный отраслевой протокол авторизации, который используется всеми API Google. Чтобы генерировать учетные данные OAuth 2.0 для вызовов API, вам потребуется сервисный аккаунт и ключ.
- Сервисный аккаунт. Особый тип аккаунта Google, который принадлежит приложению, а не отдельному пользователю. Он используется для аутентификации вашего приложения в Google Ads API. Чтобы получить сервисный аккаунт, вам понадобится проект Google Cloud.
- Ключ сервисного аккаунта. JSON-файл учетных данных приложения, содержащий закрытый ключ сервисного аккаунта. Он используется для создания учетных данных OAuth 2.0, необходимых для аутентификации сервисного аккаунта при вызове Google Ads API. Чтобы получить ключ сервисного аккаунта, вам нужен сервисный аккаунт.
Требования
Чтобы выполнить вызов Google Ads API, выполните следующие действия.
Как настроить облачный проект для доступа к Google Ads API
Проект Google Cloud используется для управления API Google и учетными данными API OAuth 2.0. Вы можете найти существующие проекты Google Cloud или создать новый в консоли Google Cloud.
Сначала включите Google Ads API в своем проекте:
Затем перейдите на обзорную страницу Google Ads API. На этой странице указан ваш текущий уровень доступа к API. Если у вас тестовый уровень доступа, разверните раздел Повысить уровень доступа. Следуйте инструкциям, чтобы подать заявку на уровень доступа Исследователь.
После того как вы заполните заявку, Google автоматически проверит ее и в большинстве случаев повысит ваш уровень до исследователя. Если у вас нет доступа к Explorer, не волнуйтесь. В этом руководстве есть инструкции по настройке клиентского аккаунта Google Рекламы.
Как создать сервисный аккаунт
Чтобы выполнять вызовы API, вам потребуется сервисный аккаунт и ключ к нему. Если вы уже используете другой API Google и создали сервисный аккаунт OAuth 2.0 и ключ, вы можете пропустить этот шаг и использовать существующие учетные данные.
Как создать сервисный аккаунт и ключ
- В консоли Google Cloud нажмите на значок меню > IAM & Admin (IAM и администрирование) > Service Accounts (Сервисные аккаунты).
- Выберите сервисный аккаунт.
- Нажмите Keys (Ключи) > Add key (Добавить ключ) > Create new key (Создать ключ).
- Выберите JSON и нажмите Create (Создать).
Новая пара ключей будет создана и скачана на ваш компьютер в виде нового файла. Сохраните скачанный JSON-файл под названием
credentials.jsonв рабочем каталоге. Этот файл – единственная копия ключа. Не добавляйте файлcredentials.jsonв систему управления версиями (например, добавьте его в файл.gitignore). - Нажмите Закрыть.
Как настроить клиентский аккаунт Google Рекламы
Сначала определите, к какому аккаунту Google Рекламы вы выполняете вызовы API. Тип аккаунта, к которому можно выполнять вызовы API, зависит от уровня доступа к API вашего облачного проекта Google Cloud. Узнать свой уровень доступа к API можно на обзорной странице Google Ads API.
Уровни доступа Explorer, Basic и Standard
Вы можете отправлять запросы в рабочий аккаунт Google Рекламы. Однако при необходимости вы можете создать тестовый аккаунт Google Рекламы, следуя инструкциям на вкладке Тестовый доступ.
Проверьте доступ
Проект Google Cloud нельзя использовать для вызовов API в рабочем аккаунте Google Рекламы. Вызовы API можно выполнять только в тестовых аккаунтах Google Рекламы.
Как создать тестовый аккаунт Google Рекламы
Ниже описано, как создать тестовый управляющий аккаунт Google Рекламы и тестовый клиентский аккаунт Google Рекламы в нем.
Нажмите Создать тестовый управляющий аккаунт, чтобы открыть страницу выбора аккаунта Google Рекламы. При необходимости войдите в аккаунт Google, который не связан с рабочим управляющим аккаунтом Google Рекламы, или нажмите Создать аккаунт, чтобы создать новый аккаунт Google.
На странице выбора аккаунта нажмите Новый аккаунт Google Рекламы (или Создать аккаунт, если появится диалоговое окно Завершить настройку аккаунта?). На странице выбора аккаунта не будет указано, что он тестовый, но если вы перешли на нее по ссылке Создать тестовый управляющий аккаунт, то будет создан именно такой аккаунт.
На странице Подтвердите информацию о компании укажите отображаемое название аккаунта, выберите основную цель использования аккаунта, страну, часовой пояс и валюту. Убедитесь, что в правом верхнем углу есть красный ярлык Тестовый аккаунт, нажмите Отправить, а затем – Посмотреть аккаунт, чтобы открыть панель управления тестового управляющего аккаунта.
В тестовом управляющем аккаунте Google Рекламы создайте тестовый клиентский аккаунт Google Рекламы. Для этого нажмите Аккаунты > > Создать аккаунт. Укажите название аккаунта, выберите страну, часовой пояс и валюту, а затем сохраните аккаунт. Все клиентские аккаунты, созданные в тестовом управляющем аккаунте, автоматически становятся тестовыми. Инструкции по проверке приведены в разделе Просмотр тестовых аккаунтов.
Необязательно. Создайте хотя бы одну тестовую кампанию в тестовом клиентском аккаунте на странице Google Рекламы. Если вы пропустите этот шаг, то ваш первый вызов API в разделе Вызов API будет успешным, но вернет пустой ответ (ноль кампаний).
Чтобы выполнить вызов API для клиента Google Рекламы, необходимо предоставить сервисному аккаунту доступ и соответствующие разрешения для аккаунта клиента Google Рекламы. Для этого вам потребуется доступ с правами администратора к аккаунту клиента.
Как предоставить сервисному аккаунту доступ к аккаунту Google Рекламы
- Войдите в аккаунт Google Рекламы как администратор.
- Перейдите в раздел Администратор > Доступ и безопасность.
- Нажмите кнопку на вкладке Пользователи.
- Введите адрес электронной почты сервисного аккаунта в поле Email (Электронная почта).
Выберите уровень доступа и нажмите кнопку Добавить аккаунт. Обратите внимание, что для сервисных аккаунтов не поддерживается уровень доступа "Только оповещения по электронной почте".
- Сервисному аккаунту предоставляется доступ.
- [Необязательно] При первоначальной настройке вы не можете предоставить сервисному аккаунту права администратора. Если для вызовов API требуются права администратора, вы можете повысить уровень доступа, как описано ниже.
- В столбце Уровень доступа нажмите на значок раскрывающегося списка рядом с уровнем доступа сервисного аккаунта.
- В раскрывающемся списке выберите Администратор.
Скачивание инструментов и клиентских библиотек
Вы можете скачать клиентскую библиотеку или HTTP-клиент в зависимости от того, как вы хотите выполнять вызовы API.
Использование клиентской библиотеки
Скачайте и установите клиентскую библиотеку.
Использование HTTP-клиента (REST)
curl
Скачайте и установите curl – инструмент командной строки для передачи данных через URL.
Интерфейс командной строки Google Cloud
Установите gcloud CLI, следуя руководству по установке Google Cloud CLI.
Инструкции в этом руководстве проверены на совместимость с указанной ниже версией инструмента gcloud и могут не работать с предыдущими версиями из-за различий в поведении приложения или параметрах командной строки.
:~$ gcloud version
Google Cloud SDK 492.0.0
alpha 2024.09.06
beta 2024.09.06
bq 2.1.8
bundled-python3-unix 3.11.9
core 2024.09.06
enterprise-certificate-proxy 0.3.2
gcloud-crc32c 1.0.0
gsutil 5.30Выполнение вызова API
Выберите клиент, чтобы посмотреть инструкции по вызову API:
Java
Артефакты клиентской библиотеки публикуются в репозитории Maven Central.
Чтобы управлять версиями зависимостей и предотвращать конфликты, ознакомьтесь с руководством по ведомости материалов (BOM) Google Ads API.
Если вы не используете BOM, добавьте клиентскую библиотеку непосредственно в проект с помощью одного из следующих инструментов сборки:
Maven. Добавьте в файл pom.xml следующую зависимость:
<dependency>
<groupId>com.google.api-ads</groupId>
<artifactId>google-ads</artifactId>
<version>48.1.0</version>
</dependency>
Gradle Добавьте в файл build.gradle следующую зависимость:
implementation 'com.google.api-ads:google-ads:48.1.0'
Создайте файл ads.properties в домашнем каталоге (~/ads.properties в Linux и macOS или %USERPROFILE%\ads.properties в Windows) со следующим содержимым:
api.googleads.serviceAccountSecretsPath=JSON_KEY_FILE_PATH
api.googleads.loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HERE
Прежде чем отправлять запросы к API, создайте экземпляр GoogleAdsClient. По умолчанию fromPropertiesFile() загружает учетные данные из файла ads.properties, расположенного в домашнем каталоге:
GoogleAdsClient googleAdsClient;
try {
googleAdsClient = GoogleAdsClient.newBuilder().fromPropertiesFile().build();
} catch (IOException e) {
System.err.printf("Failed to create GoogleAdsClient: %s%n", e);
throw new RuntimeException("Initialization failed", e);
}
Затем создайте отчет о кампаниях с помощью GoogleAdsService.SearchStream, чтобы эффективно передавать большие наборы результатов и получать кампании в аккаунте:
private void runExample(GoogleAdsClient googleAdsClient, long customerId) {
try (GoogleAdsServiceClient googleAdsServiceClient =
googleAdsClient.getLatestVersion().createGoogleAdsServiceClient()) {
String query = "SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id";
// Constructs the SearchGoogleAdsStreamRequest.
SearchGoogleAdsStreamRequest request =
SearchGoogleAdsStreamRequest.newBuilder()
.setCustomerId(Long.toString(customerId))
.setQuery(query)
.build();
// Creates and issues a search Google Ads stream request that will retrieve all campaigns.
ServerStream<SearchGoogleAdsStreamResponse> stream =
googleAdsServiceClient.searchStreamCallable().call(request);
// Iterates through and prints all of the results in the stream response.
for (SearchGoogleAdsStreamResponse response : stream) {
for (GoogleAdsRow googleAdsRow : response.getResultsList()) {
System.out.printf(
"Campaign with ID %d and name '%s' was found.%n",
googleAdsRow.getCampaign().getId(), googleAdsRow.getCampaign().getName());
}
}
}
}
C#
Пакеты клиентских библиотек публикуются в репозитории NuGet.org.
Сначала добавьте ссылку на пакет NuGet в пакет Google.Ads.GoogleAds:
dotnet add package Google.Ads.GoogleAds --version 27.6.0Чтобы выполнять вызовы API, создайте объект GoogleAdsConfig на основе настроек конфигурации (например, appsettings.json, переменных среды или пользовательских настроек) и передайте его для инициализации экземпляра GoogleAdsClient:
GoogleAdsConfig config = new GoogleAdsConfig()
{
OAuth2Mode = OAuth2Flow.SERVICE_ACCOUNT,
OAuth2SecretsJsonPath = "JSON_KEY_FILE_PATH",
LoginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
};
GoogleAdsClient client = new GoogleAdsClient(config);
Затем создайте отчет о кампаниях с помощью метода GoogleAdsService.SearchStream, чтобы получить список кампаний в аккаунте. В этом руководстве не рассматриваются подробности создания отчетов.
public void Run(GoogleAdsClient client, long customerId)
{
// Get the GoogleAdsService.
GoogleAdsServiceClient googleAdsService = client.GetService(
Services.V26.GoogleAdsService);
// Create a query that will retrieve all campaigns.
string query = @"SELECT
campaign.id,
campaign.name,
campaign.network_settings.target_content_network
FROM campaign
ORDER BY campaign.id";
try
{
// Issue a search request.
googleAdsService.SearchStream(customerId.ToString(), query,
delegate (SearchGoogleAdsStreamResponse resp)
{
foreach (GoogleAdsRow googleAdsRow in resp.Results)
{
Console.WriteLine("Campaign with ID {0} and name '{1}' was found.",
googleAdsRow.Campaign.Id, googleAdsRow.Campaign.Name);
}
}
);
}
catch (GoogleAdsException e)
{
Console.WriteLine("Failure:");
Console.WriteLine($"Message: {e.Message}");
Console.WriteLine($"Failure: {e.Failure}");
Console.WriteLine($"Request ID: {e.RequestId}");
throw;
}
}
PHP
Пакеты клиентской библиотеки публикуются в репозитории Packagist.
Убедитесь, что у вас установлена совместимая версия PHP и Composer, затем перейдите в корневой каталог проекта и выполните следующую команду, чтобы установить библиотеку и ее зависимости в каталог vendor/ проекта:
composer require googleads/google-ads-php:35.3.0Скопируйте файл google_ads_php.ini из хранилища GitHub, сохраните его в домашнем или корневом каталоге проекта и добавьте в него свои учетные данные:
[GOOGLE_ADS]
loginCustomerId = "INSERT_LOGIN_CUSTOMER_ID_HERE"
[OAUTH2]
jsonKeyFilePath = "JSON_KEY_FILE_PATH"
scopes = "https://www.googleapis.com/auth/adwords"
Создайте экземпляр GoogleAdsClient, используя файл конфигурации google_ads_php.ini:
use Google\Ads\GoogleAds\Lib\OAuth2TokenBuilder;
use Google\Ads\GoogleAds\Lib\V26\GoogleAdsClientBuilder;
$oauth2Credential = (new OAuth2TokenBuilder())
->fromFile('/path/to/google_ads_php.ini')
->build();
$googleAdsClient = (new GoogleAdsClientBuilder())
->fromFile('/path/to/google_ads_php.ini')
->withOAuth2Credential($oauth2Credential)
->build();
Затем создайте отчет о кампаниях с помощью метода GoogleAdsService.SearchStream, чтобы получить список кампаний в аккаунте.
public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId)
{
$googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient();
// Creates a query that retrieves all campaigns.
$query = 'SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id';
// Issues a search stream request.
/** @var GoogleAdsServerStreamDecorator $stream */
$stream = $googleAdsServiceClient->searchStream(
SearchGoogleAdsStreamRequest::build($customerId, $query)
);
// Iterates over all rows in all messages and prints the requested field values for
// the campaign in each row.
foreach ($stream->iterateAllElements() as $googleAdsRow) {
/** @var GoogleAdsRow $googleAdsRow */
printf(
"Campaign with ID %d and name '%s' was found.%s",
$googleAdsRow->getCampaign()->getId(),
$googleAdsRow->getCampaign()->getName(),
PHP_EOL
);
}
}
Python
Клиентская библиотека Google Ads API для Python распространяется через PyPI. Убедитесь, что у вас установлена поддерживаемая версия Python, а затем установите библиотеку с помощью pip:
python -m pip install google-ads==35.0.0Чтобы выполнять аутентификацию вызовов API, настройте файл google-ads.yaml:
- Скачайте копию файла
google-ads.yamlиз хранилища GitHub. - Сохраните файл в домашнем каталоге (
~/google-ads.yaml) или по собственному пути. Откройте файл
google-ads.yamlи добавьте в него свои учетные данные:login_customer_id: INSERT_LOGIN_CUSTOMER_ID_HERE json_key_file_path: JSON_KEY_FILE_PATHНастройте ведение журнала до инициализации клиента, чтобы библиотека регистрировала все предупреждения об инициализации или конфигурации. В примере ниже регистратор библиотеки настроен на вывод журналов
INFOв стандартный вывод (stdout):
import logging
import sys
logger = logging.getLogger("google.ads.googleads.client")
logger.setLevel(logging.INFO)
logger.addHandler(logging.StreamHandler(sys.stdout))
Создайте экземпляр GoogleAdsClient, вызвав метод GoogleAdsClient.load_from_storage и передав путь к файлу google-ads.yaml:
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage("path/to/google-ads.yaml")
Если вы не укажете аргумент path, load_from_storage() будет искать файл конфигурации в домашнем каталоге (~/google-ads.yaml).
Затем создайте отчет о кампаниях с помощью метода GoogleAdsService.SearchStream, чтобы получить список кампаний в аккаунте.
def main(client: GoogleAdsClient, customer_id: str) -> None:
ga_service: GoogleAdsServiceClient = client.get_service("GoogleAdsService")
query: str = """
SELECT
campaign.id,
campaign.name
FROM campaign
ORDER BY campaign.id"""
# Issues a search request using streaming.
stream: Iterator[SearchGoogleAdsStreamResponse] = ga_service.search_stream(
customer_id=customer_id, query=query
)
for batch in stream:
rows: List[GoogleAdsRow] = batch.results
for row in rows:
print(
f"Campaign with ID {row.campaign.id} and name "
f'"{row.campaign.name}" was found.'
)
Ruby
Гемы Ruby для клиентской библиотеки публикуются на сайте RubyGems. Убедитесь, что у вас установлена поддерживаемая версия Ruby, и используйте Bundler для установки библиотеки:
Добавьте gem в файл
Gemfileприложения:gem 'google-ads-googleads', '~> 46.1.0'Установите гем, выполнив следующую команду:
bundle install
Чтобы настроить учетные данные, выполните следующие действия:
- Скопируйте пример файла
google_ads_config.rbиз репозитория GitHub. - Сохраните файл в корневом каталоге проекта или в домашнем каталоге (
~). Откройте файл
google_ads_config.rbи замените значения-плейсхолдеры своими учетными данными Google Ads API:Google::Ads::GoogleAds::Config.new do |c| c.login_customer_id = 'INSERT_LOGIN_CUSTOMER_ID_HERE' c.keyfile = 'JSON_KEY_FILE_PATH' endСоздайте экземпляр
GoogleAdsClient, передав путь к файлу конфигурации (google_ads_config.rb):
client = Google::Ads::GoogleAds::GoogleAdsClient.new(
'path/to/google_ads_config.rb'
)
Затем создайте отчет о кампаниях с помощью метода GoogleAdsService.SearchStream, чтобы получить список кампаний в аккаунте.
def get_campaigns(customer_id)
# GoogleAdsClient will read a config file from
# ENV['HOME']/google_ads_config.rb when called without parameters
client = Google::Ads::GoogleAds::GoogleAdsClient.new
responses = client.service.google_ads.search_stream(
customer_id: customer_id,
query: 'SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id',
)
responses.each do |response|
response.results.each do |row|
puts "Campaign with ID #{row.campaign.id} and name '#{row.campaign.name}' was found."
end
end
end
Perl
Клиентская библиотека Perl распространяется через CPAN. Для ее работы требуется Perl 5.28 или более поздней версии и менеджер пакетов cpan или cpanm.
Клонируйте хранилище
google-ads-perlв нужный каталог:git clone https://github.com/googleads/google-ads-perl.gitПерейдите в каталог
google-ads-perlи выполните следующие команды, чтобы установить необходимые зависимости и собрать библиотеку:cd google-ads-perl cpan install Module::Build perl Build.PL perl Build installdeps perl Build perl Build install
Чтобы настроить учетные данные, выполните следующие действия:
Скопируйте пример файла конфигурации
googleads.propertiesиз репозитория GitHub в домашний каталог (~/googleads.properties):cp googleads.properties ~/googleads.propertiesДобавьте в файл
~/googleads.propertiesсвои учетные данные:jsonKeyFilePath=JSON_KEY_FILE_PATH loginCustomerId=INSERT_LOGIN_CUSTOMER_ID_HEREСоздайте экземпляр
Client, передав путь к настроенному файлуgoogleads.properties(например,~/googleads.properties):
my $api_client = Google::Ads::GoogleAds::Client->new({
properties_file => "/path/to/googleads.properties"
});
Затем создайте отчет о кампаниях с помощью метода GoogleAdsService.SearchStream, чтобы получить список кампаний в аккаунте.
sub get_campaigns {
my ($api_client, $customer_id) = @_;
# Create a search Google Ads stream request that will retrieve all campaigns.
my $search_stream_request =
Google::Ads::GoogleAds::V26::Services::GoogleAdsService::SearchGoogleAdsStreamRequest
->new({
customerId => $customer_id,
query =>
"SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id"
});
# Get the GoogleAdsService.
my $google_ads_service = $api_client->GoogleAdsService();
my $search_stream_handler =
Google::Ads::GoogleAds::Utils::SearchStreamHandler->new({
service => $google_ads_service,
request => $search_stream_request
});
# Issue a search request and process the stream response to print the requested
# field values for the campaign in each row.
$search_stream_handler->process_contents(
sub {
my $google_ads_row = shift;
printf "Campaign with ID %d and name '%s' was found.\n",
$google_ads_row->{campaign}{id}, $google_ads_row->{campaign}{name};
});
return 1;
}
При выполнении скрипт передает соответствующие строки и выводит идентификатор и название каждой кампании в вашем аккаунте.
curl
Сначала задайте сервисный аккаунт в качестве активных учетных данных в gcloud CLI.
gcloud auth login --cred-file=JSON_KEY_FILE_PATHЗатем получите токен доступа OAuth 2.0 для Google Ads API.
gcloud auth \
print-access-token \
--scopes='https://www.googleapis.com/auth/adwords'Создайте файл с именем query.json, содержащий запрос на языке запросов Google Рекламы (GAQL):
{
"query": "SELECT campaign.id, campaign.name, campaign.network_settings.target_content_network FROM campaign ORDER BY campaign.id"
}
Чтобы получить список кампаний в аккаунте, создайте отчет о кампаниях с помощью метода GoogleAdsService.SearchStream.
curl -i -X POST \
https://googleads.googleapis.com/v26/customers/CUSTOMER_ID/googleAds:searchStream \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "login-customer-id: LOGIN_CUSTOMER_ID" \
--data-binary "@query.json"Если при первом вызове возникнут ошибки, ознакомьтесь с разделом Обработка ошибок API.