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

1611
0
11-06-2023 11:52 PM
Labels (2)

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

はじめに

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 PythonAPI リファレンス(FeatureLayer.append)

ArcGIS API for PythonAccessing and managing groups

 

その他

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

Labels (2)
Version history
Last update:
‎11-06-2023 11:52 PM
Updated by: