我创建了一个新脚本,在我的谷歌帐户上创建“谷歌表单”。以下是示例代码:
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 的代码时遇到了问题。为此,我遵循了以下步骤:
- 访问https://console.developers.google.com并创建一个新项目
- 在左侧菜单中,选择“库”
在下一个屏幕上,选择 Web 应用程序
输入新 Web 应用程序的名称
在“Authorised JavaScript origins”中设置“ http://localhost ”
在“授权重定向 URI”中设置“ https://developers.google.com/oauthplayground ”,因为目前我们将要求 Google OAuth Playground 上的身份验证响应。然后点击创建。
成功后,您将收到您将在 Google OAuth Playground 中提供的帐户的“客户端 ID”和“客户端密码”,以验证其他用户的应用程序。
现在访问https://developers.google.com/oauthplayground并点击设置齿轮。在下拉菜单中,选中“使用您自己的 OAuth 凭据”并输入在步骤 9 中收到的“OAuth 客户端 ID”和“OAuth 客户端密码”
接下来,在“步骤 1 选择和授权 API”部分中,选择“Apps Script API v1”并进一步选择“ https://www.googleapis.com/auth/forms ”选项并单击授权
接下来,它将询问您要访问所选范围的帐户的授权。在此,我使用创建用于创建代码的“App Script”的同一帐户,以及生成“Client ID”和“Client Secret”的相同帐户。
- 在 PlayGround 中输入脚本 ID,然后通过单击“输入请求正文”按钮设置请求正文。要了解请求正文参数,请参阅文档https://developers.google.com/apps-script/api/reference/rest/v1/scripts/run
- 现在点击“发送请求”
完成上述所有步骤后,我们收到以下身份验证错误:
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
}
}
提前感谢您的解决方案。