Java 如何通过ID获取单个GoogleCalendar CalendarEventEntry?
我试图通过事件ID从Google日历中检索一个事件,但我找不到方法。API似乎没有为此提供方法,尽管它建议使用对提要日历进行查询。这样做的缺点是ID不是考虑的参数之一 我认为实现这一点的一种可能方法是将事件与我们的日历关联,然后按如下方式迭代生成的事件列表:Java 如何通过ID获取单个GoogleCalendar CalendarEventEntry?,java,google-calendar-api,google-apps,Java,Google Calendar Api,Google Apps,我试图通过事件ID从Google日历中检索一个事件,但我找不到方法。API似乎没有为此提供方法,尽管它建议使用对提要日历进行查询。这样做的缺点是ID不是考虑的参数之一 我认为实现这一点的一种可能方法是将事件与我们的日历关联,然后按如下方式迭代生成的事件列表: CalendarService service = new CalendarService(applicationName); service.setUserCredentials(userName,password); CalendarE
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;
}
}
CalendarService=newcalendarservice(applicationName);
service.setUserCredentials(用户名、密码);
CalendarEventFeed myFeed=service.getFeed(feedUrl,CalendarEventFeed.class);
List entries=myFeed.getEntries();
对于(CalendarEventEntry e:entries){
如果(如getId().equals(id)){
返回e;
}
}
你知道有什么更简单、更直接的解决方案可以实现这一点吗
提前谢谢 您可以通过调用
calendarEventEntry.getEditLink().getHref()
获取事件的URL。它实际上是日历的url加上事件id
看看代码示例。这个问题有根据,没有代码来回答这个问题。下面是我用来回答这个问题的代码。我稍微修改了你的代码
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());
}
}
}
import com.google.gdata.client.*;
导入com.google.gdata.client.calendar.*;
导入com.google.gdata.data.*;
导入com.google.gdata.data.acl.*;
导入com.google.gdata.data.calendar.*;
导入com.google.gdata.data.extensions.*;
导入com.google.gdata.util.*;
导入java.net。*;
导入java.io.*;
导入java.util.List;
公共类GetGoogleCalendarEventByID{
公共静态void main(字符串[]args){
System.out.println(“在创建CalendarService之前”);
CalendarService myService=新的CalendarService(“exampleCo-exampleApp-1.0”);
System.out.println(“创建CalendarService之后”);
尝试
{
System.out.println(“转到setUserCredentials”);
myService.setUserCredentials(“email@gmail.com“,”密码“);
URL提要URL=
新网址(“https://www.google.com/calendar/feeds/email@gmail.com/private/full”);
CalendarEventFeed myFeed=myService.getFeed(feedUrl,CalendarEventFeed.class);
List entries=myFeed.getEntries();
对于(CalendarEventEntry e:entries){
如果(e.getId().equalsIgnoreCase(“http://www.google.com/calendar/feeds/email%40gmail.com/events/EventIDLastPart")){
System.out.println(“获取CalendarEventEntry:+e.getId());
System.out.println(“CalendarEventEntry有文本:+e.getPlainTextContent());
}
}
System.out.println(“完成获取事件”);
}
捕获(例外e)
{
System.out.println(“错误:+e.toString());
}
}
}
注意:feedUrl-这是您在日历设置下找到的日历URL
事件id的格式为
e、 g
希望能有帮助
恩戈尼丹好吧,没关系,但它不能解决问题。我想查询将ID作为参数传递的日历提要,并返回与其关联的calendarEventEntry。我应该更明确一些。您可以自己构建URL:日历URL+正斜杠+事件id。您不需要查询。请看《开发人员指南》中的“更新事件”一段。