Page Summary
-
The script uses the Google Cloud Natural Language API to analyze text.
-
It requires configuration with a service account email and key.
-
The script includes functions to calculate sentiment and extract entities from text.
-
The OAuth2 library is needed for authentication and must be appended to the script.
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 / docs / features / third - party - apis #refresh_token_grant * for details on configuring this script . * * e . g : * initializeOAuthClient (); * const 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 / docs / examples / oauth20 - library */ // Service account email , e . g . 'yyyy@yyyy-1234.iam.gserviceaccount.com' const SERVICE_ACCOUNT = 'INSERT_SERVICE_ACCOUNT_EMAIL_HERE' ; // Key taken from downloaded JSON key file const KEY = '-----BEGIN ..... KEY----- \n ' ; 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' ; const 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 ) { const body = { document :{ type : 'PLAIN_TEXT' , content : adText }, encodingType : 'UTF8' }; // Natural Language API Sentiment URL const url = 'https://language.googleapis.com/v1beta1/documents:analyzeSentiment' ; const options = { method : 'POST' , contentType : 'application/json' , payload : JSON . stringify ( body ) }; const response = authUrlFetchApp . fetch ( url , options ); const 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 / 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 / docs / features / third - party - apis #refresh_token_grant * for details on configuring this script . * * e . g : * initializeOAuthClient (); * const 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 / docs / examples / oauth20 - library */ // Service account email , e . g . 'yyyy@yyyy-1234.iam.gserviceaccount.com' const SERVICE_ACCOUNT = 'INSERT_SERVICE_ACCOUNT_EMAIL_HERE' ; // Key taken from downloaded JSON key file const KEY = '-----BEGIN ..... KEY----- \n ' ; 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' ; const 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 ) { const body = { document :{ type : 'PLAIN_TEXT' , content : adText }, encodingType : 'UTF8' }; // Natural Language API Sentiment URL const url = 'https://language.googleapis.com/v1beta1/documents:analyzeEntities' ; const options = { method : 'POST' , contentType : 'application/json' , payload : JSON . stringify ( body ) }; const response = authUrlFetchApp . fetch ( url , options ); const result = JSON . parse ( response . getContentText ()); console . 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 / docs / examples / oauth20 - library

