首页 > 解决方案 > SpreadsheetApp.openById 上的脚本失败 - 需要权限

问题描述

我有一个在电子表格中创建自定义菜单的 onOpen 函数。它已经运行了一年多,但几天前它停止了工作。

当我查看执行记录时,我得到:

“执行失败:您无权调用 SpreadsheetApp.openById。所需权限:https ://www.googleapis.com/auth/spreadsheets ”

这失败/与以下代码行有关:

var ss = SpreadsheetApp.openById("myID")

我检查了启用了哪些 API,并启用了表格,这反映在 .json 文件中。我在脚本中的任何地方都没有@OnlyCurrentDoc。我已经为此脚本重置了帐户的权限,再次运行该功能并允许权限,但菜单仍然不会在打开时创建。

我的 .json 文件:

{
"timeZone": "Europe/London",
"dependencies": {
"enabledAdvancedServices": [{
  "userSymbol": "Sheets",
  "serviceId": "sheets",
  "version": "v4"
 }]
},
"exceptionLogging": "STACKDRIVER"
}

标签: google-apps-scriptoauthgoogle-apitriggers

解决方案


发生此错误是因为代码没有足够的权限来运行该方法。该openById方法需要一个或多个范围。您的清单 .JSON 应如下所示:

{
  "timeZone": "Europe/London",
  "dependencies": {
    "enabledAdvancedServices": [{
      "userSymbol": "Sheets",
      "serviceId": "sheets",
      "version": "v4"
    }]
  },
  "exceptionLogging": "STACKDRIVER",
  "oauthScopes": [
    "https://www.googleapis.com/auth/spreadsheets"
  ]
}

请注意我是如何在文件末尾添加范围的。请不要犹豫,要求对此答案进行更多说明。


推荐阅读