Моя конечная цель - получить доступ к содержимому файла, загруженного через форму Google, из функции, вызванной formSubmit. Я добавил некоторую информацию в комментарии к этому вопросу, но я думаю, что мне нужно обновить сам вопрос. Когда я деактивирую надстройку Smartsheets Sync в веб-форме, все это работает как положено. Моя теория заключается в том, что дополнение Smartsheets Sync не сохраняет объект Event
в определенных сценариях.
Я начал с:
function onFormSubmit (e) {
Logger.log (e);
}
Я настроил триггер и проверил отправку формы, и в журнале я увидел:
[<datetime>] {authMode=FULL, source=Form, response=FormResponse triggerUid=<id>}
как и ожидалось. Я также исследовал объект FormResponse
и убедился, что в ответе указан правильный идентификатор Google Drive.
Затем я добавил вызов DriveApp.getFileById
:
function onFormSubmit (e) {
Logger.log (e);
var responses = e.response.getItemResponses ();
var file = DriveApp.getFileById (responses [1].getResponse ());
Logger.log (file);
}
Повторная отправка формы вызывает ошибку разрешения с DriveApp
. Не удивительно, поэтому я запустил onFormSubmit
прямо из редактора скриптов. Это не удалось, потому что он был вызван без объекта Event
, но он вызвал диалоговое окно, которое позволило мне предоставить разрешения DriveApp
.
Теперь, когда я отправляю форму, объект Event
не содержит объект FormResponse
. Из журнала:
[<datetime>] {authMode=FULL, source=Form, triggerUid=<id>}
Итак, предоставление разрешения DriveApp
как-то отменяет разрешение на проверку ответа пользователя? В качестве альтернативы, есть ли у меня другой способ использовать Google App Script для доступа к файлу, загруженному через форму Google?