在 Google 文档中使用 Natural Language API
实验
45 分钟
universal_currency_alt
5 个点数
show_chart
中级
info
此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。
GSP126

概览
Natural Language API 是一种预训练的机器学习模型,可用于分析语法、提取实体并评估文本情感。您可以从 Google 文档中调用 Natural Language API 来执行这些功能。
本实验重点介绍如何从 Google 文档调用 Natural Language API。您将使用 Natural Language API 识别 Google 文档中所选文本的情感,并根据该情感突出显示文本。
完成本实验后,您将能够选择文档中的文本,并通过菜单选项标记其情感,如下所示。

文本以红色突出显示表示负面情感,绿色表示正面情感,黄色表示中性情感。
学习内容
在本实验中,您将学习如何完成以下操作:
- 从 Google 文档调用 Natural Language API
- 在 Google 文档中添加菜单
- 识别并处理 Google 文档中的选定文本
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
- “打开 Google Cloud 控制台”按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在“实验详细信息”窗格中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在“实验详细信息”窗格中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
任务 1. 启用 Natural Language API
开始之前,请确保已启用 Natural Language API。
-
在 Google Cloud 控制台中,依次选择导航菜单 > API 和服务 > 库。
-
搜索 Cloud Natural Language API,然后点击该 API 以启用它,或确认该 API 已启用。
任务 2. 获取 API 密钥
生成 API 用户密钥,并将其包含在请求网址中。
-
要创建 API 密钥,请依次点击导航菜单 > API 和服务 > 凭据。
-
在页面顶部点击创建凭据,然后选择 API 密钥:
-
将生成的 API 密钥复制到文本文件或 Google 文档中,以便在后续步骤中使用。点击关闭。
获得 API 密钥后,您就可以开始使用 Google 文档了。
点击“检查我的进度”,以验证是否完成了以下目标:
获取 API 密钥
任务 3. 设置 Google 文档
在调用 Natural Language API 之前,请编写一个 Apps 脚本程序,用于创建菜单,将其链接到标记文本的函数,并从用户选择中提取文本。
- 创建新的 Google 文档。
- 在新文档中,依次选择扩展程序 > Apps 脚本菜单项。
- 删除脚本编辑器中的所有代码,然后粘贴以下代码。这段代码会创建一个菜单项,从当前选定文本中提取文本,并根据文本的情感突出显示文本。它尚未调用 Natural Language API。
/**
* @OnlyCurrentDoc
*
* 上述注释指示 Apps 脚本将此附加组件的文件访问范围
* 限制为当前文档。它指定该附加组件只会
* 尝试读取或修改使用该附加组件的文档,
* 而不会访问用户的所有文件。向用户显示的授权请求消息
* 将反映这一受限范围。
*/
/**
* 在打开文档时,在 Google Docs 界面中创建一个
* 菜单项。
*
*/
function onOpen() {
var ui = DocumentApp.getUi();
ui.createMenu('Natural Language Tools')
.addItem('Mark Sentiment', 'markSentiment')
.addToUi();
}
/**
* 获取用户选定的文本,并根据情感进行突出显示
* 绿色表示正面情感,红色表示负面情感,黄色表示
* 中性情感。
*
*/
function markSentiment() {
var POSITIVE_COLOR = '#00ff00'; // 情感颜色定义
var NEGATIVE_COLOR = '#ff0000';
var NEUTRAL_COLOR = '#ffff00';
var NEGATIVE_CUTOFF = -0.2; // 情感阈值
var POSITIVE_CUTOFF = 0.2;
var selection = DocumentApp.getActiveDocument().getSelection();
if (selection) {
var string = getSelectedText();
var sentiment = retrieveSentiment(string);
// 选择合适的颜色
var color = NEUTRAL_COLOR;
if (sentiment <= NEGATIVE_CUTOFF) {
color = NEGATIVE_COLOR;
}
if (sentiment >= POSITIVE_CUTOFF) {
color = POSITIVE_COLOR;
}
// 突出显示所选文本
var elements = selection.getSelectedElements();
for (var i = 0; i < elements.length; i++) {
if (elements[i].isPartial()) {
var element = elements[i].getElement().editAsText();
var startIndex = elements[i].getStartOffset();
var endIndex = elements[i].getEndOffsetInclusive();
element.setBackgroundColor(startIndex, endIndex, color);
} else {
var element = elements[i].getElement().editAsText();
foundText = elements[i].getElement().editAsText();
foundText.setBackgroundColor(color);
}
}
}
}
/**
* 返回所选文本的字符串内容。
* 如果未选择任何文本则返回空字符串。
*/
function getSelectedText() {
var selection = DocumentApp.getActiveDocument().getSelection();
var string = "";
if (selection) {
var elements = selection.getSelectedElements();
for (var i = 0; i < elements.length; i++) {
if (elements[i].isPartial()) {
var element = elements[i].getElement().asText();
var startIndex = elements[i].getStartOffset();
var endIndex = elements[i].getEndOffsetInclusive() + 1;
var text = element.getText().substring(startIndex, endIndex);
string = string + text;
} else {
var element = elements[i].getElement();
// 进处理可作为文本编辑的元素;跳过
// 图像和其他非文本元素。
if (element.editAsText) {
string = string + element.asText().getText();
}
}
}
}
return string;
}
/** 传入字符串后,调用 Natural Language API 并获取
* 该字符串的情感值。情感值为实
* 数,区间为 -1 到 1,其中 -1 表示强负面
* 情感,1 表示强正面情感。
*/
function retrieveSentiment (line) {
// TODO: Call the Natural Language API with the line given
// and return the sentiment value.
return 0.0;
}
注意:如需详细了解 Apps 脚本,请参阅 Google Apps 脚本参考文档。
- 在菜单栏上,点击将项目保存到云端硬盘 (
)。(脚本名称会在多个位置向最终用户显示,包括授权对话框。)
- 返回文档。向文档中添加文本。您可以使用来自 Project Gutenberg 网站的《爱丽丝梦游仙境》示例文本(将
纯文本 UTF-8 版本复制并粘贴到文档中),也可以使用任意文本。
- 重新加载文档后,您会在 Google 文档工具栏中看到创建的新菜单 Natural Language Tools(自然语言工具)。
- 选择文本,然后从“自然语言工具”菜单中选择标记情感选项。首次选择该选项时,系统会提示您授权脚本运行。点击确定,然后确认您的账号。
-
允许“自然语言工具”查看和管理已安装此应用的文档。
- 脚本获得授权后,所选文本会以黄色突出显示,因为情感分析的桩始终返回 0.0,即中性。

点击“检查我的进度”,以验证是否完成了以下目标:
设置 Google 文档
任务 4. 调用 Natural Language API
当您的程序能够从所选内容中提取文本并突出显示后,就可以调用 Natural Language API 了。所有这些操作都在 retrieveSentiment 函数的正文中完成。
注意:如需详细了解 Natural Language API,请参阅 Cloud Natural Language API 参考文档。
- 返回 Google 文档,前往扩展程序 > Apps 脚本。
- 在
retrieveSentiment 函数中,将“your key here”替换为来自 Google Cloud 控制台的实际 API 密钥。
var apiKey = "your key here"; // Replace with your actual API key
- 创建一个变量来保存 Natural Language API 的网址,并在网址后附加您的 API 密钥(请勿修改此行):
var apiEndpoint = "https://language.googleapis.com/v1/documents:analyzeSentiment?key=" + apiKey;
- 根据传入函数的行构建一个结构,其中包含该行的文本、类型和语言。目前仅支持英语。
var docDetails = {
language: 'en-us',
type: 'PLAIN_TEXT',
content: line
};
- 通过添加编码类型,根据文档详细信息构建整个数据载荷:
var nlData = {
document: docDetails,
encodingType: 'UTF8'
};
- 创建一个包含载荷和必要标头信息的结构:
var nlOptions = {
method : 'post',
contentType: 'application/json',
payload : JSON.stringify(nlData)
};
- 发出调用并保存响应:
var response = UrlFetchApp.fetch(apiEndpoint, nlOptions);
- 响应以 JSON 格式返回。解析该响应并提取 score 字段(如果存在)。返回该字段的值或 0.0。
var data = JSON.parse(response);
var sentiment = 0.0;
// Ensure all pieces were in the returned value
if (data && data.documentSentiment
&& data.documentSentiment.score){
sentiment = data.documentSentiment.score;
}
return sentiment;
检索情感的完整代码如下所示:
function retrieveSentiment (line) {
var apiKey = "your key here"; // Replace with your actual API key
var apiEndpoint = "https://language.googleapis.com/v1/documents:analyzeSentiment?key=" + apiKey;
// Create a structure with the text, its language, its type,
// and its encoding
var docDetails = {
language: 'en-us',
type: 'PLAIN_TEXT',
content: line
};
var nlData = {
document: docDetails,
encodingType: 'UTF8'
};
// Package all of the options and the data together for the call
var nlOptions = {
method : 'post',
contentType: 'application/json',
payload : JSON.stringify(nlData)
};
// And make the call
var response = UrlFetchApp.fetch(apiEndpoint, nlOptions);
var data = JSON.parse(response);
var sentiment = 0.0;
// Ensure all pieces were in the returned value
if (data && data.documentSentiment
&& data.documentSentiment.score){
sentiment = data.documentSentiment.score;
}
return sentiment;
}
- 保存脚本,重新加载文档,然后试用完整程序。您可能需要使用凭据重新授权,才能启用新功能。选择文档的不同部分,查看不同部分的情感有何不同。

- (可选)输入并分析自己的话。例如,输入并分析“I'm mad”(我生气了),然后输入并分析“I'm happy”(我很高兴)。进行实验,观察 Natural Language API 如何解读不同的句群,例如分析“I'm happy.”“I'm happy.”“I'm sad.”如果再添加一个“I'm sad.”,会发生什么情况?
恭喜!
恭喜!您已成功创建 Google 文档,并调用 Natural Language API 来分析文档中所选文本的情感。
后续步骤/了解详情
欢迎您继续学习 Google Cloud,完成以下推荐实验:
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 3 月 21 日
上次测试实验的时间:2025 年 3 月 21 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。