部署 Google App Script 专案(1)

今天要接着完成部署 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 现在有了新版的编辑器介面,也支援了更多服务,时代果然是一直在进步呀~想停留在原地你得不停的奔跑!


<<:  Day7 我想知道它哪里比我好很多 在你心中它和我有什麽不同

>>:  [想试试看JavaScript ] 流程控制 回圈

[Day27] Dev Ops

其实这次就已经有一个铁人赛组别完全是 DevOps 了,如果对於这个领域想要比较深入的了解,可以去看...

[DAY1]什麽是聊天机器人?

聊天机器人主要分为两种类型: 以工作为导向 (宣告式) 的聊天机器是专注於执行一项功能的单一用途程序...

英雄列表范例:删除英雄

接下来介绍「删除英雄」的实作方法。 删除介面设计 我规划是在每个项目後面增加一个删除按钮,按下该按钮...

[Day28] Esp32 + IFTTT + Google Sheet - (程序码讲解)

1.前言 OK,今天要来说说Code的部分,上一篇我们把资料储存在Google Sheet中,那今天...

[Day24]solidity合约内容讲解2

hi~我们今天要讨论有关solidity合约内容,今天的内容会延续昨天的!所以如果还没看昨天的建议...