Day 4— 自动化回信机(1) 前置作业

今天开始就要来利用专题了解 GAS 的各项功能罗~

说到要能优雅、或是狼狈的…总之要能够享受下午茶,不管你的状态为何,你都必须要有「时间」。

而系统自动化,也就代表了:

将你从 routine 的工作中解放出来!

这样你想要怎麽样去喝下午茶、吃点心,咳咳,我是说有充分时间去处理其他案子,那都是你的自由啦!


这个专案的故事是这样的:

那是个炎炎夏日,草木丰茂,鸟语花香…

STOP……我们快转!

学生最常发生的就是帐号密码丢失,常常要跑来找资讯组协助处理。

但是最麻烦的就是当我改完帐号密码後,还得一个一个寄通知给学生,而且每个学生申请的帐号密码修正又不一样,要寄不同种信又很麻烦…

所以我就想,那能不能利用 GAS 的力量来协助我进行自动化呢?当我修改完後,只要到表单打勾,GAS 就能自动寄出信件给申请的学生,这样不就简单了吗?

没错,当我想到这里,心中都热血沸腾起来了!

作为一个懒人,能用系统解决的问题才是最方便的,因此我们就来看看这个专题怎麽写吧!


首先,我们要先建立流程,我用 draw.io 简单画了一个流程:

目前看起来,第三步没有问题,这边有很多系统没有开 api ,有心而无力去改啊…

第一步与第二步我也没有想要另写网站,开个 Google Form 就好,像这样:

等等,开个 Google Form 表单,那不就代表我们可以将作答状况连动到 Google 试算表吗!?

如果用试算表当作是我们的 DB ,那麽是不是就可以用 GAS 来串接我需要的服务了呢!?

就让我们来试试看!

利用表单来开启 Google 试算表:

你如果有现成的试算表可以选「选取现有试算表」,但是我相信大家应该还是见一个新的比较方便吧?

按下「建立」後,就开启了一个试算表的页面。

那我们要怎麽样将 GAS 附加到我们的表单上呢?

有两种方案:

  1. 开一个新的 apps script,然後利用文件 id 来连回这个表单。
  2. 直接当作 extension 来使用。

当然,我不建议第一种,比较麻烦,所以我们用第二种来实作!

找到 工具 > 指令码编辑器,就可以顺利打开 Google Apps Script 服务罗!

熟悉的介面最对味~

然後我们稍微修改一下专案名称,这样比较好看。

基本上的前置作业都完成罗!


接下来我们就是要开始写 Code!

但是在写之前,先思考一下我们希望这套系统会发生什麽事情:

按下某个按钮会触发事件?咦?我们该怎麽处理呢?

稍微翻了一下文件发现:原来 GAS 有提供基本的触发函式,可以让我们在对文件做某些动作时可以控制。

藏在这里

往下翻一翻,看到了他提供的几种触发模式:

看来看去,最有用的应该还是 onEdit() 这个触发函式。

因为试算表中没有按钮啊!?

但是 Google 试算表中却有着 Check Box

当我们按下 Check Box 时,不就在针对文件进行 Edit 了吗?

因此我们用 onEdit() 作为我们的触发函式:

这边我们先来简单测试一下好了!我在里面打上 console.log('我被改变了喔!') 来看看当表单进行修改时会发生什麽事情:

按下执行後:

诶?我们没有动到试算表啊,为什麽会动呢?

原来是因为,我们按下执行时,是在针对这个函式做单元测试,那当然就不是我们改变後才会发生啦!

那怎麽样让他发生呢?答案很简单:

不要动它了

没错!不用再动了,因为他已经跟试算表绑定了,而且我们也藉由 onEdit() 这个基础触发函式,让试算表出现编辑时,会自动执行 onEdit() 方程序。

我们回到试算表修改看看:

然後回头再看 console:

咦?执行了吗?不对啊,跟上面的那张还是一模一样耶!

没错,聪明的你应该发现了,我没办法在这边看到我的触发结果喔!

那去哪里看呢?

记不记得我们有讲过一个侧边栏?

我们切换到「执行项目」的页签下,然後就会看到:

J, J ㄍ是!?

没错,你看到了许多他自动执行的项目,我们点最上面的一个:

是不是刚刚的字就跑出来了呢?


由於碍於篇幅,以及本人对於睡眠的慾望(你仔细看我的图片中,那个执行的时间就知道了…),因此今天讲到这里罗~

今天我们讲了:

1. 自动化回信专案缘起

2. 自动化回信专案的流程

3. 基础触发函式

大家可以回头再想一想喔~


今日作业:

onEdit() 能在 Google 表单提交时,造成 Google 试算表的改变而自动执行吗?请你试试看吧!


记得缴作业喔~(我知道你们前面的作业八成也没有写啦???)

我们明天要开始往下继续写罗~

明天见!


关於兔兔们:


学生:老师,难怪你会胖,原来都是吃下午茶害的啊?
我:没有吼,我下午都是认真做事的,真的!
学生:(瞥了一眼我桌上的零食残余)恩,我相信老师绝对不是因为吃太多零食而变胖的!
我:……

<<:  Day04 - Parsing Ptt

>>:  【Day8】[资料结构]-伫列Queue-实作

【Day 30】Google Apps Script - 延伸篇 -系列回顾与学习资源整理

Google Apps Script 网站又改版了,Google 一直在发展这个平台,还会愈来愈好...

Day 18:浅谈软件测试

经过了差不多两周,我认为监控和警报的部分总算是告了个段落,虽然之後还需要透过实际的收集监控资料来修正...

Day 17 - 人生的复杂度大概就是指数型的增加吧

Intro Complexity 可以了解程序的运作效率 graph 可以把复杂的问题抽象化,或是可...

我们的基因体时代-AI, Data和生物资讯 Day06- 蛋白质结构和机器学习01

上一篇我们的基因体时代-AI, Data和生物资讯 Day05- 深度学习在基因体学的建模架构02上...

D18 - 吃一颗 Class 语法糖 (下)比较 Constructor 与 Class

前言 语法糖 Syntactic sugar,指电脑语言中添加的某种语法,这种语法对语言的功能没有影...