Saltar al contenido

Ejecución asíncrona de una función App Script

Sé libre de compartir nuestro espacio y códigos con otro, danos de tu ayuda para ampliar nuestra comunidad.

Solución:

  • Desea ejecutar funciones mediante el procesamiento asíncrono utilizando Google Apps Script.
  • Desea ejecutar las funciones con el procesamiento asíncrono utilizando un disparador de tiempo.

Si mi entendimiento es correcto, desafortunadamente, no existen métodos ni el documento oficial para lograrlo directamente. Pero como solución alternativa, eso se puede lograr mediante el uso de la API de Google Apps Script y el método fetchAll, que puede funcionar mediante un procesamiento asíncrono.

El flujo de esta solución es el siguiente.

  1. Implemente el ejecutable de la API, habilite la API de Google Apps Script.
  2. Usando fetchAll, solicite el punto final de la API de Google Apps Script para ejecutar la función.
    • Cuando se solicitan varias funciones una vez, esas funcionan con el procesamiento asíncrono de fetchAll.

Nota:

  • Creo que las aplicaciones web también se pueden usar en lugar de la API de Google Apps Script.
  • Para simplemente usar esta solución alternativa, he creado una biblioteca GAS. Creo que también puedes usarlo.
  • En esta solución alternativa, también puede ejecutar las funciones con el procesamiento asíncrono mediante el desencadenador de tiempo.

Referencias:

  • buscar todo
  • Implemente el script como un ejecutable de API
  • scripts.run de Google Apps Script API
  • Benchmark: método fetchAll en el servicio UrlFetch para Google Apps Script
  • Biblioteca GAS para ejecutar el procesamiento asíncrono

Si entendí mal tu pregunta, lo siento.

Hay otra manera de lograr esto.

Puede usar activadores únicos basados ​​en el tiempo para ejecutar funciones de forma asíncrona, tardan un poco en ponerse en cola (30-60 segundos), pero es ideal para tareas de ejecución lenta que desea eliminar de la ejecución principal de su texto.

// Creates a trigger that will run a second later
ScriptApp.newTrigger("myFunction")
  .timeBased()
  .after(1)
  .create();

Hay un script útil que armé llamado Async.gs eso ayudará a eliminar el repetitivo de esta técnica. Incluso puede usarlo para pasar argumentos a través de CacheService.

Aqui esta el link:

https://gist.github.com/sdesalas/2972f8647897d5481fd8e01f03122805

// Define async function
function runSlowTask(user_id, is_active) 
  console.log('runSlowTask()',  user_id: user_id, is_active: is_active );
  Utilities.sleep(5000);
  console.log('runSlowTask() - FINISHED!')


// Run function asynchronously
Async.call('runSlowTask');

// Run function asynchronously with one argument
Async.call('runSlowTask', 51291);

// Run function asynchronously with multiple argument
Async.call('runSlowTask', 51291, true);

// Run function asynchronously with an array of arguments
Async.apply('runSlowTask', [51291, true]);

// Run function in library asynchronously with one argument
Async.call('MyLibrary.runSlowTask', 51291);

// Run function in library asynchronously with an array of arguments
Async.apply('MyLibrary.runSlowTask', [51291, true]);

Sección de Reseñas y Valoraciones

Puedes auxiliar nuestro análisis dejando un comentario y valorándolo te damos las gracias.

¡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 *