Javascript 通过Google日历API发送事件的电子邮件通知

Javascript 通过Google日历API发送事件的电子邮件通知,javascript,php,google-api,google-calendar-api,google-api-php-client,Javascript,Php,Google Api,Google Calendar Api,Google Api Php Client,我正在使用calendar.events.insertAPI通过PHP客户端将事件添加到我的日历中。 事件与API设置的适当值一起正确插入。 但是,该系统无法向与会者发送电子邮件邀请。我四处查看,发现请求需要将参数sendNotifications设置为true。 这似乎也没什么帮助 下面是一个示例代码: var request = gapi.client.calendar.events.insert({ "calendarId" : calendarData.id,

我正在使用calendar.events.insertAPI通过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是适当的对象

虽然我的主要问题是第一次发送电子邮件邀请,但我也尝试(如上所示)设置提醒(使用覆盖)。虽然弹出窗口按预期工作,但在这种情况下,我也没有收到电子邮件更新


这让我想知道这是否是一个权限问题——我可能需要为我的应用程序启用它(用户需要知道我的应用程序是否代表他们发送电子邮件),这是可以理解的)

为此,您应该将“remindOnRespondedEventsOnly”值设置为“true”

也就是说,是否只针对用户响应状态为“是”和“可能”的事件发送事件提醒

你可以找到这些信息

希望有帮助

在中,“sendNotifications”选项实际上是一个参数。您可能希望将其放在请求参数中,而不是正文中

流星中的

注意:在我的Meteor应用程序中,我手工完成了请求,而且我对JavaScript还是新手。我不确定在普通JavaScript或calendar 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 () {});

@莉娜是对的。我自己也遇到了这个问题

在JS中,这看起来像:

var request = gapi.client.calendar.events.insert(
    sendNotifications: true,
    {
              // request body goes here
    }
);
event=service.events().insert(calendarId='primary',body=event,sendUpdates='all')。execute()


这将起作用

您的事件是否可能是在过去创建的?对于这些事件,不会发送电子邮件。请注意,对于所有迟到的人:要使用的参数现在称为“sendNotifications”,必须设置为“all”,才能向所有人发送通知。看,这是正确的答案。无法向注释中添加代码,因此将使用实际的js代码创建单独的答案。