AppleScript アップルスクリプト 質問、発表 2
at MAC
1:名称未設定
07/12/12 16:04:22 Ar0Uzkma0
質問、発表どっちでもスレ。
・前スレ
AppleScript アップルスクリプト 質問、発表
スレリンク(mac板)
・関連旧スレ
【標準装備】スクリプトエディタ
スレリンク(mac板)
おもろい、めずらしいアップルスクリプト発表会 6
スレリンク(mac板)
・参考リンク
AppleScript ヘルプ
help:///Library/Documentation/Help/AppleScript.help
発表まとめ
URLリンク(members.at.infoseek.co.jp)
MacWiki - AppleScript
URLリンク(macwiki.sourceforge.jp)
AppleScript PARK
URLリンク(www.tonbi.jp)
TN2065: do shell script
URLリンク(developer.apple.com)
URLリンク(developer.apple.com)
2:名称未設定
07/12/12 16:49:48 jjWSkRss0
2ゲットもされないとは
3:名称未設定
07/12/12 16:56:07 M7U4NWpJ0
このスレ動くのか?
4:名称未設定
07/12/12 17:31:07 cu2c+tAy0
repeat
set 1san to "乙"
end repeat
5:名称未設定
07/12/12 18:24:16 eQ2nqvVL0
>>3
ブーーン
6:名称未設定
07/12/12 21:47:14 i3mrALz+0
フォルダアクション用のスクリプトを作りたいのですが、フォルダAの中に入れられた、
フォルダBの中身をカウントしてパスをとりたいのですが、どうしたらいいでしょう?
アクションのついてるフォルダAの中身やカウントは出来るのですが、その中に入れられた
フォルダの中を見るのが出来なくて.....
7:名称未設定
07/12/12 23:18:37 DvU/VTHg0
>>6
do shell script "ls"
8:名称未設定
07/12/13 19:19:31 /TaqswLu0
>>6
どういう風にできないのか、状況が今一よくわからない。
とりあえずscriptみせてくれ
9:名称未設定
07/12/13 20:24:45 WwbKlxRO0
フォルダアクション以前に、フォルダの中を見ることは出来ているか?
処理を切り出して、スクリプトエディタ上で動作するか? イベントログを確認したか?
10:名称未設定
07/12/13 22:33:11 9uvslLjy0
Safari 3.0.4(523.12PPC) Mac OS X 10.4.11
カレントページのリンクを順にTABで開く
(最大5個だけ開く、delay 3 / 重複もマーカーも見境無しに新規TABで開く)
----------------
tell application "Safari"
set theWindow to front window
set theTab to current tab of theWindow
set linkNum to do JavaScript "document.links.length" in theTab
if linkNum > 5 then
set linkNum to 5
end if
repeat with index from 0 to linkNum - 1
set aJSS to ("document.links[" & index as string) & "].href"
set aLink to do JavaScript aJSS in theTab
tell theWindow
make new tab with properties {URL:aLink}
end tell
delay 3
end repeat
end tell
----------------
window に tel l すると make new tab できるんだ
11:6
07/12/13 23:39:16 dZVmU19G0
やりたい事は、フォルダAの中にフォルダBが入れられたら、フォルダBの名前を参照して、
別のHDのフォルダBと同名のフォルダに、中身をコピーするといったスクリプトを作りたいんです。
で、入れられたフォルダの名前とかは見れるんですが、その中のファイルをいじれなくて...
中身をコピーとか、どう書けばよろしいんでしょうか?
12:名称未設定
07/12/13 23:47:05 /TaqswLu0
Finderのduplicate命令を調べればいいのかも。
13:名称未設定
07/12/14 00:26:40 zt/QqJok0
>>10
>window に tel l すると make new tab できるんだ
お、Stand入れてるから気付かなかったよ。
14:OS9でAppleScript勉強中
07/12/14 01:12:13 XYoMzff60
前スレが1000近くだったので,仕事から帰ってきたらdat保存しようと思ってたら,
もう落ちてた…….1000まで行ったのかな? どなたか,datファイルをアップして
いただけませんか.
15:名称未設定
07/12/14 01:24:35 fav3kosL0
>>14
URLリンク(dat.hitobashira.org)
どぞ
16:名称未設定
07/12/14 01:34:56 mQAB4gIi0
>>11
知りたかったのはこれか?
on adding folder items to of this_folder after receiving theItems
theNameToDialog(theItems)
end adding folder items to
on theNameToDialog(theList)
repeat with aItem in theList
if character -1 of (aItem as text) is ":" as Unicode text then
tell application "Finder"
set theItems to (items of aItem)
end tell
theNameToDialog(theItems)
end if
display dialog aItem as Unicode text
end repeat
end theNameToDialog
17:名称未設定
07/12/14 01:44:10 3tXFwvBg0
>>6>>11
Automator使ったことはあるか? アクションがいろいろ用意されてるから、そっちの方が楽だと思うぞ。
フォルダの内容を取得、Finder項目をコピー、とか目的にすぐ適うのもある。
18:名称未設定
07/12/14 01:45:01 ldmHvnNy0
>>17
逆におまえに使ったことがあるのか聞きたい
19:OS9でAppleScript勉強中
07/12/14 01:50:13 5orZGDZ20
>>15
ありがとうございます.助かりました!
20:名称未設定
07/12/14 11:16:12 qhSPA3Y+0
質問です。
tell application "Mail"
set aMessages to selected messages of message viewer 1
set aMessage to reply item 1 of aMessages
set subject of aMessage to "something"
set content of aMessage to "some content"
end tell
というテストをしています。
1. Leopardではreplyコマンドでoutgoing messageをもらえるようになったみたいですが、
setしようとするとsubjectの行で
「Mail でエラーが起きました:AppleEvent のハンドラで誤りが起きました。」
と怒られます。
ただしsubject自体は変わってます。
これってやっぱりバグでしょうか?
2.replyするとまず不要な新規メッセージが開いて次に返信のメッセージが開くのですが、
返信だけ表示させるにはどうしたら良いでしょうか?
21:名称未設定
07/12/15 10:29:27 WA4TIzRE0
ショック
前スレ最後のほうdat取得する前に落ちちゃった・・
22:名称未設定
07/12/15 10:33:49 Xp/CdYBR0
QuickTimeで参照ムービー形式で保存できない。調べるとバグっぽい。
これってまだ直ってないのかな?
URLリンク(blog.so-net.ne.jp)
23:名称未設定
07/12/15 10:34:35 z7vbsHc40
バカ発見
24:名称未設定
07/12/15 16:29:26 cmNmOA2u0
>>23
何のことを言っているんだ?
25:名称未設定
07/12/15 19:24:49 4Ek+GjpsO
既に開いているTerminal.appのウインドウ上で
シェルコマンドを実行させるにはどうすればよいでしょうか?
tell application "Terminal"
do shell script "ls"
end tell
ではスクリプトエディタの標準出力に結果が返ってきます。
do script "ls"
とすると、Terminal.app上で実行されますが、
必ず新規のウインドウ上になってしまいます。
tell application "Terminal"
tell window 0 of application "Terminal"
do shell script "ls"
end tell
end tell
のようにしても結果は同じでした。
OSは10.5.1を利用しています。
すみませんがお願いします。
26:25
07/12/15 20:07:48 5KCgCNUe0
事故解決しました。
tell application "Terminal"
do script "ls" in window frontmost
end tell
27:6
07/12/15 22:17:01 tkd/btMa0
>>16
おかげさまで、記述のスクリプトを参考にして出来そうな感じです。
ありがとうございます。
>>17
Automatorは最初に考えましたが、そこまで凝った事はできないですよね?
こちらの設定が悪いからかな...
28:16
07/12/16 14:05:26 HpGZaPBu0
>>27
>>16の記述一カ所間違いを見つけた。気づいとるかもしれんが
if character -1 of (aItem as text) is ":" as Unicode text then のところを
if character -1 of (aItem as Unicode text) is ":" as Unicode text then
になおしといてくれ
29:名称未設定
07/12/18 18:59:52 tI3u0/2d0
applescript使って、任意のフォルダを起動しているToastにドラッグする方法ってありますか?あったら書き方を教えて欲しいです。
30:名称未設定
07/12/18 19:11:45 8G7jFN970
>>29
set theFolder to choose folder
tell application "Toast Titanium"
set myDisc to make Data disc
add to myDisc items theFolder
end tell
たとえばデータディスクならこんな感じ。
31:名称未設定
07/12/18 19:14:51 8G7jFN970
訂正
1行目は
set theFolder to (choose folder as list)
が正しかった(あのままでも暗黙の型変換されて動くけど)
add to という名前とは裏腹に、add toするたびに入れ替わっちゃってるみたいなんで
あらかじめ書き込みたいフォルダ(やファイル)のlistを作っておいて、一気に
add toしないとだめなようです。
32:名称未設定
07/12/18 19:18:33 8G7jFN970
訂正の訂正(ごめん)
>add to という名前とは裏腹に、add toするたびに入れ替わっちゃってる
これは嘘でした。
実験用のスクリプトで毎回make Data discしちゃってたミスです。
33:名称未設定
07/12/18 19:22:05 6VOoaA1M0
___
←樹海|
 ̄|| ̄ ┗(´・ω・` )┓三 ちょっと出かけてくるがな
|| ┏┗ 三
34:名称未設定
07/12/18 19:48:33 6VOoaA1M0
ここに誤爆してたか…すまぬ(´・ω・`)
35:名称未設定
07/12/18 23:55:34 C6DbmXj60
サンプルにすら入ってるkey up/downがまともに動かないけど、
これはバグなんかな
何故か全部"a"に化ける
36:名称未設定
07/12/19 21:01:27 kppU26Um0
>>32
おお!有難う御座いました。早速試してみます。
37:名称未設定
07/12/20 00:40:17 Ev7WE0vJ0
Leopard発売を記念して、オライリーがAppleScript: The Definitive Guideを
和訳して出版してくれるとありがたいんだが。
これを通読するとスクリプトを書くのに迷いがなくなる。
38:名称未設定
07/12/20 13:30:11 /85vAf2r0
英語覚えろbyオラオライリー
39:名称未設定
07/12/20 15:07:41 X9Q17bpi0
スクリプトをバックグラウンドで実行したいのですが
どんな命令を書いたらいいでしょうか。
40:名称未設定
07/12/20 15:19:19 BAUdlxYm0
LSBackgroundOnly
41:名称未設定
07/12/21 17:19:11 w9oOciz80
Camino1.6用
カレントタブの
タイトル
URL
のようにコピー。
tell application "Camino"
set TandU to title of current tab of window 1
set TandU to TandU & return
set TandU to TandU & URL of current tab of window 1
set the clipboard to TandU
end tell
42:名称未設定
07/12/21 20:25:46 mpgVWqcT0
>>40
ありがとうございます。
これだと、メニューやウインドウが使えないみたいなんですが
自分で自分をバックグラウンドにする命令
ってのはないんでしょうか。
43:名称未設定
07/12/21 20:40:19 WkJMD1hi0
Caminoアルファ版のツールバースクリプトは面白いんだけど12インチ画面だと微妙。
44:名称未設定
07/12/22 02:48:40 hZsjQBLX0
>>42
用語に混乱が見られるんだが、たとえば
set the_app to "Safari" as unicode text
tell application "System Events" to set visible of application process the_app to false
これで、アプリケーションメニューの「なになにを隠す」を実行したと同じ操作になる。
45:名称未設定
07/12/23 22:35:28 vj/DnVeJ0
いましがたクラッシュレポーター送信したんですが、どうもdisplay alertでgiving upを使い、
かつボタンが1つでそれがキャンセルボタンだと、100%クラッシュするようですね。
display alertっつうぐらいだから、キャンセルボタンをデフォルトボタンにしたいけど、拒否
されるので、キャンセルボタンのみのダイアログを作ったら、この事故に遭遇しました。
検証コード:
-- This works.
--display dialog "cancel button 1 + giving up" buttons {"1"} cancel button 1 giving up after 60
-- This also works.
display alert "cancel button 1 + giving up" buttons {"1", "2"} cancel button 1 giving up after 60
-- 次のダイアログが死亡フラグ
-- But this makes the script editor ***CRASH***.
display alert "cancel button 1 + giving up" buttons {"1"} cancel button 1 giving up after 60
46:名称未設定
07/12/24 01:58:50 VOe4ew7f0
>>45
再現性のある問題コードを洗い出した点は乙。
10.3.9で止まっているので、display alert関連は一切試せないのだが、
「キャンセルボタンの指定がデフォルトボタンの指定無しにできる」って
AppleScriptのひどい仕様だと思うな。
デフォルトボタンもキャンセルボタンも同じにしたければ、次のようなコードに
してはどうだろう。
display dialog のキャンセルボタンはESCキーでキャンセルが反応するから。
ただし、ボタン名が"キャンセル"と"Cancel"の二択になる上、
エラーコードを必ず返すのでtry構文を使う必要が出てくる。
>>45のやりたい事の希望には添えないかもしれん。
display dialog "キャンセルしかできない" buttons {"キャンセル"} default button "キャンセル" with icon stop giving up after 60
47:名称未設定
07/12/24 02:03:36 x38QJxgF0
確認して無いけど、拒否されるって時点で既にバグじゃないの?
48:名称未設定
07/12/24 09:36:38 cvmlmFPy0
AppleScriptを特定のキーショートカットで実行しようとしています。
(10.5.1, Mail 3.1)
ぐぐって出てきたMail 2.0のHelpによると、
URLリンク(docs.info.apple.com)
たとえばCtrl-Oで起動したければ
"~/Library/Scripts/Mail Scripts"にスクリプトを保存し、
スクリプトのファイル名末尾に「___ctrl-o」を入れて
「スクリプトメニューをアップデート」するとよいように
書いてあります。しかし、Leopardのスクリプトメニューには
そのメニューがありません。
スクリプトメニューから手動で実行するとちゃんと動作するん
ですが、希望するショートカットでは動作しません。
さらに、ぐぐって出てきた他のページでは「___ctrl-」ではなく
「___ctl-」となっているのでそれも試しましたが動作しません。
この仕様はLeopardでは削除されたのでしょうか。
49:名称未設定
07/12/24 13:48:07 e4ptlFhi0
昔はMail.app自身がスクリプトメニュー持ってたけど、その頃の話じゃねえべか? Tigerでも動かない。
こういうのみつけた。
URLリンク(lists.apple.com)
URLリンク(www.sfc.wide.ad.jp)
URLリンク(www.microsoft.com) (*5)の説明のとこ
50:名称未設定
07/12/24 13:50:05 bKfuMTsQ0
>>45
スクリプトエディタからの実行ではクラッシュしなかったのだが
やり方が違うのか?
51:名称未設定
07/12/24 14:00:14 PMlwBjQD0
>>49
当方 10.3.9、Mail 1.3.11 の環境ですが、
Mail のメニューバーの巻物印をクリックすると、たしかに
上から2番目に「スクリプトメニューをアップデート」ってのがありますな。
52:名称未設定
07/12/24 14:05:30 P4VbbP/m0
解答になってないけどこんなのもあるよ
URLリンク(www.red-sweater.com)
53:名称未設定
07/12/24 20:27:24 Nac2AV4C0
>>45
giving up after ...を書かないと
キャンセルボタンをデフォルトのボタンにすることはできません。
というエラーメッセージが出るね。
AppleScriptというよりも>>45をコンパイルできてしまうスクリプトエディタのバグなのでは。
@10.4.11
54:名称未設定
07/12/24 21:11:17 vuPwK32c0
OSX 10.5.1 Intelでは
display alert "Danger, Will Robinson!" buttons {"OK", "Cancel"} default button 2 cancel button 2
と書けるし
display alert "cancel button 1 + giving up" buttons {"1"} cancel button 1 giving up after 60
もcrashしません。
55:名称未設定
07/12/24 21:36:06 Nac2AV4C0
レパード欲しいのう。。。
56:質問
07/12/26 01:37:13 Jcz3GcRF0
URLリンク(blackbird.cocolog-nifty.com)
このサイトで紹介されている30分後にMacを終了するスクリプトを実行してみたところ
「NOT super user」と表示され、実行されません。権限が無い?とかそういったことかなと
思うのですが、解決方法を分かるかた教えてください。よろしくおねがいします。
57:56
07/12/26 01:38:28 Jcz3GcRF0
書き忘れましたが当方 OS10.5.1です
初心者質問で申し訳ないですがよろしくお願いします。
58:名称未設定
07/12/26 08:55:40 QpduC8Xy0
件のページにそうコメントしてスクリプト直させれw
59:名称未設定
07/12/26 10:49:45 DykRmPC50
>>56
管理者権限でないと動作しないスクリプトなんだろうよ。
アカウント設定で管理レベルを上げて使うしかないだろう。
60:56
07/12/26 13:13:00 Jcz3GcRF0
>>59
ありがとうございます。しかし、管理者権限でログオンしても何も変わりませんでした
何か別の手順があるんでしょうか?
61:名称未設定
07/12/26 13:29:39 XoQzgrkG0
>>56
delay 1800
tell application "Finder" to sleep
これでやってみて
62:名称未設定
07/12/26 13:30:05 fAxFLO6h0
do shell script "Sleep 10"--これなら10秒
tell application "Finder" to sleep
こっちはTigerだけど、上の通りで、スクリプトエディタからの実行でも問題なく動いたよ。
内容的にも、通常のユーザー(=管理者だよね?)で問題ないはずだけど。
LepardではスーパーユーザーじゃないとSleepが使えないのか?
ターミナル起動してSleep 10って入力してリターンで、10秒後に次の行が出るか試してみたら?
63:56
07/12/26 14:42:42 Jcz3GcRF0
ありがとうございます。教えていただいた方法で無事動きました。
自分の書いたスクリプトはこんなかんじだったのですが、shutdownがいけなかったんですね。
ありがとうございました。
do shell script "shutdown 180"
tell application "Finder"
shutdown
end tell
64:名称未設定
07/12/26 17:13:08 milt/RbT0
ああ、なるほど。
do shell script "sleep" の sleep は、Macをスリープさせるのではなく
コマンドの実行をしばらく休むというものでした。だから、ここは書き換えちゃ
ダメだったんです。
(ほんとは、AppleScriptにdelayコマンドがあるんで、それを使えば簡単なんですが)
65:名称未設定
07/12/26 17:53:21 EjE9lbUP0
むしろこんなのをスクリプトメニューから実行した方が邪魔にならなくていいんでは
#!/bin/sh
sleep 10
osascript -e 'tell application "System Events" to shut down'
あと、shut downとかsleepとかのパワー関連はFinderでなくSystem Eventsにtellするのが流行りらしい、というかOS Xでは推奨。
66:名称未設定
07/12/27 01:47:14 RndQBQ+30
Apple Eventのログ取ると分かるけど、Finderにtellしても
結局System Eventsに下請けに出されてる。プロセス関係もそう。
67:名称未設定
07/12/27 03:36:23 Co1d2Pbu0
そのうち
tell application "Finder" to sleep
なんて書いたら
AppleScript エラー
変数 sleep が定義されていません。
て怒られるようになるんだろうか。
68:名称未設定
07/12/27 10:46:53 /KIEzCw20
そっちのほうがいいなあ
69:名称未設定
07/12/28 13:02:50 +XIGD6Sl0
CDを挿入すると自動的にitunesが立ち上がり、ビットレート選択画面が表示され、
選択すると自動的に音楽の読み込みが始まるような動作ってapplescriptでできますか?
70:名称未設定
07/12/28 13:24:23 E9eNe2G00
知らんけどコンパネの「CDとDVD」の設定で自分で作ったスクリプトでも設定しておけば良いんじゃない?
71:名称未設定
07/12/28 17:22:31 e6qZoYE70
>>65
スクリプトメニューからシェルスクリプト実行できるの?
72:名称未設定
07/12/28 19:30:28 Yy9Yv8ct0
iTunesは自動で立ち上がらないか?
自動で読み込むのもiTunesの設定でできるな。
毎回ビットレートを選択したいの?
73:名称未設定
07/12/28 20:00:44 9tTwCYMZ0
>>71
うん。
ただしターミナル上で実行される訳じゃない。
74:名称未設定
07/12/28 21:04:56 0whPc3T9P
>>71
>スクリプトメニュー - route99 の日記
URLリンク(slashdot.jp)
75:名称未設定
07/12/29 01:22:56 AwbgqQHE0
>>56
このスレはさ、1から作ってくれっていう初心者の質問にも答える人とかいるぐらい
優しい人が多いんだけどさ、それにしても他のサイトにも同じ質問するなんて
たとえ初心者でもルール違反だぜ。
同じ質問するなら、同じ日に書くんじゃなく少し時間をあけて若干質問内容も変えようよな。
1から作ってくれっていう図々しい奴もそうだが、こういうこと平気でやってると
ここのいい人たちも答えることしなくなってスレが枯れてくんんだよ。
はっきり言うけど、マジやめろよな。初心者だからという言い訳はすんなよ。
76:名称未設定
07/12/29 03:50:39 y3Wq1JFf0
人間としての初心者だろうから大目に見てやれよ。
77:名称未設定
07/12/29 04:10:22 4OWyvzdg0
ほんとこのスレの連中には驚くというか、呆れるというか。
親切ってよりもASジャンキーで、解決する課題に飢えてるんじゃないかとも思える。
78:名称未設定
07/12/29 05:07:15 EDaQL3es0
>>76
そういう問題以前の話しだろ。自分で自分の首を締めるつもりか?
79:名称未設定
07/12/29 05:12:14 EDaQL3es0
大体他のサイトでも同じ質問するなんて、答えてくれた人たちに対して失礼もいいところだ。
まだ1から作ってくれってホザいてる方が、かわいいよ。
80:名称未設定
07/12/29 22:02:55 tax5Gvzs0
まあまあ、もういいじゃないか
こうやってあちこちで嫌われて損するのは本人なんだから
81:69
07/12/30 03:27:55 l4VNXBnB0
>>72
itunesは立ち上がるんですが、動き方として、
CDを入れるたびにitunesが立ち上がって、それだけでなくビットレートの選択も聞いて欲しいんです
CDごとにビットレートを微妙に変えたくて…
細かい注文ですみません。
>>70
ヒントをありがとうございます。
ここで設定できそうですね。あとはスクリプトを用意すれば…
itunes関連のサイトは多いのですが、ビットレートはなかなか見つかりません。
82:名称未設定
07/12/30 05:05:42 EVhz60Rf0
69はAppleScript書けるの書けないの?
書けるならiTunesがAppleScriptからビットレート変更したりできないの
すぐ分かると思うが。mp3ならiTunes-LAME使ったら?
AACは知らん。ffmpegとかか。
83:名称未設定
07/12/30 05:42:38 l4VNXBnB0
>>82
回答ありがとうございます。itunesから乗り換える気はなかったのであきらめることにします。
asは細かい文法は全く分かってないです。
84:名称未設定
07/12/30 09:46:03 c6zlbZkx0
エンコーダの種類は変えられそうだけど。
ビットレートの変更は,なんとかなんとかでマウスクリックとか制御してやるとできそうじゃんん。
まったく無理じゃないと思う。
面倒だから作らないけど。
85:名称未設定
07/12/30 11:03:20 VPc7u6oGP
>>84
なんとかなんとかって Cliclick のことかなぁ?
>Cliclick
URLリンク(www.bluem.net)
86:名称未設定
07/12/30 11:42:20 Ab4Yg+cu0
GUI Scripting のことかと思ったら違ったのか。
しかしいろんなソフトがあるもんだなあ。
87:OS9でAppleScript勉強中
07/12/30 13:06:14 ANF0cxNF0
暮れも押し詰まってきてるというのに,どっぷりAppleScriptにハマってます.
ところで,以下のようなリストあるとします.
{"コスモタイガー2", "コスモゼロ", "ブラックタイガー", "コスモゼロ"}
"コスモゼロ"という項目が重複していますが,リストの一部が重複しているかどうかを
判断させるには,どうしたらいいのでしょうか.containsではその項目が存在している
ことがわかっても,重複まではわからないですよね,たぶん…….
88:名称未設定
07/12/30 13:14:54 ac4OMj/+0
>>87
リストを別のリストにコピーするってのはどうよ
一つずつコピーしていって、その都度コピー先に含まれるかチェックする
入っていたらスキップ、とか
89:OS9でAppleScript勉強中
07/12/30 13:57:43 ANF0cxNF0
>>88
例えば,"コスモタイガー2"を抜き出し,
{"コスモタイガー2", "", "", ""} ← {"コスモタイガー2", "コスモゼロ", "ブラックタイガー", "コスモゼロ"}
containsを使えばということだと思うんですが,これでは全てが対象になってしまうと思うんです.
実際似たようなこと考えて,元リストから複製リストを作成して一つずつ比較してみてやったりしました.
ということではなく,なにか自分が勘違いしているのかな?
90:名称未設定
07/12/30 14:53:23 UaIcXGnF0
Essential Sub-routines
List Manipulation Routines
URLリンク(www.apple.com)
COUNTING OCCURRENCES OF AN ITEM IN A LIST
91:OS9でAppleScript勉強中
07/12/30 15:45:00 ANF0cxNF0
>>90
たぶん重複している項目の数を結果として示すスクリプトだと思うのですが,
英語苦手なのでよく内容はわかりません.該当しそうなものを使ってみましたが,
OSX向けなのでエラーが出てダメでした.
でも,情報ありがとうございました.
92:名称未設定
07/12/30 15:59:27 uUC4yVjn0
>>89
最終的に何がしたい。
リストにダブりがあるかどうか知ることが最終目的ではないだろ
93:名称未設定
07/12/30 16:25:50 KJzXGnsC0
こういう意味ではないのか?
set theSource to {"a", "b", "b", "c"}
set theDest to {}
repeat with theItem in theSource
if theDest does not contain theItem then
set theDest to theDest & theItem
end if
end repeat
theDest
94:OS9でAppleScript勉強中
07/12/30 16:53:04 ANF0cxNF0
>>93
does not containを使えばいいのかあ,それが >>88 の指してることなわけですね.
なるほどです.あとは,theSourceとtheDestの比較をすれば,そのリストで項目が
重複しているかどうかわかりますね.
ありがとうございます.感謝します.
95:名称未設定
07/12/30 23:05:40 tIuzWWcg0
うちの場合、OS9でなら重複チェック等はTanaka's osaxで簡単に済ましてる
96:名称未設定
07/12/31 12:52:18 sIJQD9ek0
プログラミング初心者ですが、よく理解できない状況を見つけましたので質問させて下さい。
Mac OS X 10.4.11 スクリプトエディタ2.1.1で
set f to resource path of main bundle
としてアプリケーションバンドルとして保存しようとすると、
この identifier の後に property を書くことはできません
と言われ resource path がハイライトされてsyntax error になります
set f to (resource path of main bundle)
では
“,” があるべきところですが property が見つかりました。
でpathのみのハイライトで、同様にエラーです。
set f to path to me
ならばちゃんと保存も出来てパスも帰ってくるので、
これを使って.app:以降のパスを入れたら目的は果たせそうなのですが、
バンドル内部のパスを取得する方法として、
広範に紹介されているらしい最初の構文がなぜ私の環境で構文エラーになるのか、
気持ちが悪いのでもしどなたか御指導いただけましたら幸いです。
97:名称未設定
07/12/31 13:46:43 BZwXIydk0
AppleScript Studioで使うものなのでは?
URLリンク(developer.apple.com)
98:名称未設定
07/12/31 13:49:47 MpuWxXDi0
>>96
set my_path to (path to me)
set scpt_path to (path to resource "main.scpt" in bundle my_path in directory "Scripts") as Unicode text
set icon_path to (path to resource "applet.icns" in bundle (path to me))
display dialog scpt_path with icon icon_path
resource pathなんて聞いたこと無い。
AppleScript Studioで使うやつかな?
99:名称未設定
07/12/31 13:50:15 MpuWxXDi0
かぶったスマソ
100:名称未設定
07/12/31 14:27:34 sIJQD9ek0
>>97, 98さん。素早い返答ありがとうございます。
なるほど、スクリプトエディタではない別の環境で動く構文なのですね。
この件といいosascriptではまたちょっと違う等、
なかなか複雑という印象ですね。
ひとまずやりたい事は出来そうです。
重ねてお礼申し上げます
101:名称未設定
07/12/31 17:30:21 0M0H32ts0
アプリやOSAXごとに全然世界が違うし、
バッドノウハウみたいなのもたくさんあるし、
AppleScriptは頭を柔らかくしないと。
102:OS9でAppleScript勉強中
08/01/01 22:41:13 chjaDrUH0
昨年もいろいろ皆さんに教えていただいたおかけで,アルゴリズムを考えるための
Scriptを60近く,実用にたえるAppletは,5つほど作成することができました.
心から感謝します.今年もよろしくお願いいたします.
>>95
name containsとか便利ですよね.でも,あまりに便利すぎて
OSXに移行するとき困りそうなので,二の足踏んじゃうんですよ.
103:名称未設定
08/01/03 19:40:41 +I1HKPi20
Finder でいくつかファイルを選択した状態で
tell app "Finder"
item 1 of selection
end tell
を実行するとエラーになるのは何故なんだぜ?
もしかして俺だけですか?
tell app "Finder"
set a to selection
item 1 of a
end tell
だとうまく行くのに。
104:名称未設定
08/01/03 19:49:09 wZWVECP60
>>103
item 1 of (selection as list)
なぜかは聞くな
105:名称未設定
08/01/03 21:50:59 +I1HKPi20
>>104
な、なるほど・・・?
OS 9 の頃とは細かいところで変わってるんだなあ・・・
106:名称未設定
08/01/04 00:37:26 GMKEK95d0
AppleScript にだってバージョンがあるんだぜ
107:名称未設定
08/01/04 03:43:05 y09UQnZ+0
文法とかの細かい変更は仕方ないにしても
バージョン上がってもOS9時代よりアレなのもどうかと
108:名称未設定
08/01/04 17:18:33 OuHxWrk/0
tell application "Finder"
display dialog "1: class of selection = " & class of selection
display dialog "2: class of (get selection) = " & class of (get selection)
end tell
こういうマニアックなポイントを覚えとくのがこの言語の「かんどころ」とでもいえるのだろうが、
基本的に仕様ミスだなあ。ちょっとしたファイル操作スクリプト書こうと思ってやってみたのに
こんなんでエラーになってAppleScript投げ出すひとって大勢いそうだし。
レオでもこのままなのか?
109:OS9でAppleScript勉強中
08/01/12 01:27:33 ZvUtVv6e0
今,Jon's CommandsというOSAXでwalk foldersという命令を使っているのですが,
作成したスクリプトを動作させる度に,スクリプトの容量がどんどん増えていくという
とんでもない不具合(?)に悩まされています.
walk foldersを利用されている方,どうやってこれを解決されているんでしょうか…….
110:名称未設定
08/01/12 01:44:49 mykv1KeI0
スクリプト晒さない事にはOSAXのせいかどうかもわからない
111:名称未設定
08/01/13 00:19:00 mPW5Lte20
109のwalk folders件ですが,いろいろと試行錯誤してはみたものの,
結局Jon's Commandsを使う限り不具合は解消されないようですので,
諦めることにしました.
112:名称未設定
08/01/13 01:41:08 iAZtFkcN0
ここにあるね
URLリンク(homepage.mac.com)
それにしても、おまえは自分で組んだscriptを晒さないね
113:名称未設定
08/01/13 02:04:03 mPW5Lte20
ScriptFactoryさんのことは知っていての質問だったわけですが,
結局そこに書いてある通り,無理だったことが身をもってわかりました.
それから,自分の質問内容が気に入らないであれば,スルーして下さい.
114:名称未設定
08/01/13 02:10:33 zUdfVohq0
コテを付けてください。
115:名称未設定
08/01/13 02:19:50 1fj0Uanb0
いや、俺は外したままでいてくれた方が落ち着くw
116:名称未設定
08/01/13 02:38:23 aDuZrHg+0
OS9なら普通はTanaka's osaxの MT List Files とか使うから
そんな不具合有るものわざわざ使わないよ。
117:名称未設定
08/01/13 02:56:04 mPW5Lte20
>>116
OSX移行するとき,MT List Filesが足かせにならないかって心配してまして,
でも,OS9専用ってことで割り切ってTanaka's osaxを利用することにします.
ありがとうございます.
118:名称未設定
08/01/13 09:05:17 aDuZrHg+0
そんな心配は無用です。
OS9>XでAppleScript自体の仕様も相当変わっているので
どのみち書き換えが必要になりますw
Xになってからも、細かく仕様変更がされていてスクリプト変更してるくらいなのでorz
119:名称未設定
08/01/13 11:42:55 KxNPf8Aw0
時代とともに言語 / API 仕様がかわるのは当たり前。
Objective-C も Ruby も Java も C も C++ も Fortran も
PHP も Perl も C# も、みんな変わってるじゃないか。
120:名称未設定
08/01/13 12:37:39 VTigvD2v0
でも、ちゃんとバージョンごとの仕様を明確にしてほしいな。
特に下位互換性がない変更の場合。
121:名称未設定
08/01/13 18:48:54 Y7FH7T8P0
今さらですけど,Tanaka's osaxのファイルリストアップは,Jon's Commands
のそれよりも扱いが簡単で,フィルターも強力ですごい便利.もっと早く利用して
おくべきだったと,ちょっと後悔.
OSXで書き換えが必要になった時,Tanaka's osaxに替わるOSAXがあるのかどうか,
激しく心配ですけど,一度便利なものを知ってしまうと,もう後には戻れませんね.
122:名称未設定
08/01/14 03:35:29 ka4JNNii0
Tanaka's osaxのMac OS X版を作るプロジェクトとか、やればいいのかねえ。
123:名称未設定
08/01/14 05:00:16 ENhFNRr20
旧板にはAppleScriptのスレは無いのかね?
applescript-usersって公式メーリングリストあるけど、投稿量が多すぎてついていけず
退会したけど、ちょっとのぞいてみりゃあ>>121-122みたいな心配はいらんと知るよ。
OS XではUNIXのツール群が使えるし…
OS9でAppleScript勉強中氏も、そんな埃かむった小道具いじってる時間をbashなり
perlなりを勉強する時間にあててみてはどうかね。
124:名称未設定
08/01/14 06:39:32 IiEa8l6g0
OS9でもJperlやらいろいろ有るけど
アプリ操作やアプリ間連携動作やらが簡単に出来るからAS使ってるわけで
データ処理とかプログラミングがしたいわけではないのでw
125:名称未設定
08/01/14 11:42:38 LQf2u36d0
偏屈な人だw
126:名称未設定
08/01/14 14:25:09 EX8tgjk10
いや埃かむった小道具って言ったのは、ASのことではなく、メンテされなくなった
機能拡張とかのことですわ。AppleScriptの中でUNIXのツール群が使える(又はその逆)
ってのは9とXの最大の違いではないか。正規表現使いたければdo shell scriptの中に
ごく普通の言葉(世界標準の書き方)で書けばいいわけですよ。あるいはターミナルでの
ファイル削除でもゴミ箱を経由させるように、シェルスクリプトの中でtell application Finder
したり。
127:名称未設定
08/01/14 14:36:51 KZRT+ChJ0
>>126
124さんと同じことをやりたいので,AppleScript.
ちょっと違うのは,AppleScriptに関連するものは何でも興味津々.
PerlもbashもデータベースのFileMakerとかも.OSAXも作ってみたい.
OSXに移行した時にはもう,UNIX三昧しまくりしちゃいますよ.はい.
以上,できるできないは別として,素人のたわ言です.チラ裏終わり.
128:名称未設定
08/01/16 08:43:11 8C/XGZPx0
俺はシェルスクリプトにGUIをかぶせるためにapplescriptをかじった。
applescriptは(もw)ド素人。
でもapplescirptはCUIに拒絶反応ある人にお手製ツールを使ってもらうのにいいよ。
129:名称未設定
08/01/17 01:47:09 qWQcQ6AM0
文字コードを気にせずに文字データのやり取りが出来るようにならないかなー。
130:名称未設定
08/01/18 00:24:11 5Yva5GU+0
リストのソートも,命令一つでできるといいのになあ.
131:名称未設定
08/01/18 01:33:20 q0uCyray0
osax使えばsort命令一つで出来るぉ
132:名称未設定
08/01/19 00:03:36 WANsk5dY0
>>131
何のOSAXかは知らないけれど,リストソートできるものがあったなんて.
リファレンスのシェルソートサブーチンを,ずっと使ってましたよ.
133:名称未設定
08/01/19 02:04:45 bNlBOqxZ0
AppleScriptでデフォルトWebブラウザを知る方法は無いでしょうか?
134:名称未設定
08/01/19 02:27:59 Q4PHZ+3z0
>>133
「AppleScriptでデフォルトWebブラウザ」でググったら1件目で出てくるんだぜ
書いてある様にdo shell script "defaults read 〜"するか、
Tiger以降ならproperty list itemでも一応取れるか
135:名称未設定
08/01/19 15:06:56 njSmylLF0
最近のgoogleは賢いなあ
136:133
08/01/19 17:23:10 bNlBOqxZ0
>>134 スマンデス(´・ω・`)
やはりplistを直接見るしかなさそうですね
やりたかったのはデフォルトブラウザの起動でした
とりあえずこうしました@OS X 10.4.11
my OpenWithBundleIdentifier(my GetBundleIdentifierForProtocol("http"))
on OpenWithBundleIdentifier(string_identifier)
do shell script "open -b '" & string_identifier & "' > /dev/console"
end OpenWithBundleIdentifier
on GetBundleIdentifierForProtocol(string_protocol)
tell application "System Events"
set plistAlias to (file "com.apple.LaunchServices.plist" of preferences folder) as alias
end tell
set plistPath to (POSIX path of (plistAlias as Unicode text))
tell application "System Events"
set plistFile to (property list file plistPath)
set handlerArray to (value of property list item "LSHandlers" of contents of plistFile) -- record の list になる
repeat with n from 1 to (count of handlerArray)
try
if (|LSHandlerURLScheme| of item n of handlerArray) is equal to string_protocol then
return |LSHandlerRoleAll| of item n of handlerArray
end if
end try
end repeat
end tell
return ""
end GetBundleIdentifierForProtocol
137:名称未設定
08/01/19 18:34:22 1KIB+dgT0
>>131
そのまんまの名前のOSAXがありましたね.これは嬉しい.早速使ってます.
どういう理由かはわからないけど,ドロップしたファイルというのは必ずしも
ファイル名順には変数には読み込まれないようで,処理する時に困ってたんです.
というわけで,助かりました.
138:名称未設定
08/01/19 18:44:46 JRs7HsQo0
>>137
ファイルのリストだったらFinderでソートできますよ。
tell application "Finder"
set theList to selection
sort theList by name
end tell
139:名称未設定
08/01/19 19:09:47 1KIB+dgT0
>>138
Finderのオブジェクトならいけるみたいですね.でも,Finderの悪しき影響を
受けちゃってるみたいで,例えば1,2,10のファイルだと1,10,.2になっちゃいます.
OS9だとそうなるんですけど,OSXでは改善されているのかなあ.
140:名称未設定
08/01/19 20:21:46 HrKYcUkt0
>>139
osxは改善されてる
141:名称未設定
08/01/19 22:49:04 cZYltYPw0
>>139
その手の問題は、昔からNatural Orderで解決済みです。
142:名称未設定
08/01/19 23:26:21 XXfRL/cq0
>>140
教えていただいて,どうもです.
>>141
Natural Orderは使ってて,確かにFinder上では問題ないです.
ただ,AppleScriptの扱いはNatural Orderのそれに準じないようです.
143:名称未設定
08/01/19 23:47:13 +u9o5DpX0
Finder で sort by name してもダメなんですか?
144:名称未設定
08/01/20 00:02:56 KOKQVTo30
>>143
ダメですね.今はもうOSXが主流だから事実上問題ないと思いますけど.
145:名称未設定
08/01/20 04:12:44 0kj954Xl0
>>144
うちのOS9.2.2/AS1.8.3/Natural Order の環境では
OSAX sort でも Finder で sort by name でも問題なくNatural Order で並びます。
146:名称未設定
08/01/20 12:59:21 zbY9Ad8U0
>>145
ちょっと確認したいんですが,>>131に書いてある通り,Finder上から見える
ファイル名の並びではなく,ファイルをドロップした変数に読込まれる順番という
ことですよね.
Natural Orderを使えば,1と2と10というファイル名をドロップした時に,
変数の中が,1,10,2 のファイル名にはならないっていうことでいいですか?
うちの環境は,OS9.2.2/AS1.8.3/Natural Order 1.4です.
147:名称未設定
08/01/20 18:14:52 EvEGGTMq0
>ファイルをドロップした変数に読込まれる順番
ではなくて、変数に読込んだ後script上で
>Finder で sort by name
148:名称未設定
08/01/20 18:25:07 20mX5rRl0
>>147
on open dropList
dropHandler(dropList)
display dialog dropList as Unicode text
end open
to dropHandler(dropList)
tell application "Finder"
set dropList to selection
sort dropList by name
end tell
end dropHandler
ということはではなくてですか?
149:名称未設定
08/01/20 18:26:48 20mX5rRl0
ということはではなくてですか? じゃなくて,
ということですよね? ということです.
150:名称未設定
08/01/20 19:22:05 ReuX4mAI0
すいません。流れをぶった切って質問です。
UI Elements Scripting ("System Events")でgetしたstatic textから実際のtextを
得るにはどうすればいいのでしょうか。
具体的にはこのような感じです。
tell application "System Events"
tell process "Safari"
tell UI element 1 of scroll area 1 of group 3 of window 1 set theStr to static text 1 of group 7
end tell
end tell
end tell
このtheStrは
static text "theSampleString" of group 7 of UI element 1 of scroll area 1 of group 3 of window "Connection Status - PPPoE" of application process "Safari" of application "System Events"
の形で得られます。ここから "theSampleString" を得たいのです。
theStr as text, theStr as unicode text, contents of theStr
あるいはcontents of (static text 1 of group 7)、すべてダメです。
@ Mac OS X 10.4.11 , AppleScript 1.10.7 , Safari 3.0.4
151:名称未設定
08/01/20 21:43:38 aF5u7c2B0
value of
152:名称未設定
08/01/20 22:22:04 ReuX4mAI0
うまくいきました。
ありがとうございます。
value of、わすれてました
153:名称未設定
08/01/21 01:15:17 7Z0drbOg0
sortの件,自分のスクリプトの書き方が悪いのか,環境が悪いのか
わかりませんが,いずれにしてもFinderは使わずOSAX利用にします.
OSXが改善されているんであれば,この件はもう問題ないと思いますので.
154:名称未設定
08/01/21 02:36:11 JBjSBARS0
おまえ OS9でAppleScript勉強中 だろ
珍しくスクリプトを晒したな、では教えてやる
(OS9でAppleScript勉強中でなかったらすまん)
>>148 のスクリプトは根本的に間違ってるぞ
まず、ハンドラを呼び出しといて返り値を受け取るようになってない
次に、ハンドラに渡した引き数をハンドラ内で上書きして消している
そのまた次ぎに、ハンドラから返り値を戻していない
俺んとこはOS9環境じゃないから最終的にちゃんとソートされるかどうかわからんが
修正してからもう一回やってみな、たぶんできるんじゃなか
155:名称未設定
08/01/22 01:10:20 HArE3TYz0
他にもハンドラの指定とか色々抜けててコンパイルすら通らなさげ
156:名称未設定
08/01/22 02:45:38 4s1CaZPN0
コンパイルはできるよ、ただ機能してないだけ
157:名称未設定
08/01/22 03:57:44 2GbLjtHn0
機能してないスクリプトを書いた本人です.理解の無さがそのまんま
露呈するカタチになってしまいました.いろいろと指摘して頂いた方,
ありがとうございました.
ハンドラのこといまだによくわかんないですけど,まあいっか.
158:名称未設定
08/01/22 04:03:36 pm2VHoUi0
ハンドラーを理解するのは難しいね
159:名称未設定
08/01/22 04:12:49 DGLFhknn0
ハンドラ(この場合サブルーチンか)に渡されるのは「値」。
引数に変数を書いても、その変数の中身の値だけがわたされる。
だから、ハンドラ内で変数をいじくっても、それは呼び出した側にはなんの影響も
およぼさない。
set a to 10
my plusone(a)
display dialog a
to plusone(a)
set a to a+1
end
こんなにしてもaは10のまま。
ハンドラから返されるのも値。
ハンドラのなかでいちばん最後に使った値がそのまま返される。
明示的には、return ほぎゃほぎゃ の形で返す。
さっきのは
set a to 10
set a to my plusone(a)
display dialog a
to plusone(a)
return a + 1
end plusone
こうかけばよかった。
以上の話をぶちこわすglobalとかpropertyとかもあるんだけど、それはまたそのうち。
160:名称未設定
08/01/22 21:07:32 HArE3TYz0
>>156
my指定するか、scriptで囲ってtellなりofなりで指定するかしないとエラー出なかったっけ?
無視されるだけだっけか
手元に無いからわからん
161:名称未設定
08/01/22 22:10:15 4s1CaZPN0
myを使うのは、アプリケーション内での処理から、ハンドラ呼び出すときとかに必要
普通のハンドラ(サブルーチン)はscriptで囲う必要なし
そのルーチン自体にpropertyを埋め込んで何度も使いたい場合なんかに使うかな...
でも、あんまり使ったことはないな
162:名称未設定
08/01/22 23:22:52 HArE3TYz0
ありゃ、勘違いして憶えてたのかな
指摘サンクス
163:名称未設定
08/01/23 02:16:53 jJ/hUDlk0
>>159
サブルーチンで処理した結果が,returnで戻ってセットされた変数に入る
ということなのかな.でもそれを,>>148のdropletにどう生かせばいいのか…….
on open dropList
set dropList to dropHandler(dropList)
display dialog dropList as Unicode text
end open
to dropHandler(dropList)
tell application "Finder"
sort dropList by name
end tell
return dropList
end dropHandler
こうではないんだろうなあ,並び替えられてないし…….
164:名称未設定
08/01/23 02:20:46 UgZ9Xfcg0
Leoparedです。お聞きしたいです。Spotlightでスクリプトの中身の検索出来ないのでしょうか?
テキスト形式で保存してもヒットしません。昔は出来たような気も(テキストエディタで書いてたのだけだったのかな?)したのですが。
索引作り直してたら(壊れたのかな?と)ねむねむです。やっと終わった。でも作り直してもだめでした。実はARIAを見てただけってのは内緒。
あと、盛り上がっている話題のはこのような書き方でいいのですか? --横でごめんなさい。しかもここで書いて動かしてない。だったら書くなよ。
...でもせっかく書いたのを消すのも、、、いや、消せよな!!!明日ためそう。ちゃんと全部書いて。
--本当はここに(オープンハンドラの前に)runハンドラを作っておいた方がいいと思う。デバッグの時のために。
on open dropList
set dropList to dropHandler(dropList) of me --同じスクリプトの中のをを呼び出す時は一応付けるようにしている of me 解ってないけど。あと返しの受け皿を。
-->>161さん of me とかの本当の意味をもう少し詳しく教えてほしいです。間違えてつかってた?
display dialog dropList as Unicode text --これじゃ見にくいよね、repeeat でまわして item i of dropList & return でlogをとったほうがよいとおもう。
end open
to dropHandler(dropList)
tell application "Finder"
--set dropList to selection --これがいらないっていわれてるやつ。いらないです。
set dropList to sort dropList by name --ソートしたのをセットしなおさないといけないです。
--あ、同じ変数じゃだめ?いけるよね?あれ?これってリスト?オブジェクト?
end tell
return dropList --値を返してあげましょう
end dropHandler
165:164
08/01/23 02:39:22 UgZ9Xfcg0
カキコ確認したら>>148さんが...もっとまえからおられたのでしょうが、148から見てた。
ねむねむついでに。おやすみなさい。
on open dropList
set dropList to dropHandler(dropList) --はい、リターンの受け皿です。ハンドラの戻り値は変数にセットするのです。
display dialog dropList as Unicode text
end open
to dropHandler(dropList)
tell application "Finder"
--sort dropList by name --ここが間違えています。ソートした受け皿も必要なのです
set dropList2 to sort dropList by name --なんかこわいから2をつけました。いや、いらないと思うけど回してないから。
end tell
return dropList2 --これでいいです。返して上げたい変数を入れます。2に変えています弱虫です。
end dropHandler
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5373日前に更新/87 KB
担当:undef