Google Forms App Script : How to check if current submission is editing response or a new response

前端 未结 2 1892
情书的邮戳
情书的邮戳 2021-01-13 18:23

I am working with google forms via app script. I want to determine if the current form that is being submitted is in edit mode or a new response? How can I check this in the

2条回答
  •  醉酒成梦
    2021-01-13 18:57

    The Google Form form submit event doesn't have a field that could help to know if the response is a new response or if it's a response edit. As Sandy already said through question comments, the Form Servicer classes and methods, nor the response values include something that could help on this.

    By the other hand, the Google Sheets submit event has a range field that could help. The following script bounded to a Google spreadsheet logs the response row:

    function onFormSubmit(e){
      var response = e.range;
      Logger.log(response.getRow());
    }
    

    The above could be used to keep updated a column to hold a revision counter. If the corresponding cell is blank, then the response is a new response, other way it's a response edit.

    The following script it to be bounded to the spreadsheet that receives the Form responses. It requires a on form submit installable trigger. Other instructions to adapt it are included on the script comments.

    /*
     *
     * Global Variables
     *
     */
    
    /*
     * Sheet name used as destination of the form responses
     */
    var sheetName = 'Form Responses';
    
    /*
     * Name of the column to be used to hold the response revision counter 
     * It should match exactly the header of the related column, 
     * otherwise it will do nothing.
     */
    var revisionsColumn = 'Rev';
    
    /*
     * Responses starting row
     */
    var startRow = 2;
    
    function setRevisionCounts(e){
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
      var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 
      var revisionsIndex = headers[0].indexOf(revisionsColumn);
      var data = sheet.getDataRange().getValues();
      var response = e.range;
      var rowIndex = response.getRow()-1;
      var rev = data[rowIndex][revisionsIndex]+1;
      sheet.getRange(rowIndex+1, revisionsIndex+1).setValue(rev); 
    }
    

提交回复
热议问题