【问题标题】:Get the list of created Google Calendar events for a specific user获取为特定用户创建的 Google 日历活动列表
【发布时间】:2021-04-06 14:23:50
【问题描述】:

我试图获取特定用户在过去一个月中使用 Google Calendar API 创建的事件数。

问题是我得到了邀请用户的所有事件。我看不到如何只查询用户创建的事件。

calendarId:用户的电子邮件地址 updatedMin : 今天 - 一个月

我正在使用 Google 的 api explorer 来查询 Calendar API。

【问题讨论】:

    标签: google-api google-calendar-api google-apis-explorer


    【解决方案1】:

    您可以通过creator.emailorganizer.email 过滤它们

    代码:

    function getCreatedEvents() {
      var user = 'user@domain.com';
      var today = new Date();
      var date = new Date();
      date.setMonth(date.getMonth() - 1);
      
      var args = {
        timeMin: new Date(date.getTime()).toISOString(),
        timeMax: new Date(today.getTime()).toISOString()
      }
      var events = Calendar.Events.list(user, args).items;
    
      events.forEach(function (event){
        if(event.creator && event.creator.email == user){
          // do something to events
          Logger.log(event);
        }
      });
    }
    

    输出:

    参考资料:

    【讨论】:

    • 嗨,我正在使用直接来自 developers.google.com/calendar/v3 的请求测试器,我看不出我可以在哪里放置和测试代码
    • 我不确定您如何在测试仪中添加过滤器。查询应该在q 文本框中,但我不确定格式是什么。我试图让它工作,但我似乎无法使用条件正确查询。虽然我更喜欢你使用 Apps Script,因为它更好、更灵活。
    【解决方案2】:

    在您的请求中包含查询参数:

    问:organizer==user@domain.com

    这将过滤到仅由 user@domain.com 组织的事件。

    更新:
    不幸的是,查询参数不接受键值对。此解决方案不起作用。

    【讨论】:

    • 这似乎不起作用。在回复中我有 "items": [ "organizer": { "email": "someone_else@domain.com" }, ... ] 所以没有考虑过滤器:(
    • 看来你是对的。 'q' 参数仅支持值 - 不支持键值对。看起来没有办法通过查询来实现您想要的。 NaziA 提出的 Apps Script 解决方案是一个更好的答案。
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    相关资源
    最近更新 更多