Mark Hammer's Blog

SalesforceやTrailheadに関する情報を投稿しているブログです。

カスタム項目の作成日をまとめて取得したい

今回は、会社で依頼された「特定オブジェクトにあるカスタム項目の作成日を一覧化してほしい」という要望について手順を追って記載いたします。

f:id:mark-hammer:20210201013401p:plain
黄色線の部分を各項目ごとに取得したい

全体の手順

  • 開発者コンソールを起動し、CustomFieldオブジェクトからSOQLにて項目作成日を取得
  • 開発者コンソールのSOQL結果をコピーし、Excelに表形式で貼り付け
  • 必要に応じて、貼り付けた結果をExcel上で加工

手順詳細

CustomFieldオブジェクトから項目作成日を取得

CustomField オブジェクトに対し、以下SOQLを発行します。

標準オブジェクトの場合
  • Lightning Experience の場合はオブジェクトマネージャから対象オブジェクトのAPI参照名を取得する。
  • Salesforce Classic の場合は設定|カスタマイズ|(オブジェクト)から対象オブジェクトを選択し、URLから対象オブジェクトのAPI参照名を取得する。 -- 例: Salesforce Classic で商談オブジェクトを選択した場合、URL https://XXX.salesforce.com/ui/setup/Setup?setupid=OpportunityOpportunity の部分
  • 取得したAPI参照名を使用し、開発者コンソールで以下SOQLを実行する。この時、[Use Tooling API]にチェックを入れてから[Execute]をクリックする。

例:商談(Opportunity)の場合

SELECT TableEnumOrId, DeveloperName, CreatedDate, LastModifiedDate 
FROM CustomField 
WHERE TableEnumOrId = 'Opportunity'

f:id:mark-hammer:20210129010351p:plain
実行後の開発者コンソールキャプチャ

カスタムオブジェクトの場合
  • Lightning Experience の場合はオブジェクトマネージャ、Salesforce Classic の場合は設定|作成|オブジェクトから対象オブジェクトを選択し、URLからカスタムオブジェクトIDを取得する。
    • 例1: Lightning Experience の場合、URL https://XXX.lightning.force.com/lightning/setup/ObjectManager/01IxxXXXXXxxxxx/Details/view01IxxXXXXXxxxxx の部分
    • 例2: Salesforce Classic の場合、URL https://XXX.salesforce.com/01IxxXXXXXxxxxx?setupid=CustomObjects01IxxXXXXXxxxxx の部分
  • 取得したカスタムオブジェクトIDを使用し、開発者コンソールで以下SOQLを実行する。
SELECT TableEnumOrId, DeveloperName, CreatedDate, LastModifiedDate 
FROM CustomField 
WHERE TableEnumOrId = '01IxxXXXXXxxxxx'

f:id:mark-hammer:20210129010421p:plain
実行後の開発者コンソールキャプチャ

開発者コンソールの結果をExcelにコピー

残念ながら、開発者コンソールにはSOQLの結果をCSV等にエクスポートする機能がありません。
そこで、Chromeデベロッパーツールを使ってSOQLの結果をExcelに貼り付けます。

  • F12キーを押してChromeデベロッパーツールを開く
    • この時、別タブの結果を取得しないよう開発者コンソールのタブは1つにすることが望ましい。

f:id:mark-hammer:20210201012653p:plain
Chromeデベロッパーツールを開く

  • Ctrl+F キーを押して検索窓を開き、 grid-table と入力する

f:id:mark-hammer:20210201012822p:plain
検索窓に"grid-table"を入力

  • grid-table 検索結果のうち一番上の行を右クリックし、 Copy -> Copy Element をクリック

f:id:mark-hammer:20210201012734p:plain
Copy Elementを選択

  • Excelを起動し、適当なセルに貼り付ける
    • この時の注意事項は以下の通りです。
      • ヘッダがないため、必要であれば手作業で追加してください。
      • カスタム項目名はAPI参照名から __c がないものになっています。必要に応じて追加してください。
      • 日付/時間はUTC基準です。日本時間に直したい場合は9時間追加する必要があります。
        Excel数式だと =DATEVALUE(MIDB(<元データのセル>,1,10))+TIMEVALUE(MIDB(<元データのセル>,12,8))+TIME(9,0,0) とすれば修正できます。

f:id:mark-hammer:20210201012839p:plain
Excelに貼り付け

f:id:mark-hammer:20210201012850p:plain
Excelに貼り付けた内容を加工

おわりに

開発者コンソールでSOQL取得するまでは想定通りでしたが、そこからの加工が思っていたより大変でした。
開発者コンソールのクエリエディタにエクスポート機能を付けるIdeaExchangeもありますが、ぜひ実装いただきたいと思った一件でした。

trailblazer.salesforce.com

Appendix

今回参考にしたリソース一覧です。

salesforce.stackexchange.com

developer.salesforce.com

www.youtube.com

a1-style.net