在我的Google日历中,我有一个名为&#34的活动,那是什么? 。没什么"如果我运行以下查询,则可以正确找到该事件:
eventsResult = service.events().list(
calendarId=CALENDAR_ID,
q="Nothing.").execute()
但是,如果我试图查找完整的标题,包括单引号,则找不到:
eventsResult = service.events().list(
calendarId=CALENDAR_ID,
q="What's that? Nothing.").execute()
我很确定这不是字符串中包含错误字符的问题,因为我尝试从日历本身和第一个(工作)请求的结果中复制整个标题,但无济于事。我应该做什么逃避或编码?
更新:
问题不仅限于单引号。一个名为" aa.bb.cc"的事件发现没有问题,因为" aa.b.cc"。然而," a.b.cc"找不到。没有圆点也是如此; " aa b cc"找到了,但不是" a b cc"。单字符似乎是某种问题,但我还不知道它究竟发生的时间......
答案 0 :(得分:4)
str = "\"What's that? Nothing\".\""
eventsResult = service.events().list(calendarId='primary', q=str).execute()
events = eventsResult.get('items', [])
if not events:
print('No upcoming events found.')
for event in events:
start = event['start'].get('dateTime', event['start'].get('date'))
print(start, event['summary'])
请看“str”。这就是你想要的。输出
Finding the calendar events
2015-09-16T13:30:00+03:00 "What's that? Nothing."
答案 1 :(得分:1)
尝试将引文作为字符串的一部分发送,如:
eventsResult = service.events().list(
calendarId=CALENDAR_ID,
q='"Nothing."').execute()
查询通常会搜索由空格分隔的术语 q = term1 term2 term3,如here所述。
当它寻找q = aa b cc时,第一项是'aa'。搜索可能更容易,因为参数'aa'可能不会有太多重复。但是要让它搜索q = a b cc,使得找到包含a和b的所有元素有点模棱两可。
在我分享的文档中,还提到要进行精确的搜索查询,您必须使用引用:q =“a b cc”。通过这种方式,整个字符串被视为一个术语。
我在api explorer中尝试过这种方式并且能够找到该事件。没有引号(如你所提到的),api找不到它。