¿Por qué utilizamos SpreadsheetApp.flush()?

Resuelto Sowmay Jain asked hace 7 años • 1 respuestas

Lo que entiendo es que .flush()ayuda a ejecutar las funciones cuando ocurren sin agruparlas en una sola.

¿Estoy en lo cierto? Si no, ¿cuál es el significado en términos sencillos? Y por favor, con un ejemplo sencillo.

Sowmay Jain avatar Dec 16 '16 07:12 Sowmay Jain
Aceptado

Un programador lo utilizará flush()cuando quiera asegurarse de que la salida y/o los efectos del código anterior se escriban en la hoja de cálculo antes de continuar. Si no lo hace flush(), entonces el código puede "optimizarse" automáticamente mediante el uso de almacenamiento en caché integrado y agrupación de operaciones. En general, no es necesario usarlo hasta que SÍ lo necesites flush()específicamente ... si eso tiene sentido.

Primero, la documentación oficial más antigua:

enjuagar()

Aplica todos los cambios pendientes en la hoja de cálculo. Las operaciones de hojas de cálculo a veces se agrupan para mejorar el rendimiento, como cuando se realizan varias llamadas a Range.getValue(). Sin embargo, a veces es posible que desee asegurarse de que todos los cambios pendientes se realicen de inmediato, por ejemplo, para mostrar los datos de los usuarios mientras se ejecuta un script.

¿Qué tal una analogía explicativa de cinco ? Digamos que estás contando manzanas en un árbol con 100 manzanas.

Podrías contar y registrar cada manzana individualmente, así:

1, 2, 3, 4, 5, 6... etc.

Esto es como hacer un flush()bucle dentro de un bucle, ya que literalmente estás escribiendo después de cada countoperación. Terminarás escribiendo en tu papel 100 veces y supongamos que lleva más tiempo escribir con la mano que contar con los ojos.

Un proceso "optimizado" (en este caso) sería usar su memoria/búfer y contar 5 manzanas antes de escribir un número, por lo que escribiría

5, 10, 15, 20... etc.

Ahora terminarás escribiendo en tu papel 20 veces (una reducción del 80%) y, a pesar de tener que contar la misma cantidad de manzanas, has reducido la cantidad de escrituras que tienes que hacer, por lo que verás un rendimiento drástico. beneficio mediante un tiempo de ejecución reducido.

Esto se traduce aproximadamente en cómo funcionan las operaciones de Apps Script. Como en toda informática, las operaciones en memoria son las más rápidas de ejecutar y las operaciones de lectura/escritura (también conocidas como entrada/salida) son las más lentas (consulte su Transcripción de ejecución para obtener más pruebas). Es por eso que solo debes usarlo flush()cuando necesites específicamente escribir tus datos en la hoja de cálculo en un punto particular de la ejecución de tu código.

Espero que esto ayude.

Stevie Howard avatar Dec 16 '2016 04:12 Stevie Howard