ChatGPTに「GASで作成したスクリプトをPowerAutomateで使うにはどうすればよいか」と聞いたら、「Google Apps ScriptをWeb APIとして公開し、Power AutomateからHTTPリクエストで呼び出す」という回答とその方法を返してきた。
やつの提案は極めてシンプルで、簡単そうに見えた。
しかし、提示された方法通りにやっているにもかかわらず、何度やってもうまくいかない。奴が時々そうであるように、平気でうそをついているのだ。
そこで、ググって調べてトライ&エラーに切り替え。
一日目の午後を費やし、翌日の午前も半分使ったあたりで、ようやくできた。。。
結論から先に言うと、ChatGPTの提案では、そのまま進めても絶対にうまくいかない。
PAのフローでStatus code 302(リダイレクト)エラーが返ってくるところから先に進む方法を教えてくれない。
エラーを受けて、そのあとの処理が必要。Power Auotomate の HTTPアクションが 302 に対応しない。
まあ、ここまでわかるのに半日かかった。
最終的にはPOST形式の処理をしたかったのだが、どこが悪いのか確かめたかったので、最初はGET形式のフローを作って、試行錯誤した。
なお、PowerAutomateは、アドバンスエディタでは、目的のフローを作れないところも、問題を複雑にし、解決に時間がかかった。クラシックエディタで「実行条件の構成」を設定しないといけない。これを設定しないとリダイレクト失敗後の後続のフローが実行されない。
ちなみにChatGPTに聞いたら、アドバンスエディタでも実行条件の構成を設定できると言われたが、どこをさがしても該当項目が無い。できない。嘘つき。
ポイントは2つ。
PAフローのHTTPリクエストは2つ連続で作ること。一つ目は普通に作るが必ずエラーになるので、二つ目でエラー文を解析してそこから outputs(‘HTTP’)[‘headers’][‘Location’] でリダイレクト先URLを取り出す。PAはテスト実行の際に出力内容を表示してくれるので、それをみたらoutput~の意味がわかるはず。
また、「実行条件の構成」を設定して「失敗したときだけ二つ目を実行」にすること。成功することはないけど。
あと、GETは2段処理のHTTPリクエストは両方ともGETでいいが、POSTは1段目はPOST、2段目はGETでないとうまくいかない。なのでPOSTのフローを作るのにもエネルギーを費やした。疲れた。
以下は、実際に思い通りに動いたGETとPOSTそれぞれのPAのフロー例。

GET
POSTはJSONフォーマットを本文に入れて値を渡さなくてはいけないので面倒。それよりは簡単に値をURLに https://script.google.com/・・・exec?name=abc&age=25 のように簡易にできるGETを、まず先に作るほうが良いと考えた。
また、BODYには式として、outputs(‘HTTP’)[‘headers’][‘Location’] を入力する。



POST
GETで思った通りの動作がされることを作成してから、そのPAフローをコピペして、それをもとにPOSTに取り掛かった。図の該当箇所を赤で囲っていないけど、
先に書いたように、POSTの後にGETする。

うまくいったかな? うまくいかない方は、なんとか頑張ってみてね!