Tengo un formulario de Google que estoy usando para recopilar firmas ingresando nombres, títulos y afiliaciones en un documento de Google y una hoja de Google. Sin embargo, aparte del nombre, que es un campo obligatorio, los campos de título y afiliación no son obligatorios. La mayoría de las veces, la persona que completa el formulario tendrá un título y una afiliación, pero me gustaría que el resultado apareciera sin una coma si uno de los campos está vacío, o sin ambas comas si ambos campos están vacíos.
Por ejemplo, si alguien completa el formulario como tal-- Name: Bob; Title: <blank>; Affiliation: <blank>; entonces el resultado será "Bob, ," en Google Doc. Idealmente, solo diría "Bob" .
O, ejemplo 2: Name: Bob; Title: <blank>; Affiliation: University; entonces un resultado ideal sería "Bob, University"
No sé casi nada sobre Google Apps Script y he editado ligeramente una plantilla de script para que se ajuste a mis necesidades. ¡Cualquier ayuda es muy apreciada!
function appendSignatureRow(e){ const lock = LockService.getScriptLock(); lock.waitLock(30000); const name = e.values[2] const title = e.values[3] const affiliation = e.values[4] const letter = DocumentApp.openById('DOC_ID_IS_HERE'); const body = letter.getBody(); const sig = name + ", " + title + ", " + affiliation body.appendParagraph(sig) letter.saveAndClose(); lock.releaseLock(); }En vez de
const sig = name + ", " + title + ", " + affiliation asumiendo que por <blank> , te refieres a una cadena vacía, usa
const sig = [name, title, affiliation].filter(v => v !== '').join(', ');function onMyFormSubmit(e) { let user = LockService.getScriptLock(); user.tryLock(10000); if (user.hasLock()) { const doc = DocumentApp.openById('DOC_ID_IS_HERE'); const body = doc.getBody(); body.appendParagraph(e.values.slice(2,5).join(',')) doc.saveAndClose(); user.releaseLock(); } }Crear disparador:
function createTrigger() { ScriptApp.newTrigger('onMyFormSubmit').forSpreadsheet(SpreadsheetApp.getActive()).onFormSubmit().create(); }