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 ,如下圖:

所以在輸入完之後,記得要按一下右上角這個按鈕,可以清除格式。