iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
Modern Web

來自 GAS 的香氣~跟鳳黃酥一起享受 Google Apps Script 的午茶時光系列 第 10

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


上一篇
Day 9— 物品借用紀錄系統 (1) 基礎建構
下一篇
Day 11 - 物品借用紀錄系統 (3) 發送到期與逾期通知
系列文
來自 GAS 的香氣~跟鳳黃酥一起享受 Google Apps Script 的午茶時光23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言