Title1

Title2

Title3

3-2 Google Apps Script

一、GAS 簡介

二、實做:

  1. 找到「指令碼編輯器」
  2. 貼上「指令」
  3. 如此一來,我們可以攔截,訪客所送出的「填報」
  4. 一切從這裡開始

三、取得填報內容

  1. 取得基本方法1
    //表單變數
    var googleFormID = "googleFormID";
    
    function FormResponse(){
      // 通過ID打開一個表單,並記錄對每個問題的回答。
      var form = FormApp.openById(googleFormID);
      //得到所有回應
      var formResponses = form.getResponses();
       
      //---- 所有回應
      for (var i = 0; i < formResponses.length; i++) {
        var formResponse = formResponses[i];//單筆回應
        var itemResponses = formResponse.getItemResponses();//回應內容
        var formResponseTime = formResponse.getTimestamp();//時間戳記    
        var formRespondentEmail = formResponse.getRespondentEmail();//取得表單上「電子郵件地址」,有設定才有
           
        //----宣告試算表每列變數----
        var rowdata = {};
         
        //----其他自訂欄位(前)
        //rowdata["填報標題"] = "";//  
        rowdata["時間戳記"] = formResponseTime;//表單回應時間
        rowdata['電子郵件地址'] = formRespondentEmail;//電子郵件地址
         
        //----取得單筆回應資料
        for (var j = 0; j < itemResponses.length; j++) {
          var itemResponse = itemResponses[j];      
          var title = itemResponse.getItem().getTitle();//問題名稱
          var value = itemResponse.getResponse();//填報內容
          rowdata[title] = value;
        }
        //其他自訂欄位(尾)
        //----單筆回應資料end  
    
        //----單筆要做的事情
    
        //----單筆要做的事情 end   
         
      }
      //刪除回應問題
      form.deleteAllResponses();
    }  
    

     

  2. 寫入另一工作表,並製作合計
    //表單變數
    var googleFormID = "googleFormID";
    
    function FormResponse(){
      // 通過ID打開一個表單,並記錄對每個問題的回答。
      var form = FormApp.openById(googleFormID);
      //得到所有回應
      var formResponses = form.getResponses();
       
      //---- 所有回應
      for (var i = 0; i < formResponses.length; i++) {
        var formResponse = formResponses[i];//單筆回應
        var itemResponses = formResponse.getItemResponses();//回應內容
        var formResponseTime = formResponse.getTimestamp();//時間戳記    
        //var formRespondentEmail = formResponse.getRespondentEmail();//取得表單上「電子郵件地址」,有設定才有
           
        //----宣告試算表每列變數----
        var rowdata = {};
        var total = 0;
        var subs = {}; 
        //----其他自訂欄位(前)
        //rowdata["填報標題"] = "";//  
        rowdata["時間戳記"] = formResponseTime;//表單回應時間
        //rowdata['電子郵件地址'] = formRespondentEmail;//電子郵件地址
         
        //----取得單筆回應資料
        for (var j = 0; j < itemResponses.length; j++) {
          var itemResponse = itemResponses[j];      
          var title = itemResponse.getItem().getTitle();//問題名稱
          var value = itemResponse.getResponse();//填報內容
          rowdata[title] = value;
    
          //處理有合計的欄位
          var sub =  title.split("-");
          
          if(sub[1] != undefined){
            if(value !=  ""){
              total += parseInt(sub[1]) * parseInt(value);
            }        
          }
        }
        //其他自訂欄位(尾)
        rowdata['合計'] = total;
        //----單筆回應資料end  
    
    
        //----單筆要做的事情
        appendRow(rowdata);
        //----單筆要做的事情 end   
         
      }
      //刪除回應問題
      form.deleteAllResponses();
    }  
    
    //試算表變數
    var SpreadsheetAppId = "";
    var sheetName = '總表';
     
    function appendRow(rowdata){
       
      //用id取得試算表
      var ss = SpreadsheetApp.openById(SpreadsheetAppId);  
      
      //用工作表名稱設定工作表
      var Sheet = ss.getSheetByName(sheetName);
      //設定工作表 0 1 2 ....
      //var Sheet = ss.getSheets()[0];//第1個工作表
       
      //插入第2行空白
      var row = 2;
      Sheet.insertRowBefore(row);
      //        
       
      //寫入記錄
      //時間戳記	桌號或外帶	鵝肉麵(乾)-60元	鵝肉麵(湯)-60元	鵝肉冬粉(乾)-60元	鵝肉冬粉(湯)-60元	鵝肉米粉(乾)-60元	鵝肉米粉(湯)-60元	合計
      var data = [rowdata['時間戳記'],rowdata['桌號或外帶'],rowdata['鵝肉麵(乾)-60元'],rowdata['鵝肉麵(湯)-60元'],rowdata['鵝肉冬粉(乾)-60元'],rowdata['鵝肉冬粉(湯)-60元'],rowdata['鵝肉米粉(乾)-60元'],rowdata['鵝肉米粉(湯)-60元'],rowdata['合計']];
      
      //寫入資料
      data.forEach(function(item,index){
        Sheet.getRange(row, index+1).setValue(item);
      });
    }
     

     

  3.