В этом руководстве объясняются основы использования клиентской библиотеки Perl для работы с API Google Ads.
Инициализация клиента
Чтобы начать использовать библиотеку, создайте экземпляр Google::Ads::GoogleAds::Client . Клиент можно настроить несколькими способами, как подробно описано в руководстве по настройке . Распространенный подход — использование файла googleads.properties :
use strict;
use warnings;
use Google::Ads::GoogleAds::Client;
my $api_client = Google::Ads::GoogleAds::Client->new();
Создать сервис
После инициализации клиента вы можете создавать экземпляры различных API-сервисов. Например, для взаимодействия с кампаниями вам потребуется создать экземпляр CampaignService :
use strict;
use warnings;
my $campaign_service = $api_client->CampaignService();
По умолчанию переменная $api_client загружает сервисы для версии API DEFAULT_API_VERSION (DEFAULT_API_VERSION) установленной вами библиотеки ( V25 в последней версии; минорные версии, такие как v25.1 , используют свой основной модуль версии, V25 ). Чтобы указать конкретную поддерживаемую версию API, передайте version => "V25" в Client->new({...}) или вызовите $api_client->set_version("V25") .
Выполните вызов API
Вот пример того, как выполнить вызов API для получения информации о кампаниях. Этот фрагмент кода демонстрирует инициализацию клиента, создание сервиса и вызов метода.
use strict;
use warnings;
use Google::Ads::GoogleAds::Client;
use Google::Ads::GoogleAds::V25::Services::GoogleAdsService::SearchGoogleAdsRequest;
# Initialize the Google Ads client. See the Configuration guide for options.
my $api_client = Google::Ads::GoogleAds::Client->new();
# Get the GoogleAdsService.
my $google_ads_service = $api_client->GoogleAdsService();
# Specify the customer ID and query.
my $customer_id = "INSERT_CUSTOMER_ID_HERE";
my $query = "SELECT campaign.name, campaign.status FROM campaign";
# Create a search request.
my $search_request =
Google::Ads::GoogleAds::V25::Services::GoogleAdsService::SearchGoogleAdsRequest
->new({
customerId => $customer_id,
query => $query,
});
# Execute the search request.
my $search_response = $google_ads_service->search($search_request);
# Iterate over the results and print campaign names.
foreach my $google_ads_row (@{$search_response->{results} || []}) {
printf "Campaign with resource name '%s' and name '%s'.\n",
$google_ads_row->{campaign}->{resourceName},
$google_ads_row->{campaign}->{name};
}
Обработка ошибок
Вызовы API могут приводить к ошибкам. По умолчанию die_on_faults равно 0 ( false ), что приводит к тому, что методы сервиса выдают предупреждение и возвращают объект Google::Ads::GoogleAds::GoogleAdsException при возникновении ошибки API. Вы можете проверить, является ли возвращенный ответ исключением GoogleAdsException , и вызвать get_google_ads_failure() для проверки отдельных записей GoogleAdsError .
В качестве альтернативы, если вы установите die_on_faults => 1 в Client->new({...}) (или вызовете $api_client->set_die_on_faults(1) ), методы сервиса вызовут die() с необработанным JSON-ответом об ошибке при возникновении ошибки API, который вы можете перехватить в блоке eval ( if ($@) ).
use strict;
use warnings;
use Scalar::Util qw(blessed);
use Google::Ads::GoogleAds::Client;
use Google::Ads::GoogleAds::V25::Services::GoogleAdsService::SearchGoogleAdsRequest;
my $api_client = Google::Ads::GoogleAds::Client->new();
my $google_ads_service = $api_client->GoogleAdsService();
my $customer_id = "INSERT_CUSTOMER_ID_HERE";
my $query = "SELECT campaign.name, campaign.status FROM campaign";
my $search_request =
Google::Ads::GoogleAds::V25::Services::GoogleAdsService::SearchGoogleAdsRequest
->new({
customerId => $customer_id,
query => $query,
});
my $search_response = $google_ads_service->search($search_request);
if (blessed($search_response)
&& $search_response->isa("Google::Ads::GoogleAds::GoogleAdsException"))
{
printf "An API exception occurred (HTTP %s, status '%s'): %s\n",
$search_response->get_code(),
$search_response->get_status(),
$search_response->get_message();
my $google_ads_failure = $search_response->get_google_ads_failure();
if ($google_ads_failure) {
foreach my $error (@{$google_ads_failure->{errors} || []}) {
my ($error_type, $error_value) = %{$error->{errorCode} || {}};
printf " Error code (%s): %s\n",
$error_type || "unknown",
$error_value || "UNKNOWN";
printf " Message: %s\n", $error->{message};
}
}
} else {
foreach my $google_ads_row (@{$search_response->{results} || []}) {
printf "Campaign name: %s\n", $google_ads_row->{campaign}->{name};
}
}
Изучите другие примеры.
В каталоге examples вы найдете несколько полезных примеров кода. Большинство примеров требуют параметров. Вы можете либо передать параметры в качестве аргументов (рекомендуется), либо изменить значения INSERT_XXXXX_HERE в исходном коде. Чтобы увидеть инструкцию по использованию примера, передайте -help в качестве аргумента командной строки.
perl examples/basic_operations/get_campaigns.pl -help