# 什麼是 Google Apps ScriptGoogle 推出的 FaaS (函式即服務)
無伺服器 (Serverless) : 不用複雜的架設一個完整的伺服器
基於 JavaScript : 閹割版的 JS, 會 JS 基本上就會 GS
Domain 附贈 SSL
# 增加 Google Apps Script 的 SDK 為依賴項Google App Script 不支援 LINE 官方的
Node.JS Messaging API SDK (下略稱為「官方 SDK」)
不過 GitHub 上有由 kobanyan 大神基於官方 SDK 編譯的
Google App Script Messaging API SDK (下略稱為「line.gs」) 可供安裝
安裝步驟也很簡單 在側邊欄的【資料庫】點+新增資料庫
指令碼 ID 填入
1EvYoqrPLkKgsV8FDgSjnHjW1jLp3asOSfDGEtLFO86pPSIm9PbuCQU7b即可完成 line.gs 的安裝
# 撰寫 LINE BOT 程式碼Google App Script 作為 FaaS 需要由事件來驅動服務
當有人 GET 這個服務時會執行 doGet() 函式
當有人 POST 這個服務時會執行 doPost() 函式
Messaging API 用 POST 方法來請求 BOT 的 所以程式碼必須寫在 doPost() 裡面
※doGet(), doPost() 是
Google App Script Web Apps 固定的寫法附上 echo 範例程式碼
Code.gs |
const client = new LineBotSDK.Client({ channelAccessToken: '您的_LINE_BOT_TOKEN' });
function doPost(e) { let event = JSON.parse(e.postData.contents).events[0]; let echo = { type: 'text', text: event.message.text }; client.replyMessage(event.replyToken, echo); } |
與官方 SDK 不同的是 client.replyMessage 不是傳回一個 Promise 物件
而是直接呼叫 UrlFetchApp.fetch 方法傳送請求到 LINE 伺服器
所以不須再 return
# 部署 LINE BOT當完成程式碼之後就能部署到網路上了
點擊編輯器右上角的【部署>新增部署作業】
【類型】選擇網頁應用程式
【誰可以存取】選擇所有人
最後將產生出來的網址貼到 Messaging API settings 網頁裡的 Webhook URL 儲存
LINE BOT 就能運作了
# 後記其實網路上關於用 Google App Script 實作 LINE BOT 的教學蠻多的
不過大多是用 UrlFetchApp.fetch 直接發出請求
我看了一下想說沒人寫 SDK 嗎?我不相信
上 GitHub 搜一下就看到 kobanyan 的存儲庫
然後折騰了一天才弄出來
一開始是指令碼 ID 一直查詢不到
後來切成舊版編輯器再輸入就行了
因為舊版編輯器的 API ID 和新版編輯器的指令碼 ID 不一樣
而 kobanyan 給的是舊版編輯器的 API ID
然後是
README.md 給的範例程式有錯字這邊卡超久 = =
看 Log 也看不出個甚麼所以然
完成後趕快寫筆記記起來......