【Power Automate】SharePointのゴミ箱の特定のアイテムを削除する方法

【Power Automate】SharePointのゴミ箱の特定のアイテムを削除する

SharePointのゴミ箱のアイテムをPower Automateを利用して削除する方法を紹介します。

Power Automateで削除したいと思った背景

SharePointリストをPower Appsのデータソースとして利用しているアプリがありました。そのアプリで扱うデータは一時的にしか利用しないデータのため、毎週定期的にPower Automateでリストを削除しています。その結果、ゴミ箱にリストの数百件単位の削除データが溜まってしまいました。

SharePointの参加者は数百人だったため、常に圧迫され気味なゴミ箱がさらに圧迫されてしまい、ゴミ箱から探すことが難しくなってきました。

SharePointリストで管理していたデータは一時的にしか利用しないデータのため、復旧も不要。完全にゴミ箱からも削除しておくことで、ゴミ箱をキレイに保ちたいと言ったことがありました。

ゴミ箱をキレイに保つとは?

というのは置いておいて、何らかの理由で復旧したいとき、検索などができないゴミ箱で大量のリストを避けて目的のファイルを探すのは苦痛。発生頻度は低そうですが、対応できそうなため対応することに。

実はゴミ箱に入れずにSharePointリストの項目を削除する方法が見つかりました。今は下の記事の方法を採用しています。

【Power Automate】SharePointのゴミ箱の特定のアイテムを削除する 【Power Automate】SharePointのゴミ箱の特定のアイテムを削除する方法

全体の流れ

ざっくり全体の流れを解説します。

SharePoint に HTTP 要求を送信します

SharePointのゴミ箱の全データを取得取得します。

JSON の解析

「SharePoint に HTTP 要求を送信します」で取得した値を使う為、解析をします。

アレイのフィルター処理

削除したい項目だけに絞るためにフィルターをかけます。

JSON の解析

アレイのフィルター処理の結果を分析。

SharePoint に HTTP 要求を送信します(Apply to eachで繰り返し)

「アレイのフィルター処理」で取得した削除する項目を削除します。

実際の画面はこちら

解説

細かくそれぞれを解説していきます。

①SharePoint に HTTP 要求を送信します

削除したいサイトのアドレスを指定し、方法は「GET」でURIには下記を指定します。

Pwoer Automate
_api/web/RecycleBin

「RecycleBin」はゴミ箱を指定するURIです。

ヘッダーには下記を指定します。(※テキストモードで下記をそのまま貼り付けて使えます)

Pwoer Automate
{
    "Accept": "application/json;odata=verbose",
    "Content-Type": "application/json;odata=verbose",
    "": ""
}

②JSON の解析

コンテンツには①のBody(本文)(@{body(‘SharePoint_にHTTP要求を送信します’)})を入れます。

Pwoer Automate
{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "__metadata": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "uri": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    }
                }
            },
            "Author": {
                "type": "object",
                "properties": {
                    "__deferred": {
                        "type": "object",
                        "properties": {
                            "uri": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "DeletedBy": {
                "type": "object",
                "properties": {
                    "__deferred": {
                        "type": "object",
                        "properties": {
                            "uri": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "AuthorEmail": {
                "type": "string"
            },
            "AuthorName": {
                "type": "string"
            },
            "DeletedByEmail": {
                "type": "string"
            },
            "DeletedByName": {
                "type": "string"
            },
            "DeletedDate": {
                "type": "string"
            },
            "DeletedDateLocalFormatted": {
                "type": "string"
            },
            "DirName": {
                "type": "string"
            },
            "DirNamePath": {
                "type": "object",
                "properties": {
                    "__metadata": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string"
                            }
                        }
                    },
                    "DecodedUrl": {
                        "type": "string"
                    }
                }
            },
            "Id": {
                "type": "string"
            },
            "ItemState": {
                "type": "integer"
            },
            "ItemType": {
                "type": "integer"
            },
            "LeafName": {
                "type": "string"
            },
            "LeafNamePath": {
                "type": "object",
                "properties": {
                    "__metadata": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string"
                            }
                        }
                    },
                    "DecodedUrl": {
                        "type": "string"
                    }
                }
            },
            "Size": {
                "type": "string"
            },
            "Title": {
                "type": "string"
            }
        },
        "required": [
            "__metadata",
            "Author",
            "DeletedBy",
            "AuthorEmail",
            "AuthorName",
            "DeletedByEmail",
            "DeletedByName",
            "DeletedDate",
            "DeletedDateLocalFormatted",
            "DirName",
            "DirNamePath",
            "Id",
            "ItemState",
            "ItemType",
            "LeafName",
            "LeafNamePath",
            "Size",
            "Title"
        ]
    }
}

アレイのフィルター処理

削除したい項目を絞るため、フィルター処理をします。

よく使いそうな項目を書いておきます。

プロパティ内容
AuthorEmail作成者のメールアドレス
AuthorName作成者名(フルネーム)
DeletedByEmail削除者のメールアドレス
DeletedByName削除者名(フルネーム)
DeletedDate削除日時
DirName元の場所のパス
(例:sites/testshp/Lists/Listname)

ここでは”DeletedDate”を使って、◯日以降に削除されたデータを指定しています。

日付の表示形式は”yyyy-MM-ddTHH:mm:ssZ”の形式で指定します。

日付の表示形式が分からない方はこちらの記事を読んで下さい。

それ以外にもSharePointリスト内の項目の値も取得できるので、「タイトル列が◯◯だけ」というフィルターも可能です。

④JSON の解析

アレイのフィルター処理の結果に対してJSONの解析を行います。

コンテンツにはアレイのフィルター処理の結果「本文(body)(@{body(‘アレイのフィルター処理’)})」を入れます。

Pwoer Automate
{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "__metadata": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "uri": {
                        "type": "string"
                    },
                    "type": {
                        "type": "string"
                    }
                }
            },
            "Author": {
                "type": "object",
                "properties": {
                    "__deferred": {
                        "type": "object",
                        "properties": {
                            "uri": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "DeletedBy": {
                "type": "object",
                "properties": {
                    "__deferred": {
                        "type": "object",
                        "properties": {
                            "uri": {
                                "type": "string"
                            }
                        }
                    }
                }
            },
            "AuthorEmail": {
                "type": "string"
            },
            "AuthorName": {
                "type": "string"
            },
            "DeletedByEmail": {
                "type": "string"
            },
            "DeletedByName": {
                "type": "string"
            },
            "DeletedDate": {
                "type": "string"
            },
            "DeletedDateLocalFormatted": {
                "type": "string"
            },
            "DirName": {
                "type": "string"
            },
            "DirNamePath": {
                "type": "object",
                "properties": {
                    "__metadata": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string"
                            }
                        }
                    },
                    "DecodedUrl": {
                        "type": "string"
                    }
                }
            },
            "Id": {
                "type": "string"
            },
            "ItemState": {
                "type": "integer"
            },
            "ItemType": {
                "type": "integer"
            },
            "LeafName": {
                "type": "string"
            },
            "LeafNamePath": {
                "type": "object",
                "properties": {
                    "__metadata": {
                        "type": "object",
                        "properties": {
                            "type": {
                                "type": "string"
                            }
                        }
                    },
                    "DecodedUrl": {
                        "type": "string"
                    }
                }
            },
            "Size": {
                "type": "string"
            },
            "Title": {
                "type": "string"
            }
        },
        "required": [
            "__metadata",
            "Author",
            "DeletedBy",
            "AuthorEmail",
            "AuthorName",
            "DeletedByEmail",
            "DeletedByName",
            "DeletedDate",
            "DeletedDateLocalFormatted",
            "DirName",
            "DirNamePath",
            "Id",
            "ItemState",
            "ItemType",
            "LeafName",
            "LeafNamePath",
            "Size",
            "Title"
        ]
    }
}

⑤SharePoint に HTTP 要求を送信します

サイトのアドレスを指定し、方法は「DELETE」を指定します。

URIには、下記のような形式で指定します。

.

Pwoer Automate
_api/web/RecycleBin('【アイテムID】')

【アイテムID】には関数モード(Expression)で下記の値を入れます。

Pwoer Automate
@{items('Apply_to_each')['Id']}

注意点

自分以外が削除したデータは削除できない

Power automateから削除できるデータは自分が削除したデータのみです。元々のデータ作成者が自分であっても、削除した人が自分以外の場合は削除できません。

第二のゴミ箱に入らない

通常、ゴミ箱から削除をすると第二のゴミ箱に入りますが、このHTTPアクションで削除すると第二のゴミ箱に入らず、完全に削除されます。

復旧は不可能になりますので、本当に消したいデータだけに対して実行してください。

参考

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA