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

2021年11月7日

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

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

手順

今回の例では「新しいメールが届いたとき(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('拡張子の開始位置'))

Power Automateを効果的に習得したい方へ

当サイトの情報を電子書籍用に読み易く整理したコンテンツを

買い切り1,250円またはKindle Unlimited (読み放題) で提供中です。

Word-A4サイズ:800ページの情報量で

(実際のページ数はデバイスで変わります)

基本的な使い方から各トリガー/アクションの詳細な使い方、

頻出テクニック、実用例を紹介。

体系的に学びたい方は是非ご検討ください。

関連記事