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

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

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

手順

今回の例では「新しいメールが届いたとき(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」のみが抽出されます。

関連記事