google行事曆活動用Line提醒
google行事曆活動用Line提醒
源起…
最近參與了職訓局的課程,要幫忙處理班上的事情,其中安排值日生就是一件麻煩的事情,因為要每天提醒大家今天誰當值日生以及值日生應該要做些什麼?或是偶爾要來個心靈小語之類的,都是重覆的事情,就想來做個Line機器人來幫幫我。
開始…
我今天要來點… Line Notify
Line Notify 是 Line 機器人,不會有互動,單純發訊息,可以配合 Google日曆來發訊息。
因為不需要有互動,所以只需要在 Apps Script 撰寫程式就好。
如果要做有互動的機器人,就需要申請 LINE Bot Designer,做些設定。
要做什麼?
我把我要公布的事情記錄在 Google行事曆中,等時間一到活動內容就會傳到 Line 群組裡,因為排值日生是一個月排一次,活動一個一個的輸入很慢,我就打算在 Google試算表輸入資料,再匯出成檔案,然後再匯入行事曆中。
- 加 LINE Notify 為好友
- 申請 Line Notify 的 token (權杖)
- 新增行事曆,取得 ID
- 新增 Apps Script 檔案
- 設定觸動條件
- 建立試算表,把行事曆活動輸入進去,並匯出
- 建立新的行事曆,並把匯出的試算表龨入到行事曆中
- 測試
實作
加 LINE Notify 為好友
搜尋 “ @linenotify “ ,加為好友
申請 Line Notify 的 token (權杖)
到 Line Notify 網站 ,並登入。
點選名字旁邊的倒三角,並進入個人頁面:
按左下角的按鈕取得權杖:
填完按 “發行”
權杖出現了
“ 若離開此頁面,將不會再顯示新發行的權杖。 離開頁面前,請先複製權杖。”
接著就會收到 LINE Notify 的訊息。
新增行事曆,取得 ID
因為怕會跟其他的行事曆活動混在一起,建議另外新增一個新的行事曆。
打開日曆
左下角有個 + ,可以新增日曆 => 建立新日曆
輸入名稱跟說明按 “ 建立日曆 “
左下角就會出現剛剛新增的日曆
點一下剛剛新增的日曆
就會出現很多設定
拉到最下面,就會看到 “ 日曆 ID “ 了
新增 Apps Script 檔案
打開你的雲端硬碟
左上角有個 “ 新增 “
依圖片跟徑找到 “ Google App Script “
打開之後,把原本的程式碼全部刪除
然後把下面的程式碼貼上去
權杖跟月曆 ID記得要更改
檔案名稱也記得要改
const LineNotifyToken = ""; // Line Notify 權杖
const GoogleCalendarID = ""; // 月曆 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 SendNotify() {
var NotifyContents = ""; //新增 NotifyContents 存取通知內容
GoogleCalendar.forEach(item=>{
if (item.getStartTime() <= Now && item.getTag("Confirmed") != "Yes") {
NotifyContents += (item.getTitle() != "") ? ("\n\n" + item.getTitle() + "\n") : ("\n\n空標題\n");
NotifyContents += (item.getDescription() != "") ? item.getDescription() : "";
}
}
)
if (NotifyContents) {
var options =
{
"method" : "post",
"payload" : {"message" : NotifyContents},
"headers" : {"Authorization" : "Bearer " + LineNotifyToken}
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}
}
設定觸動條件
游標移到左側 < > 上面
會出現 觸發條件 的選項,點下去
右下角有個 “ 新增觸發條 “ 的按鈕,按下去。
會出現這個畫面:
1號框框:因為我是一天發佈一次,所以我選擇 “ 日計時器 “ 。
2號框框:我選在8到9點發佈。
選好之後按確定。
建立試算表,把行事曆活動輸入進去,並匯出
新增試算表
利用試算表匯入,主要是針對有大量的活動需要輸入。
主要欄位:
- Subject:行程名稱。(必填)
- Start Date:行程的開始日期。(必填)
- Start Time:行程的開始時間。
- End Date:行程的結束日期。(必填)
- End Time:行程的結束時間。
- All Day Event:是否為全天行程。True為是;False為否。
- Description:行程附註。
- Location:行程地點。
因為我沒有要指定時間,所以開始與結束的時間沒有輸入。
表格製作完成後,把游標移到 “ 檔案 “上面,選” 下載 “ => “ 逗號分隔檔案 “
匯入 Google 行事曆
到行事曆點選設定
點選左側的 “ 匯入 “
後記…
測試
App Script 寫完,行事曆也匯進去之後,我會在行事曆的當天日期內新增一筆活動,然後按App Script的 “ 執行 “,來測試活動是否會發出訊息。
單筆活動輸入注意
在撰寫的過程中,在行事曆的部份有點困難,輸入行事曆內容存檔後,本身會自產格式,再傳到 Line時,這些格式也會帶到 Line ,如下圖:
所以在輸入完之後,記得要按一下右上角這個按鈕,可以清除格式。