Estoy tratando de almacenar todas las respuestas de los formularios enviados por los usuarios en AppScript. Estoy usando este código, pero me sale el error:
'TypeError: id_form.getResponses is not a function'Mi código:
//store answers in one fileEDITAR:
function setDestination_responses(form) { var id_form = FormApp.openById(form.getId()); var spreadsheet_responses = SpreadsheetApp.openById('1TX4GOsihKuXFhbZMhtFWPYmGwrxii0XhyGhyTKzPKhc'); var sheet_spreadsheet_responses = spreadsheet_responses.getSheets()[0]; var titles = id_form.getItems().map(e => e.getTitle()); var formResponses = id_form.getResponses(); var values = formResponses.map(f => f.getItemResponses().reduce((o, i) => { var r = i.getResponse(); return Object.assign(o, {[i.getItem().getTitle()]: Array.isArray(r) ? r.join(",") : r}); }, {})).map(o => titles.map(t => o[t] || "")); if (values.length==0) {console.log(`VALUES EQUAL TO 0 ${values}`)} else{sheet_spreadsheet_responses.getRange(sheet_spreadsheet_responses.getLastRow() + 1, 1, values.length, values[0].length).setValues(values)}; }getResponses() devuelve el objeto FormResponse. En su situación, creo que es necesario recuperar los valores de respuesta usando getItemResponses() .appendRow se usa en un ciclo, el costo del proceso será alto. ÁrbitroCuando estos puntos se reflejan en su guión, se convierte en lo siguiente.
function myFunction() { var id_form = FormApp.openById(form.getId()); var spreadsheet_responses = SpreadsheetApp.openById('1X1rhvgTfFq0-SoecLcgDP1Zu8x93Vba0EKMTBkRFJcw'); var sheet_spreadsheet_responses = spreadsheet_responses.getSheets()[0]; var titles = id_form.getItems().map(e => e.getTitle()); var formResponses = id_form.getResponses(); var values = formResponses.map(f => f.getItemResponses().reduce((o, i) => { var r = i.getResponse(); return Object.assign(o, {[i.getItem().getTitle()]: Array.isArray(r) ? r.join(",") : r}); }, {})).map(o => titles.map(t => o[t] || "")); sheet_spreadsheet_responses.getRange(sheet_spreadsheet_responses.getLastRow() + 1, 1, values.length, values[0].length).setValues(values); }var id_form = FormApp.openById(form.getId()); , en su secuencia de comandos, el form podría ser el mismo FormApp.openById(form.getId()) .