2013-04-16

祝日情報をGoogleカレンダーからいただく

GoogleCalendarを使うと、確定している日本の祝日を取得できる。 以下のコードで二年分得た。URLの末尾を書き換えればいつのものでも、また外国の祝日でも得られる。 法律によって定められる祝祭日は前年の二月に告知される。そのためあんまり遠い未来は確定していない。 それでも祝日を手入力するよりよほど便利だ。

require 'open-uri'
require 'json'

url = "http://www.google.com/calendar/feeds/[email protected]/public/full-noattendees?alt=json&start-min=2013-04-01&start-max=2015-03-31"
raw_data = open(url).read
json = JSON.parser.new(raw_data)

hash = json.parse()
holidays = Array.new

hash["feed"]["entry"].each do |holiday|
  holidays << [holiday['gd$when'][0]['startTime'], holiday['title']['$t'].split[0]]
end

holidays.sort_by!{|h| h[0]}

p holidays

結果

[["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", "天皇誕生日"], ["2014-01-01", "元日"], ["2014-01-13", "成人の日"], ["2014-02-11", "建国記念の日"], ["2014-03-21", "春分の日"], ["2014-05-06", "振替休日"], ["2014-09-23", "秋分の日"], ["2014-11-24", "振替休日"], ["2015-03-21", "春分の日"]]