iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
自我挑戰組

從無到有打造驗證碼共享的 Line 機器人系列 第 8

部署 Google App Script 專案(1)

  • 分享至 

  • twitterImage
  •  

今天要接著完成部署 GAS 專案並且讓 Line Bot 可以簡單的回應驗證碼給使用者。

將先前的 GAS 專案部署為資料庫

首先我們要把之前做好的 GAS 專案(Read Mail)部署為資料庫,這樣就可以像使用 GmailApp 一樣在其他專案使用這個 GAS 專案。

流程構思

  1. 會有另一個 GAS 專案 Reply Message 負責接收 Webhook Message Event (之後會解釋這是什麼),Event Object 中可以拿到三個資訊
    1. replyToken: 用來回應使用者訊息的單次使用Token,很快就會失效
    2. userId: 使用者的 line user token
    3. message: 使用者發送的訊息內容格式等資訊
  2. Reply Message 會檢驗 message 中使用者是否發送了 "獲取驗證碼" 的文字訊息
    • 是: 接著步驟3
    • 否: 回應使用者此為無效輸入
  3. Reply Message 提供 userIdRead Mail 專案
  4. Read Mail 讀取驗證碼,並將 userId 等紀錄寫進 Google Sheet 中,再回應驗證碼給 Reply Message
  5. Reply Message 利用 replyToken 回應使用者驗證碼

修改 GAS 專案以符合需求

為了符合以上的構思,需要把 Read Mail 專案稍作修改

首先把 insertToSheet 改成如下:

function insertToSheet(sheet, content, userID) {
  Logger.log('start to insertToSheet');
  var lastRow = sheet.getLastRow();
  var range = sheet.getRange(++lastRow, 1, 1, 3);
  range.setValues([[content, userID, new Date()]]);
}

接著把 app.gs 改成如下:

function app(userId) {
  var content = readMail();
  var sheet = connectToSheet();
  insertToSheet(sheet, content);
  var validationCode = readFromSheet(sheet);
  return validationCode;
}

更新完記得存檔唷!

Read Mail 專案部署為資料庫

首先點選 GAS 介面右上角的部署
Click Depoly

接著在左邊選取類型的齒輪點一下,選擇資料庫
GAS Depoly 01

說明的地方輸入 Read Mail,然後按下部署
GAS Depoly 02

然後就可以看到部署的結果囉~圖中的資料庫網址可以看到資料庫的簡易使用說明頁面
GAS Depoly 03

建立一個新的 Reply Message 專案

接著我們建立一個新的 Reply Message 專案如下:
Reply Message 01

加入 Read Mail 作為資料庫

然後點選左邊資料庫的+號,新增一個資料庫
Add Read Mail

這裡要輸入的指令碼 ID 可以在 Read Mail 專案的專案設定中找到
Read Mail ID 01
Read Mail ID 02

輸入指令碼 ID 後按下查詢,成功的話就會顯示如下圖
版本的部分可以選擇最新,也可以選擇你想要的部署版本
Read Mail ID 03

成功載入資料庫囉!
Add Read Mail Success

使用 Read Mail

接著我們將 Reply Message 的 app.gs 修改如下:

function app() {
  var validationCode = ReadMailAndInsertToGoogleSheet.app('testUser');
  Logger.log(validationCode);
}

修改完後記得儲存!接著按下執行~第一次執行一樣會要求審查權限,然後來看看成果吧~
Result

文件

如果想瞭解更多關於 GAS 資料庫的用法可參考文件 Libraries

今天就先到這裡~畢竟等下要來為99購物節備戰(?!)

明天終於要進入 Line Messaging Api 的應用~會接受 Webhook Message Event,並且透過 replyTokne 回應使用者驗證碼。


其實用 GAS 示範簡單串連 Line Bot 是可以非常快速的,網路上也有很多相關的教學文章,但因為本系列文章的其中一個目的是盡量比昨天多進步一點,如果都是以前使用過的東西就太無趣了~像這次將 GAS 部署為資料庫,對筆者來說就是新東西(之前都只有部署成 Web App doPost())。也是這次寫文章才發現 GAS 現在有了新版的編輯器介面,也支援了更多服務,時代果然是一直在進步呀~想停留在原地你得不停的奔跑!


上一篇
建立 Line Bot(2)
下一篇
部署 Google App Script 專案(2) & Line Bot 簡單回應訊息
系列文
從無到有打造驗證碼共享的 Line 機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
hsuchinwei1
iT邦新手 5 級 ‧ 2022-10-11 22:15:19

想請問版主,
目前我已經將這篇的code打上GAS
也將網頁應用程式的網址貼上line message API的 webhook
不過用line點擊”獲取驗證碼“圖片, 也會吐出”獲取驗證碼“,
但是line bot並沒有回傳驗證碼, 請問我要怎麼測試function有沒有錯誤呢
謝謝

不好意思
回應錯篇文章,
我想回應的是這篇“部署 Google App Script 專案(2) & Line Bot 簡單回應訊息”的內容
謝謝

我要留言

立即登入留言