DriveApp.getFolderById导致错误

use*_*394 5 google-apps-script

我遇到了getFolderById函数的问题.我是相关文件夹的所有者.具体电话如下.

var folder = DriveApp.getFolderById('string_id_of_my_folder');
Run Code Online (Sandbox Code Playgroud)

我正在传递函数内文件夹ID的长字符串.我在编辑器中运行了该函数以确保已启用权限 - 而且我没有收到任何错误.

但是当我尝试在电子表格中运行该函数时,我收到以下错误消息:"您没有权限调用getFolderById".

我究竟做错了什么?

Azm*_*mol 5

如果不设置 OAuth 范围,您会得到如下所示的内容... 在此输入图像描述

所以这个问题的具体答案是你需要用这个设置 OAuth 范围

"https://www.googleapis.com/auth/drive"

在 appscript.json 文件中。要查找此文件,您需要转到应用程序脚本项目的设置。 在此输入图像描述

每当您使用任何 Google API 时,您都需要从此处添加范围。然后,这将通过登录您的帐户再次请求您的许可。

{
 "timeZone": "Europe/London",
 "dependencies": {
  "enabledAdvancedServices": [
   {
    "userSymbol": "Classroom",
    "version": "v1",
    "serviceId": "classroom"
   }
  ]
 },
 "oauthScopes": [
  "https://www.googleapis.com/auth/drive",
 ],
 "exceptionLogging": "STACKDRIVER",
 "runtimeVersion": "V8",
 "webapp": {
  "executeAs": "USER_DEPLOYING",
  "access": "MYSELF"
 }
}
Run Code Online (Sandbox Code Playgroud)

你现在应该看到类似这样的东西 在此输入图像描述


Dea*_*ycz 3

这里的问题是自定义函数和简单触发器以有限的权限运行:您无法执行需要用户凭据的操作,例如从另一个文件读取。此处针对自定义函数详细说明了这些限制,此处针对简单触发器详细说明了这些限制。

可安装的触发器没有此限制。因此,如果您在打开当前文件或从独立脚本时需要访问另一个文件,则需要安装触发器Open这是谷歌的文档