After you've set everything up, make sure you can successfully send a sample request to the Search Ads 360 API. The following code sample demonstrates how to send an asynchronous request for the list of campaigns under your advertiser. If the request is successful, you'll get a response from the Search Ads 360 API saying that the report is created but not ready (this is because asynchronous requests require additional requests to actually download a report).
You'll need to specify your own OAuth 2.0 access token and your own agency ID in the request. To find your agency ID:
- Visit the Search Ads 360 UI.
- Your agency and advertiser IDs are displayed in the URL, just after the
ay=
andav=
prefix. For example:
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" }
Use the Search Ads 360 utility script to send this request
To send a raw JSON POST request, you can use the sa360Api.py script as follows:
- Copy the example JSON object (everything between and including the two
curly brackets) into a new text file named
request.txt
. - Change the agency ID that's in the JSON code to your own agency ID.
- Remove any comments, such as
// The date column segments the report by individual days.
- Assemble your OAuth 2.0 credentials into a single, comma-delimited string as
follows:
client-ID,client-secret,refresh-token
(This is the same string thatsa360Api.py
outputs when you runsa360Api.py --login
as described in Set Up Authorization.) - Invoke
sa360Api.py
as follows:
sa360Api.py --cred CREDENTIALS --server API-method --post < request.txt
In the command above, substitute the string you assembled in the previous step forCREDENTIALS
.
Substitute the name of the POST method in the box below forAPI-method
.For example:
sa360Api.py --cred 123456789123.apps.googleusercontent.com,ABCDEFGHIJKLMNOPQR_abcdef,1/HIJklM01OPQR23NOP456rst890uvw --server https://www.googleapis.com/doubleclicksearch/v2/reports/generate --post < request.txt
Java
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); }
.NET
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<api.Data.ReportRequest.ColumnsData> { new api.Data.ReportRequest.ColumnsData { ColumnName = "campaignId", }, new api.Data.ReportRequest.ColumnsData { ColumnName = "campaign", }, }, TimeRange = new api.Data.ReportRequest.TimeRangeData { StartDate = "2014-01-01", EndDate = "2014-01-31", }, DownloadFormat = "csv", StatisticsCurrency = "usd", MaxRowsPerFile = 5000000, }; }
Python
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())