先前發過一篇「Google自動化:表單收到回應Discord通知」的文,
作為LINE Notify的替代方案。收到大大回饋,提到LINE Messaging API
蛋魷魚抽不出時間找資料學,官方文件對我來說又太硬吃不下,
剛好老師教到ChatGPT,就請AI幫忙寫一段程式連接兩者,結果AI不負眾望寫出來啦!好耶!
再結合之前的程式,就能做到此次功能,分享給大家~
此篇文章可大致了解到以下內容:
1.如何連接LINE Messaging API 和 Google Apps Script
2.如何透過GAS
(1)實現提交表單時,LINE自動通知。
(2)取得試算表指定欄位。
(3)取得表單回應的資料。
那麼,開始做~?(ˊ?ˋ*)?
注意事項:
Messaging API免費版每個月配額是200則。
想要更多配額,要購買方案,或可考慮其他替代服務,如Discord webhook。
操作步驟:
Step 1.申請LINE官方帳號並啟用LINE Messaging API
網上已有大大分享詳細教學,請從06:13開始,看到10:50
影片來源:國北教大-教育大數據微學程YouTube頻道
請先在LINE Developers記下兩個地方,等等會用到。
1.Channel Access Token
2.Your user ID
?小提醒:User ID是一長串英文,不是用戶自己創的那個ID,詳情可參閱官方說明(含取得user id方法)。
?小提醒:Channel Access Token和User ID請小心不要外洩出去,避免被無聊人士拿去開心玩耍,發怪怪訊息
Step 2.把程式碼貼進Apps Script
打開表單回應的試算表,上方選單→擴充功能→Apps Script
會看到以下畫面,請在紅框處貼入程式碼。
程式碼如下,請修改其中三行:
1.第4行:黃底處填入您的Channel Access Token
const channelAccessToken = '這裡填入您的Channel Access Token';
2.第6行:黃底處填入您要收到訊息的用戶LINE user ID
const userId = '這裡填入您要收到訊息的用戶LINE user ID';
3.第12行:黃底處填入您要顯示的LINE訊息,\n是換行的標記。
let msg = '吃通知?(*ˊωˋ*)?\n https://www.gamer.com.tw/ \n';
4.第14-33行:選用功能,可將申請人填寫的資料,顯示在訊息上,如用不到可刪除。
// 功能介紹:Messaging API連接Google Apps Script:Google表單收到回應後,傳送到指定用戶的LINE通知。 // 設定LINE Messaging API的Channel Access Token:這裡填入您的Channel Access Token const channelAccessToken = '這裡填入您的Channel Access Token'; // 這裡填入您要收到訊息的用戶LINE user ID,要從LINE Developers管理者頁面取得,不是用戶自己創的ID。 const userId = '這裡填入您要收到訊息的用戶LINE user ID'; // trigger:Google表單提送觸發通知 function onFormSubmit(e) { // 這裡填入您要顯示的LINE訊息,\n是換行的標記。 let msg = '吃通知?(*ˊωˋ*)?\n https://www.gamer.com.tw/ \n'; // 選用功能:可將申請人填寫的資料,顯示在訊息上。(↓↓用不到可刪除。) // **請不要顯示包含個資的欄位,如:申請人真實姓名、信箱等。** let ss = SpreadsheetApp.getActiveSpreadsheet(); let ws = ss.getActiveSheet(); try { for(let i = 1 ; i<= ws.getLastColumn(); i++) { // 取得表單題目 // 補充說明:getRange(橫的列,直的欄),從1開始計算 let item = ws.getRange(1,i).getValue(); // 取得表單回應 let response = e.values[i-1]; // 將回應填入訊息中 msg += item + " : " + response + "\n"; } } catch (err) { msg = "No Answers for message.\n\n"; // 異常時進行紀錄 Logger.log(err) } // 選用功能(↑↑用不到可刪除。) // 發送LINE訊息 sendMessage(channelAccessToken, msg); } // 發送LINE訊息 function sendMessage(channelAccessToken, msg) { let message = { "to": userId, "messages": [ { "type": "text", "text": msg } ] }; // 設定 HTTP 請求選項 let options = { "method": "post", "contentType": "application/json", "headers": { "Authorization": "Bearer " + channelAccessToken }, "payload": JSON.stringify(message) }; // 發送 POST 請求到 LINE API let response = UrlFetchApp.fetch("https://api.line.me/v2/bot/message/push", options); // 輸出結果(檢查回應) Logger.log(response.getContentText()); console.log(`發送LINE通知~`); } |
點選「磁碟片」按鈕儲存。
Step 3.新增觸發條件
左手邊選單→點選「觸發條件」→新增觸發條件
確認以下兩個地方後,點選「儲存」:
1.執行的功能為「onFormSubmit」
2.選取活動類型修改為「提交表單時」
Step 4.開放權限
這裡會要求您提供權限,點您的Google帳戶
點選「Allow」
到表單裡,填一筆申請資料,然後送出!
成功~好耶~灑花?*??(ˊ?ˋ*)??*?
說明就到這裡,希望對大家有幫助。
從上次發佈那篇文,就沒再摸程式了,感謝大大給了我學習的動力,和得到和大家分享的機會
另外,分享我怎麼問ChatGPT,不用登入,直接問:「請幫我寫一段LINE messaging api 和 Google apps script 連結的程式,可以從Google apps script發訊息到LINE上」
辛苦了,謝謝大家
我要回去趕周末要發的小說了88888,希望不會鴿