4

我正在使用googlecalendar 插件与 ruby​​ 一起使用 Google 日历。

我面临的唯一问题是从谷歌日历中删除一个事件。

我在上面提到的 github 中找到了一个删除事件的示例。但是我们需要传递事件ID。如何使用以下代码从指定日期从谷歌日历中删除所有事件?

代码:

require File.dirname(__FILE__) + '/../shared.rb'

g = GData.new
puts 'login'
token = g.login('REPLACE_WITH_YOUR_MAIL@gmail.com', 'REPLACE_WITH_YOUR_PASSWORD')
puts "token: #{token}"

event = {:title=>'title',
          :content=>'content',
          :author=>'pub.cog',
          :email=>'pub.cog@gmail.com',
          :where=>'Toulouse,France',
          :startTime=>'2009-06-20T15:00:00.000Z',
          :endTime=>'2009-06-20T17:00:00.000Z'}

create_response = g.new_event(event)
puts create_response.body


puts 'delete_event'
# TODO GET id from new_event response
id='http://www.google.com/calendar/feeds/default/private/full/pgvgjdnh43g3bo0emnpfg0gnr4'
response = g.delete_event(id)
puts 'done'

网址:

https://github.com/francisoud/googlecalendar/blob/master/googlecalendar/examples/ruby_standalone/gdata_delete_event.rb

如果我们可以用其他插件做到这一点,请分享您的想法。

提前致谢 :)

4

1 回答 1

2

在 github 上搜索找到了这个google_calendar gem,它似乎是更受欢迎的 gem(如果不是标准的话)。它也有更好的记录和组织。

这就是我想出的:

require 'google_calendar'

cal = Google::Calendar.new(:username => 'username@gmail.com', 
               :password => 'password',
               :app_name => 'delete_events')

cal.events.each { |event|
  event.delete if Time.parse(event.start_time) >= Time.new(2011,10,14)
}

Time.parse 将每个事件的开始时间转换为 ruby​​ 可以理解的格式,然后将其与您的给定日期 2011 年 10 月 14 日进行比较。如果该事件发生在该事件之上或之后,它将被删除。要在执行之前删除事件:

 if Time.parse(event.start_time) <= Time.new(2011,10,14)

或对于特定日期的所有事件,请执行以下操作:

 if Time.parse(event.start_time) == Time.new(2011,10,14)
于 2013-06-03T23:02:14.547 回答