回答編集履歴

4

追記の追記

2021/03/22 13:36

投稿

etherbeg
etherbeg

スコア1195

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

追記

2021/03/22 13:36

投稿

etherbeg
etherbeg

スコア1195

test CHANGED
@@ -122,8 +122,20 @@
122
122
 
123
123
  質問中に「Applescriptに慣れておらず」と書かれていますが、シェルスクリプトの間違いかと思います。
124
124
 
125
- AppleScript は macOS に同梱されている、英語に似た構文を持つスクリプト言語で、macOS でのみ実行できるものです。「AppleScriptを実行」アクションを使えば Automater で Applescript を実行することもできますが、参考資料が少なく、構文にもクセのある Applescript を積極的に使う理由はないでしょう。
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

文言の修正

2021/03/22 10:18

投稿

etherbeg
etherbeg

スコア1195

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
- 以下はテストのために私が書いたスクリプトです。ドラッグアンロップしたファイルと同じディレクトリに test.txt というファイルを作って、そこにファイル名とフルパスを書き込んでいます。
89
+ 以下はテストのために私が書いたスクリプトです。ドラッグドロップしたファイルと同じディレクトリに test.txt というファイルを作って、そこにファイル名とフルパスを書き込んでいます。
90
90
 
91
91
 
92
92
 

1

文言の追記

2021/03/22 08:29

投稿

etherbeg
etherbeg

スコア1195

test CHANGED
@@ -74,7 +74,11 @@
74
74
 
75
75
 
76
76
 
77
+ > ②取得したPathをPythonファイル内の引数に設定する。引数は1つのみです。
78
+
79
+
80
+
77
- 引数は Python では `sys.argv` を使って取得することができます。今回は Python に渡される引数は1つと決まっているので、`sys.argv[1]` で決め打ちで取り出すことができます(sys.argv[0] にはスクリプト自身のパスが入っています)。
81
+ Python では コマンドライン引数は `sys.argv` を使って取得することができます。今回は Python に渡される引数は1つと決まっているので、`sys.argv[1]` で決め打ちで取り出すことができます(sys.argv[0] にはスクリプト自身のパスが入っています)。
78
82
 
79
83
 
80
84