在尝试找出一种使用电子表格中运行的脚本自动共享单个文件的方法时,我遇到了一个问题。本质上,我想做的是将编辑器添加到文件夹内的各个电子表格中。这些编辑器不是组的成员(只是其他GMail帐户的成员),并且不应具有用于添加/删除文件的文件夹级别的访问权限。
我的代码是:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('File Access').addItem('Grant Access', 'addUser').addToUI();
}
function addUser() {
var ui = SpreasheetApp.getUI();
var response = ui.prompt('Grant Access', 'Enter the email address to grant access for:', ui.ButtonSet.OK_CANCEL);
if (response.getSelectedButtion() != ui.Button.OK) {
return; // Ignore Cancel button
}
var emailAddress = response.getResponseText();
var folder = DriveApp.getFolderById(folderID);
var files = folder.getFiles();
while (files.hasNext()) {
var file = files.next();
file.addEditor(emailAddress);
ui.alert('Granted access to: ' + file.getName());
}
}
当我在自己的驱动器(拥有电子表格,App脚本,任何人都可以查看的文件夹,我想要影响的文件夹中的文件)上进行测试时,它可以正常工作。
但是,如果具有对该功能所在的电子表格具有编辑访问权限并且对将要受影响的文件具有编辑访问权限的同事尝试运行该电子表格,即使在授予授权后,他们也会在执行时遇到Action not allowed
错误。
奇怪的是,如果我允许任何人编辑文件夹,它都可以正常工作。但是,手动添加同事以对该文件夹进行编辑访问是不可行的,并且如果我让任何人编辑该文件夹当然也不安全。
我认为,由于我打算修改文件夹中的单个文件,因此不需要该文件夹级别的编辑权限。我的同事已经可以通过正常的“共享”菜单进入并从其中授予对电子表格的访问权限,但是对文件夹中的所有文件执行此操作很麻烦。
我希望可以使用Google表格内的菜单界面的解决方案。据我了解,部署为Web App可能会解决此明显的权限问题,但是,如果可能的话,我希望避免这种情况。