ブログのメインコンテンツとは全然関係ないですが、SalesforceのCLIであるsfコマンドのプラグインを自作してみました。
Salesforceの開発を行っていて、項目の作成やプロファイルの権限の整理が非常に面倒だったので、自動で作成や更新をしてくれるようなプラグインを作りました。
以下、プラグインの概要です。
sf-metadata-generator
紹介するプラグインを使うと画像のようなメタデータの値を入力したcsvファイルからxmlのメタデータを自動生成してくれます。
Salesforceのオブジェクトマネージャーから画面をポチポチして一生懸命作る必要がなくなるのですごいらくちんだと思います。
プラグインのnpmは以下のリンクです。
https://www.npmjs.com/package/@shuntaro/sf-metadata-generator
sfdxからsfへの移行に伴いプラグインの内容をsfにお引越ししました。
プラグインの中身のソースコードも大幅に改善したり新しい機能も追加しているので、sfコマンドの方を使ってください。
次のnpm installを実行することでインストールすることができます。
また、プラグインのリポジトリは以下です。
https://github.com/shuntaro-sf/sf-metadata-generator
実行例
プラグインの実行例について紹介します。
項目
カスタム項目を作成するにはsfdx metadata field generateを実行します。
フラグ--inputに項目作成用のcsvファイルのパス、--outputdirに作成する項目の出力先のディレクトリを指定してください。
csvファイルのテンプレートは次を実行することで作成可能です。
csvファイルの値の入力の仕方については、リポジトリのREADMEを確認してください。基本的にcustom field metadata apiの値を入力する感じです。
-uをつけると既存のカスタム項目のメタデータの更新が可能です。-uをつけない場合、xmlファイルの更新は無視されます。
また、convertを実行することで、既存のカスタム項目のメタデータをcsvファイルに変換することができます。このコマンドを用いることで既存の項目の更新を行うことができます。--sourcedirにxmlファイルを保存しているディレクトリ、--outputdirにcsvファイルを出力するディレクトリを指定してください。
上記を実行すると、csvファイルが作成されます。
また次のretrieveコマンドを実行すると、マニフェストからメタデータを取得するときと同じ感じで、csvデータ形式のメタデータを取得することができます。
retrieveのマニフェストファイルの例です。メタデータAPIで取得可能なAccountの項目がすべて抽出できます。
1 2 3 4 5 6 7 8 | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>Account</members> <name>CustomObject</name> </types> <version>58.0</version> </Package> |
カスタム項目を更新したい場合は、更新後の値をcsvファイルに記述し、csvファイルのパスをgenerateの--inputにし、-uをつけることでカスタム項目を更新できます。
オブジェクト
カスタムオブジェクトを作成するにはsfdx metadata object generateを実行します。
フラグ--inputdirにオブジェクト作成用のcsvファイルのパス、--outputdirに作成するオブジェクトの出力先のディレクトリを指定してください。
csvファイルのテンプレートは次を実行することで作成可能です。
csvファイルの値の入力の仕方については、リポジトリのREADMEを確認してください。基本的にcustom object metadata apiの値を入力する感じです。
-uをつけると既存のカスタムオブジェクトのメタデータの更新が可能です。-uをつけない場合、xmlファイルの更新は無視されます。
また、convertを実行することで、既存のカスタムオブジェクトのメタデータをcsvファイルに変換することができます。このコマンドを用いることで既存のオブジェクトの更新を行うことができます。--sourcedirにxmlファイルを保存しているディレクトリ、--outputdirにcsvファイルを出力するディレクトリを指定してください。
上記を実行すると、csvファイルが作成されます。
また次のretrieveコマンドを実行すると、マニフェストからメタデータを取得するときと同じ感じで、csvデータ形式のメタデータを取得することができます。
retrieveのマニフェストファイルの例です。Accountのメタデータが抽出できます。
1 2 3 4 5 6 7 8 | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>Account</members> <name>CustomObject</name> </types> <version>58.0</version> </Package> |
カスタムオブジェクトを更新したい場合は、更新後の値をcsvファイルに記述し、csvファイルのパスをgenerateの--inputdirにし、-uをつけることでカスタムオブジェクトまたは標準オブジェクトを更新できます。
プロファイル
次にプロファイルのメタデータを更新するコマンドについて紹介します。
プロファイルについては、他のメタデータと依存する部分が多いため更新のみとなっています。
次を実行することでプロファイルのxmlファイルの内容を更新用のcsvファイルに変換することができます。
csvファイルを取得できるので、csvファイルの内容を更新後の値に変更し、次のgenerateを実行するとcsvファイルの値に上書きされたプロファイルのメタデータを取得することができます。
プロファイルのメタデータの更新方法については以上です。