En muchas ocasiones podemos necesitar obtener los valores de una fila entera de un spreadsheet con Google Apps Script. Depende de en que situación nos encontremos podemos usar diferentes maneras para obtener dicha fila.
1. Básico
function GetRowData(row) { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); return sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0]; }
La idea de este código no es muy diferente de la que os expliqué en su momento sobre como leer de un spreadsheet.
2. Hemos de obtener más de una fila
function GetAnyRowData(row) { var data = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getDataRange().getValues(); return data[row]; }
A efectos prácticos este código es casi el mismo que os propuse en su momento cuando os expliqué como optimizar las lecturas de un spreadsheet
3. Hemos de obtener la respuesta de un Google Form
function onFormSubmit(e) { var range = e.range; var data = range.getValues()[0]; Logger.log(data); }
Se ha de tener en cuenta que el primer elemento del vector es el timestamp de la respuesta.
Recordad que el onFormSubmit tendremos que setearle el trigger.
4. Hemos de obtener la fila donde alguien ha editado una celda.
function onEdit(e) { var range = e.range; var row = range.getRowIndex(); var sheet = range.getSheet(); var data = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0]; Logger.log(data); }
Que hacemos para obtener una fila cuando alguien edita una celda? Obtener en el trigger de onEdit en que pagina estamos, en que fila estamos y con ello obtenemos la fila entera como en el primer caso.
No es necesario instalar el trigger para el onEdit dado que viene por defecto.
5. Hemos de obtener la fila introducida por un servicio externo
function onChange(e) { var range = e.range; var row = range.getRowIndex(); var sheet = range.getSheet(); var data = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0]; Logger.log(data); }
Este código es prácticamente el mismo que para el onEdit pero tiene uso no cuando un usuario edita el spreadsheet o se produce un post de un formulario, sino cuando se produce una modificación en nuestro spreadsheet por otras causas (por ejemplo, otro script,Zapier u otros servicios)
Recordad que el onChange tendremos que setearle el trigger.
No soy capaz de ver más casos en que sea necesario obtener toda una fila de un spreadsheet, se os ocurre algún caso más? Ponedlo en los comentarios e intentaré montarlo.
Espero que os haya servido.
No vaciléis en hacerme llegar vuestras dudas.
Nos vemos
No hay comentarios:
Publicar un comentario