【PowerAutomate】受信メールを25件以上取得する方法はこれだ。

IT

PowerAutomateでOutlookメールボックス内の受信メールを取得することができます。

しかし、標準的に用意されているアクションだと、25件までしか取得できないという制限があります。

今回はメールを25件以上取得する方法ををご紹介します。

受信メールを取得するアクションは25件までの制限あり

25件以上、持てないよ。

標準の「メールを取得する」アクションだと25件までしか取れません。

私じゃダメなの…?

お手軽に使えるアクションではありますが、制限があるのが残念ですね。

25件以上のメールを取得するには、HTTP要求にて

では、25件以上メールを取得するにはどうすればよいかというと、「HTTP要求を送信します」アクションを使います。

私が参考にしたのはこちらのブログです↓

How to get more than 25 emails from a mailbox (Power Automate) (tomriha.com)

やっぱり先人の知恵は偉大です。

具体的なアクションのサンプル

HTTP要求を使えば、メールを25件以上取得できることは分かった。

では具体的にどうしたらいいの? という人は多数いるでしょう。

具体的なサンプルを示します。

メールを25件以上取得するフローの全体像

まずはフローの全体像です。

1.まずはメールを取得したいフォルダの情報(フォルダID)を取得します。

なぜなら、メールを取得するためのHTTP要求を実行する際に、フォルダIDが必要なためです。

ちなみに、フォルダ情報が取得できない場合はTeamsで通知するようにしています。

2.HTTP要求を実行して、フォルダ内のメール情報を取得します。

結果はJSON形式で返ってくるので、JSONの解析を使って内容をとれるようにします。

フォルダ情報の取得の部分

1.フォルダ情報をとるポイント1つ目は、検索のフォルダ名をエンコードすることです。

フォルダ名を条件にフォルダを検索しますが、その際にしているフォルダ名はそのままだとうまくいかないためエンコードしておきます。

2.次にHTTP要求を実行しフォルダ情報を取得します。

3.取得したフォルダ情報はJSON形式のため、JSONの解析で必要な情報を取得します。

今回の最終目的はメール情報を取得すること、そのために必要なものはフォルダIDのみであるため、以下のようにJSONスキーマを指定します。

{
    "type": "object",
    "properties": {
        "@@odata.context": {
            "type": "string"
        },
        "value": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    }
                },
                "required": [
                    "id"
                ]
            }
        }
    }
}

メール情報の取得の部分

フォルダIDが分かれば、あとはHTTP要求でメール情報を取得すればOKです。

ポイントとしては2点。

  • 取得するフィールドを$select=で指定する。
  • 件数をtop=で指定する。 ※ここで25件以上指定できる

最後に、こちらもJSON形式で返ってきますので、JSONの解析をして値を取り出します。


参考までに、JSONスキーマは以下の通りです。

“id”, “receivedDateTime”, “subject”, “sender”を取れるようにしています。

{
    "type": "object",
    "properties": {
        "@@odata.context": {
            "type": "string"
        },
        "value": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "@@odata.etag": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "receivedDateTime": {
                        "type": "string"
                    },
                    "subject": {
                        "type": "string"
                    },
                    "sender": {
                        "type": "object",
                        "properties": {
                            "emailAddress": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "address": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "required": [
                    "@@odata.etag",
                    "id",
                    "receivedDateTime",
                    "subject",
                    "sender"
                ]
            }
        }
    }
}

取得したデータのサンプル

こんな感じでデータが取れます。ご参考まで。

送信者と件名が取れれば、何のメールか大体わかりますので使えそうですよね。

まとめ

1.PowerAutomateの「メールを取得する」アクションでは、25件までしかメールは取れません。

2.「HTTP要求」を活用して25件以上のメールを取得することができます。

3.フォルダIDを指定する必要がありますので、フォルダ情報(フォルダID)取得~メール取得までの流れを紹介しました。

これ、ニーズあると思うので、簡単に取得できるようにMicrosoft側で改善されそうですけどね・・

コメント

タイトルとURLをコピーしました