はじめに
SharePointのポータルサイトを構築している時に多用するRESTをメモ帳を兼ねて記述しています。
ヘッダ記述すればFlowでも使えます。
(REST-APIは、URL欄に直接入れて叩くとxmlで返ってくるのですが可読性に難があるので、
ヘッダの記述でJSONでレスポンス返すようにリクエストを送っています。)
*6/19追記:コピペする時に、リスト内容取得のところのコードが変になってたのを修正(ごめんなさい)&表示名か内部名かを追記。
6/20追記:別パターンのコード追加。
6/22追記:ヘッダについての追記と、具体的なJSON記述法を追記。
どんな時に使うのか
私は大抵Flowと組み合わせて使っています。(Flowの汎用性向上目的で、リスト名などを変数として置くため)
HTTPリクエスト⇒レスポンスのbodyをJSON解析⇒変数に置く⇒適宜使用。
変数に置いた後どう使えばいいかは、ほかの方の記事ですがMicrosoft Flow で SharePoint のリストアイテムを HTTP要求(REST)で更新するあたり参考になりますので、組み合わせて使ってください。
ヘッダ部分
※Flowで使う時は["]を取って下さい。
GETの時
Accept : "application/json;odata=verbose"
Content-Type : "application/json;odata=verbose"
※そのままだとXML形式で返ってきて可読性に難があるので、
「JSONで返してね」という内容です。
POSTの時
GETの時のヘッダにプラスして
X-HTTP-Method : "MERGE"
IF-MATCH : "*"
※POST要求の時、クエリでフィルターするだけなら上記のヘッダはいらないです。
POSTでアイテム更新する場合は、上記のヘッダにプラスして
リストアイテムのエンティティ型の内部名"ListItemEntityTypeFullName"が必要です。
("ListItemEntityTypeFullName"の取り方は後述します)
サイト(サイトコレクション)の情報を取得
https://[サイトアドレス]/_api/web/
何に使う?⇒サイトの相対パス"ServerRelativeURL"を取得するため。(変数に置き換えてテンプレ化するのに使う)
GETメソッドで上記の「サイト情報取得」を使用してHTTPレスポンスを得た後、
「データ操作」⇒「JSONの解析」アクションを選ぶ。
コンテンツに「サイト情報取得」の本文を選び、下記スキーマを記述。
{"type": "object",
"properties": {
"d": {
"type": "object",
"properties": {
"ServerRelativeURL": {
"type": "string"
}
}
}
}
}
リストの内容取得
https://[サイトアドレス]/_api/web/GetList('[サイトコレクションの相対パス]/Lists/[リスト内部名]')
or
https://[サイトアドレス]/_api/web/lists/getbytitle('[リスト表示名]')
何に使う?⇒リストのGUID"Id"や、リストタイトル"Title"、リストアイテムのエンティティ型名"ListItemEntityTypeFullName"を取得する。
GETメソッドで上記の「リスト内容取得」を使用してHTTPレスポンスを得た後、
「データ操作」⇒「JSONの解析」アクションを選ぶ。
コンテンツに「リスト内容取得」の本文を選び、下記スキーマを記述。
{"type": "object",
"properties": {
"d": {
"type": "object",
"properties": {
"ListItemEntityTypeFullName": {
"type": "string"
},
"Title": {
"type": "string"
},
"Id": {
"type": "string"
}
}
}
}
}
リストの特定リストアイテム内容取得
https://[サイトアドレス]/_api/web/GetList('[サイトコレクションの相対パス]/Lists/[リスト内部名]')/Items([ID])
or
https://[サイトアドレス]/_api/web/lists/getbytitle('[リスト表示名]')/Items([ID])
*両方とも、後ろの([ID])を取れば全アイテム情報取得になる。
POSTメソッド(アイテムの更新など)でリストアイテム内容取得&更新する時
https://[サイトアドレス]/_api/web/GetList('[サイトコレクションの相対パス]/Lists/[リスト内部名]')/GetItems([ID])
*1つ上のと似ているが、GETメソッドの時にGetItems使うと怒られるので、POSTなどの時に使ってください。
ドキュメントライブラリ内容の取得
ドキュメントライブラリのフォルダ内容取得
https://[サイトアドレス]/_api/web/GetFolderByServerRelativeUrl('[フォルダ名]')
MSの公式:REST を使用してフォルダーとファイルを操作する には下記のとおり書いてあるが、
この通りに打つとエラー吐くので、/
Shared Documentsの前のスラッシュはとること。
url: http://site url/_api/web/GetFolderByServerRelativeUrl('/Shared Documents')
method: GET
headers:
Authorization: "Bearer " + accessToken
accept: "application/json;odata=verbose" or "application/atom+xml"
ドキュメントライブラリのフォルダ内ファイル内容全取得
https://[サイトアドレス]/_api/web/GetFolderByServerRelativeUrl('[フォルダ名]')/Files
ドキュメントライブラリのフォルダ内の特定ファイル取得(IDを指定)
https://[サイトアドレス]/_api/web/GetFolderByServerRelativeUrl('[フォルダ名]')/Files([ID])
#関連リンク
MS公式:REST を使用してリストとリスト アイテムを操作する
Qiita:SharePoint REST サンプル集(@HiroakiOikawaさん)
Qiita:Microsoft Flow で SharePoint のリストアイテムを HTTP要求(REST)で更新する(@chimimouryouさん)