一括ファイル名を揃え！Power Automate for Desktopを使うファイル整理の魔法？



## ｢この時間を返せ！！｣

こんにちは。

ファイル名が揃っていなとイライラする、コードとか見たらすぐ頭が痛くなるのにDXに関わっている部門で働くスーパーマーケット社員でーす。

これは総務部にいったときの話です。

昨年からうちの会社が、ペーパーレスを推進します。毎月月首に回収の毎日業務確認表や、進捗管理表など、今までFAX送ってくるものが、PDFにして指定されたサイトフォルダーへ投稿することに変わってきました。

時代の発展と共に、経費削減、環境への取り組みなど実現できる、さまざまなメリットがあり、当然嬉しいことだと思いましたが、実際に進んでいくと、問題が徐々に浮かびます。

店で働いている人の中、パソコンまた機械が苦手な人が多くいますし、投稿手順を守らない人もいます。投稿ファイルに必ず統一な名前をつけることというルールがあるますが、店舗の方により投稿したファイルの名前もバラツキが多くい。

投稿の回収と整理する時が一番しんどいです。ファイルの名前を一個ずつルール通りに変更する、店舗リストを見ながらチェック、未投稿リスト作成と通達･･･やっと終わりましたら、**一日の時間が飛んできました。**

簡単に処理できる魔法はないでしょうか･･･

答えは、あります。

今回はマイクロソフト社の自動化処理(RPA)サービス`Power Automate`(のデスクトップ版)を使ってこの悩みを解決してみて、総務の方に聞いていきます。

## 完成品

https://twitter.com/Ex2kSU5kdtINw9K/status/1535278740284276736

## 事前準備

- Power Automate for Desktop

https://powerautomate.microsoft.com/ja-jp/

## サッとできた

業務のプロセスを確認して、1時間もなく自動化ワークフローを作成しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2669194/0361b8a1-aaae-0e22-f86b-8b4123d874a9.png)

<details><summary><strong> >>>>コード<<<< </strong></summary>

::: note 
コードをPower Automate Deskotopに直接貼り付けて使用可能ですが、詳細設定について、コード知識が必要となります。
:::

``` Robin:robin
    Display.SelectFileDialog.SelectFiles Title: $'''Rename files''' IsTopMost: False CheckIfFileExists: False SelectedFiles=> SelectedFiles ButtonPressed=> FileButtonPressed
    IF SelectedFiles.Count = 0 THEN
        EXIT Code: 0
    END
    Display.SelectFromListDialog.SelectFromList Title: $'''後綴''' Message: $'''これらファイルの内容は?''' List: $'''月度A-会議報告
    日次業務B確認表
    日次業務C確認表''' IsTopMost: False AllowEmpty: False SelectedIndex=> SelectedIndex
    Display.InputDialog Title: $'''日付''' Message: $'''書類月度を年月6桁を入力ください''' InputType: Display.InputType.SingleLine IsTopMost: False UserInput=> UserInput
    IF SelectedIndex = 0 THEN
        SET SubText TO $''' %UserInput% A'''
    ELSE IF SelectedIndex = 1 THEN
        SET SubText TO $''' %UserInput% B'''
    ELSE IF SelectedIndex = 2 THEN
        SET SubText TO $''' %UserInput% C'''
    END
    LOOP FOREACH CurrentItem IN SelectedFiles
        File.RenameFiles.RenameAddText Files: CurrentItem TextToAdd: SubText TextPosition: File.AddTextPosition.AfterName IfFileExists: File.IfExists.DoNothing RenamedFiles=> RenamedFiles2
    END
    
    # [ControlRepository][PowerAutomateDesktop]
    
    {
      "ControlRepositorySymbols": [],
      "ImageRepositorySymbol": {
        "Name": "imgrepo",
        "ImportMetadata": {},
        "Repository": "{\r\n  \"Folders\": [],\r\n  \"Images\": [],\r\n  \"Version\": 1\r\n}"
      }
    }
```
</details>

## Let's インタビュー

自分がもう総務部の人ではないので、このフローが本当に役に立っているかどうか、現役の方に使ってみました。

今回試用してくるのは、既に総務部勤務三年以上の**Uさん**(40代･男性)。

一回簡単な説明と実演して、Uさんに実際操作させまして、フローに対するコメントを聞きました。

> ちょっと勉強して、サッとこのフロー作ることなんて、今までも考えたことがないです。自動化がすごいなー！アナログ作業が、簡単になって作業時間が大幅削減、人員負担も減らせます。非常にいいと思います。

> でも一個足りないとしては、**事前処理**(店舗番号を付ける)しなければできないこと。そこもRPAでできだら･･･その先もう一歩を進め、自動的に回収までできればさらに良いと思います。

## 考察

まさにまさにUさんのおっしゃる通りです。既に事前処理するなら、日付と後綴がセットしてコピペでもできるではないかなーと自分も反省します。

そもそもなぜ事前処理しなければならないというと、理由が3つあります。

1. 投稿時点、`店舗番号 yyyyMM 書類識別子`の**名付けルールちゃんと守っている人も守っていない人**もいます
2. 守っていっても、ファイル名に **全角･半角英数字** が混在します
3. 半角英数字でルール通り名付けしても、**先月分、先々月分、今月分**が混在します。

と考えますと、自動化処理で課題解決より、**投稿手順が守らない**が真の問題ではないでしょうw

また、前文記述の通り、このフローを実施後、未投稿店舗をチェックしてリスト作成の作業ですが、Excelの`Power Query`機能を使って確認します。その部分もPower Automateに含まれて、`回収 -> 整理  -> 確認 -> 通達`全フロー自動化ができることを期待しています。

## 参考

https://blog-tips.sekenkodqx.jp/2021/11/22/power-automate-desktop-half-full-string/

https://qiita.com/h-nagao/items/81b96c6db7032452adc3