google-apps-scriptgoogle-forms

Google Form Data Not picked up in triggered script in linked spreadsheet when the form is Re-Edited and Re-submitted


Although the linked speadsheet is correctly updated and the values from the resubmitted form are flagged as changed those values do not appear to be collected by

var formValues = e.namedValues;
var firstName = formValues['First Name'][0];
var lastName = formValues['Last Name'][0];
var emailAddr = formValues['Email Address'][0];
var eventRow = e.range.getRow();

The script fails when it tries to send and email the message Exception: Failed to send email: no recipient at sendEmail(Code:101:15) .... The script executed is called send email

Maybe when you resubmit a form only the changed values are picked up in enamedValues?

Another answer on StackOverflow suggested using e.range.getValues()

I tried that as follows

function sendEmail(e) {
  
    // Get Relevant Data from Form Submission
    var responseArr = e.range.getValues();
    var eventRow = e.range.getRow();

    Logger.log('Event Row', responseArr);

    var responseSheet = e.source.getSheetByName('Form Responses 1');
    const lastResponseCol = responseSheet.getLastColumn();
    var headerArr = responseSheet.getSheetValues(1,1,1,lastResponseCol);

    Logger.log('Header Row', headerArr);

    var firstName = responseArr[headerArr.indexOf('First Name')];
    var lastName  = responseArr[headerArr.indexOf('Last Name')];
    var memType   = responseArr[headerArr.indexOf('Membership Type')];
    var maaaNum   = responseArr[headerArr.indexOf('MAAA Number')];
    var emailAddr = responseArr[headerArr.indexOf('Email Address')];

}

The log showed both responseArr and headerArr as empty.

One thing I learnt was that Logger.log values ONLY show if you turn off "Show in real time"

Any help appreciated.


Solution

  • You have a Google Form that contains questions titled "First Name", "Last Name", "Membership Type", "MAAA Number" and "Email Address" You are using namedvalues to create values for an email but some or all of these render as blank for an "edited" submission.

    The reason for this is twofold:

    This code will supply the information that is required for an email regardless of whether it is an original submission or an edited submission. The key is using e.range.rowStart to identify the row that contains the relevant data.


    // This function is bound to the linked spreadsheet.
    // It is triggered by an installable `onFormSubmit` trigger
    
        function sendEmail(e) {
          Logger.log(JSON.stringify(e)) // DEBUG
          var editedRow = e.range.rowStart
          Logger.log("DEBUG: The edited row = "+editedRow)
        
          var responseSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 4")
          var lastResponseCol = responseSheet.getLastColumn()
          var data = responseSheet.getSheetValues(1,1,responseSheet.getLastRow(),lastResponseCol)
          Logger.log("DEBUG: The header row values = "+data[0])
          Logger.log("DEBUG: The data row values = "+data[editedRow-1])
        
        
          var firstName = data[editedRow-1][data[0].indexOf('First Name')]
          var lastName  = data[editedRow-1][data[0].indexOf('Last Name')]
          var memType   = data[editedRow-1][data[0].indexOf('Membership Type')]
          var maaaNum   = data[editedRow-1][data[0].indexOf('MAAA Number')]
          var emailAddr = data[editedRow-1][data[0].indexOf('Email Address')]
          Logger.log("DEBUG: First Name:"+firstName+", Last Name:"+lastName+", Membership Type: "+memType+", MAAA Num:"+maaaNum+", Email Address:"+emailAddr)
        
          // OP to supply balance of function
        
        }
    

    Linked Sheet before Edited Submission

    before

    Linked Sheet after Edited Submission

    after



    Event Objects - Original Submission:

    {
      "authMode":"FULL",
      "namedValues":{"Email Address":["ringo@email.com"],"Timestamp":["10/02/2025 23:22:34"],"MAAA Number":["6543"],"Last Name":["Star"],"First Name":["Ringo and barbara"],"Membership Type":["Life"]},
      "range":{"columnEnd":6,"columnStart":1,"rowEnd":3,"rowStart":3},
      "source":{},
      "triggerUid":"1333227230",
      "values":["10/02/2025 23:22:34","Ringo and barbara","Star","Life","6543","ringo@email.com"]
    }
    

    Event Objects - Edited Submission:

    {
      "authMode":"FULL",
      "namedValues":{"Email Address":[""],"Timestamp":["10/02/2025 23:29:56"],"MAAA Number":[""],"First Name":["Ringo and Barbara"],"Last Name":["Starkey"],"Membership Type":[""]},
      "range":{"columnEnd":3,"columnStart":1,"rowEnd":3,"rowStart":3},
      "source":{},
      "triggerUid":"1333227230",
      "values":["10/02/2025 23:29:56","Ringo and Barbara","Starkey","","",""]
    }