2

我正在尝试通过事件 ID 从 Google 日历中检索单个CalendarEventEntry,但我找不到这样做的方法。API 似乎没有为此提供方法,尽管它建议使用 Query 对提要日历进行查询。这样做的缺点是 ID 不是考虑的参数之一。

我认为实现此目的的一种可能方法是获取与我们的日历相关联的 CalendarEventFeed,然后迭代生成的事件列表,如下所示:

CalendarService service = new CalendarService(applicationName);
service.setUserCredentials(userName,password);
CalendarEventFeed myFeed = service.getFeed(feedUrl, CalendarEventFeed.class);
List <CalendarEventEntry> entries =  myFeed.getEntries();

for (CalendarEventEntry e : entries){
    if (e.getId().equals(id)){
       return e;
    }
    }

您知道实现此目标的更简单,更直接的解决方案吗?

提前致谢!

4

2 回答 2

1

您可以通过调用获取事件的 URL calendarEventEntry.getEditLink().getHref()。它实际上是日历的 url 加上事件 id。

查看数据 API 开发人员指南以获取代码示例。

于 2010-01-26T12:00:06.580 回答
0

伙计们的问题有依据,没有代码可以回答这个问题。在下面找到我用来回答这个问题的代码。我稍微修改了你的代码

import com.google.gdata.client.*;
import com.google.gdata.client.calendar.*;
import com.google.gdata.data.*;
import com.google.gdata.data.acl.*;
import com.google.gdata.data.calendar.*;
import com.google.gdata.data.extensions.*;
import com.google.gdata.util.*;

import java.net.*;
import java.io.*;
import java.util.List;


public class GetGoogleCalendarEventByID {

public static void main(String[] args) {

    System.out.println("Before Creating CalendarService.");
    CalendarService myService = new CalendarService("exampleCo-exampleApp-1.0");
    System.out.println("After Creating CalendarService.");


    try
    {        
        System.out.println("Going to setUserCredentials.");
        myService.setUserCredentials("email@gmail.com", "password");        

        URL feedUrl =
          new URL("https://www.google.com/calendar/feeds/email@gmail.com/private/full");




        CalendarEventFeed myFeed = myService.getFeed(feedUrl, CalendarEventFeed.class);
        List <CalendarEventEntry> entries =  myFeed.getEntries();

        for (CalendarEventEntry e : entries){
            if (e.getId().equalsIgnoreCase("http://www.google.com/calendar/feeds/email%40gmail.com/events/EventIDLastPart")){
               System.out.println("Got the CalendarEventEntry: " + e.getId());
               System.out.println("CalendarEventEntry has text: " + e.getPlainTextContent());
            }
            }              


        System.out.println("Finished getting Event.");        




    }
    catch(Exception e)
    {
      System.out.println("Error : " + e.toString());

    }




}
}

注意:feedUrl - 这是您在日历设置下找到的日历 URL

事件 ID 的格式为http://www.google.com/calendar/feeds/email%40gmail.com/events/EventIDLastPart

例如

http://www.google.com/calendar/feeds/email%40gmail.com/events/ghytrueueyryrgfuur

希望能帮助到你

恩戈尼丹

于 2013-12-19T12:50:31.020 回答