Keywords

Stay organized with collections Save and categorize content based on your preferences.

Create a keyword in an existing ad group

function createHatsKeyword() {
  // This example snippet creates a broad match keyword for "hats".  Keywords
  // can be created with many optional settings, such as a max CPC bid, tracking
  // URL templates, and more.  Please customize this example for your specific
  // use case.  For more details about keyword builder options, see
  // https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_keywordbuilder.
  const adGroupName = 'Ad group 1';

  const adGroupIterator = AdsApp.adGroups()
        .withCondition(`ad_group.name = "${adGroupName}"`)
        .get();

  if (!adGroupIterator.hasNext()) {
    throw new Error(`No ad group found with name "${adGroupName}"`);
  }

  const adGroup = adGroupIterator.next();

  if (adGroupIterator.totalNumEntities() > 1) {
    console.warn(`Multiple ad groups named "${adGroupName}" found.
Using the one from campaign "${adGroup.getCampaign().getName()}".`);
  }

  const keywordOperation = adGroup.newKeywordBuilder()
        .withText('hats')
        .withCpc(1.25)
        .withFinalUrl('https://www.example.com')
        .build();

  return keywordOperation;
}

Pause an existing keyword in an ad group

function pauseKeywordInAdGroup(keywordText, adGroupName) {
  const adGroupIterator = AdsApp.adGroups()
        .withCondition(`ad_group.name = "${adGroupName}"`)
        .get();

  if (!adGroupIterator.hasNext()) {
    throw new Error(`No ad group found with name "${adGroupName}"`);
  }

  const adGroup = adGroupIterator.next();

  if (adGroupIterator.totalNumEntities() > 1) {
    console.warn(`Multiple ad groups named "${adGroupName}" found.
Using the one from campaign "${adGroup.getCampaign().getName()}".`);
  }

  for (const keyword of adGroup.keywords().withCondition(
      `ad_group_criterion.keyword.text = "${keywordText}"`)) {
    keyword.pause();
  }
}

Get all keywords in an ad group

function getKeywordsInAdGroup(adGroupName) {
  const keywordIterator = AdsApp.keywords()
        .withCondition(`ad_group.name = "${adGroupName}"`)
        .get();
  console.log(`Ad Group "${adGroupName}" has ${
      keywordIterator.totalNumEntities()} keywords`);
  return keywordIterator;
}

Log stats for all keywords in an ad group

function logKeywordStatsForAdGroup() {
  // This example snippet prints click and impression statistics to the script
  // execution log.  Please customize this example for your specific use case.
  // For all the kinds of statistics that can be logged, see
  // https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_stats.
  const adGroupName = 'Ad group 1';

  const adGroupIterator = AdsApp.adGroups()
        .withCondition(`ad_group.name = "${adGroupName}"`)
        .get();

  if (!adGroupIterator.hasNext()) {
    throw new Error(`No ad group found with name "${adGroupName}"`);
  }

  const adGroup = adGroupIterator.next();

  if (adGroupIterator.totalNumEntities() > 1) {
    console.warn(`Multiple ad groups named "${adGroupName}" found.
Using the one from campaign "${adGroup.getCampaign().getName()}".`);
  }

  for (const keyword of adGroup.keywords()) {
    let stats = keyword.getStatsFor('LAST_MONTH');
    console.log(`Ad Group: "${adGroup.getName()}"`);
    console.log(`Keyword: "${keyword.getText()}"`);
    console.log(`Clicks: ${stats.getClicks()}`);
    console.log(`Impressions: ${stats.getImpressions()}`);
    console.log('--------------------');
  }
}