CSVから一括でファイル名を変更するMacアプリを作った

シェルスクリプトをMacアプリにできるAutomatorが凄かった！！

**アプリのダウンロードは[こちら](https://github.com/tippy3/cp-based-on-csv)**

# ことのはじまり

デザイン部の社員から「**約600個の画像の名前を一括で変更したい。変更前と変更後のファイル名はExcelシートにまとまっている**」と相談された。

そのスプレッドシートを見せてもらうと、以下のような感じ。

![スクリーンショット 2020-11-30 20.12.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/b45c4725-38d3-be9d-ec1a-ef31a30f25ff.png)

ちなみに今までは全部人力で名前変更していたらしい。**そ れ は ヤ バ イ** 。

その社員はMacだったので、mvコマンドをスプレッドシートで生成し、それをコピペしてターミナルに貼ってもらう方法を提案した。

![スクリーンショット 2020-11-30 20.11.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/668ae1b9-ad16-a4b7-e48e-f79226f63bf3.png)

【参考】[Macでファイル名変更リストを作成して、ターミナルから大量ファイルを一発でリネームする方法！](https://kazuki-mizuc.com/mac-terminal-rename-list/)

このやり方をレクチャーし、とても喜んでもらえた。私は満足して退勤し、気分良く寝ようとした。が、

......

寝られないのである。

なんだろう、このモヤモヤする気持ちは......

**エンジニアでない人にターミナルを起動させるのは、負けではないか。**

# というわけでMacアプリを作る

## 1. Bashを書く

まずはささっとBashを書く。

引数は2つ。CSVファイルのパスと対象ディレクトリのパス。

返り値はリネーム後のファイルが入ったディレクトリのパス。

やりたいことは「リネーム」だが、実際にはcpコマンドでコピーして元ファイルを残すようにした。

```cp-based-on-csv.sh

CSV_FILE=$1
FILE_DIR=$2
NEW_FILE_DIR=${FILE_DIR}_$(date +"%Y%m%d_%H%M%S")
mkdir $NEW_FILE_DIR
for row in $(cat $CSV_FILE)
do
  col1=$(echo "$row" | cut -d ',' -f 1)
  col2=$(echo "$row" | cut -d ',' -f 2)
  cp "${FILE_DIR}/${col1}" "${NEW_FILE_DIR}/${col2}"
done
echo "$NEW_FILE_DIR"
```

## 2. AutomatorでMacアプリにする

Automatorを起動

![Automatorの起動](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/8925bcbc-941e-30af-a10e-fdd43b4aa098.jpeg)

新規作成の画面で「アプリケーション」を選ぶ

![アプリケーションを選ぶ](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/6fb0b455-bd93-0172-a441-a3225b38fc7b.png)

以下ではこの画面でビジュアルプログラミングしていく

![Automatorのメイン画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/699905a6-573e-9bfa-a5ff-4165d4ddaca2.png)

まずは「ファイルを開く」ダイアログを２つ用意し、

![Finder項目の選択を求める](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/548cc1b7-36fc-7123-832a-17525be93299.png)

その2つを引数にシェルスクリプトを実行させ、

![bashを実行する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/29dfd75a-3768-088a-08e9-5f5863895012.png)

結果をFinderで表示する。

![Finderで表示する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/f7ad9a32-faf6-4c77-37cd-99e66f3e8f1a.png)

**まとめると以下の通り。**

![完成形.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/fb648516-9a8d-4ae7-d31b-7976d2f86927.png)

さらに確認画面をいくつか追加した。キャンセルを押せばアプリを途中で終了できるので便利。

![確認画面を出す](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/2c9cca88-6169-5c27-2ec4-fd500721eea9.png)

**Appとして書き出せば...**

![書き出す1](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/e1d415b5-5c3f-53a3-34c2-7de57e29770b.png)
![書き出す2](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/c9882385-411b-c76f-992b-2df53ea4fed2.png)

## 完成！

動作確認をする。作成したアプリをクリックしたら、

![自作アプリの起動](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/b91ceed8-3b1f-89e9-c41a-dfea7da40fdd.png)

まずはCSVの選択画面が出て、

![CSVの選択画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/2505e3b8-5f45-a5e5-4dcf-fb0da5b834da.png)

次にフォルダの選択画面が出て、

![フォルダの選択画面](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/dad2a4b7-a74f-15e2-d474-6d8755ac04a1.png)

**リネーム後のファイルが表示される。完璧！**

![リネーム後のファイルの表示](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/502255/e9d873f0-b189-5716-4946-394b02f2fa76.png)

誰でもかんたんにMacアプリが作れるAutomator、素晴らしすぎる。

# おしまい

今度こそとても感謝してもらえた😊

**GitHubリポジトリは[こちら](https://github.com/tippy3/cp-based-on-csv)**