《四》添加表單指令碼編輯器 & 表單發佈
本次實作系列主題
《一》前言/Notion專案
《二》Line Notify連動設定
《三》Google Apps Script 語法測試 & 表單製作➞使用Google Apps Script透過Line Notify傳遞Line通知
《四》添加表單指令碼編輯器 & 表單發佈(本篇)➞接收到資料時得以即時獲取Line通知
《五》IFTTT連動:指定時間傳送Line訊息 & RSS新聞關鍵字訂閱
接續上篇《三》已設計好的表單樣式,將結合修改後的語法,當有人送出表單(提供資料)的時候,我們便能即時收到Line通知。
實作開始
/添加表單指令碼編輯器/
步驟一:
開啟表單於右上方點擊清單選擇【指令碼編輯器】。
添進修改後的程式碼,並更改相關內容。
//程式碼開始
function getFormData(e) {
var token = "您於Line Notify申請發佈的權杖碼"; //權杖
var form = FormApp.getActiveForm();
var formTitle = form.getTitle();
var currentItemResponses = e.response.getItemResponses();
var boundary = "魚小小 | 數位龍王兵 @ wpin.notion.site";
var message = "\n" + formTitle;
for (var i = 0; i < currentItemResponses.length - 1; i++) {
if (currentItemResponses[i].getResponse() != "") { message += "\n\n" + currentItemResponses[i].getItem().getTitle() + "\n" + currentItemResponses[i].getResponse();}
}
var imageLocation = currentItemResponses[currentItemResponses.length - 1].getResponse();
try {
var blob = DriveApp.getFileById(imageLocation).getBlob();
var imageData = Utilities.newBlob(
"--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"message\"; \r\n\r\n" + message + "\r\n"
+ "--" + boundary + "\r\n"
+ "Content-Disposition: form-data; name=\"imageFile\"; filename=\"" + blob.getName() + "\"\r\n"
+ "Content-Type: " + blob.getContentType() + "\r\n\r\n"
).getBytes();
imageData = imageData.concat(blob.getBytes());
imageData = imageData.concat(Utilities.newBlob("\r\n--" + boundary + "--\r\n").getBytes());
sendImagetoLineNotify(imageData, token, boundary);
}
catch(err) {
message += "\n\n" + currentItemResponses[i].getItem().getTitle() + "\n" + currentItemResponses[i].getResponse();
sendLineNotify(message, token);
}
}
function sendImagetoLineNotify(imageData, token, boundary){
var options = {
"method" : "post",
"contentType" : "multipart/form-data; boundary=" + boundary,
"payload" : imageData,
"headers" : {"Authorization" : "Bearer " + token}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}
function sendLineNotify(message, token){
var options =
{
"method" : "post",
"payload" : {"message" : message},
"headers" : {"Authorization" : "Bearer " + token}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}
1、var token = “”,引號內修改為您於Line Notify申請發佈的權杖碼。
2、var boundary =””,引號內修改為您的資訊。
步驟二:
Google Apps Script左側功能選單【觸發條件】,新增觸發條件。
執行功能「getFormData」,應執行部署作業「上端」,活動來源「表單」,設定在執行「提交表單時」通知我。確實增設條件後,原先空白的列表處就會多一項觸發條件。
/發佈表單 & 實測/
設定完表單指令碼後,接下來回到表單界面,須將表單發佈分享,使任何人都能點進表單進行填寫送出,我們才能獲得資訊並在有人送交表單內容時,即時被通知。
步驟一:
點進【傳送】選擇傳送方式為「連結」,取得連結網址。
表單原本的連結網址落落長,可以勾選「縮短網址」並複製儲存此網址,提供或者公佈在適當的位置。
步驟二:
利用上述表單發佈連結,實際填單提交,立刻可收到Line通知。
步驟三:
切換表單功能頁籤為「回應」,點選圖示選取回應目的地:建立新試算表。
最後,讓資料自動表格化。基於資料收集目的,除即時通知,使收到的資訊更為清楚以表格方式陳列。試算表欄位會依照表單內容自動生成,由於我們剛才已實測提交過一份表單,因此這份試算表在生成同時也會帶入一筆回覆資料。
小記
這項實作主題使用到Google表單、Google Apps Script、Line Notify、Google試算表的運作,對於「提交回報」、「收集資料」、「獲取回覆」等目的上,具有簡明、迅捷且即時的實效。目前因應「在地店家資訊收集」而設計,當有人提交一份在地店家表單,我便能在Line的即時通知下得知內容,更能從試算表當中清楚掌握所有提交資訊。若運用在「即時狀況回報」或者「事件通報」,應該非常實用!不過,假使被通知方為一人以上,Line須創立被通知方群組,語法內需要的權杖,則需要再向Line Notify申請「指向該群組而非一對一」權杖。