【GAS】Googleカレンダーの予定をSlack通知


やりたいこと

slackにGoogleカレンダーの予定を通知したい
朝8時に実行して大体1日の予定を通知する

Slackのメール転送を有効にする

slackのマイプロファイル→環境設定→メッセージ&メディアからSlackへのメールの転送を有効化
メールアドレスをコピーしておく。

Google Apps Scriptを作る

slackのEmailアドレスに転送先のメールアドレスを埋め込む

var destination_Email = '[SlackのEmailアドレス]';

function getCalenderEvents() {
  var now = new Date();
  var twoHoursFromNow = new Date(now.getTime() + (10 * 60 * 60 * 1000));
  var events = CalendarApp.getDefaultCalendar().getEvents(now, twoHoursFromNow);
  for (var i = 0; i < events.length; i++) {
    var title = events[i].getTitle();
    var startTime = events[i].getStartTime();
    var endTime = events[i].getEndTime();
    var duration = (endTime - startTime) / (1000*60) / (60);
    var detail = events[i].getDescription();
    var location = events[i].getLocation();

    startTime = formatDate(startTime, 'JST');
    endTime = formatDate(endTime, 'JST');

    sendSlackfromGmail(title, startTime, endTime, duration, detail, location);

  }//for (var i = 0; i < events.length; i++) {
}//function getCalenderEvents() {

function sendSlackfromGmail(title, startTime, endTime,  duration, detail, location) {
  var body = '開始時間:' + startTime + '\n' + '終了時間:' + endTime + '\n' + '会議時間:' + duration + '\n' + '詳細:' + detail + '\n' + '場所:' + location
  GmailApp.sendEmail(destination_Email, title, body);

}//function sendSlackfromGmail() {

function formatDate(date, timeZone, format) {
  if (date === '') {
    return ''
  } else {
    var format = 'yyy/MM/dd HH:mm';
    var retval = Utilities.formatDate(date, timeZone, format);
    return retval;
  }
}//function formatDate(date, timeZone, format) {

所感

誰かと共有する必要のない情報なら個人宛に転送するのが良いと思いました。
また、アプリ作成が要らないので簡単に導入できます。