Power Automate ファイル名から拡張子を抽出する方法

2022年4月27日

メールの添付ファイルを例に手順を紹介します。

動的なコンテンツの添付ファイルを他のものにするとメール以外でも応用可能です。

手順

今回の例では「新しいメールが届いたとき(Offce365 Outlook)」トリガーでフローを起動し、

添付ファイルの拡張子を抽出します。

整数の変数を二つ用意します。

今回は「拡張子の開始位置」、「拡張子の文字数」と名前を付けます。

Apply to each(コントロール)」アクションで

動的なコンテンツの添付ファイルを繰り返します。

Apply to each(コントロール)」の中に「変数の設定」を設置し

「拡張子の開始位置」変数に以下の式を設定します。

lastIndexOf(items('Apply_to_each')?['name'],'.')

続いて「Apply to each(コントロール)」の中に「変数の設定」を設置し

「拡張子の文字数」変数に以下の式を設定します。

sub(length(items('Apply_to_each')?['name']),variables('拡張子の開始位置'))

これによりピリオド込みの文字数が「拡張子の文字数」変数に格納されます。

この状態で「ファイルの作成(OneDrive For Business)」を設置し、

ファイルコンテンツに動的なコンテンツのファイルコンテンツを設置し、

ファイル名に固定したいファイル名と以下の式を設定します。

substring(items('Apply_to_each')?['name'],variables('拡張子の開始位置') ,variables('拡張子の文字数'))

この状態でフローが起動すると例えば.pdfのファイルが添付された場合、

「固定ファイル名.pdf」という名称で保存されます。

式なので文字列変数に格納することも可能です。

ピリオドを含みたくない場合は以下の式になります。

substring(items('Apply_to_each')?['name'],add(variables('拡張子の開始位置'),1),sub(variables('拡張子の文字数'),1))

これにより先述の例では「pdf」のみが抽出されます。

逆にファイル名のみを抽出する場合(拡張子なしにする)は、次のように指定します。

substring(items('Apply_to_each')?['name'],0,variables('拡張子の開始位置'))

当サイトの情報を再編集した実務リファレンス

ネット検索では解決しづらい「日付の変換」や「複雑なデータ処理」など、当サイトで公開している技術情報を電子書籍として読みやすく再編集しました。

400以上のコネクタや関数の仕様を網羅的に解説しており、困ったときにすぐ引ける「辞書」として活用いただけます。

現場でのトラブルシューティングや、手元での確認用に最適です。Kindle Unlimited対象(読み放題)です。

[書籍リンク:Power Automate (Web版)完全版 基本から実用まで]

関連記事