field-meta.xmlでカスタム項目を一括作成する手順
取引先オブジェクトに数値型のカスタム項目を5個、画面操作なしでまとめて作ります。ソース形式のfield-meta.xmlを直接書き、sf CLIでデプロイする手順を説明します。
シナリオ
取引先オブジェクトに「数値型」のカスタム項目を5個、一括で作成します。画面から1つずつ作ると同じ操作を5回繰り返すことになりますが、ファイルを直接編集すればまとめて作れます。
| 項目名 | API参照名 | 桁数 | 小数点の位置 |
|---|---|---|---|
| 取引先数値1 | AccountNumber1__c | 18 | 0 |
| 取引先数値2 | AccountNumber2__c | 18 | 0 |
| 取引先数値3 | AccountNumber3__c | 18 | 0 |
| 取引先数値4 | AccountNumber4__c | 18 | 0 |
| 取引先数値5 | AccountNumber5__c | 18 | 0 |
用意するもの
- Visual Studio Code
- Salesforce Extension Pack(VS Codeの拡張機能)
- Salesforce CLI(
sfコマンド) - 対象組織へ接続できるSalesforce DXプロジェクト
⚠️ 当時の記事ではsfdx force:source:convertとsfdx force:mdapi:convertで、メタデータ形式(.object)とソース形式の間を変換していました。この2つは古いコマンドで、現行はsf project convert source/sf project convert mdapiに変わっています。もっとも、いまはソース形式で取得した時点でカスタム項目ごとにファイルが分かれているため、この変換自体が不要です。この記事では変換を経由しない、現行の手順で書きます。
組織からオブジェクトのソースを取得する
対象の組織に接続したDXプロジェクトで、取引先オブジェクトのメタデータをソース形式のまま取得します。
sf project retrieve start --metadata CustomObject:Account --target-org myOrg
取引先オブジェクトのメタデータを、ソース形式のまま取得します。認証済みの組織を対象にします。
取得すると、次のようなフォルダ構成ができます。既存のカスタム項目は、すでに1項目1ファイルへ分かれています。
force-app/main/default/objects/Account/
Account.object-meta.xml
fields/
(既存のカスタム項目).field-meta.xml取得後のフォルダ構成です。fieldsフォルダの中に、項目ごとのfield-meta.xmlが並びます。
field-meta.xmlを追加する
新しい項目は、fieldsフォルダに項目ごとのfield-meta.xmlを追加するだけで作れます。1つ目の例です。
<?xml version="1.0" encoding="UTF-8"?> <CustomField xmlns="http://soap.sforce.com/2006/04/metadata"> <fullName>AccountNumber1__c</fullName> <externalId>false</externalId> <label>取引先数値1</label> <precision>18</precision> <required>false</required> <scale>0</scale> <trackFeedHistory>false</trackFeedHistory> <type>Number</type> <unique>false</unique> </CustomField>
AccountNumber1__c.field-meta.xmlの中身です。ファイル名とfullNameのAPI参照名をそろえます。
残り4つも同じ形で、ファイル名とfullName・labelだけを表のとおりに変えて作ります。
{API参照名}.field-meta.xmlにします。この例ならAccountNumber2__c.field-meta.xml〜AccountNumber5__c.field-meta.xmlです。ファイル名とfullNameの値が食い違うと、デプロイ時にエラーになります。組織にデプロイする
5つのfield-meta.xmlを保存したら、fieldsフォルダごとデプロイします。
sf project deploy start --source-dir force-app/main/default/objects/Account/fields --target-org myOrg
fieldsフォルダを指定してデプロイします。5項目まとめて1回のデプロイで反映します。
VS Code上からは、対象のフォルダを右クリックして「SFDX: Deploy Source to Org」を選んでも同じ結果になります。コマンドパレットの表示名はSFDXのままですが、内部ではsfコマンドが動きます。
作成できたことを確認する
デプロイが成功しても、実際に項目が増えているかは別に確かめます。
sf org list metadata --metadata-type CustomField --target-org myOrg
対象組織のCustomFieldの一覧を取得します。作成した5項目が含まれているか確認します。
設定の「オブジェクトマネージャ」から取引先の項目一覧を開いても、同じことを目視で確認できます。
ここで間違えやすい
| 間違い | 何が起きるか |
|---|---|
ファイル名とfullNameの値が違う | デプロイ時にエラーになります |
精度(precision)と小数点位置(scale)の関係を誤る | 例えばprecision18・scale0なら整数18桁までです。scaleを大きくすると整数部分の桁数がその分減ります |
sfdx force:source:convertなど廃止方向のコマンドをそのまま使う | 動く場合もありますが、案内も新コマンドへ切り替わっています。sfコマンドを使ってください |
| デプロイ後に組織側の確認をしない | デプロイの成功表示だけでは項目の中身までは分かりません。一覧かオブジェクトマネージャで確かめます |
確認した環境
- 2026年9月 / Salesforce Summer '26(APIバージョン67.0)時点の公式ドキュメントで、ソース形式のフォルダ構成とCustomFieldのXML要素、sf CLIのコマンドを確認しています
- 組織名やパスは、ご自身の環境に置き換えてください
まとめ
- カスタム項目は、ソース形式のfield-meta.xmlを直接追加すればまとめて作れます。メタデータ形式への変換は不要です
sfdx force:source:convert・sfdx force:mdapi:convertは古いコマンドです。現行はsf project convert source・sf project convert mdapiですが、この手順ではそもそも使いません- field-meta.xmlのファイル名は
{API参照名}.field-meta.xmlにそろえます - デプロイは
sf project deploy start --source-dirでfieldsフォルダごと渡せます - 作成後は
sf org list metadata --metadata-type CustomFieldかオブジェクトマネージャで実際に確認します
参考:当時の画面
記事を最初に書いた当時の画面です。いまの手順と違うところは、各画像の説明に書いています。
Salesforceの導入・運用についてご相談ください
導入前の検討から、お使いの環境の改修・運用、AIとの連携まで承ります。状況を伺ったうえで、進め方をご提案します。