ArcGIS API for Python を使って組織のグループ管理を自動化する

【Esri Community Blog】

はじめに

ArcGIS Online,ArcGIS Enterprise では、組織のコンテンツをグループという形で管理することができ、コンテンツへのアクセスの制限や管理ができます。

AkiraNAGAI_10-1699342569672.png

組織で ArcGIS のポータルを利用していると、人事異動などの際にはグループのメンバー変更が行われるかと思います。その時は、グループの管理画面からメンバーを1人ずつ選択して追加、削除する必要があります。

今回は、そのような作業を自動化、効率化するために、 Esri の提供する Python のライブラリであるArcGIS API for Python を利用したスクリプトを作成していきます。

構成としては別途 CSV ファイルを用意し、そのファイルを読み取って所属グループの変更を行う形にしました。

AkiraNAGAI_11-1699342569685.png

Python スクリプト作成の事前準備

環境構築

ArcGIS API for Python を利用するにはPython 環境の構築を含む事前準備が必要になります。具体的な手順については省略しますが、開発リソース集のインストールガイドに掲載しておりますので、ご参照ください。

AkiraNAGAI_12-1699342569687.jpeg

CSVファイルの構成

最低限必要な情報は、グループの変更を行うメンバーと、その対象のグループです。

グループとメンバーの関係としては現実世界同様、対象とするグループの方が主で、そのグループにメンバーが属する形になります。

しかし今回は、左側にメンバーをおいて、そのメンバーがグループに所属、脱退という見た目のファイル構成としました。

そのため、今回利用する csv ファイルの構成は以下のようになりました。

ユーザー名

グループ名

変更フラグ

スクリプト

スクリプトの簡単な構成としては以下のようになります

  1. 取得するCSV ファイルのパスを入力する
  2. グループ情報の変更を行う関数を作成
  3. Portal for ArcGIS にログインする
  4. 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 上のグループのメンバー配置の変更を行ってみます。

実行前のグループのメンバーの内訳は以下のようになります。

AkiraNAGAI_13-1699342569689.png
AkiraNAGAI_14-1699342569691.png
AkiraNAGAI_15-1699342569694.png

変更予定の内容

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部に追加

実行結果

変更予定の内容通りにグループが変更されました。

AkiraNAGAI_16-1699342569695.png
AkiraNAGAI_17-1699342569697.png
AkiraNAGAI_18-1699342569699.png

終わりに

今回はArcGIS API for Python を利用した、ArcGIS ポータル内のグループのメンバー変更について紹介しました。

ArcGIS Online や ArcGIS Enterprise のポータルサイトでは、今回紹介したグループを活用して、コンテンツの管理などを行うことが可能です。

こうした管理業務の中で、ArcGIS API for Python を利用いただくことで、実行の自動化や効率化を進めてみてください。

関連リンク

ESRIジャパン Web サイト:

ArcGIS API for Python

ArcGIS Developer 開発リソース集

ArcGIS API for Python ガイド集

米国 Esri 社 Web サイト:

ArcGIS API for Python

・ArcGIS API for Python:API リファレンス(FeatureLayer.append)

・ArcGIS API for Python:Accessing and managing groups

その他

ArcGIS API for Python を使ってみよう① : Jupyter Notebook … – Esri Community