Google Calendar API清算活动地点

时间:2011-04-30 14:53:24

标签: c# calendar geolocation google-api

我使用以下代码更改Google Calendars Event的位置:

EventEntry eventEntry = this.GetGoogleEvent(evt,cal);

   eventEntry.Title.Text = evt.Summary;
   eventEntry.Locations.Clear();
   if( NEWLOCATION != "" )  eventEntry.Locations.Add(new Where("", "", NEWLOCATION));
   ...
   EventEntry newEvent = (EventEntry)eventEntry.Update();

它适用于更改位置,但NEWLOCATION为空字符串时不会更新任何内容:""

任何解决方法?这是一个API错误?

感谢您的建议!

编辑: 也是在没有if( NEWLOCATION != "" )

的情况下尝试过的

2 个答案:

答案 0 :(得分:1)

如果你调用Locations.Clear()然后调用Update(),你将发送一个没有任何gd:where元素的PUT请求。更新请求仅更新请求中指定的那些字段,因此事件的gd:where元素将不受影响。

如果要清除事件的gd:where字段,则必须发送包含单个gd的更新请求:where其值为空字符串的元素。例如,您可以使用以下代码:

entry.Locations.Clear();
entry.Locations.Add(new Where());
entry.Update();

库中有一个导致空gd的错误:在更新请求期间要忽略valueString元素。几分钟前在rev中修复了这个bug。图书馆的1113:

http://code.google.com/p/google-gdata/source/detail?r=1113

答案 1 :(得分:0)

对于初学者,我会与空字符串进行比较:

if( NEWLOCATION != string.Empty )
{
  eventEntry.Locations.Add(new Where("", "", NEWLOCATION));
}

此外,我总是使用括号,只是为了确保我知道如果条件匹配将会执行什么 至于空位,我可能在这里根本就错了,但是Locations.Clear()方法是不是已经将Locations设置为空值?不接受吗?也许您需要两个单独的更新,一个用于清除位置,另一个用于更改其他值?