Google 캘린더 일정을 LINE 그룹에 게시

요구사항


  • 월초에 몇 달간 이벤트의 일정을 투고한다(내용까지는 불필요, 일자를 알 수 있으면 된다)
  • 매일 저녁에 다음 날에 등록된 이벤트가 있으면 투고한다 (내용이 있으면 내용도 기재한다)

  • 사용하는 것


  • LineNotify
  • GoogleCalendar
  • GoogleAppsScript

  • 절차



    1



    명령줄에서 LINE으로 메시지를 보낼 수 있는 LINE Notify 의 「퍼스널 액세스 토큰을 발행한다」를 투고하고 싶은 그룹이나 1:1에 대해서 실시한다.

    2



    Google 드라이브 페이지로 이동하여 내 드라이브 ⇒ 기타 ⇒ 앱을 추가하여 GoogleAppsScript를 추가합니다.





    3



    내 드라이브 ⇒ 기타 ⇒ Google AppsScript에서 스크립트 편집기 열기



    4



    다음 스크립트로 교체

    google_calendar_line_notify.gs
    var googleCalendarId = "";
    var lineNotifyEndPoint = "https://notify-api.line.me/api/notify";
    var accessToken = "";
    var monthlyPostEventTitleInitials = "";// 月初投稿用イベント判定用頭文字
    var dayOfWeekStringList = ["", "", "", "", "", "", ""];
    
    // 毎日用のメッセージ(内容も出す)
    function postDailyMessage() {
      var calendar = CalendarApp.getCalendarById(googleCalendarId); //カレンダーIDからカレンダーを取得
      if (calendar === null)
      {
        Logger.log("カレンダーが見つかりませんでした。");
        return;
      }
    
      var date = new Date();
      date.setDate(date.getDate() + 1);
      var dailyEventList = calendar.getEventsForDay(date);// 明日のイベント
    
      var baseTitle = "明日の予定";
      var message = "";
      message += baseTitle;
    
      for each (var event in dailyEventList)
      {
        var eventTite = event.getTitle().replace(new RegExp(monthlyPostEventTitleInitials), "");
        var eventDescription = event.getDescription();
        message += "\n" + eventTite + "\n" + eventDescription;
      }
    
      if (message === baseTitle)
      {
        return;
      }
    
      sendMessage(message);
    }
    
    // 月初用のメッセージ
    function postMonthlyMessage() {
      var nowDate = new Date();
    
      var year = nowDate.getYear();
      var month = nowDate.getMonth();
    
      var startDate = new Date(year, month, 1);// 月初
      var endDate = new Date(year, month + 1, 0);// 月末
    
      var calendar = CalendarApp.getCalendarById(googleCalendarId); //カレンダーIDからカレンダーを取得
      if (calendar === null)
      {
        Logger.log("カレンダーが見つかりませんでした。");
        return;
      }
    
      var monthlyEventList = calendar.getEvents(startDate, endDate);// getEventsはstartDateを含みendDateは含まない様子
    
      var message = "今月の予定";
      var eventMessage = "";
    
      for each (var event in monthlyEventList)
      {
        var eventTite = event.getTitle();
        if ( ! eventTite || eventTite.slice(0, 1) !== monthlyPostEventTitleInitials)
        {
          continue;
        }
        eventTite = eventTite.replace(new RegExp(monthlyPostEventTitleInitials), "");
        var eventDate = event.getStartTime();// Date
        eventMessage += "\n" + eventTite + "" + (eventDate.getMonth() + 1)  + "/" + eventDate.getDate() + "" + dayOfWeekStringList[eventDate.getDay()] + "";
      }
    
      message += eventMessage ? eventMessage : "登録されていません";
    
      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("メッセージの送信に失敗しました。");
      } 
    }
    

    5



    스크립트의 accessToken = ""; 부분에 에서 얻은 개인 액세스 토큰을 설정합니다.

    6



    스크립트의 googleCalendarId = ""; 부분에 게시할 Google 캘린더의 ID를 설정합니다. Google 캘린더의 ID는 아래 그림의 캘린더 화면의 빨간색 테두리 근처를 클릭하여 정보 목록을 확인할 수 있으므로 그 안에 표시됩니다. 어쩌면 Gmail 주소 등으로되어 있다고 생각합니다.



    7



    Google 캘린더에 일정을 등록합니다.
  • 달 이치 이벤트는 타이틀의 이니셜을 ★로 합니다. (★하지 않으면 달이 이벤트로 간주되지 않으므로 월 첫 게시물에는 포함되지 않습니다.)
  • 이벤트 설명이 있으면 입력하십시오. 매일 아침 게시물에 설명도 표시됩니다.

  • 8



    매일 아침 게시 스크립트(postDailyMessage) 및 월별 이벤트 게시 스크립트(postMonthlyMessage)에 대해 트리거를 설정합니다.
    편집 ⇒ 현재 프로젝트의 트리거에서 아래 그림과 같이 설정합니다.



    postDailyMessage는 매일 19시부터 20시까지 실행됩니다. (이미지에서는)
    postMonthlyMessage는 매월 1일 0시부터 1시에 실행됩니다.

    참고



    명령줄에서 LINE으로 메시지를 보낼 수 있는 LINE Notify
    htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 아 ps-sc 리 pt / 레후 렌세 / 카페 r /
    htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 아 ps-sc 리 pt / 레후 렌세 / 카 렌 r / 카 덴 r-에
    htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 아 ps-sc 리 pt / 레후 렌세 / 우 rl 푸 tch / u rl 푸 tch
    htps : //에서 ゔぇぺぺrs. 오, ぇ. 코 m / 아 ps-sc 리 pt / 레후 렌세 / 우 r 루 ぇ tch / h t pp re s 폰세

    좋은 웹페이지 즐겨찾기