レポートのメタデータをVS Codeで取得する手順
レポートは画面から1件ずつ確認していると、フォルダをまたいだ棚卸しに時間がかかります。組織にあるレポートの一覧を取り、VS Codeでメタデータとして取得する手順をまとめます。
なぜメタデータでレポートを扱うのか
レポートの数が増えると、どのフォルダに何が入っているかを画面だけで追うのは大変です。レポートはメタデータとして取得でき、フォルダ名・レポート名・グラフやフィルタの設定までXMLで確認できます。棚卸しや、別組織へのリリース前の確認に使えます。
レポートとフォルダを用意する
レポートフォルダを作る
レポートタブから新しいフォルダを作成し、名前を付けます。共有先も合わせて設定します。
フォルダの中にレポートを作る
作成したフォルダを保存先に指定して、レポートを新規作成します。
以降は、次の4件のレポートが組織にある想定で進めます。
| レポート名 | レポートの一意の名前 | フォルダ |
|---|---|---|
| 非公開レポートサンプル | privateReportSample | 非公開レポート |
| 公開レポートサンプル | publicReportSample | 公開レポートフォルダサンプル |
| サンプルフローレポート: 画面フロー | flow_screen_prebuilt_report | 公開レポート |
| TestPackageReport | TestPackageReport | 公開レポート |
組織にあるレポートの一覧を取る
一覧の取り方は2つあります。
SOQLで一覧を取る
開発者コンソールのクエリエディタか、匿名ApexからReportオブジェクトを検索すると、フォルダ名と開発者名を確認できます。
String reportList = ''; for (Report rt : [SELECT Id, FolderName, DeveloperName FROM Report]) { reportList += rt.FolderName + '/' + rt.DeveloperName + '\n'; } System.debug(reportList);
組織にあるレポートの、フォルダ名と開発者名を1行ずつ出力します。
出力はデバッグログに1行ずつ並ぶので、そこからpackage.xml用の行を手で組み立てます。件数が少ないうちは扱えますが、増えると書き写しの間違いが起きやすくなります。
CLIで一覧を取る
sf CLIのorg list metadataコマンドを使うと、指定したメタデータタイプのコンポーネント名を直接一覧にできます。デバッグログを読んで書き写す手間がありません。
sf org list metadata --metadata-type Report --target-org あなたの組織のエイリアス
指定した組織にあるReportメタデータの一覧を表示します。
VS CodeにSalesforce拡張機能を入れている場合は、サイドバーの「Org Browser」からも同じ一覧をツリー表示で確認できます。こちらはコマンドを打たずに、フォルダごとのレポートを開いて個別に取得できます。
package.xmlを編集する
package.xmlに、取得したいメタデータタイプと対象のレポートを書きます。標準オブジェクトなど一部のメタデータはワイルドカード(*)を使えませんが、ApexClassのようなタイプでは組織にあるすべてのコンポーネントを*で指定できます。Reportはフォルダ単位の名前を1件ずつ書きます。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Package xmlns="http://soap.sforce.com/2006/04/metadata"> <types> <members>*</members> <name>ApexClass</name> </types> <types> <members>非公開レポート/privateReportSample</members> <members>公開レポートフォルダサンプル/publicReportSample</members> <members>公開レポート/flow_screen_prebuilt_report</members> <members>公開レポート/TestPackageReport</members> <name>Report</name> </types> <version>67.0</version> </Package>
force-app/main/default/package.xmlに置きます。バージョンは組織のAPIバージョンに合わせます。
⚠️ APIバージョンは、2026年9月時点の最新であるSummer '26(67.0)にしています。
sf org list metadata --metadata-type Reportの出力かOrg Browserの表示で確認してから書きます。VS Codeで取得する
package.xmlを用意したら、VS Codeのターミナルからsfコマンドで取得します。
sf project retrieve start --manifest force-app/main/default/package.xml
package.xmlに書いたコンポーネントを、既定の組織からローカルへ取得します。
Reportだけを対象を絞って取得したいときは、--manifestの代わりに--metadata Reportのようにタイプ名を直接渡すこともできます。package.xmlを作らずに済みます。
取得結果を確認する
取得したファイルは、公開フォルダのレポートであればforce-app/main/default/reports/配下にフォルダごとのディレクトリで保存されます。
flow_screen_prebuilt_report.report-meta.xml
<?xml version="1.0" encoding="UTF-8"?> <Report xmlns="http://soap.sforce.com/2006/04/metadata"> <chart> <chartType>HorizontalBarStacked</chartType> <groupingColumn>FlowInterviewLog$FlowDeveloperName</groupingColumn> </chart> <columns> <field>FlowInterviewLog.FlowInterviewLogs$LogEntryType</field> </columns> <format>Summary</format> <groupingsDown> <dateGranularity>Day</dateGranularity> <field>FlowInterviewLog$FlowDeveloperName</field> <sortOrder>Asc</sortOrder> </groupingsDown> <name>サンプルフローレポート: 画面フロー</name> <reportType>screen_flows_prebuilt_crt__c</reportType> <scope>organization</scope> <showDetails>false</showDetails> <timeFrameFilter> <dateColumn>FlowInterviewLog$CreatedDate</dateColumn> <interval>INTERVAL_LAST7</interval> </timeFrameFilter> </Report>
画面フローの実行状況を集計するレポートの定義です。グラフとグルーピングの設定が含まれます。
他の3件も同じ形で取得されます。ファイル名は{レポートの一意の名前}.report-meta.xmlで、reportType(レポートの種類)・format(表示形式)・columns(表示項目)がXMLで並ぶ点は共通です。
棚卸しとリリースへの応用
取得したレポートのメタデータはテキストファイルなので、Gitなどのバージョン管理に載せられます。フォルダ単位で差分が追えるため、「どのレポートがいつ変わったか」を棚卸しできます。別組織へリリースするときも、同じpackage.xmlを使ってsf project deploy start --manifest ...でデプロイすれば、画面から1件ずつ作り直す必要がありません。
ここで間違えやすい
| 間違い | 何が起きるか |
|---|---|
| Reportのmembersにフォルダ名を書かずレポート名だけ書く | 一致せず、そのレポートは取得されません |
| フォルダ名の綴りを画面の表示のまま書き写す | 実際の名前と食い違うと取得漏れになります |
| package.xmlのAPIバージョンを古いまま使う | 新しいメタデータの項目が反映されないことがあります |
| 標準レポートをReportメタデータで取ろうとする | Reportメタデータタイプはカスタムレポートのみが対象です |
確認した環境
- 2026年9月 / Salesforce Summer '26(APIバージョン67.0)時点の公式ドキュメントで、Reportメタデータタイプの対象範囲とCLIコマンドを確認しています
- レポート名・フォルダ名は、ご自身の組織のものに置き換えてください
まとめ
- レポートはメタデータとして取得でき、フォルダ単位で棚卸しやバージョン管理に使えます
- 一覧はSOQLでも取れますが、
sf org list metadata --metadata-type ReportかOrg Browserを使うと書き写しの手間がありません - Reportのmembersは「フォルダ名/レポートの一意の名前」で書きます。フォルダ名の綴りが違うと取得されません
- 取得は
sf project retrieve start --manifest package.xml、または--metadata Reportで対象を絞れます - package.xmlのversionは、組織の現在のAPIバージョンに合わせます
Salesforceの導入・運用についてご相談ください
導入前の検討から、お使いの環境の改修・運用、AIとの連携まで承ります。状況を伺ったうえで、進め方をご提案します。