设置 Apps 脚本项目

设置 Apps 脚本项目以通过 REST 调用直接调用 Google Forms API 非常简单。假设您已配置 Google Cloud 项目,请执行以下操作:

  1. 新建 Apps 脚本项目。
  2. 将关联的 Google Cloud 项目编号更改为与您为 Google Forms API 启用的项目相匹配。
  3. 修改清单文件 (appsscript.json),以添加必要的 OAuth 范围。
  4. 添加 Apps 脚本代码以获取 OAuth 令牌,并使用该令牌发出 REST 调用。

下面简要介绍一下这些步骤。

创建和配置新的 Apps 脚本项目

  1. 使用您配置 GCP 项目时所用的同一 Google ID,前往 Apps 脚本信息中心,然后点击新项目
  2. 打开项目后,点击 项目设置。
  3. 选中在编辑器中显示“appsscript.json”清单文件复选框。
  4. Google Cloud Platform (GCP) 项目部分中,点击更改项目,然后输入您为 Forms API 配置的 GCP 项目编号。

您的 Apps 脚本项目现已配置为可以访问 Google Forms API。下一个必需的步骤是添加适当的 OAuth 范围。

添加 OAuth 范围

如需在 Apps 脚本中生成范围适当的 OAuth 令牌,您需要在项目的清单文件中设置所需的范围。

  1. 在编辑器中,打开 appsscript.json
  2. 将相应范围添加到清单的正文中。

    {
      ...
    "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"
      ],
     ...
     }
    
  3. 点击 保存项目,并根据需要更正所有语法错误。现在,您的项目应该能够通过 REST 调用来调用 Google Forms API 了。

添加 Apps 脚本代码以调用 API

在编写用于调用表单的代码之前,您需要确定自己拥有的一个包含回答的表单,并记下其表单 ID。在修改表单时,您可以在网址中找到表单 ID:

https://docs.google.com/forms/d/<FORM_ID>/edit

如需调用该 API,您将使用 Apps 脚本 UrlFetchApp 调用。

  1. 打开 Code.gs 并添加以下代码:

    forms-api/snippets/retrieve_all_responses.gs
     function callFormsAPI() {
      console.log('Calling the Forms API!');
      const formId = '<YOUR_FORM_ID>';
    
      // Get OAuth Token
     const OAuthToken = ScriptApp.getOAuthToken();
     console.log('OAuth token is: ' + OAuthToken);
     const formsAPIUrl = 'https://forms.googleapis.com/v1/forms/' + formId + '/' + 'responses';
     console.log('formsAPIUrl is: ' + formsAPIUrl);
     const options = {
        'headers': {
          Authorization: 'Bearer ' + OAuthToken,
          Accept: 'application/json'
        },
        'method': 'get'
      };  
    const response = UrlFetchApp.fetch(formsAPIUrl, options);
     console.log('Response from forms.responses was: ' + response);
    }
  2. YOUR_FORM_ID 替换为您之前记下的值。

    示例:var formId = 'tL5ygBC8zpbTnTp76JCZdIg80hA-cnpbTnTjnsewCKJH';

  3. 点击 Save project(保存项目),并根据需要更正任何语法错误。

测试代码

  1. 点击 运行
  2. 使用与之前相同的 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 脚本成功调用 API 后,请参阅参考文档,并尝试对 API 进行其他调用。