库函数作为定时触发器DriveApp访问

时间:2018-03-05 11:23:05

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

仍然是一个Apps脚本新手,仍然有挫折。任何帮助将不胜感激。

情境: 用户A创建了一个名为“batchServices”的库脚本

batchServices包含函数weeklyTrigger(),其中包含以下1299行,用于创建csv提取:

var url = DriveApp.getFolderById(folder)
.createFile(filename, csv, MimeType.CSV)
.getDownloadUrl()
.replace("?e=download&gd=true","");
return url;

用户X创建了电子表格S1和S2。用户A(库脚本batchServices的所有者)在“脚本编辑器库”菜单中以及API控制台中将Google表格API添加为高级Google服务。用户A然后将以下脚本添加到S1:

function weeklyTrigger() {
  batchServices.weeklyTrigger();
}

用户A然后添加触发器weeklyTrigger,时间驱动在00:00和01:00之间每周运行一次。

触发器触发并且批量每周触发器成功执行,创建所需的csv输出。 Hoorah。

问题: 用户B(不是库脚本的所有者,而是具有共享读/写访问权限的用户)执行完全相同的步骤,将每周批处理服务添加到电子表格S2记住,S1和S2基本上是同一电子表格的副本,两者都归User X所有,写权限扩展到用户A和B.这两种方案的唯一区别是用户A拥有库脚本,而用户B只有写访问权限。以下是S2的每周触发事件触发并正确调用库脚本的类似命名函数时生成的错误报告:

错误消息(重新格式化为适合SO:)

  

开始时间:3/5/18 12:32 AM功能:weeklyTrigger错误消息:访问被拒绝:   DriveApp。 (第1299行,文件“代码”,项目“BatchServices”)触发器:   基于时间的结束时间:3/5/18 12:38 AM

看起来问题是身份验证问题。是否有必要采取额外步骤来允许用户B(谁不是库脚本的所有者但具有写访问权限)在电子表格S2中编写一个触发器,该触发器调用使用DriveApp调用的库函数?值得注意的是,用户A无法看到用户B在电子表格S2中建立的触发器,用户B无法在电子表格S1中看到用户A建立的触发器。如何让用户A和B承担相同的权利?

1 个答案:

答案 0 :(得分:0)

如上所述,答案很简单,我没有授予对DriveApp文件夹的访问权限(对用户B)。向前和向上: - )