Este dilema se puede tratar de diversas formas, pero nosotros te compartimos la solución más completa en nuestra opinión.
Solución:
Aparentemente puedes usar la función Utilities.sleep()
Me gusta esto:
function onSubmit()
// we've been called, remove trigger, set timeout, re-enable, and then run function
destroySubmitHandler();
Utilities.sleep(5 * 1000)
createSubmitHandler();
myFunction()
debe probar la función especialmente diseñada para resolver el problema de demasiados envíos paralelos:
function onSubmit(e)
var lock = LockService.getScriptLock();
lock.waitLock(30000); // lock 30 seconds
//do whatever you want here
lock.releaseLock();
Se dice que la identificación sería la misma sin este bloqueo con referencia al documento de desarrollo de Google: https://developers.google.com/apps-script/reference/lock/lock
por ejemplo, la siguiente es una función de sitio web independiente del script de aplicaciones:
google.script.run.withSuccessHandler(ready).logNow(email);
Lo bloqueo cada vez que la hoja de Google actualiza la hoja en caso de que varios tipos la actualicen al mismo tiempo, o de lo contrario, los datos pueden sobrescribirse entre sí:
var ls = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("logged");
lock.waitLock(30000);
ls.getRange(ls.getLastRow()+1, 1).setValue(email);
lock.releaseLock();
aunque los 30 segundos parecen mucho, una vez que la función setValue() está inactiva, el bloqueo se liberaría. Si sabes leer chino, te recomiendo este artículo: https://www.wfublog.com/2017/03/google-apps-script-spreadsheet-delay-write-data.html
Puedes añadir valor a nuestra información participando con tu veteranía en las referencias.