Сценарий условного форматирования Google Sheets Apps batchUpdate

Я успешно создал функцию сценария на стороне клиента, которая удаляет и восстанавливает все условное форматирование на шаблонном листе (для поддержания заданного режима условного форматирования без блокировки ячеек). Я разместил вызов этой функции в обработчике событий onOpen() листов. Когда в редакторе сценариев я явно запускаю обработчик onOpen, все работает хорошо. Когда я открываю лист и запускаю событие onOpen естественным образом, я получаю ошибку аутентификации в ответ на вызов batchUpdate, который запрашивает изменения условного форматирования:

Ошибка выполнения: в запросе отсутствуют необходимые учетные данные для проверки подлинности. Ожидаемый токен доступа OAuth 2, файл cookie для входа или другие действительные учетные данные для аутентификации.

1) Есть ли логическое объяснение, почему код не проходит проверку подлинности, когда я запускаю код явно из редактора сценариев, в то время как он не работает в ответ на срабатывание события onOpen?

2) Я перешел по ссылкам OAuth 2 и немного ошеломлен. Может ли кто-нибудь направить меня к простому набору действий, которые мне нужно предпринять, чтобы позволить мне заставить скрипт на стороне клиента работать с объектом Sheets, к которому он прикреплен для все пользователи? Является ли это более сложной задачей, чем я ожидал?

Обновление: мой код работает в скрипте, прикрепленном к электронной таблице. Устанавливаемый триггер использовался для отправки запросов на пакетное обновление API условного форматирования - пока все хорошо. У меня есть несколько электронных таблиц, в которых я хочу использовать скрипт, поэтому я создал версию скрипта и добавил ее как библиотеку в первую «новую» таблицу. Мне пришлось авторизовать API на этом новом листе, но после этого событие триггера библиотеки сработало в соответствующей точке. Однако, несмотря на то, что запрос пакетного обновления API был написан в контексте устанавливаемого триггера (в файле библиотеки), выполнение снова завершилось неудачей с исходным сообщением об ошибке:

«Ошибка выполнения: в запросе отсутствуют требуемые учетные данные для аутентификации. Ожидается токен доступа OAuth 2, файл cookie для входа или другое сообщение с допустимыми учетными данными для аутентификации.

Именно ту проблему, которую Installable Trigger решил ранее.

Какие дополнительные шаги я должен предпринять, чтобы избежать этой ошибки в триггере библиотеки, пожалуйста?


person Malcolm Farrelle    schedule 15.02.2018    source источник
comment
с огромной благодарностью Антуану Колсону, Устанавливаемые триггеры, кажется, предлагают путь вперед. Если вместо того, чтобы событие onOpen вызывало код, который выдает пакетное обновление условного форматирования, я добавляю устанавливаемый триггер, который вызывает этот код и который запускается событием onOpen, все выглядит хорошо. Вот ветка: stackoverflow.com/questions/47735627/   -  person Malcolm Farrelle    schedule 15.02.2018
comment
К сожалению, теперь похоже, что невозможно поддерживать условное форматирование на листе с помощью кода. Поскольку запросы на запись API необходимы для восстановления условного форматирования и применения квот (Developers.google.com/analytics/devguides/config/provisioning/), невозможно гарантировать, что каждое изменение пользователем условного форматирования может быть перехвачено и отменено. В лучшем случае пакетный запрос, запускаемый один раз в день для каждого проекта, который удаляет и восстанавливает условное форматирование, гарантирует правильность условного форматирования по крайней мере один раз в день.   -  person Malcolm Farrelle    schedule 21.02.2018
comment
Теперь вы можете использовать собственный скрипт приложений для изменения условного формата без необходимости использования REST API Таблиц. Это не решит ваше требование использовать установленный триггер, но будет означать, что аутентификация будет намного проще (поскольку вы будете использовать аутентифицированный SpreadsheetApp напрямую) developers.google.com/apps-script/reference/spreadsheet/   -  person tehhowch    schedule 12.04.2018