【PowerAutomate】IPアドレスの形式か判定する。フロー全て一括コピペで使えます。

スポンサーリンク




作業を自動化する
  • IPアドレスか判断したい

この記事では、そんな方に向けてIPアドレスを判定する方法を紹介します。

みずしぶき
みずしぶき

この記事を読めば、アクションをいちから作らなくてもIPアドレスの判定が簡単にできるようになります。

スポンサーリンク

IPアドレスを判定するフロー

PowerAutomateにはIPアドレスを判定するアクションや関数はありません。
なのでアクションと関数を組み合わせてフローを作っています。
こちらのコードをIPアドレスを判定したい部分へコピーして使ってください。

{"id":"05fd951f-e1c8-43ce-a77d-c34016c23198","brandColor":"#8C3900","connectionReferences":{},"connectorDisplayName":"制御","icon":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDMyIDMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KIDxwYXRoIGQ9Im0wIDBoMzJ2MzJoLTMyeiIgZmlsbD0iIzhDMzkwMCIvPg0KIDxwYXRoIGQ9Im04IDEwaDE2djEyaC0xNnptMTUgMTF2LTEwaC0xNHYxMHptLTItOHY2aC0xMHYtNnptLTEgNXYtNGgtOHY0eiIgZmlsbD0iI2ZmZiIvPg0KPC9zdmc+DQo=","isTrigger":false,"operationName":"IPアドレス判定","operationDefinition":{"type":"Scope","actions":{"調査IP":{"type":"Compose","inputs":"192.168.10.1","runAfter":{},"metadata":{"operationMetadataId":"ec0fc845-7580-41ac-9e91-8286d37c900a"}},"IP部判定":{"type":"Scope","actions":{"オクテット数判定":{"type":"Scope","actions":{"ドット判定":{"type":"Compose","inputs":"@contains(outputs('IP部'),'.')","runAfter":{},"metadata":{"operationMetadataId":"00588def-6ce2-4765-b0e6-d26a1be9472b"}},"オクテット数":{"type":"Compose","inputs":"@if(outputs('ドット判定'),length(split(outputs('IP部'),'.')),0)","runAfter":{"ドット判定":["Succeeded"]},"metadata":{"operationMetadataId":"f25ca584-e99a-4e34-93c1-9cf3679dcf80"}},"オクテット数判定結果":{"type":"Compose","inputs":"@equals(outputs('オクテット数'),4)","runAfter":{"オクテット数":["Succeeded"]},"metadata":{"operationMetadataId":"dbac0990-c11a-45c0-b473-d6d017966d6e"}}},"runAfter":{},"metadata":{"operationMetadataId":"bee46cf7-a8d7-40f4-af63-7899cccfe80f"}},"オクテット数値判定移行条件":{"type":"If","expression":{"equals":["@outputs('オクテット数判定結果')",true]},"actions":{"オクテット数値判定":{"type":"Scope","actions":{"第一オクテット数値判定結果":{"type":"Compose","inputs":"@contains(outputs('0から255'),int(split(outputs('IP部'),'.')[0]))","runAfter":{"0から255":["Succeeded"]},"metadata":{"operationMetadataId":"80c3a12b-a6de-4787-9cd3-9c2dee45a0fd"}},"第二オクテット数値判定結果":{"type":"Compose","inputs":"@contains(outputs('0から255'),int(split(outputs('IP部'),'.')[1]))","runAfter":{"第一オクテット数値判定結果":["Succeeded"]},"metadata":{"operationMetadataId":"5f6fda5a-59ba-4ff3-9419-a4dbf51d916c"}},"第三オクテット数値判定結果":{"type":"Compose","inputs":"@contains(outputs('0から255'),int(split(outputs('IP部'),'.')[2]))","runAfter":{"第二オクテット数値判定結果":["Succeeded"]},"metadata":{"operationMetadataId":"5c0358f7-385e-454b-8536-b31d8e2fa3f1"}},"第四オクテット数値判定結果":{"type":"Compose","inputs":"@contains(outputs('0から255'),int(split(outputs('IP部'),'.')[3]))","runAfter":{"第三オクテット数値判定結果":["Succeeded"]},"metadata":{"operationMetadataId":"f5eedf86-9930-441b-ab24-3d160e83669c"}},"IP部判定結果":{"type":"Compose","inputs":"@equals(CreateArray(outputs('第一オクテット数値判定結果'),outputs('第二オクテット数値判定結果'),outputs('第三オクテット数値判定結果'),outputs('第四オクテット数値判定結果')),CreateArray(true,true,true,true))","runAfter":{"第四オクテット数値判定結果":["Succeeded","Skipped","Failed"]},"metadata":{"operationMetadataId":"8e93ea4d-f8b3-4413-843d-65c19f6b71a5"}},"0から255":{"type":"Compose","inputs":"@range(0,255)","runAfter":{},"metadata":{"operationMetadataId":"aef40ba8-5da7-4172-bf6b-d46c952d0c4f"}}},"runAfter":{},"metadata":{"operationMetadataId":"e9e725a9-0cb0-42e8-b0c2-2b2d82dc4f47"}}},"runAfter":{"オクテット数判定":["Succeeded"]},"metadata":{"operationMetadataId":"7b19fa10-3dc2-496b-bf3d-3d388fbaf4d4"}}},"runAfter":{"IPSM分割":["Succeeded"]},"metadata":{"operationMetadataId":"86351057-9090-4a1a-9a0a-b2e80cfaa99d"}},"結果":{"type":"Compose","inputs":"@equals(CreateArray(outputs('IP部判定結果'),outputs('SM部判定結果')),CreateArray(true,true))","runAfter":{"SM部判定":["Succeeded","Failed"]},"metadata":{"operationMetadataId":"39e813c4-093b-442a-af88-954e589614bf"}},"SM部判定":{"type":"Scope","actions":{"SM部判定結果":{"type":"Compose","inputs":"@contains(range(0, 32),int(outputs('SM部')))","runAfter":{}}},"runAfter":{"IP部判定":["Succeeded"]},"metadata":{"operationMetadataId":"13de4f8a-7cac-4041-aa92-33ded3e85c30"}},"IPSM分割":{"type":"Scope","actions":{"IP部":{"type":"Compose","inputs":"@if(contains(outputs('調査IP'),'/'),split(outputs('調査IP'),'/')[0],outputs('調査IP'))","runAfter":{},"metadata":{"operationMetadataId":"0ac319d7-50a1-4a41-9513-cff7c18ea5b4"}},"SM部":{"type":"Compose","inputs":"@if(contains(outputs('調査IP'),'/'),split(outputs('調査IP'),'/')[1],'0')","runAfter":{"IP部":["Succeeded"]},"metadata":{"operationMetadataId":"ce54b666-0294-46c6-bb8e-7fb859ccba00"}}},"runAfter":{"調査IP":["Succeeded"]},"metadata":{"operationMetadataId":"9bd65231-b872-442a-81fb-1967998162c6"}}},"runAfter":{},"metadata":{"operationMetadataId":"51fb697a-1a0c-46cf-bcf5-3834dc424be8"}}}

コピペが終わるとこんなフローが表示されます。

調査IPの中へ判定したい文字を入れます。

判定結果は最後の結果にtrueかfalseで表示されます。

  • true ・・IPアドレスの形式と一致
  • false ・・IPアドレスではない

フローの説明

フローは4つのステップでIPアドレスか判定しています。

  1. IPSM部分割
  2. IP部判定:オクテット数判定
  3. IP部判定:オクテット数値判定
  4. SM部判定

(1)IPSM部分割

ここではsplit関数を使ってIPアドレス部とSM部に分割します。

IP部は/がある場合は、/で2つに分けてから1つめをIP部として扱います。
/が無い場合は元の値をそのままIP部とします。

@{if(contains(outputs('調査IP'), '/'), split(outputs('調査IP'), '/')[0], outputs('調査IP'))}

SM部は/がある場合は、/で2つに分けてから2つめをSM部として扱います。
/が無い場合は0をSM部とします。

@{if(contains(outputs('調査IP'), '/'), split(outputs('調査IP'), '/')[1], '0')}

(2)IP部判定:オクテット数判定

ドットがあるか確認します。

@{contains(outputs('IP部'), '.')}

ドットがあった場合は、ドットで分割して分割した数を出します。
ドットが無い場合は0とします。

@{if(outputs('ドット判定'), length(split(outputs('IP部'), '.')), 0)}

ドットで分割した結果オクテット数が4つあるか判定します。

@{equals(outputs('オクテット数'), 4)}

条件分岐でオクテット数が4つある場合のみ次の項目へ進みます。

(3)IP部判定:オクテット数値判定

各オクテットの数字は0から255が範囲なので比べるための配列を作ります。

@{range(0, 255)}

ここで第1~4オクテットを数値に変換して0-255の範囲内かチェックします。

@{contains(outputs('0から255'), int(split(outputs('IP部'), '.')[0]))}
@{contains(outputs('0から255'), int(split(outputs('IP部'), '.')[1]))}
@{contains(outputs('0から255'), int(split(outputs('IP部'), '.')[2]))}
@{contains(outputs('0から255'), int(split(outputs('IP部'), '.')[3]))}

第1~4オクテットのチェック結果が全てOK(true)だったか確認します。

@{equals(CreateArray(outputs('第一オクテット数値判定結果'), outputs('第二オクテット数値判定結果'), outputs('第三オクテット数値判定結果'), outputs('第四オクテット数値判定結果')), CreateArray(true, true, true, true))}

(4)SM部判定

SM部が0-32の範囲内か判定します。

@{contains(range(0, 32), int(outputs('SM部')))}

全ての確認が終わると最後にIP部とSM部の判定結果を確認します。
両方OK(true)ならIPアドレスとい事になります。

@{equals(CreateArray(outputs('IP部判定結果'), outputs('SM部判定結果')), CreateArray(true, true))}
スポンサーリンク

繰り返し処理で使う場合

判定したいIPアドレスが複数ある場合はApply to eachの中に入れて使います。

その場合は最初の調査IPの部分に「現在のアイテム」で判定したいIPアドレスを入れるようにします。

{"id":"58d5ea12-539f-4463-a6b0-2cd9cd38ac67","brandColor":"#486991","connectionReferences":{},"connectorDisplayName":"制御","icon":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzIiIGhlaWdodD0iMzIiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDMyIDMyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KIDxwYXRoIGQ9Im0wIDBoMzJ2MzJoLTMyeiIgZmlsbD0iIzQ4Njk5MSIvPg0KIDxwYXRoIGQ9Ik0xMSAyMGg3LjJsMSAxaC05LjJ2LTguM2wtMS4zIDEuMy0uNy0uNyAyLjUtMi41IDIuNSAyLjUtLjcuNy0xLjMtMS4zem0xMi4zLTJsLjcuNy0yLjUgMi41LTIuNS0yLjUuNy0uNyAxLjMgMS4zdi03LjNoLTcuMmwtMS0xaDkuMnY4LjN6IiBmaWxsPSIjZmZmIi8+DQo8L3N2Zz4NCg==","isTrigger":false,"operationName":"Apply_to_each","operationDefinition":{"type":"Foreach","foreach":"@CreateArray('10.1.1.10/24','10.1.1.11/33','10.O.1.10/24','10.1.1.11','10.1.10/24','10.5.256.256')","actions":{"IPアドレス判定":{"type":"Scope","actions":{"調査IP":{"type":"Compose","inputs":"@items('Apply_to_each')","runAfter":{},"metadata":{"operationMetadataId":"ec0fc845-7580-41ac-9e91-8286d37c900a"}},"IP部判定":{"type":"Scope","actions":{"オクテット数判定":{"type":"Scope","actions":{"ドット判定":{"type":"Compose","inputs":"@contains(outputs('IP部'),'.')","runAfter":{},"metadata":{"operationMetadataId":"00588def-6ce2-4765-b0e6-d26a1be9472b"}},"オクテット数":{"type":"Compose","inputs":"@if(outputs('ドット判定'),length(split(outputs('IP部'),'.')),0)","runAfter":{"ドット判定":["Succeeded"]},"metadata":{"operationMetadataId":"f25ca584-e99a-4e34-93c1-9cf3679dcf80"}},"オクテット数判定結果":{"type":"Compose","inputs":"@equals(outputs('オクテット数'),4)","runAfter":{"オクテット数":["Succeeded"]},"metadata":{"operationMetadataId":"dbac0990-c11a-45c0-b473-d6d017966d6e"}}},"runAfter":{},"metadata":{"operationMetadataId":"bee46cf7-a8d7-40f4-af63-7899cccfe80f"}},"オクテット数値判定移行条件":{"type":"If","expression":{"equals":["@outputs('オクテット数判定結果')",true]},"actions":{"オクテット数値判定":{"type":"Scope","actions":{"第一オクテット数値判定結果":{"type":"Compose","inputs":"@contains(outputs('0から255'),int(split(outputs('IP部'),'.')[0]))","runAfter":{"0から255":["Succeeded"]},"metadata":{"operationMetadataId":"80c3a12b-a6de-4787-9cd3-9c2dee45a0fd"}},"第二オクテット数値判定結果":{"type":"Compose","inputs":"@contains(outputs('0から255'),int(split(outputs('IP部'),'.')[1]))","runAfter":{"第一オクテット数値判定結果":["Succeeded"]},"metadata":{"operationMetadataId":"5f6fda5a-59ba-4ff3-9419-a4dbf51d916c"}},"第三オクテット数値判定結果":{"type":"Compose","inputs":"@contains(outputs('0から255'),int(split(outputs('IP部'),'.')[2]))","runAfter":{"第二オクテット数値判定結果":["Succeeded"]},"metadata":{"operationMetadataId":"5c0358f7-385e-454b-8536-b31d8e2fa3f1"}},"第四オクテット数値判定結果":{"type":"Compose","inputs":"@contains(outputs('0から255'),int(split(outputs('IP部'),'.')[3]))","runAfter":{"第三オクテット数値判定結果":["Succeeded"]},"metadata":{"operationMetadataId":"f5eedf86-9930-441b-ab24-3d160e83669c"}},"IP部判定結果":{"type":"Compose","inputs":"@equals(CreateArray(outputs('第一オクテット数値判定結果'),outputs('第二オクテット数値判定結果'),outputs('第三オクテット数値判定結果'),outputs('第四オクテット数値判定結果')),CreateArray(true,true,true,true))","runAfter":{"第四オクテット数値判定結果":["Succeeded","Skipped","Failed"]},"metadata":{"operationMetadataId":"8e93ea4d-f8b3-4413-843d-65c19f6b71a5"}},"0から255":{"type":"Compose","inputs":"@range(0,255)","runAfter":{},"metadata":{"operationMetadataId":"aef40ba8-5da7-4172-bf6b-d46c952d0c4f"}}},"runAfter":{},"metadata":{"operationMetadataId":"e9e725a9-0cb0-42e8-b0c2-2b2d82dc4f47"}}},"runAfter":{"オクテット数判定":["Succeeded"]},"metadata":{"operationMetadataId":"7b19fa10-3dc2-496b-bf3d-3d388fbaf4d4"}}},"runAfter":{"IPSM分割":["Succeeded"]},"metadata":{"operationMetadataId":"86351057-9090-4a1a-9a0a-b2e80cfaa99d"}},"結果":{"type":"Compose","inputs":"@equals(CreateArray(outputs('IP部判定結果'),outputs('SM部判定結果')),CreateArray(true,true))","runAfter":{"SM部判定":["Succeeded","Failed"]},"metadata":{"operationMetadataId":"39e813c4-093b-442a-af88-954e589614bf"}},"SM部判定":{"type":"Scope","actions":{"SM部判定結果":{"type":"Compose","inputs":"@contains(range(0, 32),int(outputs('SM部')))","runAfter":{},"metadata":{"operationMetadataId":"2938b930-b505-46a7-90fa-dae55dfe08f0"}}},"runAfter":{"IP部判定":["Succeeded"]},"metadata":{"operationMetadataId":"13de4f8a-7cac-4041-aa92-33ded3e85c30"}},"IPSM分割":{"type":"Scope","actions":{"IP部":{"type":"Compose","inputs":"@if(contains(outputs('調査IP'),'/'),split(outputs('調査IP'),'/')[0],outputs('調査IP'))","runAfter":{},"metadata":{"operationMetadataId":"0ac319d7-50a1-4a41-9513-cff7c18ea5b4"}},"SM部":{"type":"Compose","inputs":"@if(contains(outputs('調査IP'),'/'),split(outputs('調査IP'),'/')[1],'0')","runAfter":{"IP部":["Succeeded"]},"metadata":{"operationMetadataId":"ce54b666-0294-46c6-bb8e-7fb859ccba00"}}},"runAfter":{"調査IP":["Succeeded"]},"metadata":{"operationMetadataId":"9bd65231-b872-442a-81fb-1967998162c6"}}},"runAfter":{},"metadata":{"operationMetadataId":"51fb697a-1a0c-46cf-bcf5-3834dc424be8"}}},"runAfter":{},"runtimeConfiguration":{"concurrency":{"repetitions":50}},"metadata":{"operationMetadataId":"48095309-d24e-4a04-bc95-44c5e136b735"}}}

まとめ

PowerAutomateでIPアドレスの形式を判定するフローを紹介しました。
PowerAutomateで直接IPアドレスを処理するアクションはないので、主な目的はExcelに入力されているIPアドレスに間違いがないか自動で判定したい場合になります。ネットワーク系に興味がある方は試してみてください。

PowerAutomateのおすすめ記事
人気ページ
Apply to eachの使い方
アレイのフィルター処理の使い方
日付関数の使い方
エラーを無視する方法
メールの内容をExcelへ転記
メール本文から名前を抽出

>>PowerAutomateの記事一覧を見る<<

お気に入り必須!公式ページ
Microsoft Power Automate
式関数のリファレンス
コネクタのリファレンス
Excel Online (Business)のリファレンス

最後まで読んで頂き、ありがとうございます。

「この記事が参考になった」「お礼でコーヒー代をプレゼントしよう」という方がいましたらチップ(15円〜)をお願いいたします。

Amazonギフト券- Eメールタイプ - Amazonベーシック

メールのあて先は 「mizusibuki8080@gmail.com」です。
※上記のアドレスは投げ銭受け取り専用です。他のメールは受け取れない設定にしてあるのでご注意ください。

作業を自動化する
ネットワークエンジニアになった人
タイトルとURLをコピーしました