プログラマ38の日記

主にプログラムメモです。

【Salesforce/Excel】直接オブジェクト一覧とオブジェクト項目一覧を取得できるExcelマクロを作成しました

Apexでプログラムを書いたりする時に、オブジェクトの一覧やオブジェクトの項目一覧が欲しいなという時があります。

 

特に、内部のオブジェクトはヘルプで調べたりしないといけなくて不便を感じます。そんな時に使える(と自分では思っている)Excelマクロを作りました。

 

ダウンロードはこちらからになります。

 

機能としては

  • オブジェクトの一覧を表示
  • オブジェクト項目の一覧と子リレーションの一覧を表示

の2つで、それぞれ直接salesforceから一覧を取得します。

 

オブジェクトの一覧を表示

マクロの操作感は次の通りです。(前回のカスタム項目作成マクロと同じです)

Salesforceの接続情報を指定
②通信設定を指定
③Sobject一覧取得ボタンをクリック

f:id:crmprogrammer38:20170929204213p:plain

そうするとオブジェクトの一覧が表示されます。

SOAP APIのdescribeの情報のため、ログインしたユーザが参照できるオブジェクトに限定されますのでご注意ください。

 

KeyPrefixやその他内部のフラグ情報を取得できます。APIでレコードが新規作成可能なのかなど調べることができると思います。

 

オブジェクト項目の一覧を表示

オブジェクト一覧で取得したオブジェクトのAPI名がリンクとなっていて、そのリンクをクリックするとそのオブジェクトの項目一覧が別シートで追加されます。

f:id:crmprogrammer38:20170929205201p:plain
リンクをクリックすると、シートが追加されて項目一覧が表示されます。

f:id:crmprogrammer38:20170929205301p:plain

桁数が不明な項目も内部では桁数を持っていますので確認が可能です。

こちらも、SOAP APIのdescribeの情報のため、ログインしたユーザが参照できる項目に限定されます。

特にシステム管理者では、「すべてのオブジェクトを参照する」にチェックがされているので、オブジェクト一覧は全て見えますが、項目レベルセキュリティが外れている場合があるのでご注意ください。

工夫した点が1つあって、選択リスト値をlabelとvalueでそれぞれ出しわけをしています。

 

子リレーションの一覧は項目一覧の下に表示しています。

f:id:crmprogrammer38:20171002203903p:plain


子リレーション名(relationshipName)は、SOQLで子オブジェクトを取得する時に使用します。

あと、このオブジェクトがどこから参照されているかが一覧で表示できるので、リレーションがよくわからない時にリレーションを把握する時に便利だと思います。

 

最後に

VBAの中でSOAPEnvelopeのテキストを操作しているのですが、JavaC#などの、WSDLをコードに展開する仕組みの有難さをあらためて痛感しました。

VBAでも前はあったと思ったのですが、見つけられませんでした。今はなくなったのかな。

 

それと、Excelで結果を保存できるのは素直に便利だなと思いました。色々メモ書きもできるし、フィルタや数式など基本機能も利用できます。

ExcelVBAの組み合わせはファイルサイズが小さくて済むので、持ち運びも楽です。

欠点があって、マクロなのでセキュリティ設定のハードルが高いということになります。環境によっては実行できないと思いますし。。

 

私はJavaプログラマなのですが、VBAの例外処理の仕方や関数の書き方など違和感だらけでした。

なかなか思い通りに動かないところとかも含めてあらためてVBAでもっと作れるようになりたいなーと感じました。