Help us understand the problem. What is going on with this article?

【GAS】翌日が日本の祝日ならSlackに通知

きっかけ

家に設置してある物理カレンダーが2019年限定祝日「即位礼正殿の儀」に対応しておらず、
本当に祝日か不安となったためです。

コード仕様

Google が提供している「日本の祝日」カレンダーの内容を GASとSlack の Webhook を利用して Slack に通知と飛ばします。
また、翌日が祝日でない場合は通知は飛びません。

参考サイト

以下のサイト手順、コードを参考としました。
コードの著作権は作成者である「スズキアユミ」様となります。

Slack Bot:毎朝Googleカレンダーの予定を通知してくる秘書ねこBotの作り方 | デザインメモ 2.0
https://designmemo.jp/creative/bot-googlecalendar-slack.html

事前準備

Slack Webhook URL 取得などの一連の手順は参考サイトなどをご参考ください。
最低限、以下の3つは必要となります。

  • Slackへの登録
  • Slack にて Incoming WebHooks URLを取得
  • Googleアカウントの作成

GASコード

下部にある Webhook URL を記載する箇所は自身で取得した Webhook URL を記載してください。

public_holiday.gs
function myFunction() {

  var list = "";
  var s;
  var calId = "ja.japanese#holiday@group.v.calendar.google.com"; //「日本の祝日」GoogleカレンダーのID

  s = listupEvent(calId); // function listupEvent を呼び出し
  if (s != "")  list += "\n■明日の祝日\n" + s; // メッセージの見出し作成

  Logger.log(list);

  if (list != "") {
    var payload = {
      "text" : "おはようございます。\n明日は祝日です。今日一日頑張って明日は気兼ねなく休みましょう!\n" + list, // メッセージの本文
    }

    postSlack(payload);
  }
}

function listupEvent(cal_id)
{
  var list = "";
  var cal = CalendarApp.getCalendarById(cal_id);
  var now = new Date();
  var tomorrow = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
  var events = cal.getEventsForDay(tomorrow);

  for(var i=0; i < events.length; i++){
    s = "";
    if (events[i].isAllDayEvent()) {
      s += Utilities.formatDate(events[i].getStartTime(),"GMT+0900","MM/dd  ");
    } else {
      s += Utilities.formatDate(events[i].getStartTime(),"GMT+0900","MM/dd HH:mm");
      s += Utilities.formatDate(events[i].getEndTime(), "GMT+0900","-HH:mm  ");
    }
    s += events[i].getTitle();
    Logger.log(s);

    list += s + "\n";
  }

  return list;
}

function postSlack(payload)
{
  var options = {
    "method" : "POST",
    "payload" : JSON.stringify(payload)
  }

  var url = "https://XXXXXX"; // ★取得した Webhook URL を記載してください。
  var response = UrlFetchApp.fetch(url, options);
  var content = response.getContentText("UTF-8");
}

まとめ

これで明日が祝日なのかという不安からある程度解放されると思います。
ハッピーマンデー制度のおかげで可変的に祝日が動く日本つらい...。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした