Entonces, estoy tratando de construir una API usando mi Hoja de Google y me encontré con un problema.
Aquí está mi código
function doGet() {
let doc = SpreadsheetApp.getActiveSpreadsheet();
let sheet = doc.getSheetByName('portfolios');
let values = sheet.getDataRange().getValues();
let output = [];
for (let i = 2; i < values.length; i++) {
let row = [];
row['name'] = values[i][0];
row['committee'] = values[i][1];
row['post'] = values[i][2];
//console.log(row)
output.push(row);
}
console.log(output)
return ContentService.createTextOutput(JSON.stringify(output)).setMimeType(ContentService.MimeType.JSON);
}
Cuando ejecuto el script, obtengo el resultado deseado en la consola, pero cuando implemento la API (configuré "Quién tiene acceso" para Todos) y envío una solicitud GET, recibo un objeto JSON vacío.
[[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]
¿Qué estoy haciendo mal?
En nombre de OP, Himanshu Sardana
Pude corregir el error, resulta que se debió a que usé la función JSON.stringify incorrectamente. Pude arreglarlo cambiando:
let row = [];
a
let row = {};
Código editado:
function doGet() {
let doc = SpreadsheetApp.getActiveSpreadsheet();
let sheet = doc.getSheetByName('portfolios');
let values = sheet.getDataRange().getValues();
let output = [];
for (let i = 2; i < values.length; i++) {
let row = {}; // Edit in question
row['name'] = values[i][0];
row['committee'] = values[i][1];
row['post'] = values[i][2];
//console.log(row)
output.push(row);
}
console.log(output)
return ContentService.createTextOutput(JSON.stringify(output)).setMimeType(ContentService.MimeType.JSON);
}