プログラマ38の日記

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

【Salesforce/Excel】直接オブジェクト一覧と項目一覧を取得するExcelマクロのバージョンをあげました(APIver41)

Salesforceのバージョンアップに伴い、オブジェクト一覧と項目一覧(子リレーション一覧も含む)のバージョンを上げました。

 

ダウンロードはこちらからです。

 

以前のバージョンはこちらです。

crmprogrammer38.hatenablog.com

 

 

SOAPENVELOPEのXMLを直接操作しているので、プログラムの変更は不要でした。

出力している項目は次の通りです。

 

[オブジェクト一覧]  Salesforceヘルプからの引用です。

# 名前 説明
1 name オブジェクトの名前。
2 label 適用される場合は、ユーザインターフェースで名前が変更されたタブまたは項目のラベルテキスト。変更されていない場合はオブジェクト名。たとえば、医療分野の組織では「取引先」を Patient に変更する場合があります。タブや項目は Salesforce ユーザインターフェースで名前を変更できます。詳細は、Salesforce オンラインヘルプを参照してください。
3 keyPrefix オブジェクト ID の 3 文字のプレフィックスコード。オブジェクト ID はオブジェクト型を示す 3 文字のコードが先頭に付けられます。たとえば、Account オブジェクトのプレフィックスは 001、Opportunity オブジェクトのプレフィックスは 006 です。主要なプレフィックスを複数のオブジェクトで共有する場合があるため、必ずしもオブジェクトを一意に識別するわけではありません。
子に 1 つ以上の親オブジェクトが存在する場合 (多態的な場合)、親のオブジェクト種別を確認するためにこの項目の値を使用します。たとえば、Task または Event の親の keyPrefix 値を取得しなければならない場合にこの値を使用します。
4 labelPlural オブジェクト名の複数形を表すラベルテキストです。
5 layoutable オブジェクトが describeLayout() コールをサポートしているか (true)、否か (false) を示します。
6 mruEnabled 最後に使用 (MRU) リスト機能がオブジェクトで有効か (true)、否か (false) を示します。
7 triggerable オブジェクトが Apex トリガをサポートしているかどうかを示します。
8 activateable 将来の使用のために予約されています。
9 custom カスタムオブジェクトであるかどうかを示します (カスタムオブジェクトの場合は true、そうでない場合は false)。
10 customSetting カスタム設定項目であるか (true)、否か (false) を示します。
11 feedEnabled オブジェクトで Chatter 項目が有効か (true)、否か (false) を示します。このプロパティは、API バージョン 19.0 以降で使用できます。
12 mergeable オブジェクトが同じ型の他のオブジェクトとマージ可能か (true)、否か (false) を示します。リード、取引先責任者、取引先については true となります。
13 searchable オブジェクトが search() コールで検索可能か (true)、否か (false) を示します。
14 retrieveable オブジェクトが retrieve() コールで取得可能か (true)、否か (false) を示します。
15 replicateable オブジェクトを getUpdated() および getDeleted() コールで複製可能か (true)、否か (false) を示します。
16 queryable オブジェクトが query() コールでクエリ可能か (true)、否か (false) を示します。
17 createable オブジェクトが create() コールで作成可能か (true)、否か (false) を示します。
18 updateable オブジェクトが update() コールで更新可能か (true)、否か (false) を示します。
19 deletable オブジェクトが delete() コールで削除できるか (true)、否か (false) を示します。
20 undeletable オブジェクトが undelete() コールで復元可能か (true)、否か (false) を示します。

 

[項目一覧] Salesforceヘルプ(Fieldの箇所)からの引用です。

# 名前 説明
1 name create()、delete()、query() など、API コールで使用される項目名。
2 label Salesforce ユーザインターフェースの項目の隣に表示されるテキストラベル。このラベルはローカライズが可能です。
3 type 設定可能な値のリストは、「FieldType」を参照してください。
4 length 文字列項目において、Unicode 文字での最大サイズを指定 (バイトではないことに注意)。
5 byteLength 可変長項目 (バイナリ項目も含む) の最大サイズをバイトで指定。
6 precision 倍精度浮動小数点数型の項目で使用します。小数点の右側と左側の両方をあわせた (ただし小数点自体は含まない)、格納可能な最大桁数を示します。
7 scale 倍精度浮動小数点数型の項目で使用します。小数点の右側の最大桁数です。API は小数点の右側の余分な桁は通知することなく切り捨てます。ただし、小数点の左側の桁数が多すぎる場合は、エラーのレスポンスを返します。
8   選択リストのラベル名(カンマ区切り)
9 picklistValues 選択リストのAPI名(カンマ区切り)
10 defaultValue デフォルト値
11 defaultValueFormula 数式が使用されていない場合に、この値に指定されるデフォルト値。値が指定されていない場合、この項目は返されません。
12 referenceTo 他のオブジェクトを参照する項目において、この配列は参照されるオブジェクトのオブジェクト種別を示します。
13 relationshipName 主従関係の項目の場合、リレーションの名前。
14 referenceTargetField 外部オブジェクトの間接参照関係にのみ適用されます。値が子外部オブジェクトの間接参照関係項目の値と照合される、親標準またはカスタムオブジェクトのカスタム項目の名前。この照合は、相互に関連するレコードを判別するために行われます。この項目は、API バージョン 32.0 以降で使用できます。
15   親オブジェクトが削除されると一緒に削除される場合true。
16   親オブジェクトが削除されるとエラーにする場合、true。
17 relationshipOrder 主従関係の項目の場合、リレーションの種類。有効な値は、次のとおりです。
0: 項目が主リレーションの場合
1: 項目がセカンダリリレーションの場合
18 restrictedPicklist 項目が制限付き選択リストであるか (true)、否か (false) を示します。
19 controllerName この選択リストの値を制御する項目の名前。type が picklist または multipicklist であり、dependentPicklist が true の場合のみ適用されます。「連動選択リストについて」を参照してください。制御項目から連動項目への対応付けは、この選択リストの各 PicklistEntry の validFor 属性に格納されます。「validFor」 を参照してください。
20 dependentPicklist 選択リストが連動選択リストであるかどうかを示します (利用可能な値が制御項目で選択された値に従う場合は true、そうでない場合は false)。「連動選択リストについて」を参照してください。
21 calculatedFormula この項目に指定された数式。数式が指定されていない場合、この項目は返されません。
22 calculated 項目がカスタム数式項目であるか (true)、否か (false) を示します。カスタム数式項目は常に参照のみです。
23 autonumber この項目が自動採番項目であるか (true)、否か (false) を示します。SQL の IDENTITY 型に似て、自動採番項目は参照のみ可能で、作成できない項目であり、最長 30 文字です。自動採番項目は参照のみの項目であり、内部オブジェクト ID に依存しない一意な ID を提供します (購入注文番号や請求書番号など)。自動採番項目は、全体的に Salesforce ユーザインターフェースで構成されています。API はこの属性へのアクセスを提供しているため、クライアントアプリケーションは指定された項目が自動採番項目かどうかを確認できます。
24 nillable 項目を空白にできるか (true)、否か (false) を示します。null 値が許可される項目は、中身を空にすることができます。null 値が許可されないオブジェクトでは、オブジェクトを作成して保存するには必ず値を設定する必要があります。
25 unique この項目が一意である必要があるかどうかを示します (一意である必要がある場合は true、そうでない場合は false)。
26 externalId この項目が外部IDであるかどうかを示します (外部IDである必要がある場合は true、そうでない場合は false)。
27 caseSensitive この項目が大文字と小文字を区別するかどうかを示します (区別する場合は true、しない場合は false)。
28 inlineHelpText この項目の項目レベルのヘルプでフロート表示テキストとして表示されるテキストです。
このプロパティは、オブジェクトの 1 つ以上の項目に値が含まれていないと返されません。少なくとも 1 つの項目に項目レベルのヘルプが存在する場合、オブジェクトのすべての項目がプロパティを項目レベルのヘルプの値で表示します。項目レベルのヘルプが空の項目では null 値となります。
29 compoundFieldName 複数項目をまとめて1つの項目となる場合、その項目のAPI
30 deprecatedAndHidden 将来の使用のために予約されています。
31 digits 整数型の項目で使用。最大桁数。整数値がこの桁数を超えた場合、API はエラーを返します。
32 displayLocationInDecimal ヘルプに説明無し。
33 extraTypeInfo 項目が textarea データ型の場合、テキストエリアがプレーンテキストか (plaintextarea)、リッチテキストか (richtextarea) を示します。
項目が url データ型の場合、この値が imageurl ならば、URL は画像ファイルを参照します。標準オブジェクトの標準項目でのみ使用できます (Account.photoUrl、Contact.photoUrl など)。
項目が reference データ型の場合、外部オブジェクトリレーションの種別を示します。外部オブジェクトでのみ使用できます。
null — 参照関係
externallookup — 外部参照関係
indirectlookup — 間接参照関係
34 highScaleNumber 項目詳細の指定内容に関係なく、項目に小数点以下 8 桁までの数値が保存されるか (true)、否か (false) を示します。価格が数分の 1 セントの大量の製品の通貨を処理するために使用されます。組織で、高スケールの単価設定が有効ではない場合、この項目は返されません。API バージョン 33.0 以降で使用できます。
35 htmlFormatted ハイパーリンクのカスタム数式項目などの項目が HTML のために形式化されており、HTML として表示するためのエンコーディングが必要かどうかを示します (必要な場合は true、必要でない場合は false)。カスタム数式項目の項目に IMAGE テキスト関数があるかどうかも示します。
36 encrypted このページは、従来の暗号化ではなく Shield プラットフォームの暗号化について書かれています。この違いについては、こちらをクリックしてください。
この項目が暗号化されているかどうかを示します。この値は、describeSObjects() コールの結果が true の場合にのみ結果に表示され、それ以外の場合は結果から除外されます。この項目は API バージョン 31.0 以降で使用できます。
37 mask 将来の使用のために予約されています。
38 maskType 将来の使用のために予約されています。
39 nameField 項目が名前項目であるか (true)、否か (false) を示します。標準オブジェクトの名前項目 (Account オブジェクトの AccountName など) やカスタムオブジェクトの名前項目を識別するために使用します。Contact オブジェクトなど、FirstName および LastName 項目が使用されている場合を除き、1 オブジェクトにつき 1 つに制限されます。
個人取引先の Name 項目などのように複合名が存在する場合、そのレコードの nameField は true に設定されます。複合名が存在しない場合、FirstNameおよび LastName ではこの項目が true に設定されます。
40 namePointing 項目の値が、このオブジェクトの親の Name であるか (true)、否か (false) を示します。親のオブジェクト種別が 2 つ以上ある可能性のあるオブジェクトで使用します。たとえば、ToDo は取引先と取引先責任者が親であることが考えられます。
41 idLookup upsert() コールのレコードの指定に項目を使用できるかどうかを指定します (指定できる場合は true、できない場合は false)。
42 custom 項目がカスタム項目であるか (true)、否か (false) を示します。
43 permissionable 項目に FieldPermissions を指定可能か (true)、否か (false) を示します。
44 searchPrefilterable 外部キーが SOSL WHERE 句で使用されたときに外部キーを事前絞り込みに組み込むか (true) 組み込まないか (false) を示します。事前絞り込みでは、完全な検索クエリを実行する前に特定の項目値で絞り込みを行います。API バージョン 40.0 以降で使用できます。
45 soapType 設定可能な値のリストは、「SOAPType」を参照してください。
46 writeRequiresMasterRead この項目は主従関係にのみ適用されます。ユーザが、子レコードの挿入、更新および削除を行う場合に親レコードに対して必要なのは、参照の共有アクセス権限であるのか (true)、編集の共有アクセス権限であるのか (false) を示します。いずれの場合も、ユーザは子オブジェクトに対しても、作成、編集および削除のオブジェクト権限が必要です。
47 defaultedOnCreate 作成時にこの項目がデフォルト設定されているか (true)、否か (false) を示します。true の場合、この項目の値が create() コールで渡されなくても、Salesforce は、オブジェクト作成時にこの項目の値を暗黙的に割り当てます。たとえば、Opportunity オブジェクトで、値が Stage 項目から取得されている、Probability 項目にはこの属性が指定されています。同様に、ほとんどのオブジェクトの Owner にはこの属性が設定されています。Owner 項目が特に指定されない限り、値は現在のユーザから取得されます。
48 polymorphicForeignKey 外部キーに複数のエンティティ種別が含まれるか (true)、否か (false) を示します。
49 queryByDistance ヘルプに説明無し。
50 sortable クエリでこの項目に基づいて並び替えができるか (true)、できないか (false)) を示します。
51 aggregatable クエリでこの項目に基づいて集計ができるか (true)、できないか (false)) を示します。
52 filterable 項目を除外できるか (true)、否か (false) を示します。true の場合、この項目を query() コールのクエリ文字列の WHERE 句で指定できます。
53 groupable 項目を SOQL クエリの GROUP BY 句に含めることができるかどうかを示します (できる場合は true、できない場合は false)。『Salesforce SOQL および SOSL リファレンス』の「GROUP BY」を参照してください。API バージョン 18.0 以降で利用できます。
54 createable 項目を作成できるか (true)、否か (false) を示します。true の場合、この項目値を create() コールで設定できます。
55 updateable 次のいずれかを示します。
項目を更新できるか (true)、否か (false)。
true の場合、この項目値を update() コールで設定できます。
項目がカスタムオブジェクトの主従関係項目である場合は、子レコードの親を別の親レコードに変更できるか (true)、否か (false) を示します。

 

最後に

マクロで表示している項目の説明を書きました。基本は、ヘルプをそのまま引用しているのですが、ヘルプに記載がなかったりしているものは、自分で補足しています。何かのお役に立てればうれしいです。

後、VBAでSOAPEnvelopeを操作しているので、APIのバージョンがあがってもタグの名前や階層が変わっていなければそのまま動作するのは楽だなーと思いました。