iInfo 資訊交流: Google Apps Script 入門到進階(19) --- Google 表單與 Line Notify 結合應用

最新消息

[公告2014/05/30] 如有需要將部落格中,任何一篇文章的程式碼使用在商業用途,請與我聯繫。

[公告2015/04/26] Line版的 iInfo程式與投資應用 群組已上線想加入的朋友們,請先查看 "入群須知" 再與我聯繫 Line : aminwhite5168,加入請告知身分與回答 "入群須知" 的問題。

[公告2017/02/20] 近來有網友詢問 MultiCharts 與 Excel 畫冰火能量圖 (8)MultiCharts 與Excel 畫冰火能量圖(11) --- 更名「台股儀表板」 文章中教學檔案取得方式,有興趣的朋友可透過 Line了解詳情 (請勿以為是免費分享),Line : aminwhite5168。

[公告2018/04/22] 台北 Python + Excel VBA 金融資訊爬蟲課程,課程如網頁內容 金融資訊爬蟲班:台北班 Python 金融資訊爬蟲、EXCEL VBA 金融資訊爬蟲,請盡快把握機會,歡迎券商、大專院校邀約講座。

[公告2018/06/01] 台指能量儀表板教學課程,課程如網頁內容 台北班:台指能量儀表板

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上,要設定觸發事件。

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

執行畫面:

參考資料: