tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:SalesforceDXプロジェクトのscirptsフォルダの利用を試してみました

SalesforceDXプロジェクトのscirptsフォルダの利用を試してみました。


SalesforceDXのプロジェクト構成でscriptsフォルダが用意されています。この中にはデフォルトでapexフォルダとsoqlフォルダが用意されています。それぞれのフォルダの中にはサンプルファイルが用意されていて利用イメージを確認できるようになっています。


このフォルダの使い方について確認してみました。

apexフォルダの使い方

「sf apex run」コマンドで利用する目的のフォルダとなっています。任意のapexコードを実行するためのもので次のように実行します。

sf apex run -o sfdc-my-playground -f scripts/apex/hello.apex


ターミナルからコマンドを実行するとこのような感じで処理内容と結果が表示されます。サンプルではDebugメッセージを表示しているだけですが、実際には取引先テストデータの作成といった使い方をする感じになると思います。


実行時のフラグは3種類のみなので覚えやすいコマンドとなっています。


この機能自体は開発者コンソールのApex実行ウィンドウと同じことができる機能だと思います。


ただ開発者コンソールは都度コードを書き込む必要がありますが、apexフォルダにファイル保存することでいつでも繰り返し実行しやすくなります。複数名で対応するプロジェクトの場合は共通で使用することが可能です。テストデータ作成系はうっかり本番環境に対して実行してしまう懸念があるので、対策を講じた上で利用するかそうした処理は保管しないといったルールがあった方が良いかもしれません。適切に運用すれば効率よく開発を進められるようになると思います。

soqlフォルダ

 「sf data query」コマンドで利用する目的のフォルダとなっています。任意のSOQLコマンドを実行するためのもので次のように実行します。

sf data query -o sfdc-my-playground -f scripts/soql/account.soql


ファイルの内容はこんな感じです。


サンプルコードとして用意されている最初の状態はコメント部分が付いていますが、これがあるとエラーとなりました。


サブクエリも実行可能です。


開発者コンソールのQuery Editor機能と同じことができる感じです。(取得結果に対して操作はできませんが)


「sf data query」コマンド以外にも用途があります。まだベータ版ですが、SOQL ビルダーというVSCodeの拡張機能で利用できます。

Salesforce Developers Japan | SOQL ビルダー (ベータ)


次の手順でインストール操作を実施します。


拡張機能のページからインストールできます。

SOQL - Visual Studio Marketplace


単独でインストールしなくてもSalesforce Extensionsでまとめてインストールされているかも。


SOQLビルダーの準備ができていれば、『.soql』ファイルを開いたときに右側に変更ボタンが表示されています。


注意点としては、サブクエリはサポートされていませんでした。


ということでサブクエリ部分を修正して次のように変更。


ビルダーに切り替えます。


Run Queryボタンをクリックするとクエリの実行結果を取得できます。ターミナル上に表示されるよりもわかりやすく表示でき、クエリの変更も用意です。


scriptsフォルダのsoqlファイルについてはこのような用途があります。apexファイルと同じく、繰り返しチェックしたいデータがある場合はクエリを保管しておいて実行するといった使い方ができるようになっています。

その他の使い方

Salesforce CLIについて調べていたときにこういう使い方もできそうというのを見かけました。(4年前の情報なので最新版では非推奨かも。)

Getting Started with the Salesforce CLI (Command Line Interface) - YouTube


こんな感じで『.sh』ファイルを用意してよく使う sf コマンドを宣言します。シェルコマンドを実行すると複数のsfコマンドを実行できるイメージです。


スクラッチ組織作成後に、パスワードリセットや権限セット割り当てなど複数のコマンド実行が定期的に発生する場合は、shellコマンドファイルにまとめておく的な使い方ができるかなと思いました。(shファイルの権限設定とか必要になるのであまり適切ではない管理かも。一応そういう使い方もできそうという感じのメモです。)