Google 行事曆的行程用 Line Notify 通知

Google 行事曆是個讓自己有條理的走在行程上,定期使用 Google 日曆的朋友一定也對設置的事件通知相當熟悉,今天要來使用另一種透過 Line Notify 通知每天的活動來通知成員的方式,我們將使用 Apps Script 撰寫腳本方式進行連接,這樣我們每次在 Google Calendar 新增的時候,就用 Line 通知我們!讓我們開始吧!

使用的工具

  • Line Notify
  • Google Calendar
  • Google Apps Script

Line Notify 的發行權仗

Line Notify 只要取得一組權杖就可以發送訊息

請先進入 Line Notify 的網站 ,點選右上角的「登入」

1

輸入自己的 Line 登入的帳號密碼

2

登入之後點選「個人頁面」,滑到最下方有一個「發行存取權杖」的區塊,按下「發行權杖」,這時候就會彈出一個發行權仗小視窗

4

在這裏要輸入權杖名稱,這個欄位可以自己自訂,如果只要提醒個人的話,那就選擇「透過 1對1 聊天接收 Line Notify 的通知」,就像下方

5

選擇好之後,就按下「發行」,這時候就會看到,發行了一組權杖給你,這時候要按下複製按鈕將鑰匙存下來,關閉之後就不會再出現

1
YBK21nyX1reV2zRKBTF0xxxCQGSOMkkuSTWs

6

Google Apps Script 寫腳本

接著我們進入 Google App Scripts 頁面裡,點選 Google Apps Script ,進到頁面之後,點選左上角的「新專案」

7

一開始先填上專案的名稱「行事曆使用 Line Notify 通知」

8

先修改時區的設定,請在「檔案」> 「專案屬性」,改成台北時間,修訂完成後按下儲存

9

接著我們將以下的程式碼,貼到程式碼輸入的區塊

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
var GoogleCalendarID = "xxxxxxxxxxxxxx@gmail.com"; // 日曆 ID
var LineNotifyEndPoint = "https://notify-api.line.me/api/notify";
var AccessToken = "YBK21nyX1reVxxxxxxxrCQGSOMkkuSTWs"; // 發行的權杖

const Now = new Date();
const Start = new Date(Now.getFullYear(), Now.getMonth(),Now.getDate(), 0, 0, 0, 0);
const End = new Date(Now.getFullYear(), Now.getMonth(), Now.getDate(), 23, 59, 59, 999);
const GoogleCalendar = CalendarApp.getCalendarById(GoogleCalendarID).getEvents(Start, End);

// 監聽觸發條件所設置的
// 彙整行事曆資訊
function postMessage() {
var message = ""; //新增 NotifyContents 存取通知內容
GoogleCalendar.forEach(item=> {
if (item.getStartTime() <= Now && item.getTag("Confirmed") != "Yes") {
message += (item.getTitle() != "") ? ("\n\n" + item.getTitle() + "\n") : ("\n\n空標題\n");
message += (item.getDescription() != "") ? item.getDescription() : "";
item.setTag("Confirmed", "Yes");
}
}
)
sendMessage(message);
}

// 發出訊息
function sendMessage(message) {
var formData = {
"message": message
};
var options = {
"headers" : {"Authorization" : "Bearer " + AccessToken},
"method" : 'post',
"payload" : formData
};

try {
var response = UrlFetchApp.fetch(LineNotifyEndPoint, options);
}
catch (error) {
Logger.log(error.name + ":" + error.message);
return;
}

if (response.getResponseCode() !== 200) {
Logger.log("送出失敗");
}
}

要記得修改一下兩個地方,「發行的權杖」、「日曆 ID」

1
2
var GoogleCalendarID = "xxxxxxxxxxxxxx@gmail.com"; // 日曆 ID
var AccessToken = "YBK21nyX1reVxxxxxxxrCQGSOMkkuSTWs"; // 發行的權杖

查詢日曆 ID

至於日曆的 ID,就到你的行事曆裡頭,選擇你要觀察的哪一個行事曆,選擇「設定和共用」

10

那麼你就可以在整合日曆內,看到你的日曆 ID

11

複製之後,貼到程式碼的 GoogleCalendarID 這組變數值

然後,一切就緒之後,先將 Script 存下來,在按下小時鐘

12

之後會回到觸發條件畫面,點選右下角的「新增觸發條件」,然後你可以選擇你想到被通知的設定

13

最後按下觸發條件的儲存,那麼之後有任何的行程都會通知了,在你按下確認之後, Google 會需要通過允許通知的權限,

14

Line Notify 通知我了!

我們在 Google 行事曆建立一個未來行程,假設是設定 21:01 分的「這是開發時間」的行程,那麼接下來就等待 Google Apps Scripts 觸發動作,過了幾秒鐘之後,就可以確認一下是否有接下來的 Google 行事曆行程在 Line Notify 通知你了

15

快來試試看吧!

參考