日本の祝日を機械的に取得したいケース、たまにありますね。

下準備

  • Developers Console で Project を作成する
  • Project > APIs & auth > APIs で Calendar API を ON にする
  • Project > APIs & auth > Credentials で Public API Access の API key を生成する

サンプル

use 5.18.0;
use URI;
use URI::Escape;
use LWP::UserAgent;
use JSON::XS;
use Encode;

my $api_key     = 'YOUR_API_KEY';
my $calendar_id = uri_escape 'ja.japanese#holiday@group.v.calendar.google.com';

my $uri = URI->new("https://www.googleapis.com/calendar/v3/calendars/$calendar_id/events");
$uri->query_form(
    orderBy      => 'startTime',
    singleEvents => 'true',
    key          => $api_key,
);

my $res = decode_json +LWP::UserAgent->new->get($uri)->decoded_content;

for my $item (@{$res->{items}}) {
    say encode_utf8 "$item->{start}{date}\t$item->{summary}";
}

__END__
2013-01-01      元日
2013-01-02      銀行休業日
2013-01-03      銀行休業日
2013-01-14      成人の日
2013-02-11      建国記念の日
2013-03-20      春分の日
2013-04-29      昭和の日
2013-05-03      憲法記念日
2013-05-04      みどりの日
2013-05-05      こどもの日
2013-05-06      こどもの日 振替休日
2013-07-15      海の日
2013-09-16      敬老の日
2013-09-23      秋分の日
2013-10-14      体育の日
2013-11-03      文化の日
2013-11-04      文化の日 振替休日
2013-11-23      勤労感謝の日
2013-12-23      天皇誕生日
2013-12-25      クリスマス
2013-12-31      大晦日
2014-01-01      元日
2014-01-02      銀行休業日
2014-01-03      銀行休業日
2014-01-13      成人の日
2014-02-11      建国記念の日
2014-03-21      春分の日
2014-04-29      昭和の日
2014-05-03      憲法記念日
2014-05-04      みどりの日
2014-05-05      こどもの日
2014-05-06      みどりの日 振替休日
2014-07-21      海の日
2014-09-15      敬老の日
2014-09-23      秋分の日
2014-10-13      体育の日
2014-11-03      文化の日
2014-11-23      勤労感謝の日
2014-11-24      勤労感謝の日 振替休日
2014-12-23      天皇誕生日
2014-12-25      クリスマス
2014-12-31      大晦日
2015-01-01      元日
2015-01-02      銀行休業日
2015-01-03      銀行休業日
2015-01-12      成人の日
2015-02-11      建国記念の日
2015-03-21      春分の日
2015-04-29      昭和の日
2015-05-03      憲法記念日
2015-05-04      みどりの日
2015-05-05      こどもの日
2015-05-06      憲法記念日 振替休日
2015-07-20      海の日
2015-09-21      敬老の日
2015-09-22      国民の休日
2015-09-23      秋分の日
2015-10-12      体育の日
2015-11-03      文化の日
2015-11-23      勤労感謝の日
2015-12-23      天皇誕生日
2015-12-25      クリスマス

補足

  • 日本の祝日カレンダーの calendarIdja.japanese#holiday@group.v.calendar.google.com
  • Events: list のリファレンスページから試しにAPIを叩ける
  • なぜかクリスマスが日本の祝日に入ってる。危ない