Saltar al contenido

Cómo actualizar el valor de celda de una hoja en Google Apps Script

Martín, parte de este staff, nos hizo el favor de crear esta reseña ya que conoce a la perfección este tema.

Solución:

El flush() se puede utilizar el método. También vea las respuestas proporcionadas por otros.

Documentación

SpreadsheetApp.flush();

Cita de la documentación:

Aplica todos los cambios pendientes de la hoja de cálculo

Si no hubo cambios en la hoja de cálculo, pero desea forzar fórmulas para volver a calcular, deberá realizar un cambio y luego usar SpreadsheetApp.flush();

Por ejemplo, puede obtener el valor de la celda A1 y luego establecer el mismo valor en la celda A1. Por lo tanto, no hay posibilidad de perder datos porque está obteniendo y configurando el mismo valor. El cambio permite. SpreadsheetApp.flush(); para recalcular todas las fórmulas.

La documentación tiene información sobre la optimización: Google Sheets Custom Function Optimization

En lugar de usar flush, puede decirle a la hoja de cálculo de qué celdas depende la función pasándolas a la fórmula al final de sus parámetros esperados. Está bien pasar más parámetros de los que usará la función. De esta forma, la hoja de cálculo asumirá que el valor devuelto por la función puede ser diferente si las entradas son diferentes y el proceso de actualización normal se encargará de ello.

Si desea que vuelva a evaluar cuando cambia cualquier celda, simplemente pase un rango que incluya todas las celdas.

Por ejemplo:

=MyFunction("this", "that", A1:Z10000)

Si se toma el tiempo de pasar exactamente las celdas de las que la función depende lógicamente, será más eficiente al no volver a evaluar cuando no es necesario.

=MyFunction("this", "that", A10, C5, G6:H9 )

Si realmente no depende de ninguna celda pero desea evaluar la función manualmente, a pedido, cree una celda que incremente su valor oculto cuando el usuario haga clic en ella (ver botones) y luego pase esa dirección de celda a la función.

=MyFunction("this", "that", A10 )
// make A10 change its value on a button click

Actualizar toda la tabla ¡Es lento, pero funciona!

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var rangeData = sheet.getDataRange();
var lastColumn = 38;
var lastRow = 17;
var searchRange = sheet.getRange(2,2, lastRow-1, lastColumn-1);

function forceRefresh() 
  //Loop through each column and each row in the sheet.
  for(i = 1; i < lastColumn; i++)
    for (j = 1; j < lastRow ; j++)
      var cell = searchRange.getCell(j,i);
      var formula = cell.getFormula();
      var tempFormula = formula.replace("=", "?");
      cell.setFormula(tempFormula);
      SpreadsheetApp.flush();
      cell.setFormula(formula);
    ;
  ;
;

forceRefresh(); //call

Te mostramos las reseñas y valoraciones de los usuarios

Acuérdate de que te brindamos la opción de agregar una reseña si te ayudó.

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