Я столкнулся с проблемой при попытке выяснить способ автоматизации совместного использования отдельных файлов с помощью сценария, который выполняется внутри электронной таблицы.По сути, я пытаюсь добавить редакторы в отдельные таблицы внутри папки.Эти редакторы не являются частью группы (только другие учетные записи 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 Script, папка, которую может просматривать каждый, файлы в папке, на которую я хочу воздействовать, она отлично работает.Однако, если коллега, у которого есть доступ к редактированию электронной таблицы, в которой находится эта функция, и редактирование доступа к файлам, которые будут затронуты, попытается запустить его, он получит ошибку Action not allowed
при выполнении, даже после предоставления авторизации.
Странная часть: если я позволю кому-либо редактировать папку, она работает безупречно.Тем не менее, невозможно вручную добавить моих коллег для прав доступа к этой папке, и, конечно, это не безопасно, если я позволю кому-либо редактировать эту папку.
Я подумал, что, поскольку я собираюсь изменить отдельные файлы внутриПапка, разрешение на редактирование на уровне этой папки не требуется.Мои коллеги уже могут войти и предоставить доступ к электронным таблицам внутри них через обычное меню «Поделиться», однако это сложно сделать для всех файлов в папке.
Я бы предпочел решение, которое может использовать интерфейс меню внутри Google Sheets.Из того, что я прочитал, развертывание в качестве веб-приложения может обойти эту явную проблему с разрешениями, однако я бы хотел избежать этой возможности, если это возможно.