从Google日历中提取公开活动数据

时间:2013-09-22 15:23:20

标签: google-api google-calendar-api google-api-dotnet-client

我可能会过度思考这一点。在我的网站上,我想从我的公共谷歌日历中使用某些数据。我的计划是将它放在服务器端,这样我就可以像处理它一样,缓存它并按照我想要的方式格式化它。

我一直在考虑使用Google Api库,但我无法通过任何授权障碍。一个服务帐户听起来像我真正想要的,但我无法解决这种情况下的工作方式。

旧的GDATA apis会没问题,但是我并不是非常热衷于使用它们,因为它们在这一点上看起来已经被新版库所推崇了。

由于它是所有公共数据,我希望有一种更简单的方法来获取我正在寻找的事件数据。

如果重要,我的网站是Asp.Net(MVC)。

更新

好的,我绝对是在思考它。看到我的回答。

2 个答案:

答案 0 :(得分:0)

对此(我正在使用的那个)的一个好的答案是简单地使用日历的公共地址来获取数据。这是我忘记的一个选项,它适用于这种特殊情况。

如果您转到特定日历的设置并选择所需的格式,您可以找到数据的网址(我在这种情况下使用xml。)

enter image description here

您从此服务中获得的数据非常适合人工阅读,但我可以使其适用于我正在做的事情。

答案 1 :(得分:0)

现在已经从Google日历中删除了RSS,我一直在寻找一个简单的替代品。我挖了一遍,在Google Calendar API中发现了以下内容:calendar.events.list

Calendar Events List in Google API Explorer是开始使用不同参数和选项的好地方 - 它会为您构建一个示例请求字符串。您可以看到我指定的最短时间为2016年2月5日,按开始时间排序,并显示已删除的事件。

GET https://www.googleapis.com/calendar/v3/calendars/[CALENDAR ID HERE]/events?
orderBy=startTime&showDeleted=true&singleEvents=true&
timeMin=2016-02-05T00%3A00%3A00Z&key={YOUR_API_KEY}

结果是JSON,因此您可以使用自己喜欢的编程语言,ASP.NET或其他任何方式解析它。结果如下:

{
  "kind": "calendar#events",
  "etag": "\"123456789123456\"",
  "summary": "My Public Calendar",
  "updated": "2016-01-29T14:38:29.392Z",
  "timeZone": "America/New_York",
  "accessRole": "reader",
  "defaultReminders": [ ],
  "items": [ {
    "kind": "calendar#event",
    "etag": "\"9876543210987654\"",
    "id": "sfdljgsdkjgheakrht4sfdjfscd",
    "status": "confirmed",
    "htmlLink": "https://www.google.com/calendar/event?eid=sdgtukhysrih489759sdkjfhwseihty7934hyt94hdorujt3q95uy689u9yhfdgnbiwe5hy",
    "created": "2015-07-06T16:21:59.000Z",
    "updated": "2015-07-06T16:21:59.329Z",
    "summary": "In-Service Day",
    "location": "Maui, HI",
    "creator": {
      "email": "abra@cadabra.com",
      "displayName": "Joe Abra"
    },
    "organizer": {
      "email": "cadabra.com_sejhrgtuiwerghwi4hruh@group.calendar.google.com",
      "displayName": "My Public Calendar",
      "self": true
    },
    "start": {
      "date": "2016-02-08"
    },
    "end": {
      "date": "2016-02-09"
    },
    "transparency": "transparent",
    "iCalUID": "isdt56y784g78ty86tgsfdgh@google.com",
    "sequence": 0
  },
  {
    ... 
  }]
}