Keywords

Add a keyword to an existing ad group

function addKeyword() {
  // If you have multiple adGroups with the same name, this snippet will
  // pick an arbitrary matching ad group each time. In such cases, just
  // filter on the campaign name as well:
  //
  // AdsApp.adGroups()
  //     .withCondition('Name = "INSERT_ADGROUP_NAME_HERE"')
  //     .withCondition('CampaignName = "INSERT_CAMPAIGN_NAME_HERE"')
  var adGroupIterator = AdsApp.adGroups()
      .withCondition('Name = "INSERT_ADGROUP_NAME_HERE"')
      .get();
  if (adGroupIterator.hasNext()) {
    var adGroup = adGroupIterator.next();

    adGroup.newKeywordBuilder()
        .withText('Hello world')
        .withCpc(1.25)                          // Optional
        .withFinalUrl('http://www.example.com') // Optional
        .build();

    // KeywordBuilder has a number of other options. For more details see
    // https://developers.google.com/google-ads/scripts-legacy/docs/reference/adsapp/adsapp_keywordbuilder
  }
}

Pause an existing keyword in an ad group

function pauseKeywordInAdGroup() {
  var adGroupIterator = AdsApp.adGroups()
      .withCondition('Name = "INSERT_ADGROUP_NAME_HERE"')
      .get();
  if (adGroupIterator.hasNext()) {
    var adGroup = adGroupIterator.next();
    var keywordIterator = adGroup.keywords()
        .withCondition('Text="INSERT_KEYWORDS_HERE"').get();
    while (keywordIterator.hasNext()) {
      var keyword = keywordIterator.next();
      keyword.pause();
    }
  }
}

Get all keywords in an ad group

function getKeywordsInAdGroup() {
  var keywordIterator = AdsApp.keywords()
      .withCondition('AdGroupName = "INSERT_ADGROUP_NAME_HERE"')
      .get();
  if (keywordIterator.hasNext()) {
    while (keywordIterator.hasNext()) {
      var keyword = keywordIterator.next();
      Logger.log(formatKeyword(keyword));
    }
  }
}

function formatKeyword(keyword) {
  return 'Text : ' + keyword.getText() + '\n' +
      'Match type : ' + keyword.getMatchType() + '\n' +
      'CPC : ' + keyword.bidding().getCpc() + '\n' +
      'Final URL : ' + keyword.urls().getFinalUrl() + '\n' +
      'Approval Status : ' + keyword.getApprovalStatus() + '\n' +
      'Enabled : ' + keyword.isEnabled() + '\n';
}

Get stats for all keywords in an ad group

function getKeywordStats() {
  var adGroupIterator = AdsApp.adGroups()
      .withCondition('Name = "INSERT_ADGROUP_NAME_HERE"')
      .get();
  if (adGroupIterator.hasNext()) {
    var adGroup = adGroupIterator.next();
    var keywordIterator = adGroup.keywords().get();
    while (keywordIterator.hasNext()) {
      var keyword = keywordIterator.next();
      // You can also request reports for pre-defined date ranges. See
      // https://developers.google.com/adwords/api/docs/guides/awql,
      // DateRangeLiteral section for possible values.
      var stats = keyword.getStatsFor('LAST_MONTH');
      Logger.log(adGroup.getName() + ', ' + keyword.getText() + ', ' +
          stats.getClicks() + ', ' + stats.getImpressions());
    }
  }
}