🎃
Power Automate と SharePoint REST API でテナントに存在するサイト一覧を作成する
Power Automate で自身のテナントに存在する SharePoint サイトの一覧を作成する方法を記載します。
注意事項
実行者の権限のあるサイトしか取得できません。
実行フロー
全体像
今回は、REST API を使ってサイトの一覧を取得し、その後サイトの総件数分、SharePoint リストにアイテムを作成することで、一覧を作成するフローを作成します
フローの説明
SharePoint に HTTP 要求を送信します:サイトの一覧を取得
まず REST API を使って、サイトの一覧を取得します
なぜかfilter句は使えないので、ここでは全件を取得し、別途アレイのフィルター処理を使って絞り込みなどを行います
項目 | 使い方 |
---|---|
サイトのアドレス | {最上位のサイト} |
方法 | GET |
URI | _api/v2.0/sites?$search=*&$select=name,title,siteCollection,webUrl |
ヘッダ1 | Accept,application/json |
ヘッダ2 | Content-type,application/json |
JSON の解析:サイトの一覧JSON配列を解析
次に、今後利用しやすいように、JSON の解析を行います
項目 | 使い方 |
---|---|
コンテンツ |
outputs('SharePoint_に_HTTP_要求を送信します:サイトの一覧を取得')?['body']?['value'] (数式で入力) |
スキーマ | 以下に記載 |
{
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"webUrl": {
"type": "string"
},
"siteCollection": {
"type": "object",
"properties": {
"hostName": {
"type": "string"
}
}
},
"title": {
"type": "string"
}
},
"required": [
"name",
"webUrl",
"title"
]
}
}
アレイのフィルター処理:サイトの一覧からサブサイトを除去
次に、アレイのフィルター処理を使ってサブサイトを除去します(任意)
総件数のチェックは確認用アクションのため、特に意味はありませんので説明を割愛します
項目 | 使い方 |
---|---|
差出人 | JSON の解析の結果から本文を選択 |
その他 | JSON の解析の結果からhostname,次の値に等しくない,null(数式で入力) |
Apply to each:総件数分繰り返す & 項目の作成:リンク集用リストアイテムの作成
サブサイトをのぞいたサイト数分処理を繰り返し登録処理を行います
項目 | 使い方 |
---|---|
以前の手順から出力を選択 | アレイのフィルター処理の結果から本文を選択 |
項目 | 使い方 |
---|---|
サイトのアドレス | 対象のリストがあるサイトを選択 |
リスト名 | 対象のリストを選択 |
タイトル | 任意のテキスト |
name | アレイのフィルター処理の結果から name を選択 |
title | アレイのフィルター処理の結果から title を選択 |
weburl | アレイのフィルター処理の結果から webUrl を選択 |
実行結果
あとはリンク集にするなりしていただければよいです。
また、リストアイテムの内容が古くなり、更新したくなったときは、リストアイテムをすべて削除して再度フローを実行するか、weburlで検索などを行い一致するリストアイテムがあれば更新、なければ新規登録するなどフローをレベルアップさせてあげれば対応可能です。
参考
(あんまり参考にならないかもしれない)
おわり
Discussion