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. 至「個人頁面」  5. 畫面捲至最下方  6. 發行權杖,只會出現一次,請自行記住,方便日後使用 Google表單+Line通知 --- 1. 請先建立表單 2. 設定「收集電子郵件地址」 3. [繳費通知(七品蓮範例)](https://docs.google.com/forms/d/1QuVI05SatIK-tee9IbnNqnvPjsXLSIcgNynB0myLNvc/edit) 4. 權限設定  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/)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.