首页 > 解决方案 > 您如何通过 Googlescript API 离开 googlegroup

问题描述

我想要做的是通过使用 API 离开一个 googlegroup,而不必单击该组本身。这未在此处的 API 文档中显示:Google Groups API

在尝试通过 API 找到离开小组的方法时,我确实发现我是我没有加入的不同小组的成员,但似乎没有记录的离开他们的方式。去这里:枚举角色。这让我可以看到我在一个组中的角色以及使用的相应代码如下。

有一个用于删除组成员身份的企业管理 API,但这不是企业设置,因此 AdminGroupSettings 不能在此范围内使用。

function getGroupNames() {

  try {
      var groups = GroupsApp.getGroups();
  }
  catch(err) {
      console.log("Permission error [getGroup]: Cannot access group members list!");
  }
  
  for (var i = 0; i < groups.length; i++) {
    var group = groups[i];
    var currentUser = Session.getActiveUser();
    // https://stackoverflow.com/questions/62801809/in-google-app-scripts-how-can-you-get-the-group-name-with-the-group-email
    // Groups Settings API/AdminGroupSettings
    // var groupName = AdminGroupsSettings.Groups.get('unsubscribe-me500@arefilled.site').name;
    // console.log("Attempting to get group name: " + groupName + " from address " + groups[i]);
    if (group.getRole(currentUser.getEmail()) == GroupsApp.Role.MEMBER){
        // How to leave group??
        console.log('You are a member of ' + group.getEmail()); 
        continue;
    }
    if (group.getRole(group.getEmail()) == GroupsApp.Role.INVITED){
        // leave group
        console.log('You are invited to ' + group.getEmail());
        continue;
    }
    if (group.getRole(group.getEmail()) == GroupsApp.Role.MANAGER){
        console.log('You are manager of ' + group.getEmail());
        continue;
    }
    if (group.getRole(group.getEmail()) == GroupsApp.Role.OWNER){
        // leave group
        console.log('You are owner of ' + group.getEmail());
        continue;
    }    
      if (group.getRole(group.getEmail()) == GroupsApp.Role.PENDING){
        // leave group
        console.log('You are pending to ' + group.getEmail());
        continue;
    }
  }

}

是否可以通过 Google Groups API 离开群组?如果是这样,怎么做?

标签: javascriptgoogle-apps-scriptgoogle-groups-api

解决方案


回答:

您需要使用 Admin SDK Directory API 从组中删除成员。

更多信息:

Directory API 有一个members.delete方法,可让您从 Google 群组中删除成员。

在 Apps Script 中,您需要将AdminDirectoryAdvanced 服务添加到项目中,并在请求中指定要删除groupKey的组和成员的名称:membersKey

const groupKey = "XXXXXXXXX"
const memberKey = "YYYYYY"

AdminDirectory.Members.remove(groupKey, memberKey)

成功删除将导致HTTP 204响应。

注意:您需要以域管理员身份运行此代码。如果不使用 Admin SDK,则无法通过 API 从 Google 群组中删除成员。


推荐阅读