Apps Scripts execution

Execute a function

/**
 * Executes an Apps Script function in a remote Apps Script.
 * See: https://developers.google.com/google-ads/scripts/docs/features/third-party-apis#refresh_token_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
 */
const CLIENT_ID = 'INSERT_CLIENT_ID';
const CLIENT_SECRET = 'INSERT_CLIENT_SECRET';
const REFRESH_TOKEN = 'INSERT_REFRESH_TOKEN';
// Enter scopes which should match scopes in File > Project properties
// For this project, e.g.: https://www.googleapis.com/auth/drive
const SCOPES = 'ENTER_SPACE_DELIMITED_SCOPES';
// Script ID taken from 'File > Project Properties'
const SCRIPT_ID = 'ENTER_SCRIPT_ID';

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://accounts.google.com/o/oauth2/token';
  authUrlFetch = OAuth2.withRefreshToken(tokenUrl, CLIENT_ID, CLIENT_SECRET,
    REFRESH_TOKEN, SCOPES);
}

/**
 * Execute a remote function.
 * @param {string} remoteFunctionName The name of the function to execute.
 * @param {Object[]} functionParams An array of JSON objects to pass to the
 *     remote function.
 * @return {?Object} The return value from the function.
 */
function executeRemoteFunction(remoteFunctionName, functionParams) {
  const apiParams = {
    'function': remoteFunctionName,
    'parameters': functionParams
  };
  const httpOptions = {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    payload: JSON.stringify(apiParams)
  };
  const url = `https://script.googleapis.com/v1/scripts/${SCRIPT_ID}:run`;
  const response = authUrlFetch.fetch(url, httpOptions);
  const data = JSON.parse(response.getContentText());
  // Retrieve the value that has been returned from the execution.
  if (data.error) {
    throw Error(`There was an error: ${response.getContentText()}`);
  }
  return data.response.result;
}

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