Google表單 + Line通知 + Google日曆通知(七品蓮範例) === ###### tags: `整合運用` --- Google表單 --- 1. 輕鬆建立以所有人為對象的問卷調查和表單 2. 建立自訂的問卷表單不需要額外支付任何費用。受訪者的答案會自動填入 [Google 試算表](http://sheets.google.com/),讓您立即就能分析資料。 3. 企業帳號,可以限定同網域帳號才能填表單 4. 自動回覆,填報內容,請開「設定/一般/收集電子郵件地址」 Line通知 --- 1. [Line Notify](https://notify-bot.line.me/zh_TW/) 2. 只要與其他網路服務完成連動設定,您即可透過「LINE Notify」官方帳號接收該網路服務的通知訊息。 3. 請先登入「Line Notify」 4. 至「個人頁面」 ![](https://i.imgur.com/nTllMNE.png) 5. 畫面捲至最下方 ![](https://i.imgur.com/oLCuy99.png) 6. 發行權杖,只會出現一次,請自行記住,方便日後使用 Google表單+Line通知 --- 1. 請先建立表單 2. 設定「收集電子郵件地址」 3. [繳費通知(七品蓮範例)](https://docs.google.com/forms/d/1QuVI05SatIK-tee9IbnNqnvPjsXLSIcgNynB0myLNvc/edit) 4. 權限設定 ![](https://i.imgur.com/crohALo.png) 5. 指令碼編輯器 檔名:專案檔名建議與表單名稱一樣 時區:檔案/專案屬性/時區 => GMT +08:00 台北 ```javascript= 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); } ``` 6. 更換Google表單ID 7. 更換Line Notify 權杖 8. 若Line Notify 權杖,指定群組非個人,請把「LineNotify」加入該群組 9. 設定「現有專案的啟動程序」 10. 儲存,測試 Google日曆通知 --- 1. 建立Google日曆 2. 程式碼 ```javascript= 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()); } ``` 3. APP程式位置 --- 1. [Google 表單](http://forms.google.com/) 2. [Google 試算表](http://sheets.google.com/) 3. [Google 文件](http://docs.google.com/) 4. [Google 日曆](https://calendar.google.com/) 5. [Google App Script](https://script.google.com/) 6. [Line Notify](https://notify-bot.line.me/zh_TW/)