ライブラリがロードされていないため、このエラーが発生する可能性が高くsp.taxonomy.js
、その場合、分類フィールド値は「軽量」オブジェクトとして返されます ( SP.Taxonomy.TaxonomyFieldValueCollection オブジェクトタイプではありません)。
sp.taxonomy
オプション 1 (推奨):ライブラリを使用して複数の分類フィールド値を取得する
SP.Taxonomy
名前空間は、分類フィールド値を処理する標準的な方法だけでなく、JSOM を介して Managed Metadata API を操作する方法も提供する ため、まず、このアプローチをお勧めします。
次の例は、次の方法を示しています。
- sp.taxonomy.js ライブラリがロードされていることを確認します
- SP.Taxonomy.TaxonomyFieldValueCollectionオブジェクトを表す複数の分類フィールド値を
取得します
例:
SP.SOD.registerSod('sp.taxonomy.js', SP.Utilities.Utility.getLayoutsPageUrl('sp.taxonomy.js'));
SP.SOD.executeFunc('sp.taxonomy.js', 'SP.Taxonomy.TaxonomySession', function () {
var ctx = SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var item = list.getItemById(itemId);
ctx.load(item);
ctx.executeQueryAsync(
function(){
var fieldVal = item.get_item(fieldName);
for(var i = 0; i < fieldVal.get_count(); i++) {
var label = fieldVal.get_item(i).get_label();
var guid = fieldVal.get_item(i).get_termGuid();
//...
}
},
function(sender,args){
console.log(args.get_message());
});
});
オプション 2:ライブラリをロードせずに複数の分類フィールド値を取得する sp.taxonomy.js
sp.taxonomy
ライブラリがロードされていない場合でも、_Child_Items_
以下に示すように、プロパティを介して分類フィールドの値を取得できます。
var ctx = SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getByTitle(listTitle);
var item = list.getItemById(itemId);
ctx.load(item);
ctx.executeQueryAsync(
function(){
var fieldVal = item.get_item(fieldName)._Child_Items_;
for(var i = 0; i < fieldVal.length; i++) {
var label = fieldVal[i].Label;
var guid = fieldVal[i].TermGuid;
//...
}
},
function(sender,args){
console.log(args.get_message());
});