Google API可执行权限被拒绝错误

时间:2017-05-20 01:47:13

标签: google-apps-script google-cloud-platform

我有一个小的Google Apps脚本,我已将其部署为API可执行文件。 虽然我使用(电子表格)的范围使用有效令牌进行了通话,但我无法通过此403 PERMISSION_DENIED错误。 我现在正在API's Explorer上测试此错误,但错误相同。

有没有人对我可能遗失的内容有任何想法?

我的脚本很简单(但仍然不完整,但它运行 - 这对于这些初始测试应该足够了):

OAuth Scope required by script (copied from API's Explorer):
https://www.googleapis.com/auth/spreadsheets

function myFunction(get) {
  var ss = SpreadsheetApp.openById("1axDlnPaoEwhlb_Vs5SLBvkGJrR-fSeOLuHEdSBXCTBg"); // I'm not getting anything from the sheet at this point, I included it just to make sure that the script requires the spreadsheets scope

  get += " " + "success!";

  return  ContentService.createTextOutput(get);
}

请求(从API'资源管理器中复制):

POST https://script.googleapis.com/v1/scripts/1d1EKj7vi-gzC0gB02qjw_qBPE1zSrZtJp-YUWuKm3NL3-3t6Sixpm0TZ:run?key={YOUR_API_KEY}

{
 "function": "myFunction",
 "parameters": [
 "Hello world!"
 ]
}

回复(从API'资源管理器中复制):

{
    "error": {
        "code": 403,
        "message": "The caller does not have permission",
        "status": "PERMISSION_DENIED"
    }
}

2 个答案:

答案 0 :(得分:2)

您可能需要检查这三件事:

  • 确保您的应用脚本与正确的开发者控制台项目相关联。
  • 启用Apps Script Execution API。
  • 如果您使用Method: scripts.run在Apps脚本中运行某项功能,请设置devMode: true,如果您是该脚本的所有者。否则,请使用默认值false

此外,您应该符合Using the Execution API中列出的要求。

有关其他见解,请参阅此相关SO post

答案 1 :(得分:1)

该脚本应与使用的OAuth 2.0客户端ID对应的开发人员控制台项目ID相关联(在当前脚本的脚本编辑器上:Select x.name , count(*) total from employee x join employee y on y.supervisor_id = x.employee_id group by x.employee_id; ,然后输入您的项目ID号) 这就是为什么我的脚本无法运行的原因(您的脚本可能有所不同,请参阅Teyam's回答我已标记为正确的脚本)。