Estoy intentando recuperar algunos datos de una hoja de cálculo de Google en un archivo independiente de AppScript.
Intenté con este fragmento de código, pero definitivamente está incompleto. Me lanza este error:
TypeError: Cannot read property 'getDataRange' of undefinedMi función:
var sheet=SpreadsheetApp.openById('1n2a5iecKo7seMXcef81V_pxWSRjE4agQ9DSoROtf0').getSheets()[0] function getColumnId(sheet, namecol) { var data = sheet.getDataRange().getValues(); var col = data[0].findIndex((name) => name === namecol) + 1; return col; }Después de extraer los datos de la columna, quiero almacenar esos datos en una lista normal:
var IDCol=getcolumnId(sheet, 'ID') var AFCol=getcolumnId(sheet, 'AF')¿Es eso posible de esta manera? Haría depuración pero no sé cómo proceder primero con mi función.
Creo que su objetivo es el siguiente.
getColumnId(sheet, namecol) .getColumnId . Pero está intentando llamar a la función con getcolumnId . Creo que se produce un error.var sheet=DriveApp.getFileById('1n2a5ieOMcKo7seMXcef81V_pxWSRjE4agQ9DSoROtf0').getBlob() es Blob. En su secuencia de comandos, se produce un error en var data = sheet.getDataRange().getValues() .col . Para esto function getColumnId(sheet, namecol) { var data = sheet.getDataRange().getValues(); var col = data[0].findIndex((name) => name === namecol); var transpose = data[0].map((_, c) => data.map(r => r[c])); // Here, "data" is transposed. return transpose[col]; } // Please run this function. function sample() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); // Please set the sheet name. var IDCol = getColumnId(sheet, 'ID') var AFCol = getColumnId(sheet, 'AF') console.log(IDCol) console.log(AFCol) } Cuando se ejecuta este script modificado, los valores de las columnas con los valores de encabezado de ID y AF .
De su siguiente respuesta y su pregunta actualizada,
Hola Tanaike, definitivamente usaré tu enfoque mapeando los valores como dijiste. Pero antes que nada, necesito leer los datos de gsheet correctamente. Consulte mi edición y se genera el error. Mi código no está ubicado en la hoja de cálculo de Google, sino en un archivo independiente en AppsScript
Intenté con este fragmento de código, pero definitivamente está incompleto. Me lanza este error:
TypeError: Cannot read property 'getDataRange' of undefined
Si intenta ejecutar directamente la función getColumnId(sheet, namecol) mediante el editor de secuencias de comandos, se produce un error de este tipo porque sheet no está definida. Pensé que esta podría ser la razón de su problema actual. A partir de esta situación, pensé que podría querer usar sheet , IDCol y AFCol como la variable global. Si mi comprensión es correcta, ¿qué tal el siguiente script de muestra?
var sheet = SpreadsheetApp.openById('###').getSheets()[0]; function getColumnId(sheet, namecol) { var data = sheet.getDataRange().getValues(); var col = data[0].findIndex((name) => name === namecol); var transpose = data[0].map((_, c) => data.map(r => r[c])); return transpose[col]; } var IDCol = getColumnId(sheet, 'ID') var AFCol = getColumnId(sheet, 'AF') // Please run this function. function myFunction() { console.log(IDCol) console.log(AFCol) }myFunction , puede ver los valores en el registro.