日本語

操作手順: ArcGIS API for Python を使用して、ある Portal for ArcGIS または ArcGIS Online アカウントの Operations Dashboard のコンテンツを別の Portal for ArcGIS または ArcGIS Online アカウントにコピーする

概要

組織が異なる目的のために複数の Portal for ArcGIS または ArcGIS Online アカウントを所有していることがよくあります。 たとえば組織は、内部で使用するために 1 つのアカウント、パブリック アクセス用にもう 1 つのアカウントという、2 つのアカウントを必要とすることがあります。 場合によっては、あるアカウントのコンテンツを他のアカウントにコピーする必要があります。 アイテムを Portal for ArcGIS または ArcGIS Online からコピーする手順については、「Portal for ArcGIS: 例: コンテンツのコピー」をご参照ください。 ArcGIS API for Python を使用して Operations Dashboard のコンテンツをコピーすることもできます。

手順

以下の手順に従って、ある Portal for ArcGIS または ArcGIS Online アカウントの Operations Dashboard のコンテンツを別の Portal for ArcGIS または ArcGIS Online アカウントにコピーします。

  1. 必要なモジュールをインポートします。
from arcgis.gis import GIS
from IPython.display import display
from getpass import getpass
  1. ソース URL および認証情報を受け取るための入力パラメーターを宣言します。
source_portal = input("Enter Source Portal : ")
if source_portal == "":
    source_portal = "arcgis.com"

source_admin = input("Enter Source Admin Username: ")
source_admin_password = getpass("Enter password: ")
source_owner = input("Enter Source Owner Username: ")
 
注意:
コンソール ウィンドウの [Portal for ArcGIS の URL] で、Portal for ArcGIS の場合は [source_admin] を指定し、ArcGIS Online の場合は Enter キーを押して空のままにします。
  1. ターゲット URL および認証情報を受け取るための入力パラメーターを宣言します。
target_portal = input("Enter Target Portal : ")
if target_portal == "":
    target_portal = "arcgis.com"

target_admin = input("Enter Target Admin Username: ")
target_admin_password = getpass("Enter password: ")
target_owner = input("Enter Target Owner Username: ")
  1. ソース URL およびターゲット URL への接続を作成します。
source = GIS("https://" + source_portal, source_admin, source_admin_password, verify_cert=False)
target = GIS("https://" + target_portal, target_admin, target_admin_password, verify_cert=False)
print("Connected to Source and Target Portals")
注意:
上のスクリプトは、証明書をチェックしません。 証明書が提供され、SSL が完全に構成されている場合、コード セグメント verify_cert を true に設定できます (verify_cert=True)。
 
  1. ステップ 2 および 3 で指定した所有者を検索します。
source_user = source.users.search(source_owner)
target_user = target.users.search(target_owner)
print("Source User: \t:\t" + source_user[0].username + "\t:\t" + source_user[0].role)
print("Target User: \t:\t" + target_user[0].username + "\t:\t" + target_user[0].role)
  1. ソース URL で、指定した所有者の使用可能なすべてのダッシュボードを検索します。
search_result = source.content.search(query="owner:"+str(source_owner), item_type="Dashboard")
search_result
  1. ターゲット URL で見つかったダッシュボードごとに、「コピーをフォルダーに作成する」プロセスを反復します。
for item in search_result:
    app=source.content.get(item.id)
    data = [app]
    target.content.clone_items(data, "dashboards", copy_data=True, search_existing_items=False)
    print("copied item successfully: %s" %(app.title))

print("Done")

次のスクリプトは、手順の完了後の完全なコードを示しています。
    from arcgis.gis import GIS
    from IPython.display import display
    from getpass import getpass
    
    source_portal = input("Enter Source Portal (machine.domain.com/webadaptor...leave blank for ArcGIS Online)")
    if source_portal == "":
        source_portal = "arcgis.com"
    source_admin = input("Enter Source Admin Username: ")
    source_admin_password = getpass("Enter password: ")
    source_owner = input("Enter Source Owner Username: ")
    
    target_portal = input("Enter Target Portal (machine.domain.com/webadaptor...leave blank for ArcGIS Online)")
    if target_portal == "":
        target_portal = "arcgis.com"
    target_admin = input("Enter Target Admin Username: ")
    target_admin_password = getpass("Enter password: ")
    target_owner = input("Enter Target Owner Username: ")
    
    source = GIS("https://" + source_portal, source_admin, source_admin_password, verify_cert=False)
    target = GIS("https://" + target_portal, target_admin, target_admin_password, verify_cert=False)
    print("Connected to Source and Target Portals")
    
    source_user = source.users.search(source_owner)
    target_user = target.users.search(target_owner)
    print("Source User: \t:\t" + source_user[0].username + "\t:\t" + source_user[0].role)
    print("Target User: \t:\t" + target_user[0].username + "\t:\t" + target_user[0].role)
    
    search_result = source.content.search(query="owner:"+str(source_owner), item_type="Dashboard")
    search_result
    
    for item in search_result:
        app=source.content.get(item.id)
        data = [app]
        target.content.clone_items(data, "dashboards", copy_data=True, search_existing_items=False)
        print("copied item successfully: %s" %(app.title))
    
    print("Done")

     

    関連情報