Estoy tratando de escribir una función que lea una columna en particular de una hoja de Google y coloque todos esos valores en una matriz que pueda usar más adelante.
Simplemente usé la muestra de Node.js de Google y la modifiqué para adaptarla a mis necesidades. Funciona (casi) excepto que no estoy seguro de cómo devolver correctamente la matriz poblada con los datos de la hoja.
Parece haber una especie de problema de tiempo en el que primero devuelve la matriz vacía y luego la llena. No estoy seguro de cómo hacer que espere hasta que los valores se presionen antes de devolver la matriz.
He omitido los métodos de autenticación porque no son relevantes para el problema que tengo.
// Function to get values from sheet (to check for duplicate submissions) function getSubmissions(sheet, period) { let data = []; // Array to capture response from sheets.get /* Function to read through column A1 and push all cells into an array for me to later check against for duplicates. */ function readSubmissions(auth) { const sheets = google.sheets({version: 'v4', auth}); sheets.spreadsheets.values.get({ spreadsheetId: sheet, range: period + '!A3:A', }, (err, res) => { if (err) return console.log('The API returned an error: ' + err); const rows = res.data.values; if (rows.length) { for(let i = 0; i<rows.length; i++) { console.log(rows[i]); // Correctly prints all cells A3:A AFTER it returns the empty array data.push(rows[i]); } console.log(data); // Correctly prints data array again after it returns the empty array } else { console.log('No data found.'); } }); } return data; // Returns empty array; executing before the loop pushes rows[i] to data[]. };