Долго боролся с этим вопросом.Я создаю общий документ для одной из наших небольших команд, которая немного менее технически грамотна, ей нужен одновременный доступ и идеально соответствует тому, что они «знают», то есть Excel.Итак, Google Sheets.
Однако мой код успешно работает на моей учетной записи;Я не могу надежно заставить систему запросить авторизацию у конечных пользователей, которым этот лист предоставлен.Иногда при случайном выравнивании планет появляется запрос на авторизацию;но обычно все, что возвращается, - это сообщение об ошибке «У вас нет доступа для выполнения этого действия. Пожалуйста, попросите владельца этого элемента предоставить вам доступ».
Я охотился здесь заВ то время как и обнаружил несколько других обсуждений подобных вопросов, возникающих при попытке использовать URLFetch или аналогичный, но мой пробивает даже самый простой - и предлагаемый - пример.Типичным методом является создание пункта меню, который затем вызывает другой скрипт (поскольку добавление меню не требует авторизации), и запуск этого пункта меню должен вызвать диалоговое окно.
Ниже приведен мой «тестовый» пример дляновый лист Google;каким-то образом что-то здесь не работает, когда поделился с другим пользователем.
// Works fine; creates menu item without authorisation.
function onOpen(){
SpreadsheetApp.getUi().createMenu("Test").addItem("2","something").addToUi();
}
// Does nothing; called by menu created in onOpen.
function something(){
}
// Not called in script, but sufficient to make oAuth require
// permission from end user to run anything else.
function unaccessedThingToDo(){
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('something')
.forSpreadsheet(ss)
.onOpen()
.create();
}
Может кто-нибудь посоветовать любой потенциальный обходной путь, чтобы заставить запрос аутентификации появляться, чтобы остальная часть моего кода фактическиРабота?Я знаю, что пользователи могут открывать редактор сценариев и запускать сценарий там, но заставить моих пользователей делать это без паники хуже, чем вырывать зубы.