This is the legacy documentation for Google Ads scripts. Go to the current docs.

Reports

Create a text report

function runReport() {
  // Google Ads reports return data faster than campaign management methods
  //   and can be used to retrieve basic structural information on
  //   your Account, Campaigns, AdGroups, Ads, Keywords, etc. You can refer to
  //   https://developers.google.com/adwords/api/docs/guides/structure-reports
  //   for more details.

  // See https://developers.google.com/adwords/api/docs/appendix/reports
  //   for all the supported report types.
  // See https://developers.google.com/adwords/api/docs/guides/awql for
  //   details on how to use AWQL.
  // See https://developers.google.com/adwords/api/docs/guides/uireports
  //   for details on how to map an Google Ads UI feature to the corresponding
  //   reporting API feature.
  var report = AdsApp.report(
      'SELECT CampaignName, Clicks, Impressions, Cost ' +
      'FROM   CAMPAIGN_PERFORMANCE_REPORT ' +
      'WHERE  Impressions < 10 ' +
      'DURING LAST_30_DAYS');

  var rows = report.rows();
  while (rows.hasNext()) {
    var row = rows.next();
    var campaignName = row['CampaignName'];
    var clicks = row['Clicks'];
    var impressions = row['Impressions'];
    var cost = row['Cost'];
    Logger.log(campaignName + ',' + clicks + ',' + impressions + ',' + cost);
  }
}

Create a spreadsheet report

function exportReportToSpreadsheet() {
  var spreadsheet = SpreadsheetApp.create('INSERT_REPORT_NAME_HERE');
  var report = AdsApp.report(
    'SELECT CampaignName, Clicks, Impressions, Cost ' +
    'FROM   CAMPAIGN_PERFORMANCE_REPORT ' +
    'WHERE  Impressions < 10 ' +
    'DURING LAST_30_DAYS');
  report.exportToSheet(spreadsheet.getActiveSheet());
}

Filter entities by label

function filterReportByLabelIds() {
  var label = AdsApp.labels().withCondition(
      "Name = 'High performance campaigns'").get().next();
  var query = 'SELECT CampaignName, Clicks, Impressions, Cost from ' +
      'CAMPAIGN_PERFORMANCE_REPORT where Labels CONTAINS_ANY ' +
      '[' + label.getId() + '] during THIS_MONTH';

  var report = AdsApp.report(query);

  var rows = report.rows();
  while (rows.hasNext()) {
    var row = rows.next();
    var campaignName = row['CampaignName'];
    var clicks = row['Clicks'];
    var impressions = row['Impressions'];
    var cost = row['Cost'];
    Logger.log(campaignName + ',' + clicks + ',' + impressions + ',' + cost);
  }
}