la carpeta de drive en la que se guarda el doc con las respuestas es https://drive.google.com/drive/folders/1iQMfqoLcxGLKF-_Cw2UMGVQP1DQJHzug
el archivo de excel en donde se registran las respuestas es: https://docs.google.com/spreadsheets/d/1bdQNb7vRO3WDpeFQyE__ARz8y2YOIaA3F1RygkzFLMY/edit?gid=0#gid=0
código usado en el appscript
function doGet(e) {
try {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Preguntas");
if (!sheet) {
return error("No existe la hoja 'Preguntas'");
}
const lastColumn = sheet.getLastColumn();
const data = sheet.getRange(1, 1, 1, lastColumn).getValues()[0];
const preguntas = data
.filter(p => p && p.toString().trim() !== "")
.map(p => ({ Pregunta: p.toString() }));
return ok(preguntas);
} catch (err) {
Logger.log(err);
return error(err.toString());
}
}
function doPost(e) {
try {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Preguntas");
if (!sheet) {
return error("No existe la hoja 'Preguntas'");
}
if (!e.postData || !e.postData.contents) {
return error("No se recibieron datos");
}
const data = JSON.parse(e.postData.contents);
if (!data.respuestas || !Array.isArray(data.respuestas)) {
return error("Formato inválido");
}
// 🔥 1. GUARDAR EN SHEETS
const fila = data.respuestas.map(item => item.respuesta || "");
sheet.appendRow(fila);
// 🔥 2. CREAR DOCUMENTO EN GOOGLE DOCS
const fecha = new Date();
const nombreDoc = "Respuestas - " + Utilities.formatDate(
fecha,
Session.getScriptTimeZone(),
"yyyy-MM-dd HH:mm:ss"
);
const doc = DocumentApp.create(nombreDoc);
const body = doc.getBody();
body.appendParagraph("Respuestas del formulario")
.setHeading(DocumentApp.ParagraphHeading.HEADING1);
body.appendParagraph("Fecha: " + fecha.toLocaleString());
body.appendParagraph(" ");
data.respuestas.forEach((item, index) => {
body.appendParagraph("Pregunta " + (index + 1) + ": " + item.pregunta)
.setBold(true);
body.appendParagraph("Respuesta: " + item.respuesta);
body.appendParagraph(" ");
});
doc.saveAndClose();
// 🔥 3. MOVER A CARPETA (VERSIÓN ESTABLE)
const folderId = "1iQMfqoLcxGLKF-_Cw2UMGVQP1DQJHzug";
if (folderId && folderId.length > 10) {
try {
const folder = DriveApp.getFolderById(folderId);
const file = DriveApp.getFileById(doc.getId());
// Solo añadimos a carpeta (NO eliminamos de root)
folder.addFile(file);
} catch (folderError) {
Logger.log("Error moviendo archivo: " + folderError);
}
}
// 🔥 4. DOCX DESACTIVADO (para evitar errores)
/*
const file = DriveApp.getFileById(doc.getId());
const blob = file.getBlob().getAs(MimeType.MICROSOFT_WORD);
DriveApp.createFile(blob).setName(nombreDoc + ".docx");
*/
return ok({ status: "ok" });
} catch (err) {
Logger.log(err);
return error(err.toString());
}
}
/* helpers */
function ok(data) {
return ContentService
.createTextOutput(JSON.stringify({ status: "ok", data }))
.setMimeType(ContentService.MimeType.JSON);
}
function error(msg) {
return ContentService
.createTextOutput(JSON.stringify({ status: "error", message: msg }))
.setMimeType(ContentService.MimeType.JSON);
}
Publicaciones relacionadas.
Escribe tu reseña.