Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

105
Vistas
Poner en cola a los usuarios para la actualización por lotes de Slides API en App Script

Mis usuarios en App Script leen su número de cola de una hoja de cálculo:

 var array = sessionsSheets.getRange(row, 2, 1, 3).getValues()[0]; var questionNumber = array[2]; //This is the variable of interest, it is an integer signifying the queue sessionsSheets.getRange(`D${row}`).setFormula(questionNumber+1); //This is the updated queue

Luego actualizan este número de cola como se ve arriba. Este método funciona bien la mayor parte del tiempo, pero si toma dos dispositivos y ejecuta la secuencia de comandos simultáneamente, ambos reciben la misma cola y la secuencia de comandos se detendrá para uno de ellos porque necesitará un número de cola único más adelante para usar la API de diapositivas. :

 Slides.Presentations.batchUpdate({'requests': requests}, presentationId);

Si las promesas funcionaran, simplemente habría puesto la línea Slides API en un bloque de prueba, y si aparece un error de duplicidad, llamaría a la misma función de forma recursiva, hasta que no se produzca la superposición. Sin embargo, las promesas no son compatibles con App Script, entonces, ¿qué debo probar en su lugar?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Encontré una solución para mi caso especial:

Usé ScriptProperties en los Servicios de propiedades en App Script. Cuando un usuario abre la aplicación, busca la propiedad de la clave con el token de su sesión. Si dice ocupado, espera e intenta recursivamente la misma función, si dice libre, lo cambia a ocupado, ejecuta sus API y, al final, lo cambia a libre nuevamente.

Fragmento de código:

 function queueing(comment,name,token,sessionsSheets,row) { var properties = PropertiesService.getScriptProperties(); var state = properties.getProperty(token); if (state==null){ properties.setProperty(token , `busy@0`); posting(comment,name,token,sessionsSheets,row,0); } else if (state.includes("busy")){ Logger.log('Gotta wait my turn'); Utilities.sleep(2000); queueing(comment,name,token,sessionsSheets,row); } else if (state.includes("free")){ var questionNumber = state.split('@')[1]; properties.setProperty(token , `busy@${questionNumber}`); posting(comment,name,token,sessionsSheets,row,questionNumber); }}
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda