当前位置: 首页 > news >正文

通过 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(17),
DateTime.Now.Date.AddHours(
18));
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);
}

代码下载

GoogleCalendarDemo.rar

相关文章:

  • “大数据”平台优势显现
  • SQL简单提升和技巧
  • 《交互式程序设计 第2版》一1.5 数据交换与探索
  • 数据库驱动
  • HID Global推出光学安全媒体(HID)Multitech卡
  • 【观点】如何成为Python高手
  • SDN对传统网络的变革和提升
  • 【观点】停止编程
  • 着眼大数据 预测未来趋势
  • 烟草网站如何实现防攻击、防病毒、防篡改
  • NB-IoT将给物联网带来革命性变化
  • 金山戴尔达成战略合作协议 春节后宣布
  • ASP.NET Aries JSAPI 文档说明:AR.Utility
  • C#公历转农历算法
  • 熊本又地震,索尼CMOS传感器厂再次停工
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • ECMAScript入门(七)--Module语法
  • HTTP那些事
  • js操作时间(持续更新)
  • maya建模与骨骼动画快速实现人工鱼
  • Nacos系列:Nacos的Java SDK使用
  • Rancher-k8s加速安装文档
  • React Native移动开发实战-3-实现页面间的数据传递
  • windows下如何用phpstorm同步测试服务器
  • 延迟脚本的方式
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​Java并发新构件之Exchanger
  • ​你们这样子,耽误我的工作进度怎么办?
  • (1) caustics\
  • (1)SpringCloud 整合Python
  • (Java)【深基9.例1】选举学生会
  • (Ruby)Ubuntu12.04安装Rails环境
  • (独孤九剑)--文件系统
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)JAVA中的堆栈
  • (转)树状数组
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • ***原理与防范
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .Net 6.0 处理跨域的方式
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .Net 应用中使用dot trace进行性能诊断
  • .Net 知识杂记
  • @Transactional类内部访问失效原因详解
  • @Transactional事务注解内含乾坤?
  • [ 数据结构 - C++]红黑树RBTree
  • [20180224]expdp query 写法问题.txt
  • [AutoSar NVM] 存储架构
  • [codevs 1288] 埃及分数 [IDdfs 迭代加深搜索 ]
  • [C进阶] 数据在内存中的存储——浮点型篇
  • [IE编程] WebBrowser控件的多页面浏览(Tabbed Browsing)开发接口
  • [Intel Edison开发板] 05、Edison开发基于MRAA实现IO控制,特别是UART通信