I have a Google form I'm using to gather signatures by inputting names, titles, and affiliations to a Google doc and Google sheet. However, aside from the name, which is a required field, the title and affiliation fields are not required. Most of the time, the person filling out the form will have a title and affiliation, but I would like the result to appear without one comma if one of the fields is empty, or without both commas if both fields are empty.
For example, if someone fills out the form as such-- Name: Bob; Title: <blank>; Affiliation: <blank>;
then the result will be "Bob, ,"
in the Google Doc. Ideally it would just say "Bob"
.
Or, example 2: Name: Bob; Title: <blank>; Affiliation: University;
then an ideal result would be "Bob, University"
I know next to nothing about Google Apps Script and have slightly edited a template script to fit my needs. Any help is greatly appreciated!
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();
}
CodePudding user response:
Instead of
const sig = name ", " title ", " affiliation
assuming that by <blank>
, you mean empty string, use
const sig = [name, title, affiliation].filter(v => v !== '').join(', ');
CodePudding user response:
Filter out the empty spaces and join:
const sig = [name, title, affiliation].filter(String).join();
CodePudding user response:
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();
}
}
Create Trigger:
function createTrigger() {
ScriptApp.newTrigger('onMyFormSubmit').forSpreadsheet(SpreadsheetApp.getActive()).onFormSubmit().create();
}