zoukankan      html  css  js  c++  java
  • 通过 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

  • 相关阅读:
    LeetCode 453 Minimum Moves to Equal Array Elements
    LeetCode 112 Path Sum
    LeetCode 437 Path Sum III
    LeetCode 263 Ugly Number
    Solutions and Summay for Linked List Naive and Easy Questions
    AWS–Sysops notes
    Linked List
    All About Linked List
    datatable fix error–Invalid JSON response
    [转]反编译c#的相关问题
  • 原文地址:https://www.cnblogs.com/dudu/p/2176525.html
Copyright © 2011-2022 走看看