C# Google 日历
C# Google Calendar
一切都已经在 google 日历 api 上设置好(不确定我是否配置正确或遗漏了什么)
我创建了一个 c# 控制台应用程序,将约会写入 google 日历。
我想要实现的是,我想要获得所有订阅我的应用程序的用户或订阅者,所以我可以写
如果有活动,在日历上。
我需要什么配置?
下面是示例代码,
GoogleCalendarUtils utils = new GoogleCalendarUtils();
ArrayList months = /* the list of months*/;
// Update the content window.
foreach( ThistleEventMonth month in months )
{
foreach( ThistleEvent thistleEvent in month.ThistleEvents )
{
utils.InsertEntry( thistleEvent );
}
}
这实际上是一个多域问题。
需要考虑的一些问题:
- 这是什么日历?一个public一个?
- 他们如何订阅您的控制台?
- 当软件关闭、崩溃等时会发生什么?
- 您需要知道 事件被写入日历后的事件吗?
- 如果没有,新订阅者是否会获得之前添加的日历条目?
除此之外,您应该看看 Webclient. Then we have here the reference for the Google Calendar API. The main request method you're searching is this one: Events Insert。有了它,我们可以制作我们自己的插入变体。
```
private readonly List<string> _calendarIDs;
/* lets assume you imported webrequests and you're going to write a method
* Further we assume, you have a List of calendars as object attribute
*/
public void InsertEntry(DateTime start, DateTime end,
string title, string description) {
using(var client = new WebClient()) {
var epochTicks = new DateTime(1970, 1, 1);
var values = new NameValueCollection();
values["attachements[].fileUrl"] = "";
values["attendees[].email"] = "";
values["end.date"] = end.ToString("yyyy-MM-dd");
values["end.dateTime"] = (end - epoch).Seconds;
values["reminders.overrides[].minutes"] = 0;
values["start.date"] = start.ToString("yyyy-MM-dd");
values["start.dateTime"] = (start - epoch).Seconds;
values["summary"] = title; // This is the calendar entrys title
values["description"] = description;
foreach(string calendarID in _calendarIDs) {
var endpoint = String.Format("https://www.googleapis.com/calendar/v3/calendars/{0}/events", calendarID)
var response = client.UploadValues(endpoint, values);
var responseString = Encoding.Default.GetString(response);
}
}
这是一个最小的示例,api 有很多端点和参数。你应该深入研究一下,也许你会发现更有用的参数。
一切都已经在 google 日历 api 上设置好(不确定我是否配置正确或遗漏了什么) 我创建了一个 c# 控制台应用程序,将约会写入 google 日历。
我想要实现的是,我想要获得所有订阅我的应用程序的用户或订阅者,所以我可以写 如果有活动,在日历上。
我需要什么配置?
下面是示例代码,
GoogleCalendarUtils utils = new GoogleCalendarUtils();
ArrayList months = /* the list of months*/;
// Update the content window.
foreach( ThistleEventMonth month in months )
{
foreach( ThistleEvent thistleEvent in month.ThistleEvents )
{
utils.InsertEntry( thistleEvent );
}
}
这实际上是一个多域问题。
需要考虑的一些问题:
- 这是什么日历?一个public一个?
- 他们如何订阅您的控制台?
- 当软件关闭、崩溃等时会发生什么?
- 您需要知道 事件被写入日历后的事件吗?
- 如果没有,新订阅者是否会获得之前添加的日历条目?
除此之外,您应该看看 Webclient. Then we have here the reference for the Google Calendar API. The main request method you're searching is this one: Events Insert。有了它,我们可以制作我们自己的插入变体。
```
private readonly List<string> _calendarIDs;
/* lets assume you imported webrequests and you're going to write a method
* Further we assume, you have a List of calendars as object attribute
*/
public void InsertEntry(DateTime start, DateTime end,
string title, string description) {
using(var client = new WebClient()) {
var epochTicks = new DateTime(1970, 1, 1);
var values = new NameValueCollection();
values["attachements[].fileUrl"] = "";
values["attendees[].email"] = "";
values["end.date"] = end.ToString("yyyy-MM-dd");
values["end.dateTime"] = (end - epoch).Seconds;
values["reminders.overrides[].minutes"] = 0;
values["start.date"] = start.ToString("yyyy-MM-dd");
values["start.dateTime"] = (start - epoch).Seconds;
values["summary"] = title; // This is the calendar entrys title
values["description"] = description;
foreach(string calendarID in _calendarIDs) {
var endpoint = String.Format("https://www.googleapis.com/calendar/v3/calendars/{0}/events", calendarID)
var response = client.UploadValues(endpoint, values);
var responseString = Encoding.Default.GetString(response);
}
}
这是一个最小的示例,api 有很多端点和参数。你应该深入研究一下,也许你会发现更有用的参数。