FAQ
ArcGIS API for Python : ユーザーを一括削除する

ナレッジ番号:3441 | 登録日:2023/05/29 | 更新日:2024/01/10

概要

ArcGIS API for Python を使用して、ArcGIS Online の所属組織ユーザーを一括削除する方法をご紹介いたします。
※ ArcGIS API for Python の記述方法は ArcGIS Online の ノートブック の利用方法とArcGIS API for Python の基本操作をご覧ください。
※ ArcGIS Online の組織における管理者相当のロールにて実行可能です。
※ 特定ユーザーの削除処理はユーザーを削除するにてご紹介しております。
※ 本ページにてご紹介しているサンプル コードの処理では、ユーザーの削除にあたって、所有するアイテムについてもすべて削除をしています。アイテムを削除されたくない場合は、「ユーザーの全アイテムを他のユーザーに移動する」の処理を事前に実施することをご検討ください。

方法

ArcGIS API for Python の gis オブジェクトの users プロパティを使用し、UserManager クラスのインスタンスを生成した後、search() メソッドを使用して所属組織のユーザー情報を User クラスのオブジェクトとして取得します。取得した結果に対して delete() メソッドを使用して、ユーザーを削除することができます。一括削除ではこの処理を各ユーザーにて繰り返し実施します。

ユーザーの削除処理を実行するためには、事前に下記の作業が必要となります。※各処理についてもサンプルコード内で行っています。
① 所有しているコンテンツを削除する
② ライセンスとバンドル アプリケーションの割り当てを解除する
③ オーナーになっているグループがないか確認する

Python サンプル コード

  1. ユーザーを一括削除する ※ ユーザーが所有しているアイテムを削除されたくない場合は、「ユーザーの全アイテムを他のユーザーに移動する」の処理を事前に実施することをご検討ください。
    # 削除するユーザー情報をリスト(配列)で用意
    user_list = ['test_user12345','test_user678910']
    group_new_owner = 'new_test_user'
    
    # 各ユーザーに対して処理を実行
    for username in user_list:
        print('------------------------------------------------------')
        print(username + 'の削除処理を実行します。')
        print('------------------------------------------------------')
        
        # ユーザー情報の取得
        user = gis.users.get(username)
        
        
        # ユーザーの全アイテムを取得
        # searchメソッドの引数使用例 (query='owner:'+ username : オーナーがusernameで検索、
        #                             max_users=100 : 検索結果を100件まで表示)
        items = gis.content.search(query='owner:'+ username,max_items=100)
    
        # 全アイテムの削除
        for item in items:
            item.protect(enable=False)
            item.delete()
        print('アイテムを削除しました。')
        # 全フォルダー削除
        for folder in user.folders:
            gis.content.delete_folder(folder['title'],owner=username)
        print('フォルダーを削除しました。')
        
        
        # ライセンスとバンドル解除処理
        # ライセンス解除
        for license in gis.admin.license.all():
            try:
                license.revoke(username,'*')
            except:
                pass
        print('ライセンス解除しました。')
    
        # バンドル解除
        for bundle in gis.admin.license.bundles:
            try:
                bundle.revoke(user)
            except:
                pass
        print('バンドル解除しました。')
        
        # オーナグループの確認
        # オーナーになっているグループの確認
        for group in user.groups:
            print(group)
            if(group.owner == username):
                # 新しいオーナーに変更
                new_owner = group_new_owner
                group.reassign_to(new_owner)
                print('オーナーを' + new_owner + 'に変更しました。')
            else:
                print('オーナーではありませんでした。')
        
        # ユーザーを削除
        user.delete()
        print(username + 'を削除しました。')
    

実行結果

Image

注意事項

掲載しているコードはあくまでもサンプル (見本) として提供しているものであり、実行時に発生したエラーの対処方法につきましては、サポート対象外とさせていただきます。また、操作方法やソースコードに関するご質問は別途有償の開発者サポート契約にてご対応させていただきます。なお、コードを実行して生じたいかなる損害についても弊社では責任を負いかねます。

関連する質問

メタデータ

種類

製品