LoginSignup
0
1

More than 3 years have passed since last update.

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

Posted at

やりたいこと

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

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

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

image.png

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) {

所感

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1