GraphAPIを使用してSharePointのURL列を取得した際に値が取れずに四苦八苦したのでメモとして残します
以前、C#でGraphAPI経由でSharePointのURL列の作成及び更新ができないと書きましたが、取得は問題なくできました
-
https://nasuton.net/blog/cannot-_graphapi_sharepoint/
続きを読む
バージョン | |
---|---|
OS | WIndows 11 Pro |
Microsoft.Graph | 5.56.0 |
Azure.Identity | 1.11.3 |
リストアイテムを取得する
とりあえず、列情報を保持した状態でにリストアイテムを取得します
var listItems = client.Sites[siteInfo.Id].Lists[listDisplayName].Items.GetAsync((requestConfiguration) =>
{
// リストアイテムのフィールド情報を取得するためにExpandを指定
requestConfiguration.QueryParameters.Expand = new string[] { "fields" };
}).Result;
URL列の情報を取得する
URL列の情報を取得するには以下の手順が必要です。最初の一行目まではいつも通りの手順ですが、それ以降のデータ取得までが曲者となっています
var listItems = m365Helper.GetListItems(siteInfo.Id, listName);
foreach (var item in listItems.Value)
{
Microsoft.Kiota.Abstractions.Serialization.UntypedObject articleUrl = (Microsoft.Kiota.Abstractions.Serialization.UntypedObject)item.Fields.AdditionalData["URLcolumns"];
var properties = articleUrl.GetValue();
// Url情報を取得
var urlProperty = KiotaJsonSerializer.SerializeAsString(properties["Url"]).Replace("\"", "");
// Description情報の取得
var descriptionProperty = KiotaJsonSerializer.SerializeAsString(properties["Description"]).Replace("\"", "");
Console.WriteLine($"{descriptionProperty} : {urlProperty}");
}
これで実際にURL列の情報が取得できました。ただ、URL列を含む更新や作成はできないので注意してください
ちなみに
Pythonだと以下のように取得できます。言語の違いによるものですが、こちらの方が簡単に取得できます
list_items = await graph_client.sites.by_site_id(site_id).lists.by_list_id(list_displayname).items.get(request_configuration = request_configuration)
# URL列のURL情報を取得
list_items[0].fields.additional_data.get("ArticleURL").get("Url")
会社紹介
私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています
会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造
この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています
ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します
-
アドバンスド・ソリューション株式会社
アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...
サイトへ移動