今回はMacのフォルダアクション機能を使って、指定したフォルダにファイルが追加された時にスクリプトを実行させる方法について紹介します!
フォルダアクションを利用すると、
コマンドを利用したファイル移動だったり、スクリプトの実行などが自動化でき、日頃のルーティン作業が楽になるので、是非この機会にフォルダアクションを試してみてください
ちなみに僕は、ブログ記事を保存しているフォルダにフォルダアクションを紐づけていて、記事が作成されると自動的にGitHub
やEvernote
にバックアップを取れるようにしてたりします。かなり便利です😎
手順
AppleScriptを作成する
まずはSpotlight検索からスクリプトエディタを開きましょう。
※Spotlight検索は Command + Space で起動できます
![](https://cdn.apollon.ai/media/notebox/userimages/f8ed2933-3c1f-4aa5-9bf5-7609b02ce606.png)
ファイルを開く画面に行くので
Macintosh HD -> ライブラリ -> Scripts -> Forder Action Scripts
を選択し「新規書類」をクリックしてください
![](https://cdn.apollon.ai/media/notebox/userimages/2617828e-5bb3-4a34-b6be-e75a6fd8e4c1.png)
まずは手慣らしにMacのデスクトップのダイアログにhello worldと表示させてみましょう
![](http://amamemo.local/wp-content/uploads/2022/07/image-1024x275.png)
エディタに
display dialog "hello world"
と記載し、▶︎を押してみてください。
![](https://cdn.apollon.ai/media/notebox/userimages/a621250a-fb61-432f-b9fc-12a5d2a0afe6.png)
画面にこのようなダイアログが出てきたら成功です。
さて、今回行いたいのは特定のPythonスクリプトを実行したい。ということなので、
iTermを開き、test.pyファイルを実行する
というスクリプトを作ってみたいと思います。
tell application "iTerm"
activate
set my_session to current session of current tab of current window
tell my_session
-- ここにターミナルコマンドを入力
write text "cd ~/Sources/my_apps/python_apps && python test.py"
end tell
end tell
iTermの現在のウィンドウを呼び出し、cd スクリプトのあるディレクトリのパス && python ファイル名.py
を叩きます。
※ディレクトリのパスや実行するスクリプトはそれぞれ調整してください
![](https://cdn.apollon.ai/media/notebox/userimages/d034869c-ed5f-4eed-9d5c-ab6128c01f1e.png)
▶︎を押してみましょう。
![](https://cdn.apollon.ai/media/notebox/userimages/6613b732-86d4-4750-87b5-0b87cb877502.png)
iTermが開かれ、指定したスクリプトが動いてくれました。
※test.pyはただHello World!と叫ぶだけのスクリプトです。
# test.py
print("Hello World!")
仕上げに、先ほどのスクリプトに”フォルダにアイテムが追加された時に動く”というトリガーを設定します
on adding folder items to this_folder after receiving added_items
tell application "iTerm"
activate
delay 5
set my_session to current session of current tab of current window
tell my_session
-- ここにターミナルコマンドを入力
write text "cd ~/Sources/my_apps/python_apps && python test.py"
end tell
end tell
end adding folder items to
on adding folder items to this_folder after receiving added_items
end adding folder items to
がトリガーの部分ですね
※iTermの準備が整う前にコマンドを実行しようとしてうまくいかないことがあったのでファイルが追加されてから5秒後(delay 5
)にコマンドが叩かれるようにしてます。
![](https://cdn.apollon.ai/media/notebox/userimages/500586ec-1548-4e11-9746-1fc3fd4b53b7.png)
作成したスクリプトは適当な名前を付けて保存しましょう。
※保存時に書類“〜”を保存できませんでした。
などのエラーが出る場合は、Folder Action Scriptsフォルダへの書き込み権限がないかもしれません。その場合は、Folder Action Scriptsフォルダを右クリック -> 情報を見る -> 共有とアクセス権から書き込み権限を付与してください
ここまででほぼ準備は完了です。
作成したAppleScriptをフォルダに紐づける
最後に、作成したAppleScriptとフォルダを紐づけましょう。
適当なフォルダを作成。
作成したフォルダを右クリック(タッチパッドを2本指クリック)し、
サービス -> フォルダアクション設定
をクリック
![](https://cdn.apollon.ai/media/notebox/userimages/a733089e-b49f-4aee-85f7-35d8768d72bb.png)
フォルダアクション設定画面が出るので、フォルダアクションを適用したいフォルダを選択
紐づけるアクションを選択するには「+」ボタンをクリックします
![](https://cdn.apollon.ai/media/notebox/userimages/5bb29255-788f-4e82-82e9-b18e52bcdf91.png)
様々なスクリプトが表示されますがここで先ほど作成したスクリプトを選択し、関連付けるをクリックしてください。
![](https://cdn.apollon.ai/media/notebox/userimages/00467bbb-7f07-47bd-a1df-d2b941abf8ea.png)
この画面になったら設定完了です。
実際にこのフォルダに適当なファイルを配置してみましょう。
![](https://cdn.apollon.ai/media/notebox/userimages/efa8b25e-3d1a-4f81-8644-378cbefbeb74.png)
![](https://cdn.apollon.ai/media/notebox/userimages/b682e6ed-d3d1-492b-b57f-21d4ab4a7044.png)
ファイルを配置するとiTermが起動し、5秒後にPythonスクリプトが実行されました。
成功!!
あとがき
AppleScriptには触れたばかりですが、アプリケーションを操作することも可能なようで色々とできることが増えて楽しいですね。
今回は以上となります。
参考文献
- https://www.rasukarusan.com/entry/2019/04/06/224538
- AppleScriptでiTermを操作
- https://alvinalexander.com/blog/post/mac-os-x/applescript-delay-command
- AppleScriptでsleepのやり方
コメント