Saltar al contenido

Establecer tiempo de espera en Google Apps Scripts

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *