Раздел «Загрузка файла» используется в форме: мне нужен пользователь формы (не владелец), чтобы иметь возможность поделиться файлом с кем-то, кроме владельца формы.
Похоже,Результаты загрузки файла в форму помещают файл на диск текущего пользователя формы и предоставляют URL-адрес, который может просмотреть владелец формы.Мне нужно, чтобы этот URL был доступен другим пользователям (через скрипт, а не вручную).
При запуске с помощью ввода формы мой скрипт запускается:
DriveApp.getFileById(id).setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.NONE);
... где id - этополучено из URL-адреса, указанного в форме (см. Самый простой способ получить идентификатор файла из URL-адреса в скрипте Служб Google ... насколько я знаю, я правильно понял идентификатор).
Какпросто пользователь со ссылкой на форму, я не получаю ошибок ... и при этом я не вижу ошибок, вводимых в форму как владелец.
Но URL-адрес не может видеть никто, кроме владельца электронной таблицы (недаже пользователь, который вошел и владеет файлом, может просмотреть ссылку) ... так что DriveApp.Access.ANYONE_WITH_LINK не работает.Не владельцы формы будут управлять этим.Я предполагаю, что setSharing запускается как владелец формы, а не как пользователь, и, следовательно, не может установить его для совместного использования?Есть ли способ для сценария сделать файл / ссылку видимыми?
Но, даже если владелец формы запускает форму, URL не может быть просмотрен другими.Я не думаю, что идентификатор меняется, когда файл становится разделяемым?Так что я должен неправильно вызывать setSharing?
Может быть, идентификатор в URL-адресе, предоставленном формой, - это некая "пустая земля", где это не истинный идентификатор файла?
Пример подпрограммы, которая просто идет вниз по столбцу 4 электронной таблицы с этими URL-адресами и делает их доступными:
`
function SetPermissions() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var maintsheet = ss.getSheetByName('Maintenance');
var lastmr = maintsheet.getLastRow();
for (var i = 2; i <= lastmr; i++) {
var fileURL = maintsheet.getRange(i,4).getValue();
Logger.log(fileURL);
for (var j in fileURL.split(",")) {
Logger.log(j);
Logger.log(fileURL.split(",")[j]);
var fileID = fileURL.split(",")[j].match(/[-\w]{25,}/)[0]
Logger.log(fileID);
DriveApp.getFileById(fileID).setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.NONE);
}
}
}
`
..., выполняемый владельцемформа / таблица, без ошибок, и зарегистрированные данные выглядят правильно.Но передайте URL другому пользователю, и он получит ошибку разрешений.