今天我们就把整个服务完成吧!
不知道大家顺利地收到通知了没?
我已经顺利收到罗~
咦咦咦?发生什麽事!
为什麽我一次收到两封咧?
回头看一下程序码,以及对照了一下试算表表单,我发现:
而且信中的内容也有问题:
那个 -3 天是发生什麽事啊…
所以我们今天会来调整一下这两个部分!
首先我们先简单的来调整一下「已经归还的物品不用再发信」的部分。
其实这部份超级简单的,只是加上一组判断式而已:
function returnNotice() {
// 取得试算表中的所有资料
const TheDatas = SpreadsheetApp.getActiveSheet().getDataRange().getValues();
// 取得现在时间
const now = new Date().getTime();
// 设定开始通知的时间
const oneDayTime = 24*60*60*1000;
const startNoticeTime = 3*oneDayTime;
TheDatas.forEach(data => {
if (data[0] === "时间戳记") {
return;
}
+ if (data[6]) {
+ return;
+ }
let expireTime = new Date(data[5]).getTime();
let remainingDay = expireTime - now;
if (remainingDay > startNoticeTime) {
return;
}
remainingDay = Math.floor(remainingDay/oneDayTime);
const noticeData = {
email: data[1],
name: data[2],
itemName: data[3],
itemCount: data[4],
remaining: remainingDay
};
SendNotice(noticeData);
});
}
根据我们拿到的资料,在 data[6] 的资料为是否已经归还的 Check Box ,所以我们只要看到这笔资料为 true 的时候,表示被勾选,已经归还,就直接跳过,不用留恋。
这样,就不会发生已经归还却还是寄信的问题了~
但是我们需要等到明天早上才能被测试吗?
当然不是,记不记得我们前面有说过可以做测试执行呢?
如果是要资料进来才执行的,当然没办法使用这个功能。
但是我们今天是要直接抓整个试算表的资料,所以用测试执行会是刚刚好的选项!
所以我们回到编辑器,找到执行的部分:
接着按下 onItemReturn 那个地方,切换我们要测试的函式:
选择 returnNotice 後,按下执行:
接着我们就会看到我们的 returnNotice 被执行了!
我们切回信箱看一下信件:
太好了!我们只会寄出还没归还的东西了!
这个部分你可以跟你自己的资料进行比对喔~
接下来我们来看一下那个 -3 天怎麽办…
其实也很简单,我们要去调整 SendNotice 这个函式,新增一个条件式进去。
function SendNotice({email, name, itemName, itemCount, remaining}) {
MailApp.sendEmail({
to: email,
- subject: 【系统讯息,请勿回覆】距离归还 ${itemName} 剩余 ${remaining} 天!
+ subject: remaining >= 0 ? `【系统讯息,请勿回覆】距离归还 ${itemName} 剩余 ${remaining} 天!` : `【系统讯息,请勿回覆】距离归还 ${itemName} 已经逾期归还 ${Math.abs(remaining)} 罗!`,
body: `${name} 您好,
- 您借用的 ${itemCount} 个 ${itemName} 剩余 ${remaining} 天需要归还`
+ 您借用的 ${itemCount} 个 ${itemName} ${remaining >= 0 ? `剩余 ${remaining} 天需要归还` : `已经逾期 ${Math.abs(remaining)} 天归还`},
- 请务必於时限内归还,或是至资讯组办理续借。
+ 请务必於尽速归还,或是至资讯组办理续借。
非常感谢您的配合!`
});
}
我这边为了处理上方便,因此采用三元运算子,这我们在 Day8 有用过,大家可以回去看一下喔~
OK,我们来测试一下吧!
重复上面测试的动作,然後再去收信:
太好了,标题有成功修改!
我们进入内文看看:
成功修改!
今天我们就到这里罗!
我相信你们对於上面这一个专题还有一些疑惑…
但是不用担心,明天我就来为大家好好讲一讲里面的一些内容。
照惯例:
作业也许稍难,但是非常有挑战性喔~
我们就明天见~
我:Google Apps Script 的内容真的可以写很多,但是自从行政上越来越忙後,写文章的时间也压缩了…期许我自己接下来还能好好写文章,把这 30 天挑战完成吧!
我:话说…没有学生呛我,感觉有点无聊呢……我才不是受虐体质呢!!!
<<: D-18 生命周期 ? request pipeline ? di lifecycle
VScode: Step 1 开启index.html存挡 Step 2 开启all.js存挡 St...
前言 先说这是新手纪录流程,最近想研究一下树莓派当作开发板的使用情境。 於是开始了这个纪录文章,想说...
大家好,我是乌木白,今天想和大家谈谈专注力这件事情。 浅谈自己的专注力 认识我的人,都知道其实我的...
结束了为期三天的枢纽分析表,接着进到另一大主题,图表 (>ε<) 相信大家都知道图表可以让冗长的资数...
昨天看完value types,今天来聊聊 reference types。 solidity 的 ...