MoreBeerMorePower

Power Platform中心だけど、ノーコード/ローコード系を書いてます。

Power Apps から Office365Groups.HttpRequestを利用する場合の注意点

前回の投稿に続き、Office 365 GroupsコネクターのHTTP要求アクションについて調べた結果の紹介です。

前回はGETした結果をPower Appsでどう処理するかでしたが、今回はPOSTで何かデータを送る場合の手続きについて、Power Apps単体でやろうと思ったときの注意事項を書きます。

例として、Teamsにチャットメッセージを送る処理を取り上げます。

learn.microsoft.com

この場合、URLはhttps://graph.microsoft.com/v1.0/teams/{team-id}/channels/{channel-id}/messages の形式で、メソッドがPOST、リクエストの本文には

{
  "body": {
    "content": "Hello World"
  }
}

このようなJSONを入れます。Power Appsでこれを実現するために Office365Groups.HttpRequestを使うと、ナイーブには以下のように書かれるかと思います。

    Office365Groups.HttpRequest(
        "https://graph.microsoft.com/v1.0/teams/{team-id}/channels/{channel-id}/messages",
        "POST",
        "{
            ""body"": {
                    ""content"": ""Test message. "",
                    ""contentType"": ""html""
            }
        }",
        {ContentType: "application/json"}
    )

実際このようにアプリを作って動作させると、以下のようなエラー「リクエストの本文が空ですよ」と出てきます。

アクションの3つ目のパラメータが不適切なようです。

じゃあ何を渡せばいいのか。こんな時は意図的にエラーを発生させて、要求されるデータ型を見てあげます。

今回の場合はBlobを要求されています。

ここまででわかるのは、

Power Apps で Office365Groups.HttpRequest を利用してデータをPOSTする場合、要求本文はファイルで渡す必要がある

ということです。

Power Appsでファイルを渡すとすると、埋め込みのファイルか、ファイルアップロード用に添付ファイルコントロールを使うくらいです。実際ためしてみると、以下のように添付ファイルのコントロールを使ってファイルの中に必要なJSONを書けば、APIを実行できることがわかりました。

ということで、Power Apps から Office365Groups.HttpRequestを使えば何でもできるように感じるかもしれませんが!POSTの場合にはちょっと注意が必要ですよという結果でした。