Rubyã§Googleã«ã¬ã³ãã¼ã®æ å ±ãå¼ãæãã¦ã¿ã
5,6å¹´åã«ä½ã£ãGoogleã«ã¬ã³ãã¼ã¨ä¼ç¤¾ã®ã«ã¬ã³ãã¼ãåæããã·ã¹ãã ã
çªç¶åããªããªã£ãã®ã§ä¿®æ£ãã¾ããã
çç±ã¯ç°¡åã§
Google Calendar Api V2ããµãã¼ãåãã«ãªã£ãããï¼
ç§ã¯æè¿ãã®ããã°ã©ã ã使ã£ã¦ãªãã£ãã®ã§ã¾ã£ããå°ã£ã¦ãªãã£ãã®ã§ãã
ä»ã®äººãçµæ§ããã¼ã«ä½¿ã£ã¦ãã人ãããã®ã§
éãè
°ãããã¦Google Calendar API v3 ã«å¯¾å¿ãã¾ããã
ãã¨ãã¨ãã®ã³ã¼ãã¯Javaã§æ¸ãã¦ããã®ã§ããããã£ãããªã®ã§Rubyã§æ¸ããªããã
è¡ãã¾ããã
ããããé¢åã ã£ãã®ã§ãæé ãè¨è¼ãã¾ãã
åºæ¬ã¯ä¸è¨ãµã¤ãã®æé ã§è¡ãã¾ããã
rubyにてgoogleカレンダーの情報を取得する - Qiita
ããããªãã
ä¸è¨ã®ã³ãã³ããå®è¡ãå®è¡ããéã«åé¡ãçºçãã¾ããã
google-api oauth-2-login --client-id="<your client id>" --client-secret="<your client secret>" --scope="https://www.googleapis.com/auth/calendar"
ãµã¤ãå
ã§ã¯ãã®ã³ãã³ããå®è¡ããã¨ãã©ã¦ã¶ãç«ã¡ä¸ãã
OAuthã®èªè¨¼ã®æ¿èªããã㨠~/.google-api.yaml ããã¦ã³ãã¼ããããã¨ããæ¨ãè¨è¼ããã¦ããã
ä¸åã«ãã¦ã³ãã¼ãããã¾ããã
çç±ã¯ç°¡åã§ãGoogle Chromeããã³FireFoxã§ã¯.google-api.yamlãã¡ã¤ã«ããã¦ã³ãã¼ã
ãããã®ã§ãããªããIEã ã¨ãããªãã¨ããããããããªãä¸å
·åã®ããã
ãªã®ã§ãIEã§ãåé¡ãªãããã«ã³ã¼ããæ¸ãã¾ããã
# coding: utf-8 require 'google/api_client' require 'google/api_client/client_secrets' require 'google/api_client/auth/installed_app' require 'json' require 'yaml' client = Google::APIClient.new( :application_name => 'Example Ruby application', :application_version => '1.0.0' ) plus = client.discovered_api('plus') flow = Google::APIClient::InstalledAppFlow.new( :client_id => 'ã¯ã©ã¤ã¢ã³ãID', :client_secret => 'ã¯ã©ã¤ã¢ã³ãã·ã¼ã¯ã¬ãã', :scope => ['https://www.googleapis.com/auth/calendar'] ) client.authorization = flow.authorize File.open("./.google-api.yaml", "w"){|f| x = { "mechanism" => "oauth_2", "scope" => "https://www.googleapis.com/auth/calendar", "client_id" => client_secrets.client_id, "client_secret" => client_secrets.client_secret, "access_token" => client.authorization.access_token, "refresh_token" => client.authorization.refresh_token } f.puts(x.to_yaml) }
ä¸è¨ã³ã¼ããå®è¡ããã¨.google-api.yamlãã¡ã¤ã«ãå®è¡ãã£ã¬ã¯ããªã«ä½æããã¾ãã
ãã¨ã¯googleã«ã¬ã³ãã¼ãããã¼ã¿ãåå¾ãã¾ãã
oauth_yaml = YAML.load_file('./.google-api.yaml') client = Google::APIClient. client.authorization.client_id = oauth_yaml["client_id"] client.authorization.client_secret = oauth_yaml["client_secret"] client.authorization.scope = oauth_yaml["scope"] client.authorization.refresh_token = oauth_yaml["refresh_token"] client.authorization.access_token = oauth_yaml["access_token"] al = client.discovered_api('calendar', 'v3') # æéãæ ¼ç´ åããä¸ãæå today = Date.today time_min = Time.utc(today.year,today.month, today.day, 0).iso8601 time_max = Time.utc(onemonth.year, onemonth.month, onemonth.day, 0).iso8601 # ã¤ãã³ãã®åå¾ params = {'calendarId' => conf["calid"], 'orderBy' => 'startTime', 'timeMax' => time_max, 'timeMin' => time_min, 'singleEvents' => 'True'} result = client.execute(:api_method => cal.events.list, :parameters => params) # ã¤ãã³ãã®åå¾ params = {'calendarId' => conf["calid"], 'orderBy' => 'startTime', 'timeMax' => time_max, 'timeMin' => time_min, 'singleEvents' => 'True'} result.data.items.each do |event| p event.start.dateTime # éå§æé p event.end,dateTime # çµäºæé p event.summary # ã¿ã¤ãã« p event.location # å ´æ end
ãããªæãã«ãªãã¾ãã