def _gadmin_group_delete(message: Message, service: Resource, group: str) -> None: """ 指定したグループを削除する :param service: Google API との接続 :param group: グループのメールアドレス """ try: result = service.groups().get(groupKey=group).execute() count = result["directMembersCount"] if count != "0": # メンバーがいる場合は削除できない botsend( message, f""" `{group}` グループはメンバーがいるので削除できません `$gadmin member delete {group} メールアドレス` コマンドでメンバーを削除してから実行してください `$gadmin member list {group}` コマンドでメンバー一覧が確認できます """, ) else: service.groups().delete(groupKey=group).execute() botsend(message, f"`{group}` グループを削除しました") except HttpError as e: botsend(message, f"グループの削除に失敗しました\n`{e}`") return
def get_all_groups_for_email(admin: Resource, email: str) -> List[Dict]: """ Fetch all groups of which the given group is a member Arguments: email: A string representing the email address for the group Returns a list of Group models Throws GoogleException """ request = admin.groups().list(userKey=email, maxResults=500) groups: List[Dict] = [] while request is not None: resp = request.execute(num_retries=GOOGLE_API_NUM_RETRIES) groups = groups + resp.get('groups', []) request = admin.groups().list_next(request, resp) return groups
def get_all_groups(admin: Resource) -> List[Dict]: """ Return list of Google Groups in your organization Returns empty list if we are unable to enumerate the groups for any reasons googleapiclient.discovery.build('admin', 'directory_v1', credentials=credentials, cache_discovery=False) :param admin: google's apiclient discovery resource object. From googleapiclient.discovery.build See https://googleapis.github.io/google-api-python-client/docs/epy/googleapiclient.discovery-module.html#build. :return: List of Google groups in domain """ request = admin.groups().list(customer='my_customer', maxResults=20, orderBy='email') response_objects = [] while request is not None: resp = request.execute(num_retries=GOOGLE_API_NUM_RETRIES) response_objects.append(resp) request = admin.groups().list_next(request, resp) return response_objects
def _gadmin_group_insert(message: Message, service: Resource, group: str, name: str) -> None: """ 指定したグループを追加する :param service: Google API との接続 :param group: グループのメールアドレス :param name: グループの名前 """ body = { "name": name, "email": group, } try: service.groups().insert(body=body).execute() except HttpError as e: botsend(message, f"グループの追加に失敗しました\n`{e}`") return botsend(message, f"`{group}` グループを追加しました") botsend(message, f"`$gadmin member insert {group} メールアドレス` コマンドでメンバーを追加してください")