设置 Apps Script 项目以通过 REST 调用直接调用 Google 表单 API 非常简单。假设您已配置 Google Cloud 项目,请执行以下操作:
- 新建 Apps 脚本项目。
- 更改关联的 Google Cloud 项目编号,使其与您为 Google 表单 API 启用的项目一致。
- 修改清单文件 (
appsscript.json
) 以添加必要的 OAuth 范围。 - 添加 Apps 脚本代码以提取 OAuth 令牌,并使用该令牌发出 REST 调用。
下面简要介绍了这些步骤。
创建和配置新的 Apps 脚本项目
- 使用配置 GCP 项目时所用的 Google ID,前往 Apps Script 信息中心,然后点击新建项目。
- 打开项目后,点击 Project Settings。
- 选中在编辑器中显示“appsscript.json”清单文件复选框。
- 在 Google Cloud Platform (GCP) 项目部分中,点击更改项目,然后输入您为 Google 表单 API 配置的 GCP 项目编号。
您的 Apps Script 项目现已配置为可以访问 Google 表单 API。下一步是添加适当的 OAuth 范围。
添加 OAuth 范围
如需在 Apps Script 中生成适当范围的 OAuth 令牌,您需要在项目的清单文件中设置所需的范围。
- 在编辑器中,打开
appsscript.json
。 将镜重范围添加到清单正文中。
{ ... "oauthScopes": [ "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.readonly", "https://www.googleapis.com/auth/forms.body", "https://www.googleapis.com/auth/forms.body.readonly", "https://www.googleapis.com/auth/forms.responses.readonly" ], ... }
点击
保存项目,并根据需要更正所有语法错误。您的项目现在应该能够通过 REST 调用调用 Google 表单 API。
添加 Apps 脚本代码以调用 API
在编写用于调用表单的代码之前,您需要确定您拥有的包含回复的表单,并记下其表单 ID。在编辑表单时,您可以在网址中找到表单 ID:
https://docs.google.com/forms/d/<FORM_ID>/edit
如需调用该 API,您将使用 Apps Script UrlFetchApp
调用。
打开 Code.gs 并添加以下代码:
将
YOUR_FORM_ID
替换为您之前记下的值。示例:
var formId = 'tL5ygBC8zpbTnTp76JCZdIg80hA-cnpbTnTjnsewCKJH';
点击
Save project(保存项目),并根据需要更正所有语法错误。
测试代码
- 点击 运行。
- 根据需要使用之前的 Google ID 为项目授权。
启动后,您应该会在执行日志中看到类似于以下内容的响应:
Execution started Calling the Forms API! OAuth token is: ya29.a0ARrdaM8IMjtlv… formsAPIUrl is: https://forms.googleapis.com/v1beta/forms/…/responses Response from Forms.responses was: { "responses": [ { "responseId":"...", "createTime": "2021-03-25T01:23:58.146Z", "lastSubmittedTime": "2021-03-25T01:23:58.146607Z", "answers": { "1e9b0ead": { "questionId": "1e9b0ead", "textAnswers": { "answers": [ { "value": "Red" } ] } }, "773ed8f3": { "questionId": "773ed8f3", "textAnswers": { "answers": [ { "value": "Tesla" } ] } } } } ] } Execution completed
后续步骤
使用 Apps Script 成功调用 API 后,请参阅参考文档,并尝试对该 API 进行其他调用。