【Esri Community Blog】
はじめに
ArcGIS Online, ArcGIS Enterprise では、組織のコンテンツをグループという形で管理することができ、コンテンツへのアクセスの制限や管理ができます。
組織で ArcGIS のポータルを利用していると、人事異動などの際にはグループのメンバー変更が行われるかと思います。その時は、グループの管理画面からメンバーを1人ずつ選択して追加、削除する必要があります。
今回は、そのような作業を自動化、効率化するために、 Esri の提供する Python のライブラリであるArcGIS API for Python を利用したスクリプトを作成していきます。
構成としては別途 CSV ファイルを用意し、そのファイルを読み取って所属グループの変更を行う形にしました。
Python スクリプト作成の事前準備
環境構築
ArcGIS API for Python を利用するにはPython 環境の構築を含む事前準備が必要になります。具体的な手順については省略しますが、開発リソース集のインストールガイドに掲載しておりますので、ご参照ください。
CSVファイルの構成
最低限必要な情報は、グループの変更を行うメンバーと、その対象のグループです。
グループとメンバーの関係としては現実世界同様、対象とするグループの方が主で、そのグループにメンバーが属する形になります。
しかし今回は、左側にメンバーをおいて、そのメンバーがグループに所属、脱退という見た目のファイル構成としました。
そのため、今回利用する csv ファイルの構成は以下のようになりました。
ユーザー名
グループ名
変更フラグ
スクリプト
スクリプトの簡単な構成としては以下のようになります
- 取得するCSV ファイルのパスを入力する
- グループ情報の変更を行う関数を作成
- Portal for ArcGIS にログインする
- pandas のライブラリを利用してCSV ファイルを読み取り、 2 で作成した関数を実行して、変更処理を実行する
実際のサンプル スクリプトは以下のようになりました。
# 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