プログラミング備忘録

仕事で覚えたことのまとめ

何とかして無料で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」。

f:id:nigou2:20210723152926p:plain GETでリクエストするとsetup =”フリ”とPunchline="オチ"を返してくれます。

Step2 Office Scriptを準備する

OfficeScriptは通常のエクセルマクロよろしく、Web上のエクセルファイルとワンセットでの呼び出しになるので、OneDriveにファイルを適当に作ります。

※テストしたときの階層はこんな感じ

One Drive for Business(自分のファイル)
  ┗ 簡易作業
      ┗ MyWorkbook.xlsx

そのままOneDrive上でファイルを開くと、Excel for the Web で開けます。 特にセルなどは変更せず、リボンの「自動化」から「すべてのスクリプト」を押します。 f:id:nigou2:20210723154225p:plain

画面右側に立ち上がるコードエディターの「+新しいスクリプト」を押し、

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;
}

実行を押してテストすると、エディタの下のコンソールに結果が出力されました。 f:id:nigou2:20210723154638p:plain

名称を適当に変更し、スクリプトを保存したら準備完了です。あとはPower AutomateでこのOffice Scriptを実行させます。

Step4 PowerAutomateのFlowを作成する

とりあえず手動でフローを実行する簡単なつくりにします。

トリガーは「手動」、 f:id:nigou2:20210723154942p:plain アクションは「スクリプトの実行」 f:id:nigou2:20210723155028p:plain アクションの詳細を下記のように選択し f:id:nigou2:20210723155324p:plain 保存すれば完了です。

早速テストします。

・・・・・・

f:id:nigou2:20210723155925p:plain

Error!

結論

FetchAPIはOfficeScript単体では使えるが、Power Automateから実行させようとするとNot Defined扱いとなり、実行できない(?) axiosでのHTTPリクエストに至ってはOfficeScriptのエディタ時点で使えませんでした。 解決方法ご存じの方、助けてください・・・!