結論
さっさとシェルスクリプト書いた方がいい(暴論)
環境
- macOS Monterey 12.3.1
- Shortcuts 5.0
やりたかったこと
- ゲーム制作で、シナリオをGoogle スプレッドシートで管理している
- シートをTSVでダウンロードする
- ダウンロードしたファイルをリネーム(拡張子もtxtに変更)
- 所定のディレクトリに移動
今までこれを全部手動でやっていましたが、そのうち下2つはすぐに自動化できるのではと思いmacOSに標準搭載されたショートカットアプリで実際にやってみました。
なんかめっちゃハマった。
ファイルのリネームについてですが、ダウンロードしたファイル名は
ファイル名
-シート名
.tsv
というルールで命名されます。これを、
シート名
.txt
に変更します。
ちなみになぜtsvからtxtに拡張子を変えなきゃいけないかというと、Unityでは拡張子tsvはよくわからんファイルということでインスペクタで指定できないからです。
レシピ
実際やっていることはシンプルでダウンロード先ディレクトリからtsvファイルを一覧で取得してリネーム、そして所定のディレクトリに移動という流れです。
ここでハマったのがリネームです。
ファイルをイテレータで取得する時にさらにファイルのどの属性を取得するかを細かく指定できます。名前はファイル名(拡張子除く)なので、これでサクッととれます。
次にこれを好きな名前に変換します。正規表現が使えるので、好みに合わせて変更します。
最後に指定したディレクトリに移動します。
あぁめっちゃ簡単じゃん。
そして実行すると、
stage_2_4_epi.tsv
なんで拡張子そのままなの。
正直理由わからんのですが、推測としては拡張子を除いた名前というメタデータが残った状態で処理されていそう + 余計な拡張子だと思われるものは勝手に排除してリネームされるという処理が裏でされているんじゃないかという推理です。
で、どうすればいいかというと名前ではなくファイルパスからファイル名を取得します。こちらはフルパスになるのですが、それをファイル名.拡張子に正規表現で変更してあげた後同じようにリネーム&移動で解決しました。
こんな変な沼にはまると全然解決手段が検索しても引っかからないのでさっさとシェルスクリプトなりPythonスクリプト書いた方がスプレッドシートのAPIから直接DLしてリネームまで全部できそうな気がします。