Каково точное использование функции Utilities.sleep()? Должны ли мы использовать его между вызовами функций или вызовами API?
Я использую Utilities.sleep(1000) промежуточные вызовы функций, правильно? Будет ли это замедлять время выполнения?
Ответ 1
Utilities.sleep(миллисекунды) создает "паузу" при выполнении программы, то есть ничего не делает в течение заданного миллисекунды.
Это, безусловно, замедляет весь процесс, и вы не должны использовать его между вызовами функций.
Есть несколько исключений, хотя, по крайней мере, тот, который я знаю: в SpreadsheetApp, когда вы хотите удалить несколько листов, вы можете добавить несколько сотен миллисекунд между каждым удалением, чтобы обеспечить нормальное выполнение script (но это обходной путь для известной проблемы с помощью этого конкретного метода). Мне пришлось использовать его также при создании большого количества листов в электронной таблице, чтобы избежать необходимости обновления браузера после выполнения.
Вот пример:
function delsheets(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var numbofsheet=ss.getNumSheets();// check how many sheets in the spreadsheet
for (pa=numbofsheet-1;pa>0;--pa){
ss.setActiveSheet(ss.getSheets()[pa]);
var newSheet = ss.deleteActiveSheet(); // delete sheets begining with the last one
Utilities.sleep(200);// pause in the loop for 200 milliseconds
}
ss.setActiveSheet(ss.getSheets()[0]);// return to first sheet as active sheet (useful in 'list' function)
}