利用Google Apps Script串接行事曆發送Line Notify


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

使用的工具

  • Line Notify
  • Google Calendar
  • Google Apps Script

Line Notify 的發行權仗

line notify
Line Notify 只要取得一組權杖就可以發送訊息
請先進入 Line Notify 的網站 ,點選右上角的「登入」
Line Notify登入畫面
登入之後點選「個人頁面」,滑到最下方有一個「發行存取權杖」的區塊,按下「發行權杖」,這時候就會彈出一個發行權仗小視窗
個人頁面
新增發行權杖
在這裏要輸入權杖名稱,這個欄位可以自己自訂,如果只要提醒個人的話,那就選擇「透過 1對1 聊天接收 Line Notify 的通知」,就像下方,也可以選擇要加入哪個群組
新增通訊群組
選擇好之後,就按下「發行」,這時候就會看到,發行了一組權杖給你,這時候要按下複製按鈕將鑰匙存下來,關閉之後就不會再出現,千萬要留好,沒有地方可以查詢
權杖TOKEN


查詢日曆 ID

至於日曆的 ID,就到你的行事曆裡頭,右上角點選設定,我們可以新增一個日曆來測試。
日曆設定
新增日曆
我們會看到剛剛新增的日曆,點選一下往下拉,會看到日曆ID將它存下來
日曆ID
再來我們回到行事曆的地方,新增一個事件

標題:通知測試
時間:下午4:30
地點:高雄火車站
內容:我是測試,我是測試

行事曆事件


Google Apps Script 寫腳本

接著我們進入 Google App Scripts 頁面裡,下面兩個方法可進入

  • 可從雲端空間進入,點選新增>更多>點選 Google Apps Script
  • GAS連結 進到頁面之後,點選左上角的「新專案」
    進入 Google App Scripts
    在畫面上新增程式,將下列程式碼複製貼上,並把權杖換掉,並可以在_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
          }
      });
    }
    
    推播程式
    接著按下執行,首次會出現要求授權的頁面



    接著我們就會在剛剛設定的群組中看到傳送的訊息
    LINE訊息
    到目前為止都沒問題後將_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
選取時間型觸發條件類型:分鐘計時器
選取分鐘間隔:每分鐘
設定觸發條件

當事件觸發時會顯示觸發時間,確定訊息有收到

再來調整觸發條件

選取時間型觸發條件類型:日計時器
選取時段:自行選擇時間

#Line Notify #google calendar #Google Apps Script






你可能感興趣的文章

物件導向的基礎範例

物件導向的基礎範例

[JS] 箭頭函式和一般函式 this 指向

[JS] 箭頭函式和一般函式 this 指向

Form with React 用 React 做一份表單

Form with React 用 React 做一份表單






留言討論