Office365(Microsoft365)で、ユーザーオペやスケジュールをトリガーに自動起動する連携処理を実装するのに便利なPowerAutomateですが、実際に業務の中で使おうとするといろいろな制約があります。
そのような制約を克服するため思いついたり調べたりした内容をご紹介していこうと考えています。
Problem
PowerAutomateの性質上、ユーザーから送られてきたメールやTeamsメッセージを解析して、その結果次第で何かしらのアクションを実行するというシナリオは、大いに有り得るものだと思います。
しかし、PowerAutomateには正規表現マッチを行うための組み込みの方法が存在しません。
サードパーティの提供するアクションで正規表現による処理を提供してくれるものもあるのですが、組織のポリシーなどの関係で、それを利用できないということもしばしばあります。
Solution
以前ご紹介した方法で対処します。
「きれいな方法」とは言い難いですが、比較的シンプルで、PowerAutomateの他の制約の克服も含めた一般的な課題解決にも応用可能という意味で、気に入っているものです。
対策検討にあたりこちらの記事を参考にさせていただきました。こちらのブログではPowerAutomate活用のヒントがたくさん紹介されています。
1. O365上でExcelファイルを用意
まずはO365上にExcelファイルを用意します。
PowerAutomateから(PowerAutomateのフローを実行するユーザーから)参照可能なところであればどこでも結構です。
2. OfficeScriptでソートを実装
先程作成したExcelファイルを開くとメニューに「自動化」というタブが表示されます(ファイルを開いてから数秒待たないと表示されないことがあります):
ここから「自動化」→「すべてのスクリプト」→「+新しいスクリプト」と進み、表示されたコードエディターで関数を定義します:
function main(
workbook: ExcelScript.Workbook,
searchString: string,
regexPattern: string,
regexFlags: string
) : Array<string> {
return searchString.match(new RegExp(regexPattern, regexFlags)) ?? [];
}
配列ソートの例では、スクリプトが Array<object>
を戻り値とすることができないという問題がちょっとした障碍になりましたが、 Array<string>
ならば問題ありません。
他のユーザーのフローからも実行する可能性がある場合は、「すべてのスクリプト」の一覧で「...」→「共有」をクリックしておきましょう:
3. 「スクリプトの実行」アクションをセットアップ
PowerAutomateのフロー側で「スクリプトの実行」アクションをセットアップします:
ちなみにこの画面キャプチャにあるアクションを実行すると結果は以下のようなJSONになります:
{
"result": [
"foo",
"bar",
"baz",
"123"
],
"logs": []
}
以上で、任意の文字列に対して、任意の正規表現パターンを使ったテストができるようになりました。