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?
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)
}
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.
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();
}
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