如何按与会者的电子邮件过滤谷歌日历 REST API 事件



我正在访问用于日历事件的Google日历REST API,试图找出q参数的正确表示法,以过滤通过电子邮件识别其中一位与会者的所有事件(假设 foo@bar.com(

我试过:q=attendee.email:foo@bar.com,q=attendee.email=foo@bar.com,q=attendees.email=foo@bar.com,q=attendees.email="foo@bar.com"...

但没有结果(空列表,一旦填写了q参数(

是否完全支持?

是否有要筛选的有效q参数字段列表?

"q" 参数的工作方式类似于事件列表中的文本搜索。

自由文本搜索词,用于在 以下字段:摘要、描述、位置、与会者 显示名称、与会者的电子邮件。自选。

可以使用指定的电子邮件搜索事件:

calendar.events.list(
{
q: 'attendee@email.test',
calendarId: 'primary',
timeMin: new Date().toISOString(),
maxResults: 10,
singleEvents: true,
orderBy: 'startTime',
}

它应该返回指定了"attendee@email.test"的事件

您不能使用任何日历 API 调用直接搜索与会者。

但是,您可以通过代码实现此目的。您必须列出所有事件,循环浏览它们,如果您编写的电子邮件与与会者中的电子邮件一致,则过滤事件。例如:

function searchEvents() {
var calendarId = "primary";
var email = "test@email.com";
var result = Calendar.Events.list(calendarId).items;
for (var i = 0; i < result.length; i++){ 
if (result[i].attendees != undefined){ //Filters out the events without attendees
for (var j = 0; j < result[i].attendees.length; j++){
if (result[i].attendees[j].email == email){
Logger.log(result[i]); //It returns all the event information
}       
}
}
}
}

返回的完整资源对象:

{
"kind": "calendar#calendarListEntry",
"etag": etag,
"id": string,
"summary": string,
"description": string,
"location": string,
"timeZone": string,
"summaryOverride": string,
"colorId": string,
"backgroundColor": string,
"foregroundColor": string,
"hidden": boolean,
"selected": boolean,
"accessRole": string,
"defaultReminders": [
{
"method": string,
"minutes": integer
}
],
"notificationSettings": {
"notifications": [
{
"type": string,
"method": string
}
]
},
"primary": boolean,
"deleted": boolean,
"conferenceProperties": {
"allowedConferenceSolutionTypes": [
string
]
}
}

引用:

  • 事件列表
  • 列出资源

最新更新