何とかして無料でPowerAutomateからHTTPリクエストしたかった人生でした
PowerAutomateからAWSに連携させたい
HTTPリクエストでもAWSQueでもいいから、なんとかしてFormの回答内容をAWSに連携させたい。
やりたいこと:サーバー版PowerAutomateでHTTPリクエストする
PremiumアカウントにすればHTTPリクエストもAWSコネクタも使用できるのでそれで解決するが、いかんせん会社で使用しているアカウントだとアカウントの権限をおいそれと変更できないですよね笑。 Windows10に内包されている無償版のアカウントで何とかできるんじゃないかと。だってHTTPリクエストぞ?自動化に必須じゃあないか。
無料ユーザーにはAPIもたたかせない、ってコト?
結論:私の力ではダメでした。 20210723
うん、無理だわこれ。以下今回検証した内容。もちろん、
検証したこと:Office ScriptをPowerAutomateから実行させる
Step1 とりあえずHTTPリクエストを飛ばす相手を探す
とりあえずGETメソッドで実行できれば問題ないはず・・・
今回使用するのは「Official Joke API」。
GETでリクエストするとsetup =”フリ”とPunchline="オチ"を返してくれます。
Step2 Office Scriptを準備する
OfficeScriptは通常のエクセルマクロよろしく、Web上のエクセルファイルとワンセットでの呼び出しになるので、OneDriveにファイルを適当に作ります。
※テストしたときの階層はこんな感じ
One Drive for Business(自分のファイル) ┗ 簡易作業 ┗ MyWorkbook.xlsx
そのままOneDrive上でファイルを開くと、Excel for the Web で開けます。 特にセルなどは変更せず、リボンの「自動化」から「すべてのスクリプト」を押します。
画面右側に立ち上がるコードエディターの「+新しいスクリプト」を押し、
function main(workbook: ExcelScript.Workbook) { // Your code here }
とだけ記載されたエディタが開けたら準備は万端です。
Step3 HTTPリクエストを行うOfficeScriptを記載する。
エディタのコードをすべて消し、以下を貼り付けます。
function main(workbook: ExcelScript.Workbook): Promise<void> { let fetchResult = await fetch('https://official-joke-api.appspot.com/jokes/random'); let json: JSONData = await fetchResult.json(); console.log(JSON.stringify(json)); } interface JSONData { id: number; type: string; setup: string; punchline: string; }
実行を押してテストすると、エディタの下のコンソールに結果が出力されました。
名称を適当に変更し、スクリプトを保存したら準備完了です。あとはPower AutomateでこのOffice Scriptを実行させます。
Step4 PowerAutomateのFlowを作成する
とりあえず手動でフローを実行する簡単なつくりにします。
トリガーは「手動」、 アクションは「スクリプトの実行」 アクションの詳細を下記のように選択し 保存すれば完了です。
早速テストします。
・・・・・・
Error!
結論
FetchAPIはOfficeScript単体では使えるが、Power Automateから実行させようとするとNot Defined扱いとなり、実行できない(?) axiosでのHTTPリクエストに至ってはOfficeScriptのエディタ時点で使えませんでした。 解決方法ご存じの方、助けてください・・・!