Google-Sheets - разрыв цикла на основе значения ячейки - PullRequest
2 голосов
/ 09 июля 2019

В настоящее время я запускаю сценарий на основе таймера (один раз в неделю), который копирует пару значений из одного диапазона (источника) в другой (цель).

Диапазон источника является результатом запроса на основена импорт.Таким образом, он проходит несколько этапов расчета, прежде чем отобразить правильный результатОбычно это должно быть легкой задачей - просто добавьте таймер сна, чтобы быть уверенным и покончить с этим.Однако скрипт копирует данные на основе незавершенного расчета.

Вот как я подошел к этому:

Я установил ячейку, которая проверяет, правильно ли скопированы данные (триггерная ячейка)

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

Я довольно новичок в javascript, поэтому я не очень уверен в реализации возможных решений из Интернета.Кажется, что циклы могут быть разбиты только на основе значений внутри цикла.Например, цикл do / while (while 'trigger' == false) просто повторяется в течение 5 минут, пока не истечет время ожидания.Я думаю, что вызов функции с вызовом самой функции должен сработать, но я не мог понять, как это сделать правильно.Кажется, моя версия запускается один раз и прерывается - даже когда я вручную изменяю значение триггера, чтобы вызвать цикл.

    function looper(){

    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName("example");

    var trigger = sheet.getRange("a1").getValue();
    var source = sheet.getRange("b1:j1").getValues();
    var target = sheet.getRange("b2:j2");  

    Utilities.sleep(5000)
    if (trigger == false){
    target.setValues(source);
    looper;
 }
}

1 Ответ

0 голосов
/ 09 июля 2019

В JavaScript для вызова функции необходимо использовать скобки.Поэтому для последней строки попробуйте сделать следующее: looper();.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...