【问题标题】:DriveApp.getFolderById results in "you do not have permission" errorDriveApp.getFolderById 导致“您没有权限”错误
【发布时间】:2016-01-27 03:06:20
【问题描述】:

我遇到了 getFolderById 函数的问题。我是相关文件夹的所有者。具体调用如下。

var folder = DriveApp.getFolderById('string_id_of_my_folder');

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

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

我做错了什么?

【问题讨论】:

  • 此处报告了类似问题:code.google.com/p/google-apps-script-issues/issues/…。尽管确切的错误不同,但即使在您的情况下,驱动器应用程序也可能在域中被禁用。您使用的是 Google Apps 域帐户吗?如果是这样,请在个人帐户上尝试该代码并查看。编辑:实际上修复可能很容易。在此处检查相同的问题及其答案:stackoverflow.com/questions/30709811/…
  • Suhay - 我阅读了关于 stackoverflow.com/questions/30709811/ 的讨论。
  • Suhay - 我阅读了关于 stackoverflow.com/questions/30709811/ 的讨论 - 我仍然卡住了。 (A) 我在我的个人帐户中尝试了相同的代码 - 当然,我将文件夹 ID 更改为所有者是我的个人电子邮件 xxx@gmail.com 的文件夹的 ID。得到相同的错误信息。 (B) 我也尝试了上面帖子中建议的方法:var folder = DriveApp.getFoldersByName("BlotterImprovements").next(); .... 仍然得到类似的 You do not have permission to call getFoldersByName 错误!
  • 找到了答案。该调用位于自定义函数中,其中脚本将值“返回”到单元格。我把return函数拿出来了,现在这个函数可以工作了。
  • 嗨。这里有同样的问题,但 getFolderByName("foldername").next() 没有解决。内部编辑工作,在工作表中没有!仍然得到权限错误。再次检查并删除/创建权限,但仍然出错!

标签: google-apps-script google-drive-api


【解决方案1】:

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

可安装触发器没有此限制。因此,如果您在打开当前文件或从独立脚本时需要访问另一个文件,则需要安装 Open 触发器。 Here's Google's documentation.

【讨论】:

    【解决方案2】:

    如果不设置 OAuth 范围,您会得到如下所示的内容...

    因此,对此的具体答案是您需要使用此设置 OAuth 范围

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

    在 appscript.json 文件中。要查看此文件,您需要转到 App Script 项目的设置。

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

    {
     "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"
     }
    }
    

    您现在应该会看到类似这样的内容

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 2016-08-26
      • 2019-11-22
      • 2013-01-03
      • 1970-01-01
      • 2022-06-27
      相关资源
      最近更新 更多