Запускать скрипт Google Таблиц, когда формула обновляет ячейку

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

Однако диапазон, из которого он копируется, будет автоматически обновляться с помощью формулы. Итак, моя следующая задача - как заставить скрипт запускаться при изменении ячейки?

Я считаю, что есть способ «наблюдать за клетками» на предмет изменений, но я на самом деле не очень техничен, поэтому я не смог понять это!

Возможно дополнительное усложнение - я считаю, что скрипты «при редактировании» запускаются только тогда, когда электронная таблица открыта, верно? Если это так, мне также нужно будет выяснить, как запустить скрипт для проверки новых значений через определенные промежутки времени.

Вот мой текущий сценарий:

 function moveValuesOnly() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var source = ss.getRange("Sheet1!F1:H3");
    var destSheet = ss.getSheetByName("Feuil2"); // Déterminer l'emplacement de la première ligne vide. var destRange = destSheet.getRange(destSheet.getLastRow()+1,1); source.copyTo (destRange, {contentsOnly: true}); source.clear (); 
    }

person Ben Swanson    schedule 14.04.2020    source источник
comment
onEdit выполняется, даже если электронная таблица закрыта, но работает только в том случае, если редактирование было выполнено вручную (путем набора текста), а не путем обновления формулы. Если вы хотите, чтобы ваш скрипт запускался автоматически при каждом обновлении диапазона - вам понадобится рабочий цикл с =importrange и onChange - см. здесь или здесь.   -  person ziganotschka    schedule 14.04.2020
comment
Может быть, вам было бы проще запустить скрипт вручную / по триггеру по времени, но с динамически извлекаемым обновленным определением диапазона?   -  person ziganotschka    schedule 14.04.2020
comment
Большое спасибо за вклад! Я думаю, что trgger, управляемый по времени, вероятно, лучший метод, так как было бы здорово сохранить его в одной электронной таблице вместо использования диапазона импорта (который, как мне кажется, имеет встроенную задержку при закрытии листа). Есть ли шанс, что вы знаете сценарий, который сможет этого добиться?   -  person Ben Swanson    schedule 15.04.2020


Ответы (1)


Как запустить скрипт на триггере, управляемом по времени:

  • Вы можете использовать уже имеющийся у вас скрипт
  • You can bind to it a time-driven trigger by
    • Going on Edit -> Current Project's triggers

введите здесь описание изображения


  • Выбор create new trigger

введите здесь описание изображения


  • Указание функции, к которой вы хотите привязать триггер
  • Указание того, что триггер должен быть time-driven
  • Выберите type of time based trigger и interval по желанию.
  • Нажмите на Сохранить

введите здесь описание изображения

person ziganotschka    schedule 16.04.2020
comment
Это здорово, большое спасибо за вашу помощь с этим !! - person Ben Swanson; 17.04.2020