回答編集履歴
4
追記の追記
test
CHANGED
@@ -134,8 +134,20 @@
|
|
134
134
|
|
135
135
|
|
136
136
|
|
137
|
-
|
137
|
+
(追記)
|
138
138
|
|
139
139
|
テスト用に私が作った上記の Automator アプリですが、テストを繰り返していたところ、一度にドラッグ&ドロップしたファイルのうち、一部が処理から漏れたり、ひどい時は全く処理ができなくなったりする不具合が観測されています。少しだけ調査をしてみましたが、原因はわかっていません。I/O が伴う処理なので処理が追いついていないのかと思い、引数をすべてまとめて python 側に渡し、Python 側でループさせてもみましたが、結果は一緒でした。
|
140
140
|
|
141
141
|
質問者さんの環境とスクリプトで同様の不具合が発生するかどうかはわかりませんが…。念のため追記しておきます。
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
---
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
(追記の追記)
|
150
|
+
|
151
|
+
ドラッグ&ドロップが可能なアプリケーション形式ではなく、右クリック(コンテキストメニュー)から実行が可能なクイックアクション形式で作り直したら、問題なく実行されるようになりました。ドラッグ&ドロップというインタフェースでどうも不具合が生じているようです。クイックアクションは Finder や Touch Bar にも登録して実行できるという利点もあります。質問者さんの環境でも不具合が生じるようなら、クイックアクションでの作成を検討してみてはいかがでしょうか。
|
152
|
+
|
153
|
+
[Macでクイックアクション・ワークフローを使用する - Apple サポート](https://support.apple.com/ja-jp/guide/automator/aut73234890a/2.10/mac/11.0)
|
3
追記
test
CHANGED
@@ -122,8 +122,20 @@
|
|
122
122
|
|
123
123
|
質問中に「Applescriptに慣れておらず」と書かれていますが、シェルスクリプトの間違いかと思います。
|
124
124
|
|
125
|
-
AppleScript は macOS に同梱されている、英語に似た構文を持つスクリプト言語で、macOS でのみ実行できるものです。「AppleScriptを実行」アクションを使えば Automat
|
125
|
+
AppleScript は macOS に同梱されている、英語に似た構文を持つスクリプト言語で、macOS でのみ実行できるものです。「AppleScriptを実行」アクションを使えば Automator で Applescript を実行することもできますが、参考資料が少なく、構文にもクセのある Applescript を積極的に使う理由はないでしょう。
|
126
126
|
|
127
127
|
|
128
128
|
|
129
129
|
「シェルスクリプトを実行」アクションの「シェル」ポップアップメニューで「/usr/bin/python」を選べば、Python スクリプトファイルを別に用意しなくても、アクションのコマンドフィールドに直接、Python スクリプトを記入して実行することができます。ただしこの時に実行される Python は macOS に同梱の Python 2.7 になりますので、この方法で実行できる Python スクリプトは、Python 2.7 と標準ライブラリで実行できるスクリプトになります。
|
130
|
+
|
131
|
+
|
132
|
+
|
133
|
+
---
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
(追記)
|
138
|
+
|
139
|
+
テスト用に私が作った上記の Automator アプリですが、テストを繰り返していたところ、一度にドラッグ&ドロップしたファイルのうち、一部が処理から漏れたり、ひどい時は全く処理ができなくなったりする不具合が観測されています。少しだけ調査をしてみましたが、原因はわかっていません。I/O が伴う処理なので処理が追いついていないのかと思い、引数をすべてまとめて python 側に渡し、Python 側でループさせてもみましたが、結果は一緒でした。
|
140
|
+
|
141
|
+
質問者さんの環境とスクリプトで同様の不具合が発生するかどうかはわかりませんが…。念のため追記しておきます。
|
2
文言の修正
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
```
|
26
26
|
|
27
|
-
`$@`は引数のすべてを意味します。複数のファイルを同時にドラッグ
|
27
|
+
`$@`は引数のすべてを意味します。複数のファイルを同時にドラッグ&ドロップした場合は、すべてのファイルのフルパスのリストがここに格納されていす。
|
28
28
|
|
29
29
|
それに対して for ループを実行していますので、`$f`にはファイルのパスがひとつずつ順番に入ります。
|
30
30
|
|
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
|
88
88
|
|
89
|
-
以下はテストのために私が書いたスクリプトです。ドラッグ
|
89
|
+
以下はテストのために私が書いたスクリプトです。ドラッグ&ドロップしたファイルと同じディレクトリに test.txt というファイルを作って、そこにファイル名とフルパスを書き込んでいます。
|
90
90
|
|
91
91
|
|
92
92
|
|
1
文言の追記
test
CHANGED
@@ -74,7 +74,11 @@
|
|
74
74
|
|
75
75
|
|
76
76
|
|
77
|
+
> ②取得したPathをPythonファイル内の引数に設定する。引数は1つのみです。
|
78
|
+
|
79
|
+
|
80
|
+
|
77
|
-
|
81
|
+
Python では コマンドライン引数は `sys.argv` を使って取得することができます。今回は Python に渡される引数は1つと決まっているので、`sys.argv[1]` で決め打ちで取り出すことができます(sys.argv[0] にはスクリプト自身のパスが入っています)。
|
78
82
|
|
79
83
|
|
80
84
|
|