實作紀錄 | Google Apps Script + Line bot 實作 & 過程覆盤

實作紀錄 | Google Apps Script + Line bot 實作 & 過程覆盤

更新於 發佈於 閱讀時間約 3 分鐘


在 IG 上看到一位前端大大用 Google Apps Script + Line bot 替自己的球隊安排了球經,覺得很有趣,想想自己家每週日晚上都有固定的家庭聚餐,而我就是那位負責預定+告知+提醒+不斷被詢問這週吃什麼的角色...


想想既然轉職成為工程師了,必須讓這過程被優化+自動化,所以決定來玩玩看😛


一開始的預想是 Apps Script + Line Notify,簡單做一個定時推播訊息的機器人,所以參考了這篇教學👉🏻【Line Notify】透過 Google Script 結合 Line Notify 做到 Line 群組推播預先排程內容


raw-image


很順利就完成部屬和測試訊息的推播,但是又覺得只有推播訊息太簡便了,還想加入我們家常去吃的餐廳查詢功能,讓我可以直接透過 line 連結訂位,或是沒想法、無法決定要吃什麼的時候,可以隨機推薦一間餐廳...這些小功能,所以拿 Line Notify 這份程式碼進行修改 + 串接 Line bot API,變成一個資料庫查詢+回覆的機器人!

一樣參考了其他大大分享關於創建 Line bot 和串接 App Script 的教學文章

👉🏻在 LINE Developers 上建立 LINE Bot

👉🏻【LINE BOT 翻譯機器人】(4) 用 Google Apps Script API 傳送 LINE 訊息


raw-image


有成功建立帳號、得到 Line bot 的回應訊息,但是我要串接 Line 的回覆模板時,卻始終沒有辦法得到回覆,試了很久才發現這段不知道我從哪裡複製過來的 code

var dataExportFormat = JSON.stringify(resturant);
return ContentService.createTextOutput(dataExportFormat).setMimeType(ContentService.MimeType.JSON);

我一直認為它是必要的 return 結果,仔細看了 Line bot 文件之後,才發現 API 需要的資料格式很簡單,就是文件範例中給的 JSON 那樣而已,把這段拿掉,直接 return 相應的 obj,果然就成功回覆了!


成功收到 Line bot 的回覆後,就開始把資料建立到 Google sheet 裡面,並改寫 App Script 的 function,期望輸入餐廳名稱可以回傳餐廳的資訊。


但是改寫 function 後就一直不回覆了,一行一行測試才發現是我用了箭頭函式!要注意 App Script 必須使用 ES5 語法,難怪前面怎樣都跑不出結果😰。


寫法修正後就可以輸入關鍵字並得到餐廳資訊,這時又發現有些餐廳的資料可以成功回傳,有些則失敗,看來不是 function 的問題,就回頭去檢查資料,原來是 Google sheet 內的資料型別和格式有誤,會導致 Line bot 完全沒回應,像是電話號碼不能有空格、超連結的 URL 要正確...,細節還是很重要的啊!

raw-image


最後有成功完成以下功能

  1. 輸入餐廳名稱:回覆餐廳資訊
  2. 輸入【全部】:會列出餐廳清單(但是 Line 回覆最多只能10筆資料)
  3. 輸入【查訂位】:會回覆我家最新一筆訂位資訊
  4. 輸入【隨機】:隨機推薦一間餐廳給我


之後還想再加入的功能有:

輸入捷運站名稱,會回覆附近的餐廳名單有哪些

直接輸入訂位資訊,讓機器人幫我把訂位資訊推送到資料庫內



那麼 Line bot 實作&覆盤就先到這邊啦,我是Amber,前端學習中,歡迎交流討論🧸


其他參考文章

兩小時打造簡單 Line Chatbot — 使用 Google Apps Script & Google Sheet API

【LineBot實作】機器人傳送的訊息種類大彙整

Apps Script 到底是什麼



avatar-img
Amber hh的沙龍
23會員
22內容數
留言
avatar-img
留言分享你的想法!
Amber hh的沙龍 的其他內容
第三次月會來了!這個月的主題是「工程師的溝通秘訣」 很多人認為,當工程師只要跟電腦對話就好,在轉職之前我也這麼認為的,尤其是以前在服務業工作,從早到晚跟客戶對談、處理他們各種疑難雜症和情緒的過程,實在太容易讓我感到心累了,倒不如整天跟電腦對話,對錯很明顯,也不用顧及雙方情緒,肯定比處理客訴簡單
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
剛開始學前端都是跟著六角的課程進度走,雖然知道自己不會的技術很多,但至少有明確的學習目標,也會定期產出結果,當時的焦慮來源只覺得時間總是不夠,殊不知真正踏入實務工作後,除了焦慮時間不夠之外,甚至還有點迷失了方向。 轉職後的公司僅一人前端,我沒有 mentor 帶領,也找不到可以效仿學習的 Ro
第三次月會來了!這個月的主題是「工程師的溝通秘訣」 很多人認為,當工程師只要跟電腦對話就好,在轉職之前我也這麼認為的,尤其是以前在服務業工作,從早到晚跟客戶對談、處理他們各種疑難雜症和情緒的過程,實在太容易讓我感到心累了,倒不如整天跟電腦對話,對錯很明顯,也不用顧及雙方情緒,肯定比處理客訴簡單
JSDoc 全名是 JavaScript Documentation,顧名思義是為 JavaScript 所使用的 API 文件,在程式碼內透過註解的方式撰寫,運行後 JSDoc 會自動掃描註解內容,並生成一份網頁版的文件,對於沒有使用 Typescript 開發的專案,也
剛開始學前端都是跟著六角的課程進度走,雖然知道自己不會的技術很多,但至少有明確的學習目標,也會定期產出結果,當時的焦慮來源只覺得時間總是不夠,殊不知真正踏入實務工作後,除了焦慮時間不夠之外,甚至還有點迷失了方向。 轉職後的公司僅一人前端,我沒有 mentor 帶領,也找不到可以效仿學習的 Ro