概要
ArcGIS API for Python を使用して、ArcGIS Online の所属組織ユーザーを削除する方法をご紹介いたします。
※ ArcGIS Online の組織における管理者相当のロールにて実行可能です。
※ 一括での削除処理はユーザーを一括削除するにてご紹介しております。
※ 本ページにてご紹介しているサンプル コードの処理では、ユーザーの削除にあたって、所有するアイテムについてもすべて削除をしています。アイテムを削除されたくない場合は、「ユーザーの全アイテムを他のユーザーに移動する」の処理を事前に実施することをご検討ください。
方法
ArcGIS API for Python の gis オブジェクトの users プロパティを使用し、UserManager クラスのインスタンスを生成した後、search() メソッドを使用して所属組織のユーザー情報を User クラスのオブジェクトとして取得します。取得した結果に対して delete() メソッドを使用して、ユーザーを削除することができます。
ユーザーの削除処理を実行するためには、事前に下記の作業が必要となります。
① 所有しているコンテンツを削除する
② ライセンスとバンドル アプリケーションの割り当てを解除する
③ オーナーになっているグループがないか確認する
Python サンプル コード
- 削除したいユーザー情報の取得
# ユーザー情報の取得 username = input('ユーザー名を入力してください。') user = gis.users.get(username) # ユーザー情報を確認 user - 事前作業① 所有しているコンテンツを削除する
※ アイテムを削除されたくない場合は、「ユーザーの全アイテムを他のユーザーに移動する」の処理を事前に実施することをご検討ください。# ユーザーの全アイテムを取得 # 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 = 'new_test_user' group.reassign_to(new_owner) print('オーナーを' + new_owner + 'に変更しました。') else: print('オーナーではありませんでした。') - ユーザーを削除する
# ユーザーを削除 user.delete() print(username + 'を削除しました。')
実行結果

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