Home > Mobile >  Using a Google Form to Populate a Google Doc: Punctuation appears when fields are empty in form
Using a Google Form to Populate a Google Doc: Punctuation appears when fields are empty in form

Time:10-30

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();
}
  • Related