Google 行事曆是個讓自己有條理的走在行程上,定期使用 Google 日曆的朋友一定也對設置的事件通知相當熟悉,今天要來使用另一種透過 Line Notify 通知每天的活動來通知成員的方式,我們將使用 Apps Script 撰寫腳本方式進行連接,這樣我們每次在 Google Calendar 新增的時候,就用 Line 通知我們!讓我們開始吧!
使用的工具
- Line Notify
- Google Calendar
- Google Apps Script
Line Notify 的發行權仗
line notify
Line Notify 只要取得一組權杖就可以發送訊息
請先進入 Line Notify 的網站 ,點選右上角的「登入」
登入之後點選「個人頁面」,滑到最下方有一個「發行存取權杖」的區塊,按下「發行權杖」,這時候就會彈出一個發行權仗小視窗
在這裏要輸入權杖名稱,這個欄位可以自己自訂,如果只要提醒個人的話,那就選擇「透過 1對1 聊天接收 Line Notify 的通知」,就像下方,也可以選擇要加入哪個群組
選擇好之後,就按下「發行」,這時候就會看到,發行了一組權杖給你,這時候要按下複製按鈕將鑰匙存下來,關閉之後就不會再出現,千萬要留好,沒有地方可以查詢
查詢日曆 ID
至於日曆的 ID,就到你的行事曆裡頭,右上角點選設定,我們可以新增一個日曆來測試。
我們會看到剛剛新增的日曆,點選一下往下拉,會看到日曆ID將它存下來
再來我們回到行事曆的地方,新增一個事件
標題:通知測試 時間:下午4:30 地點:高雄火車站 內容:我是測試,我是測試
Google Apps Script 寫腳本
接著我們進入 Google App Scripts 頁面裡,下面兩個方法可進入
- 可從雲端空間進入,點選新增>更多>點選 Google Apps Script
- GAS連結 進到頁面之後,點選左上角的「新專案」
在畫面上新增程式,將下列程式碼複製貼上,並把權杖換掉,並可以在_message = '測試通知'
中自行登打目前要測試的訊息let notifyToken = '我是權杖請把我換掉' function doPost(_message) { _message = '測試通知' console.log('發送message:'+ _message); UrlFetchApp.fetch('https://notify-api.line.me/api/notify', { 'headers': { 'Authorization': 'Bearer ' + notifyToken }, 'method': 'post', 'payload': { 'message':_message } }); }
接著按下執行,首次會出現要求授權的頁面
接著我們就會在剛剛設定的群組中看到傳送的訊息
到目前為止都沒問題後將_message = '測試通知'
刪除,儲存,再來我們要處裡行事曆的部分了
## Google Calendar連結
再來我們在左上方檔案的部分按 + 新增指令碼
將var GoogleCalendarID = "我是日期ID"; // 日曆 ID
替換成剛剛取得的日期ID
var GoogleCalendarID = "我是日期ID"; // 日曆 ID
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 存取通知內容
// const timeZone = AdsApp.currentAccount().getTimeZone();
var userTimeZone = CalendarApp.getDefaultCalendar().getTimeZone();
GoogleCalendar.forEach(item => {
message = ""
let noon = Utilities.formatDate(item.getStartTime(), userTimeZone, 'HH:mm'); //轉換時間
Logger.log(item.getTitle())
message += (item.getTitle() != "") ? ("\n" + item.getTitle() + "\n") : ("\n\n空標題\n");
message += "時間:" + noon
message += (item.getDescription() != "") ? ("\n內容:" + item.getDescription()) : "";
message += (item.getLocation() != "") ? ("\n地點:" + item.getLocation()) : "";
if (message != '') {
doPost(message)
}
}
)
// sendMessage(message);
}
再來傳送,首次執行需要在驗證一次,然後我們就會在LINE通知中看到我們剛剛設定的事件
觸發條件設定
再來我們設定觸發條件,修改三個地方
選擇執行的功能:postMessage
選取時間型觸發條件類型:分鐘計時器
選取分鐘間隔:每分鐘
當事件觸發時會顯示觸發時間,確定訊息有收到
再來調整觸發條件
選取時間型觸發條件類型:日計時器
選取時段:自行選擇時間