我正在使用 calendar.events.insert API通过PHP客户端向我的日历添加一个事件。 正确插入事件以及API设置的适当值。 然而,相同的情况是无法向与会者触发电子邮件邀请。我环顾四周发现请求需要将参数 sendNotifications 设置为 true 。 这似乎也没有帮助。
以下是示例代码:
var request = gapi.client.calendar.events.insert({
"calendarId" : calendarData.id,
"sendNotifications": true,
"end": {
"dateTime": eventData.endTime
},
"start": {
"dateTime": eventData.startTime
},
"summary": eventData.eventName,
"attendees": jQuery.map(eventData.attendees, function(a) {
return {'email' : a};
}),
"reminders": {
"useDefault": false,
"overrides": [
{
"method": "email",
"minutes": 15
},
{
"method": "popup",
"minutes": 15
}
]
}
});
其中eventData和calendarData是适当的对象。
虽然我的主要问题是第一次发送电子邮件邀请,但我也尝试(如上所示)设置提醒(使用覆盖)。虽然弹出窗口按预期工作,但在这种情况下我也没有收到电子邮件更新。
这让我想知道这是否是一个权限问题 - 我需要为我的应用启用这个问题(用户可以理解我的应用是否代表他们发送电子邮件)?
答案 0 :(得分:2)
@linaa是对的。我自己也遇到了这个问题。
在JS中,这看起来像:
var request = gapi.client.calendar.events.insert(
sendNotifications: true,
{
// request body goes here
}
);
答案 1 :(得分:1)
在Google API Documentation for inserting events中,“sendNotifications”选项实际上是一个参数。您可能希望将其放在请求参数中而不是正文中。
在流星中
注意:在我的Meteor应用程序中,我确实手动完成了请求,而且我还是JavaScript新手。我不确定你会怎么用纯JavaScript或日历API来做,所以我只是把Meteor代码,希望它有所帮助,虽然它有点偏离主题。
var reqUrl = "https://www.googleapis.com/calendar/v3/calendars/primary/events";
var payload = {
'headers' : {
'Authorization': "Bearer " + token,
'Content-Type': 'application/json'
},
'params': {
'sendNotifications': true
},
'data': {
"summary": summary,
"location": "",
"start": {
"dateTime": start
},
"end": {
"dateTime": end
},
"attendees": [
{
"email": "*********@gmail.com"
}
]
}
};
Meteor.http.post(reqUrl, reqParams, function () {});
答案 2 :(得分:0)
为此,您应将“remindOnRespondedEventsOnly”值设置为“true”。
这意味着,是否应仅针对用户的响应状态为“是”和“可能”的事件发送事件提醒。
您可以找到此信息here。
希望有所帮助!
答案 3 :(得分:0)
event = service.events().insert(calendarId='primary', body=event, sendUpdates='all').execute()
这会起作用