Page Summary
-
This script allows you to execute an Apps Script function in a remote Apps Script.
-
It requires configuring a script as detailed in the Google Ads documentation and including the OAuth2 library.
-
You need to provide your CLIENT_ID, CLIENT_SECRET, REFRESH_TOKEN, SCOPES, and the SCRIPT_ID of the remote script.
-
The
initializeOAuthClientfunction sets up the OAuth client, which must be called once. -
The
executeRemoteFunctionfunction takes the remote function name and parameters to execute the function and returns its result.
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

