Try   HackMD

Google表單 + Line通知 + Google日曆通知(七品蓮範例)

tags: 整合運用

Google表單

  1. 輕鬆建立以所有人為對象的問卷調查和表單
  2. 建立自訂的問卷表單不需要額外支付任何費用。受訪者的答案會自動填入 Google 試算表,讓您立即就能分析資料。
  3. 企業帳號,可以限定同網域帳號才能填表單
  4. 自動回覆,填報內容,請開「設定/一般/收集電子郵件地址」

Line通知

  1. Line Notify

  2. 只要與其他網路服務完成連動設定,您即可透過「LINE Notify」官方帳號接收該網路服務的通知訊息。

  3. 請先登入「Line Notify」

  4. 至「個人頁面」

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

  5. 畫面捲至最下方

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

  6. 發行權杖,只會出現一次,請自行記住,方便日後使用

Google表單+Line通知

  1. 請先建立表單

  2. 設定「收集電子郵件地址」

  3. 繳費通知(七品蓮範例)

  4. 權限設定

    Image Not Showing Possible Reasons
    • The image file may be corrupted
    • The server hosting the image is unavailable
    • The image path is incorrect
    • The image format is not supported
    Learn More →

  5. 指令碼編輯器
    檔名:專案檔名建議與表單名稱一樣
    時區:檔案/專案屬性/時區 => GMT +08:00 台北

function getFormResponse() { //由表單 Id 開啟表單 var form = FormApp.openById("XXXXXX-Google表單ID"); //取得表單名稱 var formTitle = form.getTitle(); //取得表單回覆內容 var formResponse = form.getResponses(); //處理表單上問答內容 for(var i = 0; i < formResponse.length ; i++){ //取得表單上的項目 var itemResponses = formResponse[i].getItemResponses(); //取得表單上「收集電子郵件地址」 var itemRespondentEmail = formResponse[i].getRespondentEmail(); //Logger.log(itemRespondentEmail); //傳送訊息設定 var itemContext = formTitle + "\n 填報者電子郵件 : " + itemRespondentEmail + "\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"; //送出表單到Line sendToLine(itemContext); } //刪除回應問題 form.deleteAllResponses(); } function sendToLine(message){ //填入Line Notify 權杖 繳費通知單 var token = "XXXXXX-Line Notify 權杖"; var options = { method : "post", payload : "message=" + message, headers : {"Authorization" : "Bearer "+ token}, muteHttpExceptions : true }; UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options); }
  1. 更換Google表單ID

  2. 更換Line Notify 權杖

  3. 若Line Notify 權杖,指定群組非個人,請把「LineNotify」加入該群組

  4. 設定「現有專案的啟動程序」

  5. 儲存,測試

Google日曆通知

  1. 建立Google日曆
  2. 程式碼
function getFormResponse() { //由 Google表單ID 開啟表單 var form = FormApp.openById("XXXXXX-Google表單ID"); //取得表單名稱 var formTitle = form.getTitle(); //取得表單回覆內容 var formResponse = form.getResponses(); //處理表單上問答內容 for(var i = 0; i < formResponse.length ; i++){ //取得表單上的項目 var itemResponses = formResponse[i].getItemResponses(); //取得表單上「收集電子郵件地址」 var itemRespondentEmail = formResponse[i].getRespondentEmail(); //Logger.log(itemRespondentEmail); //傳送訊息設定 var itemContext = formTitle + "\n 填報者電子郵件 : " + itemRespondentEmail + "\n"; //傳給日曆變數 var calendar = []; //將表單每一項問答組成訊息 for(var j = 0; j < itemResponses.length ; j++) { if(itemResponses[j].getItem().getTitle() == "繳費單位"){ calendar['title'] = itemResponses[j].getResponse(); } if(itemResponses[j].getItem().getTitle() == "繳費日期"){ calendar['date'] = itemResponses[j].getResponse(); } if(itemResponses[j].getItem().getTitle() == "繳費金額"){ calendar['amount'] = itemResponses[j].getResponse(); } if(itemResponses[j].getItem().getTitle() == "其他"){ calendar['other'] = itemResponses[j].getResponse(); } if(itemResponses[j].getItem().getTitle() == "備註"){ calendar['ps'] = itemResponses[j].getResponse(); } //取得問題標題 itemContext += itemResponses[j].getItem().getTitle(); //取得問題回覆內容 itemContext += " : " + itemResponses[j].getResponse() + "\n"; } //取得填寫表單時間 itemContext += "\n填寫時間 : " + formResponse[i].getTimestamp() + "\n\n"; //送出表單到Line sendToLine(itemContext); //寫入日曆 setCalendar(calendar); } //刪除回應問題 form.deleteAllResponses(); } function sendToLine(message){ //填入 LineNotify 權杖 繳費通知單 var token = "XXXXXX-LineNotify 權杖"; var options = { method : "post", payload : "message=" + message, headers : {"Authorization" : "Bearer "+ token}, muteHttpExceptions : true }; UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options); } function setCalendar(calendar) { //Google日曆ID var calId = "XXXXXX-Google日曆ID"; //設定新增的行程標題 var title = calendar['other'] ? calendar['other'] : calendar['title']; //開始時間 var startDate = calendar['date']; startDate = new Date(startDate.replace(/-/g, "/"));//轉換日期格式 //設定備註 var ps = calendar['ps'] ; //顏色 var color = 11; //----------------------// //透過ID取得日曆 var cal = CalendarApp.getCalendarById(calId); //建立新的日曆行程 var even = cal.createAllDayEvent(title + ": " + calendar['amount'], startDate,{description : ps}); //設定形成顏色 even.setColor(color); //取得形成的ID //Logger.log(even.getId()); }

APP程式位置

  1. Google 表單
  2. Google 試算表
  3. Google 文件
  4. Google 日曆
  5. Google App Script
  6. Line Notify