マイクロソフトグラフSDKを使用して、ピープルルックアップフィールドでSharePointリスト項目を作成します
7360 ワード
出発点
コストを管理するために、以下の列を持つ簡単なSharePointリストを持っていると仮定します.
列名
カラムタイプ
タイトル
テキストの1行
量
通貨
従業員
人物
今、我々は我々のCけんかアプリケーションから経費リストの項目を作成したいと思います.ありがたいことに、マイクロソフトグラフはendpointを実行します.
POST https://graph.microsoft.com/v1.0/sites/{site-id}/lists/{list-id}/items
それで、我々はいくつかのSharePoint APIとマイクロソフトのグラフSDKを活用して回避する必要はありません.問題
経費リスト項目のJSON表現を見てみましょう.
{
"id": "2",
"fields": {
"Title": "Flight to Zurich",
"Amount": 125.6,
"EmployeeLookupId": 13
}
}
従業員フィールドは、ユーザープリンシパル名でもアズール広告オブジェクトでもありません.代わりに、SharePointは、サイトからサイトとは異なるユーザー参照を格納するために、隠しルックアップリストを使用します.では、ユーザの実際のルックアップIDをどうやって得るのですか?
解決策
マイクロソフトグラフとの方法があります.少し奇妙な、正直であるが、少なくとも我々はSharePoint APIを使用する必要はありませんし、我々のグラフのバブルの中にとどまる.
まず、隠しユーザのルックアップリストのIDを取得しなければなりません.
var hiddenUserListId = (await _graph
.Sites["<siteid>"]
.Lists
.Request()
.Filter("displayName eq 'User Information List'")
.GetAsync())[0].Id;
次に、まだ持っていない場合は、ユーザのプリンシパル名を取得しなければなりません.var userName = (await _graph
.Users[userId]
.Request()
.Select("userPrincipalName")
.GetAsync()).UserPrincipalName;
ユーザのプリンシパル名を手にすると、ルックアップIDを問い合わせることができます.var userLookupId = (await _graph
.Sites["<siteid>"]
.Lists[hiddenUserListId]
.Items
.Request()
.Header("Prefer", "HonorNonIndexedQueriesWarningMayFailRandomly")
.Filter($"fields/UserName eq '{userName}'")
.GetAsync())[0].Id;
prefer
のHonorNonIndexedQueriesWarningMayFailRandomly
ヘッダは、インデックスなしの列を問い合わせるのに必要です.そして最後に、新しい経費リスト項目を作成できます.
var expenseItem = new ListItem
{
Fields = new FieldValueSet
{
AdditionalData = new Dictionary<string, object>
{
{"Title", "Train to Zurich"},
{"Amount", 23.2},
{"EmployeeLookupId", userLookupId}
}
}
};
await _graph
.Sites["<siteid>"]
.Lists["Expenses"]
.Items
.Request()
.AddAsync(expenseItem);
別のオプションがある場合は、人々の列またはユーザーの参照を保存するには、よりクリーンな方法は、ルックアップIDを取得するには、コメントを知っている!Reference
この問題について(マイクロソフトグラフSDKを使用して、ピープルルックアップフィールドでSharePointリスト項目を作成します), 我々は、より多くの情報をここで見つけました https://dev.to/manuelsidler/create-a-sharepoint-list-item-with-a-people-lookup-field-using-microsoft-graph-sdk-4adテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol