LineBot에서 Google 캘린더 일정 알림

소개



최근 LineBot 만드는 법을 공부하고 싶습니다.
여기에서는 다른 사람의 블로그에서 배운 것을했습니다. 만드는 방법과 코드를 재정리했습니다.
이번에는 LINE API 중 하나인 Messaging API와 Google Apps Script를 사용하여 LINE을 통해 Google 캘린더의 일정을 자동으로 알립니다.

1.LineBot 만들기



LINE 공식 계정(구 라인@) 만드는 방법을 참조하십시오.

2. Google 캘린더 ID 얻기



Google 캘린더 【설정】 → 【내 캘린더 설정】 → 【캘린더 통합】


지금까지 알림 Bot에 필요한 항목 3개 모두를 취득했습니다.
Your user ID
채널 액세스 토큰
캘린더 ID

3. 이벤트 알림 LineBot 구현



Google Apps Script를 새로 만들고 다음 코드를 붙여넣고 access_token user_id calendar_id의 값을 씁니다.
// LINE Messaging API: Channel access token
const access_token = '';
// LINE Your user ID
const user_id = '';
// Set your google calendar ID
const calendar_id = '';

function getGoogleCalendar() {
  var today = new Date();

  var myCalendar = CalendarApp.getCalendarById(calendar_id);

  var myEvents = myCalendar.getEventsForDay(today);

  var message = [];

  if (myEvents.length == 0) {
    message.push('There are no events today');
  } else {
    message.push('There are ' + myEvents.length + ' events today\n');
    myEvents.forEach(function (event) {
      var eventStartTime = event.getStartTime();
      var eventEndTime = event.getEndTime();
      eventStartTime = Utilities.formatDate(eventStartTime, 'JST', 'HH:mm');
      eventEndTime = Utilities.formatDate(eventEndTime, 'JST', 'HH:mm');
      if (event.getTitle()) {
        message.push(
          '\n' +
            event.getTitle() +
            '\n' +
            '今日 from ' +
            eventStartTime +
            ' to ' +
            eventEndTime +
            '\n'
        );
      }
      if (event.getDescription()) {
        message.push(event.getDescription() + '\n');
      }
    });
    message.push('https://calendar.google.com/calendar/u/0/gp?hl=ja');
  }

  message = message.join('');

  return postMessage(message);
}

// method for post message to LINE
function postMessage(message) {
  // var url = 'https://api.line.me/v2/bot/message/push'; // Send broadcast message API (all following users without user_id)
  var url = 'https://api.line.me/v2/bot/message/broadcast';  // Sends a push message to a user, group, or room API

  var headers = {
    'Content-Type': 'application/json; charset=UTF-8',
    Authorization: 'Bearer ' + access_token,
  };

  var postData = {
    to: user_id,
    // to: user_id,
    messages: [
      {
        type: 'text',
        text: message,
      },
    ],
  };

  var options = {
    method: 'post',
    headers: headers,
    payload: JSON.stringify(postData),
  };

  return UrlFetchApp.fetch(url, options);
}

참고 : 모든 팔로워에게 보내고 싶다면 대상 ID가 필요하지 않으므로 53과 61 줄 대신 52와 62 줄의 코드를 사용할 수 있습니다.

4. 실행 결과 확인



스크린샷(이벤트 있음·없음)


5. 자동으로 게시 실행



트리거를 걸다


정시적으로 당일 이벤트 게시


6.Source Code (GitHub)



참조 사이트

좋은 웹페이지 즐겨찾기