4

我创建了一个新脚本,在我的谷歌帐户上创建“谷歌表单”。以下是示例代码: 在此处输入图像描述

function myFunction() {
var form = FormApp.create('New Form');
var item = form.addCheckboxItem();
item.setTitle('What condiments would you like on your hot dog?');
item.setChoices([
  item.createChoice('Ketchup'),
  item.createChoice('Mustard'),
  item.createChoice('Relish')
]);
form.addMultipleChoiceItem()
.setTitle('Do you prefer cats or dogs?')
.setChoiceValues(['Cats','Dogs'])
.showOtherOption(true);
form.addPageBreakItem()
.setTitle('Getting to know you');
form.addDateItem()
.setTitle('When were you born?');
form.addGridItem()
.setTitle('Rate your interests')
.setRows(['Cars', 'Computers', 'Celebrities'])
.setColumns(['Boring', 'So-so', 'Interesting']);

Logger.log('Published URL: ' + form.getPublishedUrl());
Logger.log('Editor URL: ' + form.getEditUrl());
}

接下来,通过转到 Publish > Deploy as API Executable 使 API Executable 在此处输入图像描述

现在,如果我直接从 Google App Script 执行代码,它工作得非常好,并且表单也正在创建中。

现在我在执行来自 Google OAuth 2.0 Playground 的代码时遇到了问题。为此,我遵循了以下步骤:

  1. 访问https://console.developers.google.com并创建一个新项目
  2. 在左侧菜单中,选择“库”
  3. 在 App Script Library 中,搜索“Apps Script API”并启用它 在此处输入图像描述

  4. 接下来,转到凭据菜单并单击“创建凭据”> OAuth 客户端 ID 在此处输入图像描述

  5. 在下一个屏幕上,选择 Web 应用程序

  6. 输入新 Web 应用程序的名称

  7. 在“Authorised JavaScript origins”中设置“ http://localhost

  8. 在“授权重定向 URI”中设置“ https://developers.google.com/oauthplayground ”,因为目前我们将要求 Google OAuth Playground 上的身份验证响应。然后点击创建。

  9. 成功后,您将收到您将在 Google OAuth Playground 中提供的帐户的“客户端 ID”和“客户端密码”,以验证其他用户的应用程序。 在此处输入图像描述

  10. 现在访问https://developers.google.com/oauthplayground并点击设置齿轮。在下拉菜单中,选中“使用您自己的 OAuth 凭据”并输入在步骤 9 中收到的“OAuth 客户端 ID”和“OAuth 客户端密码” 在此处输入图像描述

  11. 接下来,在“步骤 1 选择和授权 API”部分中,选择“Apps Script API v1”并进一步选择“ https://www.googleapis.com/auth/forms ”选项并单击授权 在此处输入图像描述

  12. 接下来,它将询问您要访问所选范围的帐户的授权。在此,我使用创建用于创建代码的“App Script”的同一帐户,以及生成“Client ID”和“Client Secret”的相同帐户。 在此处输入图像描述

在此处输入图像描述

  1. 上述步骤将生成“授权码”,进一步您可以生成“刷新令牌”和“访问令牌”。 在此处输入图像描述

  2. 接下来,我们必须使用服务来执行 google app 脚本代码。单击“列出可能的操作”,然后选择“运行脚本” 在此处输入图像描述

    1. 接下来将生成一个语法,询问您可以从 google app 脚本项目中找到的脚本 ID。为此,在 google App Script 项目上,单击 File > Project Properties,最后将打开一个弹出窗口,引用脚本 ID 在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

  1. 在 PlayGround 中输入脚本 ID,然后通过单击“输入请求正文”按钮设置请求正文。要了解请求正文参数,请参阅文档https://developers.google.com/apps-script/api/reference/rest/v1/scripts/run

在此处输入图像描述

在此处输入图像描述

  1. 现在点击“发送请求”

完成上述所有步骤后,我们收到以下身份验证错误:

POST /v1/scripts/{ScriptId}:run HTTP/1.1
Host: script.googleapis.com
Content-length: 95
Content-type: application/json
Authorization: Bearer {your authentication}
{
  "function": "myFunction",
  "parameters": [],
  "sessionState": "Test",
  "devMode": true
}
HTTP/1.1 403 Forbidden
Content-length: 126
X-xss-protection: 1; mode=block
X-content-type-options: nosniff
Transfer-encoding: chunked
Vary: Origin, X-Origin, Referer
Server: ESF
-content-encoding: gzip
Cache-control: private
Date: Fri, 26 Oct 2018 13:44:57 GMT
X-frame-options: SAMEORIGIN
Alt-svc: quic=":443"; ma=2592000; v="44,43,39,35"
Content-type: application/json; charset=UTF-8
{
  "error": {
    "status": "PERMISSION_DENIED", 
    "message": "The caller does not have permission", 
    "code": 403
  }
}

在此处输入图像描述

提前感谢您的解决方案。

4

1 回答 1

1

要解决此问题,您需要创建在 App Script 中创建的项目的凭据,而不是在 Google 控制台中创建新项目。因此跳过问题中提到的步骤 1:

  1. 访问https://console.developers.google.com并创建一个新项目

并打开 App Script 项目。在当前案例中,该项目是“Test Google Form API Personal”

在此处输入图像描述

接下来,通过单击三点选项菜单将项目打开为“云项目”,然后选择“云项目”

在此处输入图像描述

现在 Google 控制台屏幕将打开。创建已打开项目的 OAuth 凭据。

在此处输入图像描述

于 2018-10-28T14:48:10.257 回答