【PowerAutomate】メール本文から名前を抽出する。文字列抽出のキホン。

スポンサーリンク




作業を自動化する
  • プログラミングは分からないけど自動化したい
  • PowerAutomateの使い方がイマイチ分からない
  • メール本文から名前を抽出したい

無料ツールでさらにノンプログラミングで自動化ができるならぜひやってみたい!

この記事では、そんな方に向けてメール本文から名前を抽出する方法を3ステップで説明します。

  • メール本文から名前を抽出するフロー
  • 文章から文字列を抽出する仕組み
  • フローを作る
みずしぶき
みずしぶき

この記事を読めば、文字列の抽出方法が分かるようになります。

まだPowerAutomateを使った事が無いという方はこちらの記事を参考にしてください。

PowerAutomateはブラウザで操作するのでインストール無しで利用できます。Windows10ではないMacユーザも自由に使えます。

私がPowerAutomateの勉強で実際に読んだ本を紹介します。

スポンサーリンク

メール本文から名前を抽出するフロー

今回例として使うメール本文はこちらです。

○さん
お疲れ様です。山田です。

提案書を添付するので確認をお願いします。

以上、宜しくお願い致します。

この文章から山田の2文字を抽出してみます。

動かすフローはこちらです。

フローの内容は後で説明するので、こんなフローで動くんだ。くらいで見ておいてください。

(1)メールを受信

メール本文を取得しました。

(2)「お疲れ様です。山田です。」を抽出

まずは行を抽出しました。

(3)「山田です」を抽出

次に文節を抽出できました。

(4)「山田」の抽出に成功

文節からは不要な文字を削除しました。

名前を求める為に使った条件は3つです。

  • 行の抽出 「お疲れ様です。」「お世話になっております。」を含む行
  • 文節の抽出 「お疲れ様です。」「お世話になっております。」が含まず、さらに1文字以上ある文節
  • 名前の抽出 「です」を含む ※削除する

この3つから名前を求めることができました。

動きは分かりましたが、どうやっているのか。その仕組みを次の項目で説明します。

みずしぶき
みずしぶき

仕組みには重要なポイントが沢山あるのでしっかり見てください。

文章から文字列を抽出する仕組み

分割と検索を繰り返して目的の文字まで到達させます。
実際の段階ごとに表示するとこんな感じです。

最初の本文から・・

○さん
お疲れ様です。山田です。

提案書を添付するので確認をお願いします。

以上、宜しくお願い致します。

行で分割して「お疲れ様です。」で検索するとこうなります。↓

お疲れ様です。山田です。

「。」で分割して「お疲れ様です」以外で検索するとこうなります。↓

山田です

「です」を消すとこうなります。↓

山田

抽出成功!

次は分割や文字を置換する方法について説明します。
こちらにあるPowerAutomateの関数を使います。

  • 文字列を分割する・・split
  • 文字数を求める・・length
  • 文字を置換する・・replace

関数は値を指定すると関数に応じた処理をして別の値を返すものです。

使い方は動的なコンテンツの右にある「式」へ関数とその値を入力するだけです。
例で文字を分割するsplitを使ってみます。値には「’お疲れ様です。山田です。’,’。’」を入れてみます。

split(‘お疲れ様です。山田です。’,’。’)

フローをテストで動かすとこの結果になります。

1:’お疲れ様です’

2:’山田です’

3:”

「。」で分割しているので最後の「。」の後ろにある文字列ゼロの空間も分割されて3番目として出てきます。splitで指定するのは文字列ですが、結果はリスト(=配列)として戻ってきます。

リストは文字列に番号を付けていくつも入れる事のできる箱です。文字列を分割するので元の1つの文字列としては結果を出せません。なので自動的にリストとして出てきます。

リストの使い方ですが、アクションのApply to eachで「以前の手順から出力を選択」にリストを選択します。

そして動的なコンテンツにある「現在のアイテム」を指定するとリストの値を使えます。


lengthも試してみます。

length(‘です’))

結果は2です。

今回はこれらの関数を組み合わせてフローを作っていきます。

スポンサーリンク

フローを作る

今回作るフローです。トリガーを除くと8つのアクションがあります。

今回使うアクションは5種類です。

  • アクション:データ操作(本文リスト、行のリスト、作成)
  • アクション:変数を初期化する(苗字の行、苗字の文節)
  • アクション:Apply to each
  • アクション:条件    ※Apply to eachの中にあります。
  • アクション:変数の設定 ※条件の中にあります。

使い方は作りながら見ていきましょう。それではフローを作っていきます。
まだ画面を開いていない方はMicrosoftの公式サイトからPowerAutomateを開いてください。

画面左にある作成から「自動化したクラウドフロー」を選択。

フロー名を入力して「新しいメールが届いたとき(V2)」を選んで作成します。

新しいステップからデータ操作の「作成」を選択。

アクションの名前を「本文リスト」に変更

入力には式を設定します。

式:split(triggerOutputs()?[‘body/BodyPreview’],decodeUriComponent(‘%0D%0A’))

メール本文を改行で区切ってリスト化する式です。

式の説明

split(triggerOutputs()?[‘body/BodyPreview’],decodeUriComponent(‘%0D%0A’))

  • triggerOutputs()?[‘body/BodyPreview’] メール本文を返します。
  • decodeUriComponent ()の中にある文字を変換します。 上の式だと’%0D%0A’は’/r/n’になります。
  • split ()の中にある文字を分割します。 split(‘てすと1ーてすと2’,’ー’)は’てすと1’と’てすと2’に分けられる。

新しいステップで「変数を初期化する」を選択。

アクションの名前を「苗字の行」に変更して、3か所設定します。

名前:苗字の行
種類:文字列
値 :何も入力しない

※この変数は条件の中で値を設定します。

新しいステップで「Apply to each」を選択。

以前の手順から出力を選択して、本文リストの「出力」を指定。

新しいステップで「条件」を選択。

条件を3つ設定します。

左:動的なコンテンツにある「現在のアイテム」
中:次の値を含む
右:お疲れ様です。

追加から「行の追加」を押します。

左上が「または」に設定して3か所入力します。

左:動的なコンテンツにある「現在のアイテム」
中:次の値を含む
右:お世話になっております。

新しいステップで「変数の設定」を選択。

2か所入力します。

名前:苗字の行
値 :動的なコンテンツにある「現在のアイテム」

新しいステップで「作成」を選択。

データ操作-作成

アクションの名前を「行のリスト」に変更、入力には式を設定します。

式:split(variables(‘苗字の行’),’。’)

この式でメール本文を改行で区切ってリスト化します。

式の説明

split(variables(‘苗字の行’),’。’)

  • variables(‘苗字の行’) 変数の名前’苗字の行’の値を返します。
  • split ()の中にある文字を分割します。 split(‘てすと1ーてすと2’,’ー’)は’てすと1’と’てすと2’に分けられる。

新しいステップで「変数の初期化」を選択。

変数-変数を初期化する

アクションの名前を「苗字の文節」に変更、3か所設定します。

名前:苗字の文節
種類:文字列
値 :何も入力しない

※この変数は条件の中で値を設定します。

新しいステップで「Apply to each」を選択。

コントロール-Apply to each

以前の手順から出力を選択して、行のリストの「出力」を指定。
※本文リストの「出力」ではないので注意してください。

新しいステップで「条件」を選択。

コントロール-条件

追加から「行の追加」を2回おこない3行ある状態にします。
②をAndに設定。
③を入力します。

1~2行目はAplly to each 2にある「現在のアイテム」を指定してください。

3行目には式を設定します。

式:length(items(‘Apply_to_each_2’))

この式は区切った文節の文字数を確認します。

式の説明

length(items(‘Apply_to_each_2’))

  • items(‘Apply_to_each_2’) Apply to each 2で指定したリストの中にある1つを返します。
  • length ()の中にある文字数を返します。 length(‘てすと’)は3です。

新しいステップで「変数の設定」を選択。

変数-変数の設定

2か所入力します。

名前:苗字の行
値 :動的なコンテンツにある「現在のアイテム」

ここで指定する現在のアイテムもApply to each 2の方を選んでください。

入力には式を設定します。

式:replace(variables(‘苗字の文節’),’です’,”)

この式でメール本文を改行で区切ってリスト化します。

mizusibuki
式の説明

replace(variables(‘苗字の文節’),’です’,”)

  • variables(‘苗字の文節’) 変数の名前’苗字の文節’の値を返します。
  • replace ()の中にある文字を置換します。 replace(‘てすと1’,’1’,’2’)は’てすと2’になる。

これでフロー完成です。

動かした結果はこちら。
本文リストに受信したメールの本文が入っています。

最後の作成のアクションで「山田」のみに抽出できました。

まとめ

メール本文から名前を抽出する方法を3ステップで説明しました。

  • メール本文から名前を抽出するフロー
  • 文章から文字列を抽出する仕組み
  • フローを作る

文字を抽出するのはsplitと条件の組み合わせです。splitを使うとリスト(=配列)になるのでそこを上手く使いこなすのがポイントになっています。リストが使えると自動化の幅が一気に広がるので、ぜひ身につけてください。

PowerAutomateの記事まとめ
まだ試してないアクションがあれば見ておきましょう。
初心者向け
【初心者向け】PowerAutomateの使い方。無料で誰でも使えます。
基本的なアクション
【PowerAutomate】メールの添付ファイルをOneDriveへ保存する。
【PowerAutomate】Excelのデータをメールで送信する。
【PowerAutomate】メールを受信したらExcelにデータを入力する。
アクションの応用
【PowerAutomate】第1~5○曜日の日付を求める。
【PowerAutomate】メール本文から名前を抽出する。文字列抽出のキホン。
【PowerAutomate】ソートするフローを作る。配列の並べ替え。
【PowerAutomate】SharePointのリストから列と行をフィルターして表にする。
【PowerAutomate】ExcelからSharePointのリストに一括転記する
【PowerAutomate】SharePointのテキストファイルに改行を付けてメール送信
関数・アクション
【PowerAutomate】日付の関数まとめ。月末月初やExcelシリアル値変換など。
【PowerAutomate】Apply to eachの使い方。勝手に出てくる原因や遅い時の高速化など!

今の勉強法に満足していますか?
やりたい事はネットで調べてなんとか対処しているという方が多いと思います。

私も元々はネットから情報を得ていましたが、知識が少な調べる事ばかりで作業が進まなく悩んでいました。一度専門書を買ってみると勉強に集中できネットより遥かに理解が早かったと感じました。

とはいっても何冊も本を買うとお金も場所も取ります。そこでAmazonが提供するKindle Unlimitedという読み放題のサービス。PCやスマホどちらでも使え、月額980円で毎月1~2冊読めば元がとれたので本代の節約になりました。

>>Kindle Unlimitedへ登録する

確かにネットの情報量は多いのでほしい情報は見つかります。でも、ネットで自分の求めている情報を探すのは時間がかかります。気になる事を都度調べるのは効率悪くないですか?

ではどうしたらいいのでしょうか。

それは基礎知識を学ぶ事です。
専門書は初心者向けから上級者向けまでレベル別で出版されているので、求めている内容がそこにありました。

Kindle unlimitedはラインナップが勝手に変わるという予測できない点はありますが、読みたくなった今すぐに読める点が私にはドハマりでした。

初回30日無料なので今すぐに読みたい本がある方はお試しでも利用できます。Kindle Unlimitedは200万冊以上の本が読めるそうです!

ネットの検索時間から解放され、本来の目的に集中しましょう。

\30日間無料/

タイトルとURLをコピーしました