【发布时间】:2020-08-23 01:06:12
【问题描述】:
使用代码创建一个空白电子表格并获取它的 ID。一旦资源的 ID 可用,我想以编程方式将自定义脚本附加到它。
[...]
var newSpreadsheet = SpreadsheetApp.create("Опис "+dateFormated);
Logger.log(newSpreadsheet.getId());
var url = 'https://script.googleapis.com/v1/projects/'+newSpreadsheet.getId();
var token = ScriptApp.getOAuthToken();
var response = UrlFetchApp.fetch(url, {
headers: {
Authorization: 'Bearer ' + token
},
muteHttpExceptions: true
});
请求导致错误(无论我为项目调用哪个端点) 错误消息中提供的 URL 没有帮助,因为它不是我管理的项目。去它会导致
您没有足够的权限查看此页面
您至少缺少以下所需权限之一:
项目
resourcemanager.projects.get
serviceusage.services.get
"error": {
"code": 403,
"message": "Apps Script API has not been used in project 85798724816 before or it is disabled. Enable it by visiting https://console.developers.google.com/apis/api/script.googleapis.com/overview?project=85798724816 then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.",
"status": "PERMISSION_DENIED",
"details": [
{
"@type": "type.googleapis.com/google.rpc.Help",
"links": [
{
"description": "Google developers console API activation",
"url": "https://console.developers.google.com/apis/api/script.googleapis.com/overview?project=85798724816"
}
]
}
]
}
编辑: puffin 和 TheMaster 的回答都解决了这个问题。
TheMaster 的回答是我更具体地想做的事情
我的问题也有问题。我正在尝试在创建电子表格之前获取电子表格项目。所以正确的第一个请求是“POST”到“https://script.googleapis.com/v1/projects”
解决步骤:
- 从“默认”谷歌云项目切换到“标准”云项目(查看 TheMaster 的链接)
- 在云控制台中为项目创建 API 密钥
var url = 'https://script.googleapis.com/v1/projects?key=[YOUR_KEY_HERE]';
var token = ScriptApp.getOAuthToken();
var data = {
"parentId": "16eL4PIVFO5Zdd7r-8HhQF_4OZS7G7TbTX-pg",
"title": "autoProject"
};
var response = UrlFetchApp.fetch(url, {
headers: {
Authorization: 'Bearer ' + token
},
method: 'POST',
contentType: "application/json",
muteHttpExceptions: true,
payload: JSON.stringify(data),
});
这就是您从 Scripts 本身向 Scripts API 成功执行请求的方式
【问题讨论】:
-
这是 gsuite 吗?您可能需要让您的管理员授予这些权限
标签: google-apps-script http-status-code-403 google-apps-script-api