En Google Apps Script, trato de obtener un valor de una celda que tiene una categoría particular.
Mis datos:
| Categoría | Valor |
|---|---|
| Gastos de Trabajo | 15,00 libras esterlinas |
| Gastos de Trabajo | 15,00 libras esterlinas |
| Mascotas | £ 25.99 |
| Comida y bebida | £ 38.50 |
| Gastos de Trabajo | £ 11.48 |
Entonces, en mi script, necesito una forma de seleccionar los valores correspondientes de mi categoría de "gastos de trabajo".
Puede usar directamente el filtro para seleccionar solo la categoría Work Expenses y luego usar el mapa para obtener los valores de la segunda columna.
function myFunction() { const ss = SpreadsheetApp.getActive(); const sheet = ss.getSheetByName("Sheet1") // name of the sheet const data = sheet.getRange('A2:B'+sheet.getLastRow()).getValues(); // select A2:B const fdata = data.filter(r=>r[0]=="Work Expenses").map(r=>r[1]); console.log(fdata); }Si necesita un script, podría ser algo como esto:
function main() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var range = sheet.getRange('A2:B'); var cells = get_cells_by_category(range, 'Work Expenses'); console.log(cells); } function get_cells_by_category(range, category) { var data = range.getValues(); var cells = []; for (let row of data) { if (row[0] == category) cells.push(row[1]); } return cells; }Pero si es un proyecto grande y necesita obtener valores muchas veces, tiene sentido crear un objeto a partir de los datos. Las categorías podrían ser claves del objeto y las matrices de las celdas podrían ser valores del objeto:
var obj = { 'Work Expenses': [ '£15.00', '£15.00', '£11.48' ], 'Pets': [ '£25.99' ], 'Food & Drink': [ '£38.50' ] } console.log(obj['Work Expenses']); console.log(obj['Pets']);De esta manera puede obtener los valores mucho más rápido. No es necesario recorrer cada vez todos los datos.