После того как вы все настроили, убедитесь, что вы можете успешно отправить образец запроса в Search Ads 360 API. В следующем примере кода показано, как отправить асинхронный запрос на список кампаний вашего рекламодателя. Если запрос будет успешным, вы получите ответ от Search Ads 360 API о том, что отчет создан, но не готов (это связано с тем, что асинхронные запросы требуют дополнительных запросов для фактической загрузки отчета).
В запросе вам нужно будет указать собственный токен доступа OAuth 2.0 и собственный идентификатор агентства. Чтобы найти идентификатор вашего агентства:
- Посетите пользовательский интерфейс Search Ads 360 .
- Идентификаторы вашего агентства и рекламодателя отображаются в URL-адресе сразу после префикса
ay=
иav=
. Например:
https://searchads.google.com/ds/cm/cm/cm/cm#campaigns.ay= 123456789012345678 ;av= 123456789012345678 ;
JSON
POST https://www.googleapis.com/doubleclicksearch/v2/reports
Authorization: Bearer your OAuth 2.0 access token
Content-type: application/json
{
"reportScope": {
"agencyId": "your agency ID",
"advertiserId": "your advertiser ID"
},
"reportType": "campaign",
"columns": [
{ "columnName": "campaignId" },
{ "columnName": "campaign" }
],
"downloadFormat": "csv",
"maxRowsPerFile": 6000000,
"statisticsCurrency": "agency"
}
Чтобы отправить этот запрос, используйте служебный скрипт Search Ads 360.
Чтобы отправить необработанный запрос JSON POST, вы можете использовать сценарий sa360Api.py следующим образом:
- Скопируйте пример объекта JSON (все, что находится между двумя фигурными скобками и включая их) в новый текстовый файл с именем
request.txt
. - Измените идентификатор агентства, указанный в коде JSON, на свой собственный идентификатор агентства.
- Удалите все комментарии, например:
// The date column segments the report by individual days.
- Соберите свои учетные данные OAuth 2.0 в одну строку, разделенную запятыми, следующим образом:
client-ID,client-secret,refresh-token
(Это та же строка, которуюsa360Api.py
выводит при запускеsa360Api.py --login
как описано в разделе «Настройка авторизации» .) - Вызовите
sa360Api.py
следующим образом:
sa360Api.py --cred CREDENTIALS --server API-method --post < request.txt
В приведенной выше команде замените строкуCREDENTIALS
на строку, которую вы собрали на предыдущем шаге.
Замените имя метода POST в поле ниже наAPI-method
.Например:
sa360Api.py --cred 123456789123.apps.googleusercontent.com,ABCDEFGHIJKLMNOPQR_abcdef,1/HIJklM01OPQR23NOP456rst890uvw --server https://www.googleapis.com/doubleclicksearch/v2/reports/generate --post < request.txt
Ява
import com.google.api.client.googleapis.json.GoogleJsonError.ErrorInfo;
import com.google.api.client.googleapis.json.GoogleJsonResponseException;
import com.google.api.services.doubleclicksearch.Doubleclicksearch;
import com.google.api.services.doubleclicksearch.model.ReportApiColumnSpec;
import com.google.api.services.doubleclicksearch.model.ReportRequest;
import com.google.api.services.doubleclicksearch.model.ReportRequest.ReportScope;
import com.google.api.services.doubleclicksearch.model.ReportRequest.TimeRange;
import java.io.IOException;
import java.util.Arrays;
/**
* Creates a campaign report request, submits the report, and returns the report ID.
*/
private static String createReport(Doubleclicksearch service) throws IOException {
try {
return service.reports().request(createSampleRequest()).execute().getId();
} catch (GoogleJsonResponseException e) {
System.err.println("Report request was rejected.");
for (ErrorInfo error : e.getDetails().getErrors()) {
System.err.println(error.getMessage());
}
System.exit(e.getStatusCode());
return null; // Unreachable code.
}
}
/**
* Returns a simple static request that lists the ID and name of all
* campaigns under agency 20100000000000895 and advertiser 21700000000011523.
* Substitute your own agency ID and advertiser IDs for the IDs in this sample.
*/
private static ReportRequest createSampleRequest() {
return new ReportRequest()
.setReportScope(new ReportScope()
.setAgencyId(20100000000000895L) // Replace with your ID
.setAdvertiserId(21700000000011523L)) // Replace with your ID
.setReportType("campaign")
.setColumns(Arrays.asList(
new ReportApiColumnSpec[] {
new ReportApiColumnSpec().setColumnName("campaignId"),
new ReportApiColumnSpec().setColumnName("campaign")
}))
.setTimeRange(new TimeRange()
.setStartDate("2014-05-01")
.setEndDate("2014-05-01"))
.setDownloadFormat("csv")
.setStatisticsCurrency("usd")
.setMaxRowsPerFile(5000000);
}
.СЕТЬ
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Auth.OAuth2.Flows;
using api = Google.Apis.Doubleclicksearch.v2;
/// <summary>
/// Creates a campaign report request, submits the report, and returns the report ID.
/// </summary>
/// <param name="service">Search Ads API service.</param>
private static string CreateReport(api.DoubleclicksearchService service)
{
var req = service.Reports.Request(CreateSampleRequest());
var report = req.Execute();
Console.WriteLine("Created report: ID={0}", report.Id);
return report.Id;
}
/// <summary>
/// Returns a simple static request that lists the ID and name of all
/// campaigns under agency 20100000000000895 and advertiser 21700000000011523.
/// Substitute your own agency ID and advertiser IDs for the IDs in this sample.
/// </summary>
private static api.Data.ReportRequest CreateSampleRequest()
{
return new api.Data.ReportRequest
{
ReportScope = new api.Data.ReportRequest.ReportScopeData
{
AgencyId = 20100000000000895,
AdvertiserId = 21700000000011523,
},
ReportType = "campaign",
Columns = new List
Питон
def generate_report(service):
"""Generate and print sample report.
Args:
service: An authorized Doubleclicksearch service. See Set Up Your Application.
"""
request = service.reports().request(
body =
{
"reportScope": {
"agencyId": "your agency ID",
"advertiserId": "your advertiser ID"
},
"reportType": "campaign",
"columns": [
{ "columnName": "campaignId" },
{ "columnName": "campaign" }
],
"downloadFormat": "csv",
"maxRowsPerFile": 6000000,
"statisticsCurrency": "agency"
}
)
pprint.pprint(request.execute())