Добавление паузы между итерациями - PullRequest
0 голосов
/ 12 июля 2020

Возникли некоторые трудности с приостановкой работы скрипта приложений между итерациями. Я пытаюсь взять список «ключей» из листа «Инициативы» и по одному вставлять каждый ключ в ячейку A2 листа калькулятора. Здесь мне нужна пауза, чтобы начать, на этом листе есть серия вычислений и т. Д. c. это займет около 10 секунд. После завершения я копирую ответы на вычисления из ячеек D5: F5 обратно в лист «Инициативы» в той же строке, из которой был получен ключ. Я ни в коем случае не владею скриптом приложений (или любым другим скриптом, если на то пошло) и собрал все это вместе из того небольшого количества знаний, которое у меня есть, вместе с некоторыми поисками в Интернете и старым добрым root в этом месте (вот где я нашел замок . информация, которую я не могу понять (если это действительно то, что мне здесь нужно). Надеюсь, коллективный разум сможет решить эту проблему за меня, пожалуйста.

function autoCalcTest(){

var ss = SpreadsheetApp.getActive();
var init = ss.getSheetByName('Initiatives'); //sheet containing list of keys
var lr = init.getLastRow(); // last row of keys
var data = init.getRange('A2:A'+lr).getValues(); // get values of all keys

//var copyrange = ss.getSheetByName('Calculator').getRange(5, 4, 1, 4); // range of cells to be copied 
data.forEach(function(key,i){

ss.getSheetByName('Calculator').getRange(2, 1).setValue(key); // enter the key into cell A2
var lock = LockService.getScriptLock(); //  Trying to make the script pause between each iteration
    lock.waitLock(30000);// Trying to make the script pause between each iteration
    Utilities.sleep(1000);// Trying to make the script pause between each iteration
ss.getSheetByName('Calculator').getRange('D5:F5').copyTo(ss.getSheetByName('Initiatives').getRange(i+2, 9), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false); //once the pause is over, copy range D5:F5 from Calculator sheet to Initiatives (row by row according to key)
Logger.log(i,key); // Check to see if all keys are in the array - they are
    lock.releaseLock();//release the lock?

});

}
...