SalesforceXyToolsCore/Python上でたった3行でSalesforce組織からのメタデータの取得
The original page link
SalesforceXyToolsCore/Python上でたった3行でSalesforce組織からのメタデータの取得
Topic
- SalesforceXyToolsCoreを使ってSalesforce組織からのメタデータの取得
メリット
- package.xml配置不要、動的に生成
- すべてのSalesforce組織からのメタデータ一括で取得
Salesforce組織からのメタデータの取得
Salesforce組織のユーザ名、パスワード、Apiバージョン、Product/Sandboxを設定してください。
from SalesforceXytoolsCore import * import pprint config = { "api_version": 42.0, "username": "sfdc username", "password": "sfdc password", "security_token": "", "is_sandbox": True } meta_api = MetadataApi(username=config["username"], password=config["password"], security_token=config["security_token"], sandbox=config["is_sandbox"], version=config["api_version"] ) """retrieve zip file""" meta_api.retrieveZip("./save_dir","metadata-retrieve.zip")
結果確認:
ls ./save_dir
分析
メタデータ取得ロジック
- retrieve() コールを発行し、非同期的な取得を開始すると、AsyncResult オブジェクトが返されます。id 項目の値をメモし、次のステップで使用します。
- checkRetrieveStatus() コールを発行して、最初のステップの AsyncResult オブジェクトから id 値を渡します。返された RetrieveResult の done 項目の値をチェックします。true の場合、コールが完了して、次のステップに進むことを意味します。それ以外の場合は、done 項目が true になるまで、このステップを繰り返して checkRetrieveStatus() を再度コールします。
- 前のステップの checkRetrieveStatus() への最後のコールで返された RetrieveResult から zip ファイル (zipFile 項目) および他の必要な項目を取得します。
retrieveタスクを開始
タスクを発行する
"""retrieve""" result = meta_api.startRetrieve() pprint.pprint(result) # print(result["done"]) # print(result["id"]) # print(result["state"])
retrieveの状況を確認
宣言的なメタデータコール retrieve() の状況を確認し、zip ファイルの内容を返します。
"""checkRetrieveStatus""" retrieve_id = result["id"] check_result = meta_api.checkRetrieveStatus(retrieve_id) pprint.pprint(check_result)