gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 15:47:59 27 4
gpt4 key购买 nike

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/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com