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

Natural Language

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

Calculate the sentiment of a piece of text

/**
 * Calculates a measure of sentiment for supplied ad text.
 * See: https://developers.google.com/google-ads/scripts-legacy/docs/features/third-party-apis#refresh_token_grant
 * for details on configuring this script.
 *
 * e.g:
 *   initializeOAuthClient();
 *   var sentiment = getAdTextSentiment('Buy our cakes today!');
 *
 * NOTE: This script also requires the OAuth2 library to be pasted at the end,
 * as obtained from https://developers.google.com/google-ads/scripts-legacy/docs/examples/oauth20-library
 */
// Service account email, e.g. 'yyyy@yyyy-1234.iam.gserviceaccount.com'
var SERVICE_ACCOUNT = 'INSERT_SERVICE_ACCOUNT_EMAIL_HERE';
// Key taken from downloaded JSON key file
var KEY = '-----BEGIN ..... KEY-----\n';

var authUrlFetch;

// Call this function just once, to initialize the OAuth client.
function initializeOAuthClient() {
  if (typeof OAuth2 === 'undefined') {
    var libUrl = 'https://developers.google.com/google-ads/scripts-legacy/docs/examples/oauth20-library';
    throw Error('OAuth2 library not found. Please take a copy of the OAuth2 ' +
        'library from ' + libUrl + ' and append to the bottom of this script.');
  }
  var tokenUrl = 'https://accounts.google.com/o/oauth2/token';
  var scope = 'https://www.googleapis.com/auth/cloud-platform';
  authUrlFetchApp =
      OAuth2.withServiceAccount(tokenUrl, SERVICE_ACCOUNT, KEY, scope);
}

/**
 * Retrieve the sentiment for a given piece of text.
 * @param {string} adText The text to analyze.
 * @return {Object} The results of the analysis.
 */
function getAdTextSentiment(adText) {
  var body = {
    document:{
      type: 'PLAIN_TEXT',
      content: adText
    },
    encodingType: 'UTF8'
  };

  // Natural Language API Sentiment URL
  var url =
      'https://language.googleapis.com/v1beta1/documents:analyzeSentiment';
  var options = {
    method: 'POST',
    contentType: 'application/json',
    payload: JSON.stringify(body)
  };
  var response = authUrlFetchApp.fetch(url, options);
  var result = JSON.parse(response.getContentText());
  if (result.documentSentiment) {
    // return an object with 'polarity' and 'magnitude' properties.
    return result.documentSentiment;
  }
  throw Error('No sentiment response returned');
}

// Paste in OAuth2 library here, from:
// https://developers.google.com/google-ads/scripts-legacy/docs/examples/oauth20-library

Extract the entities from a piece of text

/**
 * Extracts entities for a piece of text.
 * See: https://developers.google.com/google-ads/scripts-legacy/docs/features/third-party-apis#refresh_token_grant
 * for details on configuring this script.
 *
 * e.g:
 *   initializeOAuthClient();
 *   var entities = getAdTextEntities('Football stadiums in London');
 *
 * NOTE: This script also requires the OAuth2 library to be pasted at the end,
 * as obtained from https://developers.google.com/google-ads/scripts-legacy/docs/examples/oauth20-library
 */
// Service account email, e.g. 'yyyy@yyyy-1234.iam.gserviceaccount.com'
var SERVICE_ACCOUNT = 'INSERT_SERVICE_ACCOUNT_EMAIL_HERE';
// Key taken from downloaded JSON key file
var KEY = '-----BEGIN ..... KEY-----\n';

var authUrlFetch;

// Call this function just once, to initialize the OAuth client.
function initializeOAuthClient() {
  if (typeof OAuth2 === 'undefined') {
    var libUrl = 'https://developers.google.com/google-ads/scripts-legacy/docs/examples/oauth20-library';
    throw Error('OAuth2 library not found. Please take a copy of the OAuth2 ' +
        'library from ' + libUrl + ' and append to the bottom of this script.');
  }
  var tokenUrl = 'https://accounts.google.com/o/oauth2/token';
  var scope = 'https://www.googleapis.com/auth/cloud-platform';
  authUrlFetchApp =
      OAuth2.withServiceAccount(tokenUrl, SERVICE_ACCOUNT, KEY, scope);
}

/**
 * Extracts entities for a given piece of text.
 * @param {string} adText The text to analyze.
 * @return {Object} The list of extracted entities.
 */
function getAdTextEntities(adText) {
  var body = {
    document:{
      type: 'PLAIN_TEXT',
      content: adText
    },
    encodingType: 'UTF8'
  };

  // Natural Language API Sentiment URL
  var url =
      'https://language.googleapis.com/v1beta1/documents:analyzeEntities';
  var options = {
    method: 'POST',
    contentType: 'application/json',
    payload: JSON.stringify(body)
  };
  var response = authUrlFetchApp.fetch(url, options);
  var result = JSON.parse(response.getContentText());
  Logger.log(result);
  if (result.entities) {
    // return a list of identified entities
    return result.entities;
  }
  throw Error('No entities response returned');
}

// Paste in OAuth2 library here, from:
// https://developers.google.com/google-ads/scripts-legacy/docs/examples/oauth20-library