2018年4月24日 星期二

Google Apps Script 入門到進階(19) --- Google 表單與 Line Notify 結合應用

常見 Google 表單用來做報名表、問卷、統計、投票等其他用途,當使用者填完表單內容後,表單設計者往往要到後台做查詢表單填寫狀態,其實還一種更方便的做法,就是 Google 一系列的商品多半支援指令碼編輯,藉由編輯 Google Apps Script,讓 Google 表單在使用者填寫完畢後,可透過 Mail、Line Notify 主動通知表單設計者,以便即時掌握表單統計進度。
在 Google雲端硬碟中,建立 Google 表單。

開啟指令碼編輯器。

輸入以下Google Apps Script。
function getFormResponse() {
  
  //表單名稱
  var FORMNAME = "測試表單";
  
  //取得表單
  var formHandle = DriveApp.getFilesByName(FORMNAME).next();

  //由表單 Id 開啟表單
  var form = FormApp.openById(formHandle.getId());
  
  //取得表單名稱
  var formTitle = form.getTitle();
  
  //取得表單回覆內容
  var formResponse = form.getResponses();

  //處理表單上問答內容
  for(var i = 0; i < formResponse.length ; i++){
    
    //取得表單上的項目
    var itemResponses = formResponse[i].getItemResponses();
    
    //傳送訊息設定
    var itemContext = "\n" + formTitle + "\n 電子郵件 : " + Session.getEffectiveUser().getEmail() + "\n";
    
    //將表單每一項問答組成訊息
    for(var j = 0; j < itemResponses.length ; j++)
    {
      //取得問題標題
      itemContext += itemResponses[j].getItem().getTitle();
      
      //取得問題回覆內容
      itemContext += " : " + itemResponses[j].getResponse() + "\n";
    }
    
    //取得填寫表單時間
    itemContext += "\n填寫時間 : " + formResponse[i].getTimestamp() + "\n\n\n";
    
    //送出表單到Line
    sendToLine(itemContext);
  }
  
  //刪除回應問題
  form.deleteAllResponses();
}

function sendToLine(message){

  var token = "你的Line Notify token";
  
  var options =
  {
      method  : "post",
      payload : "message=" + message,
      headers : {"Authorization" : "Bearer "+ token},
      muteHttpExceptions : true
  };  

  UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}

記得設定執行權與觸發事件。

要在使用者完成填寫表單後,把訊息送出到 Line Notify上,要設定觸發事件。

設定觸發條件,在使用者填寫完成後,指定函數進行事件觸發。

執行畫面:

參考資料: