Power Automateでファイル名から拡張子を取得

Power Automateでファイル名から拡張子を取得

Power Automateでファイル名から拡張子を取得

以前、Power Automateで自動ファイルバックアップ(OneDrive)という記事でファイル名から拡張子を取得する方法をまとめました。 その際には複数の変数を用意して、かつ関数も使用して取得していましたが、これはフロー作成にかなり手間がかかるものです。 そのため、どうにか簡略化できなかと検討したところ新しい取得方法で、より簡潔に作成できることがわかったので、今回はファイル名から拡張子を取得する方法について新しい手法をまとめたいと思います。


作成方法を解説

まず取得する方法を説明する前に、以前の方法ではどのように取得していたかというと、

  1. ファイル名から拡張子までの文字数を取得
  2. ファイル名の拡張子部分の長さを取得する
  3. 拡張子の開始位置から、拡張子の文字数分だけ切り取って取得する
といった手順を踏んでいました。
詳細は先程リンクを貼っているブログか、文字列抽出方法をまとめたブログがあるので参考にしてください。Power Automateで文字列抽出

このように以前の方法ですと、ステップ数が増えるため作成も手間ですし、メンテナンス性も良くない状況です。
なのでもっと簡略化して実装する方法を紹介します。また2つの関数を使用するものの、シンプルなため可読性は高いです。さらに、今回の方法で実装すると事前準備していた変数3つが不要になります!!

では、いよいよ本題に入ります。
今回使用する関数はsplitlastの2つになります。

  • split関数
  • split関数は文字列を指定の文字で分割する関数です。
    csvファイルなどのカンマ区切りのデータや、それこそ拡張子のドットを指定して利用されます。
    引数は2つ指定します。
    ・第一引数;対象文字列
    ・第二引数:区切りたい文字

    使用方法としは下記になります。

     split('index.html','.')
                    
    こうすることで index.htmlが「.(ドット)」で分割され、「index」と「html」というデータの配列が返されます。 戻り値は配列(アレイ)となるため使用する際には注意が必要です。

  • last関数
  • last関数は配列の最後のデータを取得する関数です。
    power automateでは配列を扱うのが少々面倒で、プログラミングのようにデータの番号を入力すれば取り出せないのです。。
    そのため私はPower Automateでは配列を使用することは極力さけるのですが、今回のように欲しいデータが何番目に格納されているか事前に分かる場合は特別です。
    なぜなら今から紹介するlast関数で簡単に取り出せるからです。
    引数は1つ指定します。
    ・引数:操作したい「配列」

    使用方法としては下記になります。

     last( ['index', 'html'] )
                    
    ※[ ]は配列を表しています。
    1番目に'index'、2番目に'html'というデータが格納された配列が渡されています。
    これによりlast関数は配列の最後のデータである'html'を戻り値として返すことになります。

今回はこの2つの関数を組み合わせて、ファイル名から拡張子を取得したいと思います。

もうなんとなく拡張子を取得する方法は見えていると思いますが、ファイル名から拡張子を取得するには下記のうように式を記述します。

 last( split('index.html','.') )
        
この1行だけで拡張子を取得する事ができます!!
今までのように変数を事前に用意して、3つの関数を組み合わせることはないのです。
この方法を使用することで、ステップ数も減りフロー全体も見やすくなります。


実際にテスト

念の為この方法で問題なく拡張子が取得できることを確認します。
テストで使用するフローは下記になります。

この状態でフローを実行すると、結果は下記になります。
ちゃんと拡張子が取得できていることが確認できます。こんなにも簡単に取得できるようになりました。


さいごに

今回は以前紹介した「ファイル名から拡張子を取得する方法」について、別の手法を紹介しました。
こちらのほうがステップ数も少ないのでオススメです。(もっと早く気が付きたかった。。)
というよりは、なぜ「拡張子ありのファイル名」と「拡張子なしのファイル名」の選択肢があるのに「拡張子」の選択肢がないのかが疑問なのですが。。。
きっといつかできるんだろうな。と淡い期待を抱きながらも、今回の紹介は以上にしたいと思います。
今回はこの辺で、ではまた!

コメント

このブログの人気の投稿

PowerAppsで座席表を作成する

Power AutomateでTeamsのキーワードをトリガーにする

Power Automateで文字列抽出