Как использовать функцию Utilities.sleep()

Каково точное использование функции 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)
}