SpreadsheetApp.openByID

时间:2019-02-12 17:25:49

标签: google-apps-script google-sheets

该代码应该从另一个电子表格中复制一些数据,然后由我操纵。

该代码昨天有效,然后我今天尝试添加一个库,即使删除了该库并将其代码回滚到昨天的版本,它仍然会引发此错误。

错误消息:

  

您无权调用SpreadsheetApp.openById。需要   权限:https://www.googleapis.com/auth/spreadsheets(第21行,   文件“导入”)

代码:

 data = SpreadsheetApp.openById('1-SyJRflR1YYYYDRo3e7xnDhYYYY6hIGDBKODl9XXXXX').getSheetByName("g1.1").getDataRange().getValues();

我在两个文档的任何地方都没有使用“ // @ OnlyCurrentDoc”,所以这不是我的问题。

已从资源菜单中选中该项目的Google Sheets API已打开。

我尝试使用的库函数只是一个简单的时间(与工作表无关),并且目前在我的项目中的任何地方都没有调用它,并且库已分离。

1 个答案:

答案 0 :(得分:1)

可能的问题:

  1. 如果您的库包含//@OnlyCurrentDoc,并且在添加库后获得了授权,则您的权限可能只包含了当前文档。

  2. 如果您已明确设置范围1,则这些范围可能未包含https://www.googleapis.com/auth/spreadsheets

可能的解决方案:

  1. 如果您仍要使用该库,请在主脚本中添加//@NotOnlyCurrentDoc,然后重新运行该函数。如果没有,请删除该库并重新运行您的功能。

      

    An opposing annotation, @NotOnlyCurrentDoc, is available if your script includes a library that declares @OnlyCurrentDoc, but the master script actually requires access to more than the current file.

  2. 删除清单中的显式作用域将触发正常的授权流程。

  3. 如果其他所有方法均失败,请访问your account,找到您的项目并删除所有访问权限。现在,重新运行脚本中的任何功能将触发正常的授权流程。