Jak korzystać z narzędzi.funkcja sleep()

Jakie jest dokładne zastosowanie Utilities.sleep() funkcji? Czy powinniśmy używać go między wywołaniami funkcji czy wywołaniami API?

Używam Utilities.sleep(1000) pomiędzy wywołaniami funkcji, czy to prawda? Spowolni to czas egzekucji?

Author: Jacob Schoen, 2012-06-21

3 answers

Narzędzia.sleep (milisekundy) tworzy "pauzę" podczas wykonywania programu, co oznacza, że nie robi nic podczas liczby milisekund, o które prosisz. Z pewnością spowalnia cały proces i nie powinieneś używać go między wywołaniami funkcji. Istnieje jednak kilka wyjątków, przynajmniej ten, który znam : w SpreadsheetApp, gdy chcesz usunąć kilka arkuszy, możesz dodać kilkaset miliseków między każdym usunięciem, aby umożliwić normalne wykonywanie skryptu (ale jest to obejście dla znanego arkusza problem z tą konkretną metodą). Musiałem go używać również podczas tworzenia wielu arkuszy w arkuszu kalkulacyjnym, aby uniknąć konieczności "odświeżania" przeglądarki po wykonaniu.

Oto przykład:

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)
}
 57
Author: Serge insas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-04 07:29:28

Niektóre usługi Google nie lubią być używane do wielu. Całkiem niedawno moje konto zostało zablokowane przez skrypt, który wysyłał dwa e-maile na sekundę do tego samego użytkownika. Google uznało to za spam. Więc korzystanie ze snu tutaj jest również uzasadnione, aby zapobiec takim sytuacjom.

 2
Author: Rafal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-05 16:38:48

Serge ma rację - moje obejście:

function mySleep (sec)
{
  SpreadsheetApp.flush();
  Utilities.sleep(sec*1000);
  SpreadsheetApp.flush();
}
 1
Author: juuulek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-11-17 11:17:52