通过 C# 代码操作 Google 日历
本文主题
借助 Google .NET APIs Client Library,通过 C# 代码在 Google 日历中创建会议邀请。
本文背景
最近,Google 发布了 .NET APIs Client Library,终于可以方便地通过 .NET/C# 代码调用 Google 的 API。
而我们正好有这个需求,所以小试了一下。需求是这样的:通过调用 Google Calendar 的 API,自动创建每周例会的 Google 日历活动,邀请并通知参会者,被邀请者可以修改该日历项。以前这个操作是人工在 Google 日历的 Web 页面上完成的。
准备工作
1. 下载并安装 Google Data API SDK,主要用于引用其中的三个程序集。该 SDK 中也包含 Google .NET APIs Client Library 的源代码,正是由于有了源代码,我们在使用中遇到的问题才得以快速解决。
2. 阅读参考文档与示例代码 Data API Developer's Guide: .NET,重点查看 Creating single-occurrence events(我们的任务就是创建一个日历项)。示例代码只是创建一个包含标题、内容、地点、时间的简历日历项,而我们的需求还包括:a) 邀请参会者(Participants);b) 通知参会者(Notifications);c) 被邀请者可以修改该日历项(GuestsCanModify)。
所遇问题
Google .NET APIs Client Library 没有实现 gCal:guestsCanModify 属性(设置这个属性可以让被邀请者修改日历项),后来我们参照 .NET APIs Client Library 的源代码自己实现了一个,代码如下:
public class GuestsCanModify : EnumConstruct
{
public GuestsCanModify()
: base("guestsCanModify",
GDataParserNameTable.gCalPrefix,
GDataParserNameTable.NSGCal)
{
}
public GuestsCanModify(string value)
: base("guestsCanModify",
GDataParserNameTable.gCalPrefix,
GDataParserNameTable.NSGCal, value)
{
}
}
代码实现
在VS2010中新建一个项目,并添加三个引用:"Google.GData.Extensions.dll", "Google.GData.Calendar.dll", "Google.GData.Client.dll"。
创建会议邀请日历项的代码如下:
public void CreateCalendarEvent()
{
CalendarService calendarService = new CalendarService("CNBlogsMeeting");
calendarService.setUserCredentials("Google登录用户名", "密码");
EventEntry entry = new EventEntry();
//日历标题与内容
entry.Title.Text = "博客园周会通知标题";
entry.Content.Content = "博客园周会通知内容";
//开始与结束时间,17:00~18:00
When eventTime = new When(DateTime.Now.Date.AddHours(),
DateTime.Now.Date.AddHours());
entry.Times.Add(eventTime);
//需要邀请的参会者
Who who = new Who();
who.Email = "contact@cnblogs.com";
who.Rel = "http://schemas.google.com/g/2005#event.attendee";
entry.Participants.Add(who);
//给被邀请者发送通知
entry.Notifications = true;
//被邀请者可以修改该日历项
entry.ExtensionElements.Add(new GuestsCanModify("true"));
Uri postUri = new Uri("ttps://www.google.com/calendar/feeds/default/private/full");
AtomEntry insertEntry = calendarService.Insert(postUri, entry);
Assert.NotNull(insertEntry);
}
代码下载
通过 C# 代码操作 Google 日历的更多相关文章
- 超级简单!80行代码实现Google日历(拖放、移动、AJAX)
行代码实现Google日历 Introduction 本实例介绍使用DayPilot Lite for ASP.NET MVC library 类来实现类google日历效果. 在线实例 天视图 星 ...
- 超简单!80行代码实现Google日历(拖放、移动、AJAX)
介绍 本实例介绍使用DayPilot Lite for ASP.NET MVC library 类来实现类google日历效果. 在线实例 天视图 星期视图 拖放调整 拖放移动 行代码来实现a ...
- Google日历添加农历、节日和天气插件(步骤)
Google日历添加农历.节日和天气插件(步骤) Google功能非常多,Google日历只是其中一个,而且支持Exchange账户(iPhone,WP7,诺基亚等)和Google账户登录(andro ...
- C#仿google日历asp.net简单三层版本
网上搜了很多xgcalendar的例子都是Php开发的,而且官方站上的asp.net/MVC版 在vs10 08 都报错. 所以自己重新用三层写了一下希望对大家有帮助 废话不多说了 先看看它都有些什么 ...
- JavaScript后台代码操作HTML TABLE的方法
原文:JavaScript后台代码操作HTML TABLE的方法 var rowNum = 0,fileNum = 0; //行号与列号 var oNewRow; //定义插入行对象 var oNew ...
- 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- Java代码操作HDFS测试类
1.Java代码操作HDFS需要用到Jar包和Java类 Jar包: hadoop-common-2.6.0.jar和hadoop-hdfs-2.6.0.jar Java类: java.net.URL ...
- Google 日历短信通知没有了
关于 Google 日历短信通知的重要通知 从 2015 年 6 月 27 日起,Google 日历将不再发送短信通知.短信通知是我们在智能手机问世之前推出的功能.如今,智能手机和通知随处可见,即使处 ...
- 使用java代码操作Redis
1导入pom.xml依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis ...
随机推荐
- MapReduce 规划 系列十 采用HashPartitioner调整Reducer计算负荷
example4它演示了如何指定Reducer号码,本节演示如何使用HashPartitioner将Mapper根据该输出key分组后Reducer为了应对. 合理的分组策略会尽一切Reducer不能 ...
- Android4.4 蓝牙源代码段分析
最近GOOGLE发布时间Android4.4,我看了看源代码.4.4蓝牙打开过程或这部分的一些变化,判断蓝牙开关是从接口设置settings在里面switch开关,widget当然,它可以切换,也许启 ...
- 【POJ3268】Silver Cow Party 最短
意甲冠军:一群奶牛去的地方.去回,然后回去寻找最伟大值. 题解:两遍最短路,结束.邻接矩阵存边能够避免建反图. #include <cstdio> #include <cstring ...
- 你如何破解后安装PS cs6
至于破解程序猿支持,资源共享是只有更好的,我相信有很多孩子还在用cs5看版本号.假设你想尝试新的版本号PS.但很长一段时间不能找到字的串行数.现在,你如何支付你的序列号和使用永久裂纹PS cs6. 好 ...
- 基于LINUX的多功能聊天室
原文:基于LINUX的多功能聊天室 基于LINUX的多功能聊天室 其实这个项目在我电脑已经躺了多时,最初写完项目规划后,我就认认真真地去实现了它,后来拿着这个项目区参加了面试,同样面试官也拿这个项目来 ...
- 使用Enterprise Architecture绘制10种UML画画
UML绘制10种课程要求UML画画,选Enterprise Architecture作为一个绘图工具,每一个草图必须是网上找教程,我觉得很麻烦,还有一些数字并没有找到详细的教程.在我自己找一个绘图方法 ...
- Sql Server脚本使用TFS版本控制
原文:Sql Server脚本使用TFS版本控制 1.安装TFS插件 Microsoft Visual Studio Team Foundation Server 2010 MSSCCI Provid ...
- 汉高澳大利亚sinox接口捆绑经典winxp,全面支持unicode跨语言处理
用qtconfig(或者qtconfig-qt4)设置字体后,汉澳sinox视窗界面以跟winxp媲美的界面出现,爽心悦目. 并且视窗使用非常稳定.非常少出现死机无响应现象,堪称完美. 引入unico ...
- 【Espruino】NO.12 加速度计演示
http://blog.csdn.net/qwert1213131/article/details/31035403 本文属于个人理解,能力有限,纰漏在所难免.还望指正! [小鱼有点电] [Espru ...
- 面向对象三大特征之继承(extends)——Java笔记(六)
继承: 从一般到特殊的关系,是一种拓展关系,子类对象是父类的一种,也可称为”is a“的关系 泛化: 把子类里的共性抽取到父类里的来的过程 特化: ...