Azure Functionsを使ってみる:[4] Power Automateから正規表現を利用する

はじめに

ほとんど触ったことがないAzure Functionsを、あえてMicrosoft LearnやDocsで予習せず、PowerShellスクリプトの基本的な知識だけで使えるのか、という観点で使ってみています。

前回、じゃんけんをする関数をPower Automateから利用してみたのですが、もう少し実用的に、Power Automateでは利用できない正規表現での置換を、Azure Functionsを使って実現する、ということをやってみたいと思います。

blog.jbs.co.jp

PowerShellスクリプトの用意

まず、PowerShellで正規表現を行う簡単なスクリプトを作成しました。

## 置換する文字列
$text = 'abcdeabcde'

## 検索ルール
$findrule = '^a'

## 置換ルール
$replaserule = '1'

## 置換の処理
$text -replace $findrule, $replaserule

実行すると、先頭のaが1に置換され、このような結果が得られます。

1bcdeabcde

関数の用意

関数を用意します。基本的な流れはこの記事のとおりです。

blog.jbs.co.jp

先ほどのスクリプトを、関数に貼り付けて、少し修正します。

using namespace System.Net

# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)

# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."

# 置換する元のテキストを受け取る
$text = $Request.Query.Text
if (-not $text) {
    $text = $Request.Body.Text
}

# 置換する際の検索ルールを受け取る
$findrule = $Request.Query.Findrule
if (-not $findrule) {
    $findrule = $Request.Body.Findrule
}

# 置換する際の置換ルールを受け取る
$replaserule = $Request.Query.Replaserule
if (-not $replaserule) {
    $replaserule = $Request.Body.Replaserule
}

$body = $text -replace $findrule, $replaserule

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = $body
})

置換したい文字列と置換条件はパラメーターで受け取れるようにしました。

実際の実行結果も良好です。

Power Automateから呼び出す

今度はこの関数をPower Automateから呼び出します。これも基本的な流れは過去の記事の通りです。

blog.jbs.co.jp

今回は、置換したい文字列と条件をトリガー実行時に指定できるようにしました。

実行してみます。

無事、置換結果を受け取れました。

おわりに

じゃんけん関数から正規表現関数に変えただけなんですが、一気に実用度が上がった気がします。今回は手動のトリガーで利用しましたが、真価を発揮するのはExcelなど複数のデータを一括で処理するときでしょうね。今度、正規表現使えなくて困ったときには実際に利用してみたいと思います。

投稿者プロフィール
舟越 匠

舟越 匠

人材戦略部に所属。社内向けの技術研修をメインにしつつ、JBS Tech BlogやMS認定資格取得の推進役もやっています。資格としてはAzure Solutions Architect Expertを所持。Power AutomateやLogic Appsで楽をするのが好きです。

執筆記事一覧