无权在Google电子表格中使用getFileById

时间:2016-04-17 19:46:52

标签: google-sheets google-spreadsheet-api

我有以下问题。

我有两个文件:

  1. 源文件 - https://docs.google.com/spreadsheets/d/15zIdIeYFlca-SQ0ryl89oX_tbGjO_6cipqHkkxog7ho/edit#gid=0
  2. 目标文件 - https://docs.google.com/spreadsheets/d/1gGExeO2x8pqNzTPRvel8p-wwe-BDkdF5c6BFA8j_Py0/edit#gid=0
  3. 在源文件中有一个脚本(函数名为onEdit,使用onEdit事件触发)。当您将R3单元格(源文件)的值更改为其他“Advisor”时,应将整行复制到目标文件,但有时它可以正常工作,有时则不行。如果您更改了顾问字段的值一次并且它可以尝试多次尝试,并且肯定会在一段时间内出现权限问题。

    当它不工作时,我得到msg,执行名为getFileById的函数的权限存在问题,该函数用于以下行:

    var file = DriveApp.getFileById('1gGExeO2x8pqNzTPRvel8p-wwe-BDkdF5c6BFA8j_Py0');
    

    任何想法如何解决问题以及为什么有时它可以正常工作?

2 个答案:

答案 0 :(得分:0)

使用“简单”触发器的脚本可以修改它们绑定的文件,但无法访问其他文件,因为这需要授权。

See here to learn more about the restrictions on simple triggers.

答案 1 :(得分:0)

您可以按照以下步骤确保您拥有所有权限:

  1. 打开脚本项目。在左侧,点击项目设置

  2. 选中在编辑器中显示“appsscript.json”清单文件复选框。

  3. 在左侧,单击编辑器 <>。

  4. 在左侧,单击 appsscript.json 文件。

  5. 找到标记为 oauthScopes 的顶级字段。如果它不存在,您可以添加它。

  6. oauthScopes 字段指定一个字符串数组。设置项目范围 使用,将此数组的内容替换为您希望它使用的范围。为了 例子:

    {"oauthScopes": ["https://www.googleapis.com/auth/spreadsheets.readonly", "https://www.googleapis.com/auth/userinfo.email"], }

取自:https://developers.google.com/apps-script/concepts/scopes