0

Я построил электронную таблицу, которая отслеживает ответы формы с помощью триггера onSubmit. Это хорошо работает. Затем я хочу отобразить часть электронной таблицы на другой электронной таблице и построил скрипт, который делает это.Trigger onEdit Trigger через программную редакцию

Для того, чтобы вторая таблица динамически обновлялась и синхронизировалась с первой, я попытался использовать установленный onEdit триггер; однако он не работает, когда он программно редактируется, только если я вручную отредактирую таблицу 1. Любые решения?

ответ

1

Триггеры не срабатывают при изменении таблиц, выполненных скриптами. Я думаю, что идея состоит в том, что сценарий, вносящий изменения, также может отслеживать любые последствия этих изменений. В вашем случае, я вижу три решения:

  1. Если вы просто хотите «дисплей часть таблицы на другую таблицу», то importrange команды суффиксов, вам не нужен сценарий, чтобы сделать это.

  2. Функция, инициированная отправкой формы, может изменить собственно таблицу-мишень. Для этого вам понадобится установочный триггер, запущенный при представлении формы, поскольку простые триггеры не могут получить доступ к другим электронным таблицам.

  3. Если вы действительно хотите вызвать функцию в скрипте, прикрепленном к другой электронной таблице, вы можете запустить триггер, основанный на времени, который будет проверять последнее обновленное время электронной таблицы.

Пример № 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 
    } 
}