ブログ

REST APIを使用してSharePointリストを操作する方法

REST APIを使用してSharePointリストを操作する方法

Microsoft 365で提供されているサービスであるSharePointは、情報共有や共同作業のためのポータルサイトを作成する機能があります。
標準でも豊富な種類のWebパーツが用意されていますが、利用者が求める機能を標準機能だけでは実現できない場合があります。標準機能にはない外観や機能を実現するには、「SharePoint Framework」を利用してWebパーツを開発する必要があります。Webパーツ開発のための基幹技術として「REST API」というものがあり、SharePointのREST APIを使いこなすことができればサイトやリストの操作が可能になります。
弊社が開発した「ezポータルパーツ」も、SharePointが提供するREST APIを利用することでSharePointから様々な情報の取得やサイトの操作を行っています。
本記事では、Webパーツの開発に使用しているREST APIについての説明と、SharePointのRESTエンドポイントの紹介、SharePointリストへのCRUD操作について解説します。また、弊社のezポータルパーツ開発の際には事前にREST APIの調査を行っていますが、その際によく利用するREST APIや調査の際に利用しているツールについても紹介します。

RESTとは?

そもそもRESTとは

REST(REpresentational State Transfer)は、HTTPプロトコル作成者の一人であるロイ・フィールディング(Roy Fielding)氏によって2000年頃に提唱されたもので、分散システムにおいて複数のソフトウェアを連携させるのに適したWebサービスの設計思想のことです。
RESTなWebサービスは、そのサービスのURIにHTTPメソッドでアクセスすることでデータの送受信を行います。

RESTの4原則

RESTには設計の原則として以下の4原則があります。これらの原則を満たすものを「RESTfulなシステム」といい、これらの原則に則ったAPIのことをREST APIといいます。

統一インターフェース

あらかじめ定義された方法でデータのやり取りを行うことです。Webでは「GET、POST、PUT、DELETEなどのHTTPメソッドでやりとりする」というインターフェースの統一が図られているため、サービスが利用しやすくなっています。

統一インターフェース

アドレス可能性

サーバーの全てのリソースが一意なURI(識別子)を持っていること、提供する情報をURIで表現することができることです。
URI(Uniformed Resource Identifier)はWebの場合は通常URLで与えられます。

アドレス可能性

ステートレス性

RESTでは、「やり取りが1回ごとに完結する」ということです。
システムが現在の状態を表すデータなどを保持せず、入力の内容によってのみ出力が決定されます。同じ入力に対する出力は常に同じになります(べき等性)。ステートレスの反意語として「ステートフル」があります。

ステートレス性

接続性

やり取りされる情報には別の情報への参照(ハイパーリンク)を含めることができます。

接続性

SharePoint RESTエンドポイント

SharePointリソースにアクセスするためのREST URLの作成

SharePoint で提供される Representational State Transfer (REST) を使用すると、基本的な作成、読み取り、更新、削除 (CRUD) の操作を実行できます。SharePointリソースにアクセスするには、ODataプロトコルを利用してREST対応のHTTPリクエストを作成する必要があります。

SharePoint RESTエンドポイントの例

SharePointのREST エンドポイントの例には以下のようなものがあります。
※REST URL を作成するには、表に示される URL エンドポイントの先頭に 【SharePointサイトURL】/_api/をつける

SharePoint RESTエンドポイントの例

RESTを使用してSharePoint リストを操作する方法

前項で記載したSharePoint RESTエンドポイントを使用してリストの操作をします。
本記事では、弊社がWebパーツを開発する際、実際に使用しているWebパーツである「SharePoint Framework API Tester」を使用してSharePointリストへの操作を行います。このWebパーツはGitHubで公開されています。

※引用元:GitHub launch

このページから「estruyf-rest-api-tester.sppkg」のパッケージをダウンロードしてサイトに展開すると使用できるようになります。
Webパーツをサイトに展開する手順については以下をご参照ください。

※参考元:Microsoft公式| Web パーツの SharePoint ページへの展開 launch

RESTを使用してSharePoint リストを操作する方法

SharePointリストのアイテムを作成する(Create)

作成したばかりのSharePointリストに任意の列を追加し、REST APIによりアイテムを作成してみます。
(ここでは「Content」と「Memo」の列を1行テキストで追加しました。)

SharePointリストのアイテムを作成する(Create)

———————————————————————————————————————————————————————————————————————

対象のリスト名は「REST API Test」、新規アイテムの作成なのでPOSTメソッドを使用します。

REST URLは次のようになります。
【SharePointサイトのURL】/_api/web/lists/getByTitle(‘REST API Test’)/items

また、新規アイテムの内容を「Request body」にオブジェクト形式で入力します。
この例では次のように入力します。

{
“Title”: “新規アイテム1”,
“Content”: “Create”,
“Memo”: “新規作成しました”
}

「Run query」を選択します。

SharePointリストのアイテムを作成する(Create)

———————————————————————————————————————————————————————————————————————

作成が成功すると以下の画面が表示されます。
対象のリストを参照して、新しいアイテムが作成されていることを確認します。

SharePointリストのアイテムを作成する(Create)

SharePointリストのアイテムを作成する(Create)

SharePointリストのアイテムを取得する(Read)

SharePointリストのアイテムを取得します。アイテムの取得なのでGETメソッドを使用します。

REST URLは次のようになります。
【SharePointサイトのURL】/_api/web/lists/getByTitle(‘REST API Test’)/items

SharePointリストのアイテムを取得する(Read)

———————————————————————————————————————————————————————————————————————

アイテムの取得が成功すると以下の画面が表示されます。

SharePointリストのアイテムを取得する(Read)

———————————————————————————————————————————————————————————————————————

クエリオプションを使用することで取得するアイテムの内容を加工するが可能です。

(例)
※取得する列をタイトル列のみに絞り込む場合のURL
  【SharePointサイトのURL】/_api/web/lists/getByTitle(‘REST API Test’)/items?$select=Title

※タイトル列が「新規アイテム1」であるアイテムを取得したい場合のURL
  【SharePointサイトのURL】/_api/web/lists/getByTitle(‘REST API Test’)/items?$filter=Title eq ‘新規アイテム1’

※Id列で昇順にアイテムを取得したい場合のURL
【SharePointサイトのURL】/_api/web/lists/getByTitle(‘REST API Test’)/items?$orderby=Id asc

SharePointリストのアイテムを更新する(Update)

SharePointリストのアイテムを更新します。更新前のリストは以下とします。

SharePointリストのアイテムを更新する(Update)

———————————————————————————————————————————————————————————————————————

アイテムの更新なのでRESTの設計に従うならPUTメソッドを使用したいのですが、SharePointリストはPUTメソッドをサポートしていないため、POSTメソッドを使用します。SharePointリストはID列でオブジェクトの一意性を確保しているので、アイテムの指定にIDを利用します。この例では、ID列が1であるアイテムを更新するのでURLの末尾を「items(1)」とします。

REST URLは次のようになります。
【SharePointサイトのURL】/_api/web/lists/getByTitle(‘REST API Test’)/items(1)

次に更新の内容を「Request body」にオブジェクト形式で入力します。

{
“Title”: “新規アイテム1を更新”,
“Content”: “Update”,
“Memo”: “更新しました”
}

SharePointリストのアイテムを更新する(Update)

———————————————————————————————————————————————————————————————————————

続いて、「Request headers」を選択して「Request headers」に値を入力します。
「X-HTTP-Method」の値に「MERGE」、「If-Match」の値に「*」を入力します。
「X-HTTP-Method」は、POSTメソッドを指定しますがサーバー側の処理としては「MERGE」メソッドとして実行してもらうために使用します。
「If-Match」はアイテムを複数のユーザーが同時に操作しようとした場合に、不整合が起こらないように管理するための値です。
今回は同時操作を考慮しないのでこの値に「*」を入力します。これでアイテムを更新できるようになります。

以下の画面のようになったら「Run query」を選択します。

SharePointリストのアイテムを更新する(Update)

———————————————————————————————————————————————————————————————————————

対象のリストを参照して正しく更新されていることを確認します。

SharePointリストのアイテムを更新する(Update)

SharePointリストのアイテムを削除する(Delete)

SharePointリストのアイテムを削除します。削除前のリストは以下とします。

SharePointリストのアイテムを削除する(Delete)

———————————————————————————————————————————————————————————————————————

アイテムの削除なのでDELETEメソッドを使用します。この例では、「Id」列が3であるアイテムを削除するのでURLの末尾を「items(3)」とします。

REST URLは次のようになります。
【SharePointサイトのURL】/_api/web/lists/getByTitle(‘REST API Test’)/items(3)

続いて、「Request headers」を選択して「Request headers」に値を入力します。
「If-Match」の値に「*」を入力します。
以下の画面のようになったら「Run query」を選択します。

SharePointリストのアイテムを削除する(Delete)

———————————————————————————————————————————————————————————————————————

対象のリストを参照して正しく削除されていることを確認します。

SharePointリストのアイテムを削除する(Delete)

まとめ

本記事では、基本的なRESTの概念とSharePoint RESTサービスを使用してリストを操作する方法について解説しました。
弊社が開発した「ezポータルパーツ」も、今回のようにSharePointが提供するREST APIを利用することで、SharePointから様々な情報の取得やサイトの操作を行っています。
また、REST APIは、Webやアプリケーション開発において欠かせない概念です。興味を持った方はその概念が生まれた経緯についても調べてみてください。

ez officeの関連サービス

どんな些細なことでも、お気軽にご質問・ご相談ください。

お問い合わせ

一覧に戻る

資料一覧
ez officeの各サービスについての資料をダウンロードいただけます。