Day 10- 物品借用纪录系统 (2) 设定 Calendar

昨天我们完成了基础建设,但是有个地方忘记讲到,我现在赶快补充一下!


我们昨天设定归还日期时,一定有人会问:

这样他如果在当天的 23:59 分归还不就也可以吗?

恩,这是一个非常大的问题,所以我们必须要来解决一下,增加「归还时间」。

首先我们进入表单来到「预计归还日期」这一个栏位,接下来点选右下角的三个点。

点开後请选择加入时间。

然後你就可以看到我们的预计归还日期後面增加了时间的选项了~


完成了之後,我们回到 GAS 本体。

我们要来把对方预计的归还时间上到 Google Calendar 上,那麽又要来看一下 Documents 的部分啦!

我突然发现头上有路径,之後就放备注吧! 这张图的连结在 「注一」

我们往下拉拉拉拉拉,可以看到 Methods 中提供了不少创建日历的方法。

那根据我专业的分析(专业?),我们应该要使用的是 createEvent(title, starTime, endTime, [options]) 这个方法。

有人可能会有疑惑:为什麽我的 options 要用中括号标起来呢,那是因为该项为可选选项,在程序设计的文件中,如果要表示是可选的话,就会用中括号标起来。
当然啦!Google 来是佛心来着,帮你把它分开写了 !这样也比较好找你要的东西。

这边我们就点选那个 Methods ,然後来看一下吧!

这边可以注意到他的 options 的表达格式会是 Object 的方式,也就是说我们需要把他打成:

    let options = {
        description: "Your descriptions",
        location: "The location you set it",
        guests: "guest1 email, guest2 email, guest3 email",
        sendInvites: false || true
    }

你可以把上面复制起来丢进去改就好。

那我们现在新增一个函式 setCalendar :

function setCalender({email, name, itemName, itemCount, expireAt}) {
 const eventTitle = `${name} 借用 ${itemName} 归还`;
 const eventEndTime = new Date(expireAt);
 // 设定结束前一小时为我们的活动开始时间,顺带当作提醒。
 const eventStartTime = new Date(new Date(expireAt).getTime() - (1*1000*60*60));
 // 设定一下 options
 const eventOptions = {
   description: `${name} 借用 ${itemCount} 个物品 ${itemName} 於 ${expireAt} 归还。`,
   guests: `${email}`,
   // sendInvites 我设定为 true,寄信去提醒他有这件事情
   sendInvites: true
 };
 // 执行主要 Methods
 CalendarApp.createEvent(eventTitle, eventStartTime, eventEndTime, eventOptions);
}

我这边呢为了後续好去修改内容,所以把所有的 arguments 都分开来写。

完成之後我们再新增一个函式 onFormSubmit :

function onFormSubmit() {
 // 取得提交的资料
 const datas = SpreadsheetApp.getActiveRange().getValues()[0];
 // 把资料整理放进 Object 中
 const dataObject = {
   email: datas[1],
   name: datas[2],
   itemName: datas[3],
   itemCount: datas[4],
   expireAt: datas[5]
 }
 // 执行设定日历功能
 setCalender(dataObject)
}

完成了之後,我们设定好触发条件,然後就去提交表单吧!

这边依然要给予程序权限去得到你的 Calendar 喔~

然後打开 Calendar 来看一下:

大成功!


今天我们很快速地把日历的部分更新上去了!

明天我们就要来做最後的事情:提醒以及逾期通知!

今日作业:

自己上去修改看看你的 options 选项吧!

我们明天见罗!

关於兔兔们:


学生:老师,明天我们就要远距教学了,这样程序设计课程怎麽办?
我:不用怕孩子,我就是为了这个才挑选这样的云端平台来授课的!不管是不是远距我都不怕!
学生:但是我怕阿…
我:不过就是 39 分被死当,怕什麽!
学生:……

注一: Class CalendarApp


<<:  [Day17] swift & kotlin 实作篇!(8) Animation - swift

>>:  [NestJS 带你飞!] DAY10 - Pipe (下)

Centos7安装seafile7.1.5专业版

Seafile 是一个开源的文件云存储平台,解决文件集中存储、同步、多平台访问的问,允许用户创建“群...

全端入门Day18_前端程序撰写之CSS终

昨天介绍了些F12的功能,今天要来说CSS的框架。 CSS的框架:Bootstrap 因为我目前碰的...

【Day 04】LeetCode:Fizz Buzz ( 用 JavaScript 学演算法 )

我们透过 LeetCode #412 Fizz Buzz 来实际感受解决问题的过程 ( 题目连结 )...

Day23 URLSession 03 - PUT / PATCH

PUT / PATCH:修改资料 一样的模式再来一次,根据以上的Reqres API 来示范 首先一...

D-18. SQL & NoSQL、SQL injection、primary key & foreign key

SQL && NoSQL SQL Structured Query Language...