Автоматизация Google предусматривает возможность обработки событий.
Простые триггеры срабатывают по
В качестве аргумента функции получают Объект события //developers.google.com/apps-script/guides/triggers/events
Прості тригери
//developers.google.com/apps-script/guides/triggers
Функции триггеров вызываются при наступлении заданных событий в документе.
Поскольку простые триггеры срабатывают автоматически, без запроса авторизации пользователя, на них распространяются несколько ограничений:
onOpen(e)
запускается, когда пользователь открывает электронную таблицу, документ, презентацию или форму, на редактирование которых у него есть разрешение.
onInstall(e)
запускается, когда пользователь устанавливает надстройку редактора из Google Docs, Sheets, Slides или Forms.
onEdit(e)
Функция onEdit() вызывается при любом интерактивном изменении в документе. В качестве аргумента функция получает объект Event Object со свойствами:
- .authMode Значение из перечисления ScriptApp.AuthMode
- .range: Range диапазон ячеек, который был изменен
- .source: Spreadsheet объект, который представляет таблицу Google, которая была изменена
- .value новое значение ячейки
- .oldValue старое значение ячейки
- .user: User объект представления пользователя, который вносит изменения
onSelectionChange(e)
запускается, когда пользователь изменяет выбор в электронной таблице.
doGet(e)
запускается, когда пользователь посещает веб-приложение или программа отправляет HTTP-запрос GET в веб-приложение.
doPost(e)
запускается, когда программа отправляет HTTP-запрос POST в веб-приложение.
Объект события
!!! Структура содержания объекта события зависит от события. Объект может содержать:
- .authMode Значение из перечисления ScriptApp.AuthMode
- NONE Режим, запрещающий доступ к каким-либо сервисам, требующим авторизации. Этот режим возникает, когда надстройка выполняет простой триггер onOpen(e) , а пользователь установил надстройку в другом документе, но надстройка не использовалась в текущем документе
- CUSTOM_FUNCTION Режим, который позволяет получить доступ к ограниченному подмножеству сервисов для использования в пользовательских функциях электронных таблиц. Некоторые из этих служб, включая доступ только для чтения к службе электронных таблиц, обычно требуют авторизации, но разрешены без авторизации при использовании в пользовательской функции. Поскольку пользовательские функции не включают параметр события, это значение никогда не возвращается; это задокументировано только для демонстрации того, что пользовательские функции работают в своем собственном режиме авторизации
- LIMITED Режим, позволяющий получить доступ к ограниченному набору услуг. Этот режим возникает, когда надстройка или скрипт , привязанный к документу, выполняет простой триггер onOpen(e) или onEdit(e) , за исключением случая, описанного для NONE
- FULL Режим, открывающий доступ ко всем сервисам, требующим авторизации. Этот режим возникает, когда надстройка или сценарий выполняются в результате любого триггера, кроме случаев, описанных для LIMITED или NONE .
- .range: Range диапазон ячеек, который был изменен, в котором, кроме стандартных документированных методов, доступны свойства:
- rowStart начальная строка диапазона
- rowEnd конечная строка диапазона
- columnStart начальная колонка диапазона
- columnEnd конечная колонка диапазона
- .source: Spreadsheet объект, который представляет таблицу Google, которая была изменена
- .value новое значение ячейки (только при непосредственном редактировании)
- .oldValue старое значение ячейки (только при непосредственном редактировании)
- .user: User объект, который представляет пользователя, который внес изменения в таблицу, в котором доступны свойства:
- email /
- nickname /
Отладка событий
Отладка событий в реальном времени не предусмотрена, но отладить обработчик можно путем симуляции вызова обработчика. Например:
1 2 3 4 5 6 7 8 9 10 11 12 |
function debug() { onEdit({ user: { email: Session.getActiveUser().getEmail(), nickname: Session.getActiveUser().getName()}, source: SpreadsheetApp.getActiveSpreadsheet(), range: SpreadsheetApp.getActiveSpreadsheet().getActiveCell(), value: SpreadsheetApp.getActiveSpreadsheet().getActiveCell().getValue(), oldValue: "", authMode: "LIMITED" }); } |
+ Triggers in Google Sheets //spreadsheet.dev/triggers-in-google-sheets