代码之家  ›  专栏  ›  技术社区  ›  dcangulo

如何使用googlecalendarapiv3(JavaScript)删除事件通知

  •  1
  • dcangulo  · 技术社区  · 7 年前

    我有以下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);
        });
      });
    }
    

    在谷歌日历网站中,它显示为:

    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);
        });
      });
    }
    

    修补/更新可用于其他字段,如 summary 我是说, start ,和 end 是的。但它不会删除事件提醒。

    测试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);
        });
      });
    }
    

    你知道如何删除事件提醒吗?

    2 回复  |  直到 7 年前
        1
  •  0
  •   dcangulo    7 年前

    因此,在使用它之后,我成功地使用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 给它一个空值。如果你遇到同样的问题,我希望这会有帮助。

        2
  •  -1
  •   user10109272user10109272    7 年前

    试试这个:

    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);
        });
      });
    }