Rubyで祝日を簡単にGoogle Calendarから取得する方法。
Rubyで祝日を簡単にGoogle Calendarから取得する方法
RubyのちょっとしたスニペットでGoogle Calendarから祝日を習得するコードです。
# -*- coding: utf-8 -*- require 'open-uri' require 'cgi' require 'json' class ExCalendar def holidays(today = nil) api_key = 'API_KEY' calendarId = 'ja.japanese#holiday@group.v.calendar.google.com' uri = "https://www.googleapis.com/calendar/v3/calendars/#{CGI.escape(calendarId)}/events?orderBy=startTime&singleEvents=true&timeZone=Asia%2FTokyo&timeMin=#{CGI.escape(Time.now.iso8601)}&key=#{api_key}" today = (today || Date.today) holiday_summaries = [] JSON.parse(open(uri).read)['items'].each do |item| holiday = Date.parse(item['start']['dateTime'] || item['start']['date']) if today.to_s == holiday.to_s holiday_summaries.push(item['summary']) end end holiday_summaries.push('ただの平日') if holiday_summaries.empty? return holiday_summaries rescue => e return ['祝日取得失敗…'] end end puts ExCalendar.new.holidays(Date.parse("2014-03-21")).inspect
実行結果は下記の通り。
$ ruby holiday.rb ["春分の日"]
いい肉の日(11月29日)のような民間の?記念日は取得することができません。Google Calendarには公式の祝日のみしか掲載されていないためです。
APIキーの取得方法はこのページが分かりやすいです。