M365関連 技術

C#のGraphAPI経由で取得したURL列の扱いについて

GraphAPIを使用してSharePointのURL列を取得した際に値が取れずに四苦八苦したのでメモとして残します
以前、C#でGraphAPI経由でSharePointのURL列の作成及び更新ができないと書きましたが、取得は問題なくできました

関連記事
https://nasuton.net/blog/cannot-_graphapi_sharepoint/
https://nasuton.net/blog/cannot-_graphapi_sharepoint/

続きを読む

バージョン
OSWIndows 11 Pro
Microsoft.Graph5.56.0
Azure.Identity1.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製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...

サイトへ移動

-M365関連, 技術
-, ,