Saltar al contenido

Google Apps Script iterando sobre hojas de cálculo muy lento

Luego de consultar con especialistas en este tema, programadores de deferentes ramas y profesores dimos con la solución al problema y la dejamos plasmada en este post.

Solución:

En primer lugar, revise la información de esta página.

Tres cosas que he experimentado que realmente pueden ralentizarte son:

  1. Llamar al servicio externo varias veces
  2. Llamar a SpreadsheetApp.flush() en un bucle para forzar la actualización de la hoja.
  3. Llamar mucho a Range.getValue().

Para la primera parte, intente agrupar sus llamadas. Por ejemplo, si está solicitando tipos de cambio para su moneda local y extranjera, intente enviar un montón de consultas en una sola solicitud.

Para la segunda parte, simplemente no llame a este método a menos que sea realmente necesario.

para la tercera parte, intente modificar su código para que pueda llamar a este método una vez y moverse con su resultado en lugar de llamarlo en varios métodos para obtener el mismo resultado.

Sugerencia: para evitar modificar muchos parámetros de métodos, simplemente pase un solo objeto al comienzo de su llamada al árbol de métodos y llénelo con sus parámetros. De esta manera, no tiene que modificar cada método por el que pasa para agregar/eliminar un parámetro. Ese es un concepto que se aplica a todos los lenguajes de programación con funciones.

Estoy de acuerdo con el comentario de Serge de que este código ya está bien optimizado, por lo que la apertura de muchas hojas de cálculo llevará algún tiempo.

Veo una oportunidad para mejorar, pero probablemente tendrá un impacto mínimo en la velocidad, si es que tiene alguno. Puede mover la llamada ss.getName() fuera del ciclo interno, en su lugar, asignarla a una variable justo después de abrir la hoja de cálculo y luego hacer referencia a esa variable en el ciclo más interno.

Tenga en cuenta que, según mi experiencia, la velocidad de las llamadas al servicio de Google tiende a variar bastante, por lo que a veces esto puede funcionar más rápido o más lento. Puede ver cuánto tarda cada llamada en la Transcripción de ejecución del editor de secuencias de comandos, en el menú Ver.

valoraciones y reseñas

Si para ti ha sido provechoso nuestro artículo, sería de mucha ayuda si lo compartes con otros seniors de esta manera nos ayudas a difundir nuestra información.

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