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

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

記事内に広告を含む場合があります。このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。問題のある表現がありましたら、お問い合わせいただけますと幸いです。

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

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

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

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

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

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

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

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

全体の流れ

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

  1. STEP

    SharePoint に HTTP 要求を送信します

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

  2. STEP

    JSON の解析

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

  3. STEP

    アレイのフィルター処理

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

  4. STEP

    JSON の解析

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

  5. STEP

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

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

実際の画面はこちら

解説

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

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

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

_api/web/RecycleBin

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

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

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

①JSON の解析

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

{
    "type": "object",
    "properties": {
        "d": {
            "type": "object",
            "properties": {
                "results": {
                    "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(‘アレイのフィルター処理’)})」を入れます。

{
    "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には、下記のような形式で指定します。

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

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

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

注意点

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

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

第二のゴミ箱に入らない

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

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

参考

ふー

ふー

Microsoft Power Platformを使ったり、ガジェットを買ったり、アニメ見たり、バイクに乗ったり、色々しています。

FOLLOW

関連記事

コメントを残す

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

CAPTCHA