Trigger onEdit Запуск через программное редактирование
Я построил электронную таблицу, которая отслеживает ответы формы с помощью триггера onSubmit. Это хорошо работает. Затем я хочу отобразить часть электронной таблицы в другой электронной таблице и создал сценарий, который делает это.
Чтобы гарантировать, что вторая электронная таблица динамически обновляется и синхронизируется с первой, я попытался использовать устанавливаемый триггер onEdit; однако, это не работает, когда это программно редактируется, только если я вручную редактирую электронную таблицу 1. Любые решения?
1 ответ
Триггеры не запускаются при внесении изменений в электронную таблицу скриптами. Я думаю, что идея состоит в том, что сценарий, вносящий изменения, может также отслеживать любые последствия этих изменений. В вашем случае я вижу три решения:
Если вы просто хотите "отобразить часть таблицы в другой таблице", то
importrange
Достаточно команды, вам не нужен скрипт для этого.Функция, вызванная отправкой формы, может изменить саму электронную таблицу назначения. Для этого вам нужен устанавливаемый триггер, работающий при отправке формы, поскольку простые триггеры не могут получить доступ к другим электронным таблицам.
Если вы действительно хотите запустить функцию в сценарии, подключенном к другой электронной таблице, вы можете запустить основанный на времени триггер, который проверит время последнего обновления электронной таблицы.
Пример № 3: функция, которую можно настроить на запуск каждые 5 минут для обнаружения изменений любого рода.
function checkForUpdates() {
var updated = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()).getLastUpdated();
if (new Date() - updated < 300000) {
// updated in the last 5 minutes, do something
}
}