プログラマ38の日記

主にプログラムメモです。

Salesforce: コマンドラインのメタデータのエクスポートツールを作りました

メタデータを使うシーンは多いです。

1.開発時のバックアップ

2.デプロイ用のモジュール

3.モジュールリリース後の確認

 

上記のような場面で何かと必要となるメタデータですが、「Force.com IDE」や「Force.com Migration Tool」のメタデータダウンロード機能だと、少し使いづらさを感じてツールを作成しました。

下記からダウンロードできます。ソースコードも同梱していますので、どういうコードを書いているかを確認いただけます。※もちろんユーザ、パスワードを悪用はしていませんので確認いただければと思います。

 

メタデータダウンロードツールはこちら (APIVer46)

 

 ツールの概要は次です。

・Java8を利用します。ツールには含めていないので別途インストールが必要です。

・動作確認はWindows7, 8 ,10で実施しています。

 

ツールの使い方はWindowsのバッチファイル「metadatabakup.bat」を編集し、環境変数に接続情報や、通信設定を指定します。

その後、「metadatabakup.bat」を起動してください。

f:id:crmprogrammer38:20170515111120p:plain

環境変数
backup.dir

メタデータファイルを保存するパスのルート。

このパスの下に、「metadata_yyyyMMddHHmmss」のフォルダをツール側で作成してメタデータを出力します。

metadata.include

取得するメタデータを限定する場合に指定します。(任意)

「ApexClass, ApexComponent, ApexPage, ApexTrigger, CustomObject, ・・・」などメタデータAPIのlistMetadataで取得できるタイプで指定してください。「CustomField」など、listMetadataで取得できないタイプは指定できません。

下記のmetadata.excludeと一緒には指定できません。

metadata.exclude

除外するメタデータを限定する場合に指定します。(任意)

指定方法は、上記のmetadata.includeと同様です。

上記のmetadata.includeと一緒には指定できません。

sfdc.url

APIのログインURLを指定します。

https://test.salesforce.com/services/Soap/u/43.0

https://login.salesforce.com/services/Soap/u/43.0

になります。他には、インスタンスURLを直接指定する、マイドメインURLを直接指定するなどでしょうか。

sfdc.username ログインユーザ名
sfdc.password ログインパスワード。セキュリティトークンを使用する場合は、パスワード+セキュリティトークンの文字列となります。
http.proxyHost プロキシホスト。通信時にプロキシを使用する場合指定します。
http.proxyPort プロキシポート番号。通信時にプロキシを使用する場合指定します。
http.proxyUser プロキシユーザ。プロキシでユーザ認証する場合指定します。
http.proxyPassword プロキシパスワード。プロキシでユーザ認証する場合指定します。
http.auth.ntlm.domain NTLMドメイン。ntlmドメインを使用する場合指定します。
JAVACMD

javaのコマンドを指定します。javaは8以上のバージョンが必要です。

パスが通っていれば「java」のままで、パスが通っていない場合フルパスでjavaコマンドまでを指定します。

 

後書き

「Force.com IDE」だと、メタデータの量が多いと、メタデータの選択時点で時間がかかってしまうのと、そもそもGUIのため自動化できません。
「Force.com Migration Tool」は、package.xmlを書くのがハードルが高く使いづらさを感じて、このツールを作りました。
ソースコードもつけてますので、自由に改造して使ってもらえるとうれしいです。

 

修正履歴

2017/7/24 CustomFeedFilterのダウンロード時にエラーとなる事象の対応を行いました。具体的には、CustomFeedFilterはワイルドカード指定でリクエストするように変更しています。

 

 

 メタデータエクスポートの過去バージョンは次です。

API42

API41

API40

API39