日本の祝日を機械的に取得したいケース、たまにありますね。
下準備
- 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 クリスマス
補足
- 日本の祝日カレンダーの
calendarId
はja.japanese#holiday@group.v.calendar.google.com
- Events: list のリファレンスページから試しにAPIを叩ける
- なぜかクリスマスが日本の祝日に入ってる。危ない