通过 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 ...
随机推荐
- 泛泰A820L (高通公司MSM8660 cpu) 3.4内核CM10.1(Android 4.2.2) 测试版第二版
欢迎关注泛泰非盈利专业第三方开发团队 VegaDevTeam (本team 由 syhost suky zhaochengw(z大) xuefy(大星星) tenfar(R大师) loogeo cr ...
- build path--use as source folder 应用
今天eclipse.当打算run随着main功能class时间,出现editor does not contain a main type该错误框. baidu了一下,迅速解决这个问题:原来这个cla ...
- 《Effective C++》:规定44-规定45
规定44分离的不依赖参数代码templates 条款45运用成员函数模板接受全部兼容类型 Templates和泛型编程 条款44:将与參数无关的代码抽离templates Templates能够节省时 ...
- ThreadLocal可能引起的内存泄露(转)
threadlocal里面使用了一个存在弱引用的map,当释放掉threadlocal的强引用以后,map里面的value却没有被回收.而这块value永远不会被访问到了. 所以存在着内存泄露. 最好 ...
- [wxWidgets]_[0基础]_[经常更新进度条程序]
场景: 1. 非常根据程序的进展需要处理业务,以更新进度条,进度条的目的是为了让用户知道业务流程的进度.一个进度条程序更友好,让用户知道在程序执行.不是没有反应. 2. 现在更新见过这两种方法的进展. ...
- jquery中 $ 和 jQuery 及 $() 的差别
用过jquery的人都知道,jquery有两种使用方法,一种是$,另一种是jQuery,那么这两种方式在使用上有什么差别呢? 答案是这两种使用方法没什么差别,仅仅是别名而已,用$要比jQuery简短一 ...
- or1200乘法除法指令解释
以下摘录<步骤吓得核心--软-core处理器的室内设计与分析>一本书 OR1200中乘法除法类指令共同拥有9条,表8.3给出了全部的乘法除法类指令的作用及说明. 说明:表8.3是ORBIS ...
- 数据库性能监测工具——SQL Server Profiler
使用SQL Server Profiler 进行sql监控需要一些设置: 其他的就是进行分析了~ 清除SQL SERVER缓存 常用的方法: DBCC DROPCLEANBUFFERS 从缓冲池中删除 ...
- LevelDB初体验
近期工作须要找一个能使用磁盘存储数据,对写要求比較苛刻,须要每秒达100000TPS,读的时候须要能10000TPS左右,不能占用太多内存.单节点满足这个要求的常见有Redis.Memcached等, ...
- MSMQ-发送消息到远程专用队列 实例
目录 一:MSMQ的一些理论上的知识 二:队列类型(Queue Type) 三:安装消息队列 四:在C#中Messagequeue class 五:MSMQ-发送消息到远程专用队列 六:例子 一. ...