vincular sheets secuencia programar hojas google como comandos calculo google-apps-script spreadsheet google-spreadsheet-api

google-apps-script - programar - editor de secuencia de comandos google sheets



Recuperar filas de los datos de la hoja de cálculo mediante la secuencia de comandos de la aplicación google (2)

La manera más fácil, y la que yo sé, es:
obtener los valores en una matriz usando

var data = SpreadsheetApp.getActiveSheet().getDataRange().getValues();

luego para hacer un ciclo

for (i in data) {

en este ciclo para verificar si la fecha ( data[i][0] ) es igual a la que está buscando, y si el nombre ( data[i][1] ) es igual al que está buscando para también Y empujarlo a una matriz

var labels=new Array; label.push( [data[i][0], data[i][1], data[i][2]] );

luego, al tener todos sus datos en este conjunto, puede llenar un nombre de usuario con la etiqueta utilizando un ciclo for

for (i in labels) { ...

Estoy usando la secuencia de comandos de la aplicación de Google para escribir datos de formulario en la hoja de cálculo. Ahora me gustaría obtener los valores de Excel que coinciden con las condiciones (por ejemplo, filtrado por fecha, nombre de usuario) y mostrarlos con el script de la aplicación.

Mi hoja de cálculo tiene

+-------------+-----------+----------------------+ | Date | Username | Comment | +-------------+-----------+----------------------+ | 2012-05-02 | palani | My first comment | | 2012-05-02 | raja | My second comment | | 2012-05-03 | palani | My third comment | | 2012-05-03 | raja | My fourth comment | +-------------+-----------+----------------------+

Ahora quiero filtrar los datos para 2012-05-02 sobre la fecha y raja en el nombre de usuario y mostrarlos usando etiquetas en la aplicación-script (que se ejecuta como un servicio web).

Todas mis búsquedas devuelven solución usando SpreadsheetApp.getActiveSheet().getDataRange(); que creo que no es una forma optimizada de mostrar un registro de más de 1000 filas en la hoja.

EDITAR

En este momento, estoy usando .getValues() solamente. Y los datos que se muestran aquí son para muestra; mi hoja real tiene 15 columnas y más de 5000 filas por ahora. Y eventualmente crecerá a millones ya que esta es una aplicación de hojas de tiempo. Me pregunto, ¿hay alguna otra forma de obtener getValues() de filas filtradas?

Aplicar =Filter Fórmula de =Filter en una celda de tmp también será un problema, ya que la secuencia de comandos podría ser utilizada simultáneamente por el número de personas.


Bueno, puedes considerar usar una celda y usar la fórmula "Query". Supongamos que la fecha está en la columna A, el nombre de usuario = la columna B, el comentario es la columna C, mientras que la celda en blanco es D1, el script se verá así:

SpreadsheetApp.getActiveSheet().getRange("D1").setFormula(''Query(A:C,"SELECT A,B,C WHERE B="'' + "SomeOne''" + '',1)''; //filter the data and populate to D1 onwards SpreadsheetApp.getActiveSheet().getRange("D:F").getValues();//this is the filtered data