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/)