既存のコレクションにキーで紐づけたデータを追加したい場合にだいぶ手こずったため、こちらにまとめます。
今回は下記2つのコレクションを一から作成し、IDをキーに2つのコレクションを結合し、1つの新しいコレクションを作成します。
※実際はコレクションを一から書くことはなく、データソースから読み取ることが多いと思いますが、練習のため一から作成しています。
Apps
ClearCollect(Arashi_Name,
{ID: "0001", Name: "Ohno Satoshi"},
{ID: "0002", Name: "Sakurai Sho"},
{ID: "0003", Name: "Aiba Masaki"},
{ID: "0004", Name: "Ninomiya Kazunari"},
{ID: "0005", Name: "Matsumoto Jun"}
);
ClearCollect(Arashi_Color,
{ID: "0001", Color: Blue},
{ID: "0002", Color: Red},
{ID: "0003", Color: Green},
{ID: "0004", Color: Yellow},
{ID: "0005", Color: Purple}
);
Apps
//Arashi_NameコレクションにColor列を追加します
//既存のコレクションには追加できないため、新たなコレクションを作成します
ClearCollect(Arashi,
AddColumns(Arashi_Name,"Color",LookUp(Arashi_Color,ID=Arashi_Name[@ID],Color)))
先ほどと同じようにに下記の2つのコレクションを使用します。
Apps
ClearCollect(Arashi_Name,
{ID:"0001",Name:"Ohno Satoshi"},
{ID:"0002",Name:"Sakurai Sho"},
{ID:"0003",Name:"Aiba Masaki"},
{ID:"0004",Name:"Ninomiya Kazunari"},
{ID:"0005",Name:"Matsumoto Jun"}
);
ClearCollect(Arashi3,
{ID:"0001",Color:"Blue",Birthplace:"Tokyo",BloodType:"A"},
{ID:"0002",Color:"Red",Birthplace:"Tokyo",BloodType:"A"},{ID:"0003",Color:"Green",Birthplace:"Chiba",BloodType:"AB"},{ID:"0004",Color:"Yellow",Birthplace:"Tokyo",BloodType:"A"},{ID:"0005",Color:"Purple",Birthplace:"Tokyo",BloodType:"A"}
);
Arashi_NameコレクションにArashi3コレクションの全列を追加する新しいコレクションを作成します。
Apps
ClearCollect(
Arashi,
Ungroup(
DropColumns(
AddColumns(
Arashi3,
"myGroupedColumn",
Filter(
Arashi_Name,
ID = Arashi3[@ID]
)
),
"ID"
),
"myGroupedColumn"
)
);
入れ子になっているので、ばらして説明します。
まず中のAddColumns関数ですが、コレクションに1列追加しています。今回はArashi3コレクションのすべてのデータを1列として扱っています。
DropColumns関数を利用しているのは、キーになっているID列が重複するため、ID列を削除しています。
Ungroupで1列で放り込んだデータをばらしています。
注意
Ungroupする時に先ほど削除したID列が残っている場合、列名が重複するためエラーが発生し、Ungroupできなくなります。SharePointリストのデータを全部使用し、すべてのデータを別のSharePointリストのデータに追加しようとすると同じ列名があるため結合できないとエラーが発生します。これはなぜかというと、SharePointリストには非表示になっている既存の列が存在するためです。
そのため、SharePointリストのデータとSharePointリストのデータを結合する場合はすべての列を結合をするは使用できないため、必要な列のみそれぞれ追加する方がベストです。
Apps
ClearCollect(Arashi, AddColumns(Arashi3,"Color",LookUp(Arashi3,ID=Arashi_Name[@ID],Color,"BloodType",LookUp(Arashi3,ID=Arashi_Name[@ID],BloodType)))