api - 如何判断 Google Calendar API 参与者是否是群组电子邮件?

标签 api calendar google-calendar-api

Google Calendar API 可以轻松判断“参与者”是否实际上是一种资源:

https://developers.google.com/google-apps/calendar/v3/reference/events#resource

但是,我如何判断“与会者”是否实际上是一个团体,而不是一个人。 IE。工程师@company.com 与 john@company.com

最佳答案

截至 2019 年 12 月,Google Calendar API 仍然无法实现这一点,但如果您是 G Suite 域管理员并有权访问 G Suite Admin SDK Directory API,则可以实现。 .

这是一个使用 Admin SDK Directory Service 的示例函数在 Google Apps Script .

您将电子邮件地址字符串发送至 getGSuiteAddressType()它从以下地址返回一个对象:

  • user
  • userAlias
  • group
  • groupAlias
  • null (如果在 G Suite 域中找不到该地址)

  • 它还具有以下额外功能,可能方便 G Suite 开发人员:
  • 如果地址是 userAlias 或 groupAlias,它也会返回它作为别名的地址。
  • 如果地址是用户或userAlias,还会返回用户上次登录的时间(如果之前从未登录则返回null)
  • 如果地址是组或 groupAlias,它将返回组成员的电子邮件地址数组。

  • 这使用 Google Apps 脚本,但可以使用 this page 的快速入门侧栏部分中列出的任何语言访问 API。 .
    function getGSuiteAddressTypeTest() {
    
        getGSuiteAddressType('group@domain.com'); // returns addressType "group"
        getGSuiteAddressType('group.alias@domain.com'); // returns addressType "groupAlias"
    
    }
    
    function getGSuiteAddressType(email) {
    
        email = email.toLowerCase();
    
        var data = {
            email: email,
            addressType: null,
            aliasOf: null,
            lastLoginTime: null
        };
    
        // check user and aliases
    
        try {
    
            var user = AdminDirectory.Users.get(email);
    
            data.addressType = 'user';
    
            for (var i = 0; i < user.aliases.length; i++) {
    
                var alias = user.aliases[i].toLowerCase();
    
                if (email === alias) {
    
                    data.addressType = 'userAlias';
                    data.aliasOf = user.primaryEmail;
    
                }
    
            }
    
        } catch (e) {}
    
        if (data.addressType) {
    
            var lastLoginTimestamp = user.lastLoginTime; // this outputs an ISO 8601 string that can be used to create a new date object
    
            if (lastLoginTimestamp === '1970-01-01T00:00:00.000Z') {
    
                Logger.log('the user has never logged in');
    
            } else {
    
                data.lastLoginTime = new Date(lastLoginTimestamp);
    
            }
    
            return data;
    
        }
    
        try {
    
            var group = AdminDirectory.Groups.get(email);
    
            data.addressType = 'group';
    
            if (group.aliases) {
    
                for (var i = 0; i < group.aliases.length; i++) {
    
                    if (email === group.aliases[i].toLowerCase()) {
    
                        data.addressType = 'groupAlias';
                        data.aliasOf = group.email;
    
                    }
    
                }
    
            }
    
            data.members = [];
    
            var groupMembers = getMembersOfGroup(email);
    
            for (var i = 0; i < groupMembers.length; i++) {
    
                data.members.push(groupMembers[i].email);
    
            }
    
        } catch (e) {}
    
        return data;
    
    }
    
    function getMembersOfGroup(groupEmail) {
    
        var pageToken, page;
    
        var members = [];
    
        do {
    
            try {
    
                page = AdminDirectory.Members.list(groupEmail, {
                    pageToken: pageToken
                });
    
                if (page.members) {
    
                    members = members.concat(page.members);
    
                }
    
                pageToken = page.nextPageToken;
    
            } catch (e) {}
    
    
        } while (pageToken);
    
        return members;
    
    }
    

    关于api - 如何判断 Google Calendar API 参与者是否是群组电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28862522/

    相关文章:

    python - 如何在python中按天排序基于键的字典

    google-calendar-api - 将 ics 添加到 Google 日历的链接停止工作

    ios - 在 GET 请求中传递 JSON 对象 : iOS

    javascript - 如何为谷歌日历编写谷歌脚本?

    python - Reddit API 和投票。不接受 modhash/cookie。 .error.USER_REQUIRED

    java - 如何获取过去一周所有天的日期?

    node.js - Google 日历推送 API Node 不工作? [实体.资源] [观看]

    Android ADT Eclipse : com. android.common 和 com.android.ex 导入无法解析

    C# 从 Firefox 获取 URL 但不使用 DDE

    java - 仅java.runtimeException API 19至15