Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

108
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!