LoginSignup
19

More than 1 year has passed since last update.

Power Automate で動かす Office スクリプト(1)

Last updated at Posted at 2022-01-11

Power Automate はローコード/ノーコードで簡単にワークフローを作れますが、手の込んだループを作ろうとしたり複雑な処理を行おうとするとどうしても入り組んだ(?)構成になってしまいます。

Azure Functions や Azure Automation といったスクリプトに処理を渡してしまうのも一つの手ですが、これだと有償ライセンスが必要になります(プレミアムコネクタのため)。

そこで、ちょっとした処理を渡すのに便利な Office スクリプトをご紹介したいと思います。
これは Excel ファイルに含まれるスクリプトで、 VBScript とは異なるもので、 JavaScript (TypeScript) で作成します。
Office スクリプトそのものについては詳しく紹介されているエントリーがたくさんあると思いますので、ここでは「Power Automateから呼び出すスクリプト」としての Office スクリプトについて触れようと思います。

Excel ファイルを SharePoint ライブラリまたは OneDrive に用意する

Office スクリプトは Excel on the Web 上で動作します。従って「Excel ファイル(.xlsx)」を「SharePoint ライブラリ」または OneDrive に置きます。チーム内で利用するワークフローを想定しますので、ここでは SharePoint ライブラリとします。

20220112-002.png

Excel ファイルを開き、[自動化]-[新しいスクリプト]をクリックする

作成されたファイルをクリックするとそのままファイルが Excel on the Web (ブラウザ上)で開きます。
自動化メニューをクリックし、新しいスクリプトをクリックします。

20220112-003.png

ある程度のルールに従って記述する

自動で main 関数を含む処理が表示されます。これの構造は(Power Automate から利用する場合としては)以下のようになります。

20220112-004.png

要するに
- Power Automate から受け取る値(引数)
- 行いたい処理
- ログとして出力したい値、結果として返したい値
を書けばいいわけです。

例えば、以下のように書いておきます。

引数で渡された文字列の文字数をカウント
function main(workbook: ExcelScript.Workbook,
inputString: string
)
{
  let numberOfStrings: number = inputString.length;

  console.log(`元の値:${inputString}`);
  return numberOfStrings;
}

クラウドフローから呼び出す

スクリプトを保存してから、Power Automateにてクラウドフローの作成に移ります。
Excel Online (Business) のアクションから「スクリプトの実行」を選択します。
20220112-005.png

先ほどのファイルを指定するとスクリプトが選べるようになっています。選べなかった場合、スクリプトの保存を実行していない可能性がありますので、再度ご確認ください。

20220112-006.png

スクリプトがちゃんと書けていれば、以下のように引数を指定できるようになっています。

20220112-007.png

フローを保存してテスト実行してみます。うまく行くと、以下のように result と log がそれぞれ出力されます。

20220112-008.png

もちろん以下のように、以下のフローで結果を利用することができます。

20220111-009.png

ここまでわかっていれば以下のサンプルを読み解いて Power Automate で動かすための Office スクリプトが作成できるようになると思います。
https://docs.microsoft.com/ja-jp/office/dev/scripts/resources/samples/samples-overview

まとめ

Power Automate は大変便利なのですが、細かい処理をしようとしたときにフローが複雑になることがあります。そのような場合に利用するとよいと思います。ちなみに、今回のように Excel ファイルの中身(シートやテーブル)が空でも利用できます。
Power Automate はシートがテーブル化されていないと読み取ることはできませんが、Office スクリプトを経由すればシートの位置を指定して(A1とか)直接読み取ることができます。

次回以降で掘り下げていこうと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19