getting responseID of latest form submission in google apps

前端 未结 3 611
旧时难觅i
旧时难觅i 2021-01-15 20:51

I have a google form. Every time it is submitted, the answers go into a google spreadsheet. I am trying to write an app script that triggers every time the form is submitted

3条回答
  •  挽巷
    挽巷 (楼主)
    2021-01-15 21:42

    I think you can only call FormApp.getActiveForm() from a script attached to a form, whereas your script is contained in a GSheet. I couldn't find a way to easily gets forms that used this sheet as its destination so what I've did was get all of the forms and then looked at the destination id of each and checked if it is the same as this spreadsheet. Once you've got your Form object you can get the responses. Feels a bit long winded would love to know if anyone knows a quicker way.

    There are also a few exceptions that FormApp throws that you have to cope with.

    Here's the function I use:

    /**
     * Find the first form that is linked to a specific spreadsheet
     *
     * @param {string} spreadsheet id
     * @return {object} Form or null
     */
    
    function getFormByDestinationId_(spreadsheetId) {
    
      var formFiles = DriveApp.getFilesByType('application/vnd.google-apps.form');
      var form;
      var formFile;
      var formId;
      var destinationId;
    
      while (formFiles.hasNext()) {
    
        formFile = formFiles.next();
        formId = formFile.getId();
    
        // Throws an error if ID invalid
    
        try {
    
          form = FormApp.openById(formId);
    
        } catch (error) {
    
          if (error.name === "Exception") {
    
            // Just ignore it 
    
          } else {
    
            throw error;
          }  
        }
    
        // Form.getDestinationId() throws an error if there is no destination id
    
        try {
    
          destinationId = form.getDestinationId();
    
        } catch (error) {
    
          if (error.name === "Exception") {
    
            // Just ignore it 
    
          } else {
    
            throw error;
          }
        }
    
        if (destinationId !== spreadsheetId) {
    
          continue;
        }
    
        return form;
      }
    
      return null;
    
    } // getFormByDestinationId_()
    

提交回复
热议问题