ArcGIS Online, ArcGIS Enterprise では、組織のコンテンツをグループという形で管理することができ、コンテンツへのアクセスの制限や管理ができます。
組織で ArcGIS のポータルを利用していると、人事異動などの際にはグループのメンバー変更が行われるかと思います。その時は、グループの管理画面からメンバーを1人ずつ選択して追加、削除する必要があります。
今回は、そのような作業を自動化、効率化するために、 Esri の提供する Python のライブラリであるArcGIS API for Python を利用したスクリプトを作成していきます。
構成としては別途 CSV ファイルを用意し、そのファイルを読み取って所属グループの変更を行う形にしました。
ArcGIS API for Python を利用するにはPython 環境の構築を含む事前準備が必要になります。具体的な手順については省略しますが、開発リソース集のインストールガイドに掲載しておりますので、ご参照ください。
最低限必要な情報は、グループの変更を行うメンバーと、その対象のグループです。
グループとメンバーの関係としては現実世界同様、対象とするグループの方が主で、そのグループにメンバーが属する形になります。
しかし今回は、左側にメンバーをおいて、そのメンバーがグループに所属、脱退という見た目のファイル構成としました。
そのため、今回利用する csv ファイルの構成は以下のようになりました。
ユーザー名 | グループ名 | 変更フラグ |
スクリプトの簡単な構成としては以下のようになります
実際のサンプル スクリプトは以下のようになりました。
# coding: utf-8
## 変更用関数
def groupChange_func(gis,row):
## 変更対象のグループを取得
group=gis.groups.search(row.変更対象グループ)[0]
## 変換フラグが1 ならば削除, 2 ならば追加
if row.変更フラグ == 1:
##削除処理を実行
group.remove_users(row.ユーザー名)
elif row.変更フラグ ==2:
##追加処理を実行
group.add_users(row.ユーザー名)
# 変更用メイン関数
def changeGroupMain(filepath):
# パッケージ等 import 処理
from arcgis.gis import GIS
import pandas as pd
# サイン イン用各種変数
portal ="https://sample.portal.com /portal"
user = "sampleuser"
password = "samplepassword"
# 実行対象ポータルにサインイン
gis = GIS(portal, user, password)
# pandas 形式でファイル内容を取得して一行ごとにグループ変更
df = pd.read_csv(filepath)
for row in df.itertuples():
groupChange_func(gis,row)
if __name__ == '__main__':
import sys
args = sys.argv
changeGroupMain(args[1])
今回は ArcGIS Enterprise 上のグループのメンバー配置の変更を行ってみます。
実行前のグループのメンバーの内訳は以下のようになります。
変更予定の内容
CSV ファイルは以下のように設定しました。
以下の変更フラグは1を削除、2を追加としています。
ユーザー名 | 変更対象グループ | 変更フラグ |
tokyo1ro | 営業1部 | 1 |
tokyo1ro | 営業2部 | 2 |
saitama3ro | 営業2部 | 1 |
saitama3ro | 営業1部 | 2 |
tochigi6ro | 技術1部 | 1 |
ibaraki7ro | 技術1部 | 2 |
詳しい内容としては以下のような処理が実行されます
ユーザー「tokyo1ro(東京一郎)」を営業1部から削除し、営業2部に追加
ユーザー「saitama3ro(埼玉三郎)」を営業2部から削除し、営業1部に追加
ユーザー「tochigi6ro(栃木六郎)」を技術1部から削除
ユーザー「ibaraki7ro(茨城七郎)」を技術1部に追加
変更予定の内容通りにグループが変更されました。
今回はArcGIS API for Python を利用した、ArcGIS ポータル内のグループのメンバー変更について紹介しました。
ArcGIS Online や ArcGIS Enterprise のポータルサイトでは、今回紹介したグループを活用して、コンテンツの管理などを行うことが可能です。
こうした管理業務の中で、ArcGIS API for Python を利用いただくことで、実行の自動化や効率化を進めてみてください。
関連リンク
ESRIジャパン Web サイト:
米国 Esri 社 Web サイト:
・ArcGIS API for Python:API リファレンス(FeatureLayer.append)
・ArcGIS API for Python:Accessing and managing groups
その他
・ArcGIS API for Python を使ってみよう① : Jupyter Notebook ... - Esri Community