LoginSignup
1

More than 3 years have passed since last update.

平日だけど休日になった日を、gas → slack へ通知する

Last updated at Posted at 2020-02-24

なんか今日、人少ないな...

コロナ?
インフルエンザ??

今日って「振替休日」じゃん!

土日以外の休日をslackへ通知したい

土日が休みなのは分かりきっているので、平日(月火水木金)だけど「休み!」な日を通知して欲しい。

必要な機能は
- 日本の祝日を取得する
- 毎日定期起動する
- slackへ投稿する

です。

日本の祝日を取得する

Googleカレンダーから「日本の祝日」を取得します。

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

    var calendarName = "日本の祝日";
    var calendar = CalendarApp.getCalendarByName(calendarName)
    var todayEvents = calendar.getEventsForDay(today);
    if(todayEvents.length > 0) {
        return true;
    }
    return false;
}

週末(土日)も休みなので、カレンダーから取得します
- 土曜日 = 6
- 日曜日 = 0

function isWeekend() {
    var today = new Date();
    var weekInt = today.getDate();
    if(weekInt == 0 || weekInt == 6){
        return true;
    }
    return false;
}

この2つの関数を利用すると
平日(月火水木金)だけど「休み!」な日は
「祝日である」かつ「週末でない」として表現できます。

function isWeekdaysButHolidays() {
    var publicHoliday = isPublicHoliday();
    var weekend = isWeekend();
    if(publicHoliday && !weekend){
        return true;
    }
    return false;
}

毎日定期起動する

これはgasのcron機能を使いましょう。

slackへ投稿する

slackのwebhookトークンが別途必要です。

function postToSlack() {

    postUrl = '#' //投稿先slackのwebhookトークン

    var message = '平日だけど、休み!';
    var jsonData = {
        'text': message
    };
    var payload = JSON.stringify(jsonData);
    var options = {
        'method': 'post',
        'contentType': 'application/json',
        'payload': payload
    };
    UrlFetchApp.fetch(postUrl, options);
}

まとめ

この通知プログラムにより
「月曜朝にバタバタして準備したら、会社は休みだった」
という事態は避けられると思います。

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
1