Usare Google Calendar in Ruby
Google mette a disposzione parecchie API per i suoi servizi; oggi vediamo come usare quelle per Google Calendar con Ruby!
Il punto di partenza, per qualsiasi API, è creare un progetto; potete iniziare con il wizard ufficiale.
Poi andate nella sezione Libreria ed attivate le API che volete; Google Calendar richiede delle credenziali, che potete creare nella sezione Credenziali.
Create quelle di tipo OAuth; una volta fatto dovete scaricare il file in formato JSON (sempre dalla pagina Credenziali), e salvatelo da qualche parte.
Adesso installiamo la gem:
$ sudo gem install google-api-client -v '~> 0.8'
E adesso il codice:
require 'google/apis/calendar_v3'
require 'googleauth'
require 'googleauth/stores/file_token_store'
require 'fileutils'
OOB_URI = 'urn:ietf:wg:oauth:2.0:oob'.freeze
APPLICATION_NAME = 'Google Calendar Test'.freeze
CLIENT_SECRETS_PATH = 'client_secret.json'.freeze
CREDENTIALS_PATH = 'token.yaml'.freeze
SCOPE = Google::Apis::CalendarV3::AUTH_CALENDAR_READONLY
def authorize
client_id = Google::Auth::ClientId.from_file(CLIENT_SECRETS_PATH)
token_store = Google::Auth::Stores::FileTokenStore.new(file: CREDENTIALS_PATH)
authorizer = Google::Auth::UserAuthorizer.new(client_id, SCOPE, token_store)
user_id = 'default'
credentials = authorizer.get_credentials(user_id)
if credentials.nil?
url = authorizer.get_authorization_url(base_url: OOB_URI)
puts 'Seguire il link per autorizzare il programma:' + url
code = gets
credentials = authorizer.get_and_store_credentials_from_code(
user_id: user_id, code: code, base_url: OOB_URI
)
end
credentials
end
service = Google::Apis::CalendarV3::CalendarService.new
service.client_options.application_name = APPLICATION_NAME
service.authorization = authorize
calendar_id = 'primary'
response = service.list_events(calendar_id,
max_results: 10,
single_events: true,
order_by: 'startTime',
time_min: Time.now.iso8601)
puts 'EVENTI TROVATI:'
puts 'NON CI SONO EVENTI' if response.items.empty?
response.items.each do |event|
start = event.start.date || event.start.date_time
puts "- #{event.summary} (#{start})"
end
Qui prendiamo solo gli ultimi 10 eventi, se ci stanno.
Enjoy!
ruby gem google google calendar
Commentami!