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/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
/**
* 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
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2022-03-14 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2022-03-14 UTC."],[[["These Google Ads scripts utilize the Natural Language API to analyze ad text."],["One script calculates the sentiment (polarity and magnitude) of ad text."],["The other script extracts entities from ad text, providing insights into key terms and topics."],["Both scripts require initialization of an OAuth client for authentication and authorization to the API."],["Users need to insert their service account email and key for secure API access."]]],[]]