1

我可能有点想多了。在我的网站上,我想使用我的公共谷歌日历中的某些数据。我的计划是将它拉到服务器端,这样我就可以按照我想要的方式处理它、缓存它并格式化它。

我一直在考虑使用 Google Api 库,但我无法克服任何授权障碍。服务帐户听起来像是我真正想要的,但我很难理解在这种情况下它是如何工作的。

旧的 GDATA api 可以,但我不太热衷于使用它们,因为在这一点上它们看起来被新的库相当弃用。

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

万一这很重要,我的网站是 Asp.Net (MVC)。

更新

好吧,我肯定是想多了。看我的回答。

4

2 回答 2

0

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

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

在此处输入图像描述

您从这项服务中获得的数据经过人工阅读器的优化,但我可以让它适用于我正在做的事情。

于 2013-09-22T20:14:14.530 回答
0

现在 RSS 已从 Google 日历中删除,我一直在寻找一个简单的替代品。我四处挖掘并在 Google Calendar API 中发现了以下似乎可以解决问题的方法:calendar.events.list

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

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
  },
  {
    ... 
  }]
}
于 2016-02-05T13:14:49.217 回答