以前SコントロールでSalesforce組織内のオブジェクト情報を 調査するツールを作成し社内で公開していたのですが、 最近読み込むjavascriptライブラリのバージョンを16.0から17.0に変更したら動かなくなったとの報告が。
調べてみたところ、どうやらsforce.connection.describeGlobal()の結果がいままでのバージョンと変わっている様子。
いままでは
(function() {
var result = sforce.connection.describeGlobal();
var types = result.types; //各オブジェクトAPI参照名の配列
for (var i = 0; i < types.length; i++) {
var sobjectName = types[i];
console.log(sobjectName);
}
})();
で各オブジェクトのAPI参照名のみしか取得できませんでしたが、
Version17.0では
(function() {
var result = sforce.connection.describeGlobal();
var sobjects = result.sobjects; //各オブジェクト情報の配列
for (var i = 0; i < sobjects.length; i++) {
var sobjectInfo = sobjects[i];
console.log(sobjectInfo);
}
})();
でより詳しい情報が取得できるようになりました。ここでsobjectInfoから取得できるプロパティは、
activateable
createable
custom
customSetting
deletable
deprecatedAndHidden
keyPrefix
label
labelPlural
layoutable
mergeable
name
queryable
replicateable
retrieveable
searchable
triggerable
undeletable
updateable
でした。
このバージョンアップにより、オブジェクト一覧を表示したい時に API参照名ではなくラベルを表示できるようになりました。
connection.describeSObjectsをしなくても権限やラベルを取得できるようになったのはありがたいですね。
