Twitter (OAuth2.0)

/**
 * Example of using Twitter Application-only authentication from Google Ads Scripts
 * Application-only authentication is used where the aspects of the API being
 * used do not require impersonating a given Twitter user.
 *
 * Example usage:
 *   initializeOAuthClient();
 *   // Get trends using a woeId to specify location. See:
 *   // https://developer.yahoo.com/geo/geoplanet/guide/concepts.html
 *   const results = getTrendsForLocation(44418);
 *
 * See https://developers.google.com/google-ads/scripts/docs/features/third-party-apis#client_credentials_grant
 * for details on configuring this script.
 *
 * NOTE: This script also requires the OAuth2 library to be pasted at the end,
 * as obtained from https://developers.google.com/google-ads/scripts/docs/examples/oauth20-library
 */
// Consumer Key for your application set up at https://apps.twitter.com. See
// 'Keys and Access Tokens' for generating your consumer key.
const TWITTER_CONSUMER_KEY = 'INSERT_CONSUMER_KEY_HERE';
const TWITTER_CONSUMER_SECRET = 'INSERT_CONSUMER_SECRET_HERE';

let authUrlFetch;

// Call this function just once, to initialize the OAuth client.
function initializeOAuthClient() {
  if (typeof OAuth2 === 'undefined') {
    const libUrl = 'https://developers.google.com/google-ads/scripts/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.');
  }
  const tokenUrl = 'https://api.twitter.com/oauth2/token';
  authUrlFetch = OAuth2.withClientCredentials(
      tokenUrl, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET);
}

/**
 * Retrieves a list of trending topics for a given geographic area of interest.
 * @param {string} woeId Geographic location specified in Yahoo! Where On Earth
 *     format. See https://developer.yahoo.com/geo/geoplanet/guide/concepts.html
 * @return {Object} The Trends results object, see:
 *     https://dev.twitter.com/rest/reference/get/trends/place for details.
 */
function getTrendsForLocation(woeId) {
  const url = `https://api.twitter.com/1.1/trends/place.json?id=${woeId}`;
  const response = authUrlFetch.fetch(url);
  return JSON.parse(response.getContentText());
}

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

Retrieve tweets for a given search query

/**
 * Example of using Twitter Application-only authentication from Google Ads Scripts
 * Application-only authentication is used where the aspects of the API being
 * used do not require impersonating a given Twitter user.
 *
 * Example usage:
 *   initializeOAuthClient();
 *   const results = getTweetsForSearch('Olympics 2016');
 *   const localResults = getTweetsForSearch('Euro 2016', '51.5085300,-0.1257400,10mi');
 *
 * See https://developers.google.com/google-ads/scripts/docs/features/third-party-apis#client_credentials_grant
 * for details on configuring this script.
 *
 * NOTE: This script also requires the OAuth2 library to be pasted at the end,
 * as obtained from https://developers.google.com/google-ads/scripts/docs/examples/oauth20-library
 */
// Consumer Key for your application set up at https://apps.twitter.com. See
// 'Keys and Access Tokens' for generating your consumer key.
const TWITTER_CONSUMER_KEY = 'INSERT_CONSUMER_KEY_HERE';
const TWITTER_CONSUMER_SECRET = 'INSERT_CONSUMER_SECRET_HERE';

let authUrlFetch;

// Call this function just once, to initialize the OAuth client.
function initializeOAuthClient() {
  if (typeof OAuth2 === 'undefined') {
    const libUrl = 'https://developers.google.com/google-ads/scripts/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.');
  }
  const tokenUrl = 'https://api.twitter.com/oauth2/token';
  authUrlFetch = OAuth2.withClientCredentials(
      tokenUrl, TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET);
}

/**
 * Retrieves Tweets for a specific search term.
 * @param {string} searchTerm The search term to look for.
 * @param {string=} opt_geocode Limit returned Tweets to those from users in a
 *     location. Specified in the form "latitude,longitude,radius", where radius
 *     is in either "km" or "mi". e.g. 37.781157,-122.398720,1mi
 * @param {string=} opt_mode Optional preference for recent, popular or mixed
 *     results. Defaults to 'mixed', other options are 'recent' and 'popular'.
 * @return {Object} The statuses results object, see:
 *     https://dev.twitter.com/rest/reference/get/search/tweets for details.
 */
function getTweetsForSearch(searchTerm, opt_geocode, opt_mode) {
  const mode = opt_mode || 'mixed';
  const url = 'https://api.twitter.com/1.1/search/tweets.json?q=' +
      encodeURIComponent(searchTerm) + '&result_type=' + mode;
  if (opt_geocode) {
    url += 'geocode=' + opt_geocode;
  }
  const response = authUrlFetch.fetch(url);
  return JSON.parse(response.getContentText());
}

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