如何使用Google Calendar API v3(JavaScript)删除事件通知

时间:2018-07-18 05:09:51

标签: javascript json google-calendar-api

我有以下JSON

var resource = {
  "summary": "Sample Event",
  "start": {
    "dateTime": sample1
  },
  "end": {
    "dateTime": twoHoursLater
  },
  "reminders": {
    "useDefault": false,
    "overrides": [
      {
        "method": "popup",
        "minutes": "5"
      },
      {
        "method": "email",
        "minutes": "5"
      }

    ]
  }
};

我可以使用以下代码将其插入Google日历

function addEvent() {
  gapi.client.load('calendar', 'v3', function() {
    var request = gapi.client.calendar.events.insert({
      'calendarId':   calendarId,
      'resource':     resource
    });
    request.execute(function(resp) {
      console.log(resp);
    });
  });
}

在Google日历网站中,其显示为:

5 minutes before, as email
5 minutes before

您可以看到我有提醒的事件,这意味着它将在事件开始前5分钟通过弹出窗口和电子邮件通知。

现在,我想使用API​​以编程方式删除此事件提醒。

到目前为止,我已经尝试过:

测试1:

基于文档https://developers.google.com/calendar/concepts/reminders

它说:“要还原为默认的提醒集,请执行将更新设置reminders.useDefault返回至true.

var resource3 = {
  "summary": "Sample Event xx",
  "start": {
    "dateTime": sample1
  },
  "end": {
    "dateTime": twoHoursLater
  },
  "reminders": {
    "useDefault": true
  }
};

function updateEvent(eventId) {
  gapi.client.load('calendar', 'v3', function() {
    var request = gapi.client.calendar.events.patch({
      'calendarId':   calendarId,
      'eventId':     eventId,
      'resource':     resource3
    });
    request.execute(function(resp) {
      console.log(resp);
    });
  });
}

上面的代码将在控制台中返回错误Cannot specify both default reminders and overrides at the same time.

测试2:

基于关于stackoverflow Google Calendar API: How to disable Notifications?的可接受答案

它说:“因此,我认为您可以设置"useDefault": false 并且不提供任何替代,这将导致事件没有提醒。”

var resource3 = {
  "summary": "Sample Event xx",
  "start": {
    "dateTime": sample1
  },
  "end": {
    "dateTime": twoHoursLater
  },
  "reminders": {
    "useDefault": false
  }
};

function updateEvent(eventId) {
  gapi.client.load('calendar', 'v3', function() {
    var request = gapi.client.calendar.events.patch({
      'calendarId':   calendarId,
      'eventId':     eventId,
      'resource':     resource3
    });
    request.execute(function(resp) {
      console.log(resp);
    });
  });
}

修补/更新可用于其他字段,例如summarystartend。但这不会删除事件提醒。

测试3:

这是我到目前为止所尝试的。我完全删除了提醒。仍然没有运气。与测试2中的输出相同。

var resource3 = {
  "summary": "Sample Event xx",
  "start": {
    "dateTime": sample1
  },
  "end": {
    "dateTime": twoHoursLater
  }
};

unction updateEvent(eventId) {
  gapi.client.load('calendar', 'v3', function() {
    var request = gapi.client.calendar.events.patch({
      'calendarId':   calendarId,
      'eventId':     eventId,
      'resource':     resource3
    });
    request.execute(function(resp) {
      console.log(resp);
    });
  });
}

您对如何删除事件提醒有任何想法吗?

3 个答案:

答案 0 :(得分:0)

因此,在解决它之后,我使用API​​成功删除了事件通知。答案几乎与测试2 中所述的一样,可以使用以下代码完成:

var resource3 = {
  "summary": "Sample Event xx",
  "start": {
    "dateTime": sample1
  },
  "end": {
    "dateTime": twoHoursLater
  },
  "reminders": {
    "useDefault": false,
    "overrides": []
  }
};

function updateEvent(eventId) {
  gapi.client.load('calendar', 'v3', function() {
    var request = gapi.client.calendar.events.patch({
      'calendarId':   calendarId,
      'eventId':     eventId,
      'resource':     resource3
    });
    request.execute(function(resp) {
      console.log(resp);
    });
  });
}

我只需要添加overrides并为其提供一个空值。如果您遇到相同的问题,希望对您有所帮助。

答案 1 :(得分:0)

使用库进行修补时,您不仅可以将替代值设置为null,还需要使用Data.nullOf(ArrayList.class):

 Event.Reminders reminders = new Event.Reminders()
                        .setUseDefault(false)
                        .setOverrides(Data.nullOf(ArrayList.class));
                newEvent.setReminders(reminders);

答案 2 :(得分:-1)

尝试一下:

var resource3 = {
  "summary": "Sample Event xx",
  "start": {
    "dateTime": sample1
  },
  "end": {
    "dateTime": twoHoursLater
  },
  "reminders": {
    "useDefault": false,
    "overrides": []
  }
};

function updateEvent(eventId) {
  gapi.client.load('calendar', 'v3', function() {
    var request = gapi.client.calendar.events.patch({
      'calendarId':   calendarId,
      'eventId':     eventId,
      'resource':     resource3
    });
    request.execute(function(resp) {
      console.log(resp);
    });
  });
}