はじめに
カスタムメタデータは便利
SOQLで検索でき、Apexやフローで利用可能、Sandboxで作って整えてリリースもできるカスタムメタデータ。大変便利で筆者的には利用頻度が増えています。
得に、業務データではないシステム系のデータなんだけど、あとからパターンの追加や変更がありそうなものみたいなのが、うまく活用できるなと感じています。
今回の背景
今回、数十件単位のデータ件数の追加・更新の必要がある要件が出てきました。
今までSalesforce上のコンソールからちまちまデータを追加したり編集していましたが、流石にそれではちょっと面倒。しかもマスタデータは開発チームとは違う業務チームが定期的にチェックや再検討ができる状態にしたいと。
ではエクセルなどでまずはマスタ管理してもらって、変更があった場合に一括変更をできないかと方法を探しており今回の流れに辿り着きました。
ちょっとしたコツやハマりどころもあったのでそれを踏まえて今回できた登録・更新の流れを書いていきます。
ざっくりとした作業フロー
今回の前提
- Salesforce CLIがインストールされていること
- カスタムメタデータの定義は先にできている状態とします。
データ定義はサンプルとして、顧客の社員人数によりサイズ名のラベルをつけるための判定用のデータです
VSCodeでの準備:定義の取得
※VSCodeに「Salesforce Extensions for VS Code」がインストールされている事、組織と接続済みが前提です。
- 左のバーメニューから「Org Browser」>「Custom Object」に対象のカスタムメタデータの定義を探す
- カスタムメタデータ名の右の雲に↓ボタンを押下して定義をダウンロード
- 定義が無事取得できると「force-app/main/default」の「object」配下に定義がダウンロードされます
エクセルからCSVファイル作成
今回作成したデータ
いくつかルールがあります
- 頭の項目はName固定
- 更新時は主キーの扱いになる。標準項目のカスタムメタデータレコード名、表示ラベルに登録される
- 文字コードはUTF8、改行はCRLF
- BOM付きcsvは不可
BOM付きcsvは不可
ここはどうやっても良いのですがBOMがつかないよう注意してください。
私の場合、エクセルからテキストにコピペ保存して下記コマンド(おっさんなので原始的に、、、)
cat hoge.txt | sed 's/\t/"\t"/g' | sed 's/"\t"/","/g' | sed 's/^/"/g' | sed 's/$/"/g'
> data.csv
出来上がったcsvファイルはこんな感じ
"Name","small__c","max__c","SizeName__c"
"Rec01","1","99","小企業"
"Rec02","100","999","中企業"
"Rec03","1000","99999999","大企業"
VSCodeでメタデータ作成
- VSCodeの「ターミナル」からコマンド実行するとレコードのデータが作成されます
% sf cmdt generate records --csv /path/to/data.csv --type-name CustomerSizeAssign
› Warning: @salesforce/cli update available from 2.61.8 to 2.70.7.
Created custom metadata type records from './data.csv' at 'force-app/main/default/customMetadata'.
%
組織にアップロード
あとは組織にあげて完了。
先頭の項目が同じ場合は更新されます。
- 作成されたファイル(今回は3つ)を選択
- 「組織にアップロード」からアップロード
これでカスタムメタデータにレコードが追加されます。
一括追加や一括更新には便利ですので活用してみてください。