開発環境・ツール

field-meta.xmlでカスタム項目を一括作成する手順

取引先オブジェクトに数値型のカスタム項目を5個、画面操作なしでまとめて作ります。ソース形式のfield-meta.xmlを直接書き、sf CLIでデプロイする手順を説明します。

2023.02.28

シナリオ

取引先オブジェクトに「数値型」のカスタム項目を5個、一括で作成します。画面から1つずつ作ると同じ操作を5回繰り返すことになりますが、ファイルを直接編集すればまとめて作れます。

項目名API参照名桁数小数点の位置
取引先数値1AccountNumber1__c180
取引先数値2AccountNumber2__c180
取引先数値3AccountNumber3__c180
取引先数値4AccountNumber4__c180
取引先数値5AccountNumber5__c180

用意するもの

  • 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に変わっています。もっとも、いまはソース形式で取得した時点でカスタム項目ごとにファイルが分かれているため、この変換自体が不要です。この記事では変換を経由しない、現行の手順で書きます。

VS Codeの右クリックメニューでCopy Relative Pathが選ばれている
フォルダの相対パスは右クリックのCopy Relative Pathで取れます。打ち間違いを防げます。

組織からオブジェクトのソースを取得する

対象の組織に接続したDXプロジェクトで、取引先オブジェクトのメタデータをソース形式のまま取得します。

sf project retrieve start --metadata CustomObject:Account --target-org myOrg

取引先オブジェクトのメタデータを、ソース形式のまま取得します。認証済みの組織を対象にします。

取得すると、次のようなフォルダ構成ができます。既存のカスタム項目は、すでに1項目1ファイルへ分かれています。

VS Codeの出力パネル。組織からのソース取得が終わった行が表示されている
ソースの取得が終わった直後の画面です。出力パネルに取得完了の行が出ていることを確認します。
VS Codeのエクスプローラー。Accountのfieldsフォルダに項目ごとのXMLが並んでいる
取得後のフォルダ構成です。既存のカスタム項目が1項目1ファイルに分かれている点を見てください。
VS Codeの統合ターミナル。PowerShellのプロンプトが表示されている
同じ画面でターミナルを開いたところです。ここからコマンドを実行していきます。
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だけを表のとおりに変えて作ります。

VS Codeのfieldsフォルダに追加した5つのfield-meta.xmlと、その中身のXML
5つのfield-meta.xmlを追加したところです。ファイル名と中のfullNameがそろっていることを見てください。
fieldsフォルダに取引先数値1から5のfield-meta.xmlが5つ並んでいる
5ファイルを追加したあとのfieldsフォルダです。ファイル名がAPI参照名とそろっているかを見ます。
1つ目のfield-meta.xmlを開いた画面と、選択された5つのファイル
1ファイル目の中身です。fullNameの値がファイル名と同じになっていることを確認してください。
ファイル名は{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コマンドが動きます。

右クリックメニューでSFDX: Deploy Source to Orgが選ばれている
フォルダを右クリックしてデプロイするところです。コマンドで実行した場合と同じ結果になります。

作成できたことを確認する

出力パネルにカスタム項目5件がCreatedとして並んだデプロイ結果
デプロイの結果です。5項目がCreatedとして並んでいるかを1件ずつ確認してください。

デプロイが成功しても、実際に項目が増えているかは別に確かめます。

sf org list metadata --metadata-type CustomField --target-org myOrg

対象組織のCustomFieldの一覧を取得します。作成した5項目が含まれているか確認します。

設定の「オブジェクトマネージャ」から取引先の項目一覧を開いても、同じことを目視で確認できます。

取引先のカスタム項目一覧に取引先数値1から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かオブジェクトマネージャで実際に確認します

参考:当時の画面

記事を最初に書いた当時の画面です。いまの手順と違うところは、各画像の説明に書いています。

VS Codeのターミナル。メタデータ形式への変換コマンドの実行結果が出ている
当時はソース形式をメタデータ形式へ変換してから編集していました。
VS Codeのエクスプローラー。変換で作られたmetadataPackageフォルダの中身
変換すると、objectsフォルダに.objectがまとめて並びます。
VS CodeでAccount.objectを開いた画面。左にフォルダ、右にXMLが並ぶ
当時は1つのAccount.objectに全項目が入っていました。ここを直接編集します。
Account.objectの中の既存カスタム項目のfieldsブロックが枠で囲まれている
既存の項目のfieldsブロックを見本にして、同じ形で書き足していました。
Account.objectに取引先数値1のfieldsブロックを書き足した画面
書き足したブロックが枠で示されています。行数が増えていることを見てください。
VS Codeのターミナル部分が枠で囲まれ、変換コマンドの結果が出ている
書き足したあとに、もう一度変換をやり直していました。
メタデータ形式をソース形式へ戻す変換コマンドの1行
戻すときは相対パスを渡していました。いまはこの往復自体が不要です。
変換コマンドの入力途中を写した1行
-rのあとに続けるパスは、右クリックのCopy Relative Pathでコピーして用意していました。

Salesforceの導入・運用についてご相談ください

導入前の検討から、お使いの環境の改修・運用、AIとの連携まで承ります。状況を伺ったうえで、進め方をご提案します。