【问题标题】:Google Spreadsheet script, file access in Drive, "You do not have permission to call ..."Google 电子表格脚本,云端硬盘中的文件访问权限,“您无权调用...”
【发布时间】:2020-06-21 10:31:37
【问题描述】:

我有一张工作表,我需要在其中获取位于我的 Google 驱动器中的文件的 ID。 我编写了以下脚本:

function get_id_pdf() {
  var nom='INV432-altaïr-Famille XXX-XXX Marie-03-2016.pdf';
  var files = DriveApp.getFilesByName("'"+nom+"'");
  while (files.hasNext()) {
    var file = files.next();
    var name = file.getName();
    var type = file.getMimeType();
    var url = file.getUrl();
    var id = file.getId();
    // Logger.log(file.getId());
    return file.getId();
  }
}

如果我在脚本编辑器中执行它(使用run 按钮),它运行良好(我得到了日志的 ID)。 但是,如果我从我的 Google-Sheet 的单元格(在单元格中:=get_id_pdf())调用脚本,则会收到错误消息:

您无权调用 getFilesByName”(见图)

我当然拥有访问该文件的所有授权(它在我自己的驱动器中,并且该文件是由我创建的)。

有人有想法吗?

问候。

【问题讨论】:

标签: javascript google-apps-script google-sheets google-drive-api google-sheets-custom-function


【解决方案1】:

您不能以匿名用户的身份调用需要用户授权的服务,这是自定义函数的执行方式。您需要将行为放入自定义菜单或侧边栏中,以便用户对其进行授权。

Authorization Documentation

Custom Function Documentation

如果您的自定义函数抛出错误消息“您没有 调用 X 服务的权限。”,该服务需要用户授权 因此不能在自定义函数中使用。

【讨论】:

  • 对不起。我已经从 URL 中阅读了文档,但我只是不明白该怎么做。
  • 您需要将行为放在自定义菜单或侧边栏中。有关于如何点他的文档,谷歌google spreadsheet custom sidebargoogle spreadsheet custom menu。我的回答回答了您收到此错误的原因,如果您想知道如何制作自定义菜单或侧边栏,请提出与您遇到的问题相关的新问题。
  • @DouglasGaskell 您认为可以从单元格调用自定义菜单功能(向 Google Drive 应用程序发出请求)来解决该问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-22
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
相关资源
最近更新 更多