AppleScript アップルスクリプト 質問、発表 6
レス数が1000を超えています。これ以上書き込みはできません。
打ちやすそうでいいね。
でも、エラーが出た時に、ハゲが定義されていませんとか表示されると想像すると、ちょつと躊躇する。 |
| 彡⌒ミ
\ (´・ω・`)また髪の話してる
(| |)::::
(γ /:::::::
し \:::
\ 作ったスクリプトを直接、Automator、
Alfred、Keyboard Maestroから動かすと
動かない、動きが変わる、動きが遅いなど
それぞれに違いが出ますね。難しい。
今日はAlfredがハンドラのところで
止まってしまいました。
あとAutomatorだと起動に時間がかかるのは
そんなものですか? 質問です。
do shell script からPythonを動かす時につける「-c」って
どういう意味があるのですか?
-c以外もあるんですか?
pythonを使っている方がいたらよろしくお願いします。 ターミナルでman python2.7くらいしろよ
COMMAND LINE OPTIONS
-c command
Specify the command to execute (see next section). This termi-
nates the option list (following options are passed as arguments
to the command). >>910
ありがとうございました。
コマンドだからmanみればよかったのか
思いつかなかった、ごめんなさい。 久しぶりにドロップレットち作ろうかと思ったら書き方忘れてたw
1時間もかかったよ、非効率化だー あるあるw
自動化せずに手動のほうが早かったんじゃねってことけっこうあるけど
楽しかったし勉強になったから……と納得することにしてる on drop droppedItems
end
とか書いてコンパイル通らず、ググったことあったわw >>915
何が間違いなのか気がつくまで5秒だった。 表示しているウィンドウを画面の中央に移動するAppleScript教えてください
検索して以下を試してみたけどSierraでは動かなかったです・・・
tell application "Finder" to set ScreenSz to bounds of window of desktop --- ディスプレイの解像度を取得する。
tell ScreenSz to set {ScreenSz3, ScreenSz4} to {item 3, item 4}
tell application "System Events"
set ActApp to name of every process whose frontmost is true --- アクティブなアプリを取得する。
set ActApp to item 1 of ActApp
tell process ActApp
tell window 1
set CurentSz to size --- アクティブなウインドウの縦横のサイズを取得する。
set x to (ScreenSz3 - (item 1 of CurentSz)) / 2
set y to (ScreenSz4 - (item 2 of CurentSz)) / 2
set position to {x, y} --- ウインドウの位置を移動する。
end tell
end tell
end tell スクリプトメニューからやってみたら動くようだけどSierraで
Safari、TextEdit、Preview、Firefox等々
やってないけどAlfredとかからでも動くんじゃなあい? >>917
どうやって実行してんの?
エラー出てないなら、対象にしたいアプリが最前面になってないだけなんじゃないの >>919
それオフになっていました
すみません、みなさん失礼しました・・・ ファインダーで選択したものを処理する時に
フォルダでもファイルでも両方扱いたいとして
途中でexist of file とか exist of folder とか
扱いを少しづつ変えないといけない場合
if で条件分けして
2重にスクリプトを書けば出来るんだけど
何か上手いやり方とかコツってあるものですか?
よろしくお願いします。 exist じゃなくてexists でした。すいません。 扱いを変える部分がどうなってるのか分からないとなんとも言えないけど。
共通する部分をハンドラ(関数)にする。
例)
tell application "Finder"
set selected_items to selection
repeat with current_item in selected_items
set message to ""
set item_name to my getname(current_item)
if class of current_item is folder then
set message to "フォルダ" & item_name & "には" & (count of files of current_item) & "個のファイルがあります"
else
set message to item_name
end if
display dialog message
end repeat
end tell
on getname(target_item)
return name of target_item
end getname 久々にApplescriptいじって結構忘れちゃってるんだけど
Finderのselectionてフィルタ参照できないんだっけ?
あとこういうのもダメだったっけ?
set aaa to {{name:"aaa1"}, {name:"bbb1"}, {name:"aaa2"}, {name:"bbb1"}} whose name starts with "aaa" >>925
ありがとうございます!
ハンドラ色々試して見ます。
repeatを使えば簡単に名前を取得出来るんですね。
知りませんでした。
これだけでも凄くスクリプトを短くする事が出来ました。
まだまだハンドラの前に勉強する事が色々がありそうです。
勉強になるサンプルありがとうございます。 set theFolder to choose folder
のようにフォルダを選択するときに、フォルダ検索をかける方法はないでしょうか?
右上の検索ボックスらしきものは表示されてますが、なにも入力できないし、
choose folderにも検索を有効にするオプションが見当たらないのですが……
(画像を大量のフォルダのいずれかに仕分けするような用途を想定しています) >>929
すみません。
tell application "Finder"
end tell
で囲まず処理してました。解決しました。ありがとうございます。 >>928
最初はとっつきにくいかもしれんけど、
rubyあたりでやった方が処理も速いし書くのもラクだよ。 >>931
ruby はchoose folder みたいな事が出来ちゃうのですか? >>932
そこはASに任せればいい。逆に言えばそこだけAS使って後はrubyで書けばいい。 まだ初心者さんみたいだから、
rubyとかの外部スクリプトをまぜるのは
少々難易度が高いかも…
do shell script "ruby -Ku -e 〜"
って直接AppleScript内に書く場合は、
ダブルクォートなんかのエスケープが面倒くさいし、
.rbファイルを実行するにしても、.app内にファイルを置くかどうかで
パスの書き方が変わってきたりして…
>>934
横レスだけど、AppleScriptでやるより処理が速いし、
正規表現でファイル名置換したりできるのは便利ですよ >>934
慣れないうちはそう思うけど、慣れると逆にASで書く方がなにかと面倒くさい。 guiめも
CocoaDialog
Platypus
inquirer.rb
terminal-notifier そんな速度求めてないんじゃないの
デバッグするにしてもどっちかで完結した方がいいっしょ ASの基本もおぼつかない人を捕まえてRubyを薦めるなんて、非効率化道へ誘導しようとしているとしか思えない ruby使えるだけで威張れるからこのスレ好きです
これからもrubyを薦めます 時代はpython
>>939
ほんそれ。使う人によって効率は変わってくるっていう基本がわかってない いや、どうせどっちもわかってないんだから
rubyなりpythonあたりから覚えても一緒じゃん。 でもこのスレで話すのはノーサンキュー
語りたい奴は既存のスレ移動するか、自分でスレ立てろよ asが便利なのってマックリソース込みのファイル移動とかコピーだよな そんなことにASなんか使う必要ないでしょ
10.4までなら MvMac/CpMac コマンドとか使えばいいし
10.4以降は mv/cp でよい
ASの特色はそういうレベルじゃない 対象のファイルが複数のフォルダーに散在している場合や、
同一フォルダー内でも縦横無尽に散らばっている場合で、
それらをまとめて処理するようなときには、
コマンドファイルでも、
アップルスクリプトでも、
オートメーターでも、
自分の好みにあわせてどれでも利用すれば良いじゃない
もちろんコマンドファイルが処理速度などの点でいちばん有利なんだろうと思うけど、操作結果のフィードバックが目立たなさすぎるので不安な人もいるだろうし
確かにアップルスクリプトの特色はファイル操作だけじゃないけど、
だからといってファイル操作ごときにアップルスクリプトを使うな、コマンドを使え、というのはおかしくないかね? リソース込みの移動やコピーなんて
今はOS添付のコマンドラインなら普通に出来るから
リソースがどうのというのは前提条件が間違ってますよ
という指摘でしょう >>931みたいにAS以外を押しつけてくる輩もいるから敏感になってるのかな
別にASを否定したつもりはないよ
>>952の補足してくれた(ありがとう)とおりで、使うな、ではなく
その条件では別に必要ない(使ってもよい)ということ
ASを推す気持ちはわかるけど理由が理由になってないから…… 他人がどんな言語選択するかなんて好き勝手すればいいじゃないか
そういうのは他所で議論してください シェル使っていいならjava でもなんでもいいけど こういうのが続くと
do shell scriptが絡んだ質問がしにくくなるなあ
必要に迫られてjava使ってみたけど
普段スクリプト言語ばかりだから
爆速に驚いたよ
スレチすいません 個人的にASの有難みを痛感したのは、WindowsでiTunesをスクリプト処理しようとした時だったな ファイルコピーやら移動やらするにも、ASだと色々と自分で処理を考えてやらなきゃいけないけど、
shell系なら色々と処理が用意されてるから圧倒的に楽に書けると思うが。 68KやPowerPC時代はApple Script一択だったけど
今は選択肢増えたんだし
慣れたのでいいと思う ただの慣れの問題だろ
ASだから考える時間が増えるとは一概に言えない AppleScriptのファイルコピーって挙動があやしくない?
バッティングしたのかしらんがスルーされるときがある そもそも、ここはapplescriptのスレなんだから
どの言語が使い易いとか便利とかは関係ないだろう
そういう話になるならobjcの方が楽に書けるし自由度もある訳だから比較にならない
しかしapplescriptの便利さをただのファイル移動としてしか理解されてない人間に
だよな、とか自信満々に書かれても「違うわ」と言いたくなる気持ちも分かる 俺はファイル移動よりもpythonとか言ってるやつのほうがわかってない気がする。
とケチをつけるくせに更に勿体つけてみる。 >>963
AppleScriptというよりfinderが、じゃないの? >>966
ファインダーなのかなぁ
普通同じフォルダに複数同時コピーしても処理するよね?もち別名ファイル >>968
エラーは出ないの?
挙動怪しいは俺もそう思うけど、そういう場合たいていはエラー吐いてるけどなあ
まあエラーで原因がちゃんとわかるかっていうとそれは別の問題だけどw もしファイルが既にあった場合の対処はしていないのかな?
ベースの部分が出来たーと思ってから
もしもの場合に備えていくと
スクリプトがどんどん膨らんでいくよね 初歩的で申し訳ないんですが
エラーログどこでみれますか? >>971
スクリプトエディタの下のほうに
「返された値」ってタブみたいのがあって、
実行したあとそこをクリックすると処理の流れは追えるけど、
それではダメ?
あとは、
log 変数
log "ここまではちゃんと動いてる"
みたいに、log文を自分で仕込んでチェック
(返された値のところに表示される) >>971
メニューバー>ウインドウ>ログの履歴 というのもある 最近気が付いたけど
tell application の中でdo shell scriptを実行すると
ログ見るとエラーメッセージが出てるのね
問題ないらしいけど >>974
applicationに対してdo shell scriptの命令を送って、
それに答えられないからtellブロックの外で命令を実行、
みたいな動作だよね
だったら、do shell script命令に応えられるアプリが
あるってことなのだろうか… >>974-975
そういう仕様だから仕方ないとはいえちょっと気持ち悪いよね tell me to do shell script "..."
ってやるとエラー出ない TN2065
Does it make a difference which application I tell to do shell script?
For the most predictable results, always put do shell script calls outside of any tell block, or use tell me. In
practice, it usually doesn’t matter unless 以下省略 あー、にゃるほど。
最初からtellブロックの外(スクリプトオブジェクト)に向かって
do shell scriptメッセージ送っちゃえばいいわけか。
thx
勉強になった。 最初から do shell script の解釈が tell me で固定されてればいいだけの話なんだけどね
こんなんよそに tell できたとしてもトラブルの種にしかならないし 乙です
たまには新機能付けてくれれば盛り上がるのに
Automator にある選択テキストの取得
みたいなの付けてくれるとか
まあキーストロークで行けるんだけど 一応OSメジャーアップデートのたびに地味に新機能ついてるけど、知ってた?
ぶっちゃけもうASはほとんど完成されてるし、それ自体の機能より
AS未対応のアプリが対応するとかの方がインパクトある気がする OSXになってゴッソリ機能が減った印象だったんだけどどうなんだ
record機能が秀逸だった記憶しかないけど applescript://com.apple.scripteditor?script=say%20%22%E5%9F%8B%E3%82%81%22 repeat 9 times
display dialog "うめ" buttons {"おk"}
end repeat repeat 8 times
display dialog "うめ" buttons {"おk"}
end repeat repeat while resNum < 1000
display dialog "Ume" buttons {"OK"} default button 1
end repeat >>991は英語ボイスにしとると鳴らんからこれで
say "Woo-meh" try
say "うめ"
on error
say "Go to next"
end try applescript://com.apple.scripteditor?script=open%20location%20%22https%3A%2F%2Fegg.2ch.net%2Ftest%2Fread.cgi%2Fmac%2F1491018171%2F%22 on quit
display dialog "次スレは>>981です。" buttons {"OK"} default button 1
continue quit
end quit レス数が1000を超えています。これ以上書き込みはできません。