AppleScript アップルスクリプト 質問、発表 2

このエントリーをはてなブックマークに追加
1名称未設定
質問、発表どっちでもスレ。

・前スレ
AppleScript アップルスクリプト 質問、発表
http://pc11.2ch.net/test/read.cgi/mac/1174045850/
・関連旧スレ
【標準装備】スクリプトエディタ
http://pc9.2ch.net/test/read.cgi/mac/1111760449/
おもろい、めずらしいアップルスクリプト発表会 6
http://pc7.2ch.net/test/read.cgi/mac/1117979906/

・参考リンク
AppleScript ヘルプ
help:///Library/Documentation/Help/AppleScript.help
発表まとめ
http://members.at.infoseek.co.jp/obto/script/script.html
MacWiki - AppleScript
http://macwiki.sourceforge.jp/cgi-bin/wiki.cgi?AppleScript
AppleScript PARK
http://www.tonbi.jp/AppleScript/
TN2065: do shell script
http://developer.apple.com/jp/technotes/tn2065.html
http://developer.apple.com/technotes/tn2002/tn2065.html
2名称未設定:2007/12/12(水) 16:49:48 ID:jjWSkRss0
2ゲットもされないとは
3名称未設定:2007/12/12(水) 16:56:07 ID:M7U4NWpJ0
このスレ動くのか?
4名称未設定:2007/12/12(水) 17:31:07 ID:cu2c+tAy0
repeat
  set 1san to "乙"
end repeat
5名称未設定:2007/12/12(水) 18:24:16 ID:eQ2nqvVL0
>>3
ブーーン
6名称未設定:2007/12/12(水) 21:47:14 ID:i3mrALz+0
フォルダアクション用のスクリプトを作りたいのですが、フォルダAの中に入れられた、
フォルダBの中身をカウントしてパスをとりたいのですが、どうしたらいいでしょう?

アクションのついてるフォルダAの中身やカウントは出来るのですが、その中に入れられた
フォルダの中を見るのが出来なくて.....
7名称未設定:2007/12/12(水) 23:18:37 ID:DvU/VTHg0
>>6
do shell script  "ls"
8名称未設定:2007/12/13(木) 19:19:31 ID:/TaqswLu0
>>6
どういう風にできないのか、状況が今一よくわからない。
とりあえずscriptみせてくれ
9名称未設定:2007/12/13(木) 20:24:45 ID:WwbKlxRO0
フォルダアクション以前に、フォルダの中を見ることは出来ているか?
処理を切り出して、スクリプトエディタ上で動作するか? イベントログを確認したか?
10名称未設定:2007/12/13(木) 22:33:11 ID: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 できるんだ

116:2007/12/13(木) 23:39:16 ID:dZVmU19G0
やりたい事は、フォルダAの中にフォルダBが入れられたら、フォルダBの名前を参照して、
別のHDのフォルダBと同名のフォルダに、中身をコピーするといったスクリプトを作りたいんです。

で、入れられたフォルダの名前とかは見れるんですが、その中のファイルをいじれなくて...
中身をコピーとか、どう書けばよろしいんでしょうか?
12名称未設定:2007/12/13(木) 23:47:05 ID:/TaqswLu0
Finderのduplicate命令を調べればいいのかも。
13名称未設定:2007/12/14(金) 00:26:40 ID:zt/QqJok0
>>10
>window に tel l すると make new tab できるんだ

お、Stand入れてるから気付かなかったよ。
14OS9でAppleScript勉強中:2007/12/14(金) 01:12:13 ID:XYoMzff60
前スレが1000近くだったので,仕事から帰ってきたらdat保存しようと思ってたら,
もう落ちてた…….1000まで行ったのかな? どなたか,datファイルをアップして
いただけませんか.
15名称未設定:2007/12/14(金) 01:24:35 ID:fav3kosL0
16名称未設定:2007/12/14(金) 01:34:56 ID: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名称未設定:2007/12/14(金) 01:44:10 ID:3tXFwvBg0
>>6>>11
Automator使ったことはあるか? アクションがいろいろ用意されてるから、そっちの方が楽だと思うぞ。
フォルダの内容を取得、Finder項目をコピー、とか目的にすぐ適うのもある。
18名称未設定:2007/12/14(金) 01:45:01 ID:ldmHvnNy0
>>17
逆におまえに使ったことがあるのか聞きたい
19OS9でAppleScript勉強中:2007/12/14(金) 01:50:13 ID:5orZGDZ20
>>15
ありがとうございます.助かりました!
20名称未設定:2007/12/14(金) 11:16:12 ID: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名称未設定:2007/12/15(土) 10:29:27 ID:WA4TIzRE0
ショック
前スレ最後のほうdat取得する前に落ちちゃった・・
22名称未設定:2007/12/15(土) 10:33:49 ID:Xp/CdYBR0
QuickTimeで参照ムービー形式で保存できない。調べるとバグっぽい。
これってまだ直ってないのかな?
http://blog.so-net.ne.jp/MyCometG3/2005-06-25
23名称未設定:2007/12/15(土) 10:34:35 ID:z7vbsHc40
バカ発見
24名称未設定:2007/12/15(土) 16:29:26 ID:cmNmOA2u0
>>23
何のことを言っているんだ?
25名称未設定:2007/12/15(土) 19:24:49 ID: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を利用しています。
すみませんがお願いします。
2625:2007/12/15(土) 20:07:48 ID:5KCgCNUe0
事故解決しました。
tell application "Terminal"
do script "ls" in window frontmost
end tell
276:2007/12/15(土) 22:17:01 ID:tkd/btMa0
>>16
おかげさまで、記述のスクリプトを参考にして出来そうな感じです。
ありがとうございます。

>>17
Automatorは最初に考えましたが、そこまで凝った事はできないですよね?
こちらの設定が悪いからかな...
2816:2007/12/16(日) 14:05:26 ID: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名称未設定:2007/12/18(火) 18:59:52 ID:tI3u0/2d0
applescript使って、任意のフォルダを起動しているToastにドラッグする方法ってありますか?あったら書き方を教えて欲しいです。
30名称未設定:2007/12/18(火) 19:11:45 ID: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名称未設定:2007/12/18(火) 19:14:51 ID:8G7jFN970
訂正
1行目は
set theFolder to (choose folder as list)
が正しかった(あのままでも暗黙の型変換されて動くけど)

add to という名前とは裏腹に、add toするたびに入れ替わっちゃってるみたいなんで
あらかじめ書き込みたいフォルダ(やファイル)のlistを作っておいて、一気に
add toしないとだめなようです。
32名称未設定:2007/12/18(火) 19:18:33 ID:8G7jFN970
訂正の訂正(ごめん)

>add to という名前とは裏腹に、add toするたびに入れ替わっちゃってる
これは嘘でした。
実験用のスクリプトで毎回make Data discしちゃってたミスです。
33名称未設定:2007/12/18(火) 19:22:05 ID:6VOoaA1M0
___
←樹海|
 ̄|| ̄ ┗(´・ω・` )┓三 ちょっと出かけてくるがな
  ||     ┏┗  三
34名称未設定:2007/12/18(火) 19:48:33 ID:6VOoaA1M0
ここに誤爆してたか…すまぬ(´・ω・`)
35名称未設定:2007/12/18(火) 23:55:34 ID:C6DbmXj60
サンプルにすら入ってるkey up/downがまともに動かないけど、
これはバグなんかな

何故か全部"a"に化ける
36名称未設定:2007/12/19(水) 21:01:27 ID:kppU26Um0
>>32
おお!有難う御座いました。早速試してみます。
37名称未設定:2007/12/20(木) 00:40:17 ID:Ev7WE0vJ0
Leopard発売を記念して、オライリーがAppleScript: The Definitive Guideを
和訳して出版してくれるとありがたいんだが。
これを通読するとスクリプトを書くのに迷いがなくなる。
38名称未設定:2007/12/20(木) 13:30:11 ID:/85vAf2r0
英語覚えろbyオラオライリー
39名称未設定:2007/12/20(木) 15:07:41 ID:X9Q17bpi0
スクリプトをバックグラウンドで実行したいのですが
どんな命令を書いたらいいでしょうか。
40名称未設定:2007/12/20(木) 15:19:19 ID:BAUdlxYm0
LSBackgroundOnly
41名称未設定:2007/12/21(金) 17:19:11 ID: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名称未設定:2007/12/21(金) 20:25:46 ID:mpgVWqcT0
>>40
ありがとうございます。
これだと、メニューやウインドウが使えないみたいなんですが
自分で自分をバックグラウンドにする命令
ってのはないんでしょうか。
43名称未設定:2007/12/21(金) 20:40:19 ID:WkJMD1hi0
Caminoアルファ版のツールバースクリプトは面白いんだけど12インチ画面だと微妙。
44名称未設定:2007/12/22(土) 02:48:40 ID: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名称未設定:2007/12/23(日) 22:35:28 ID: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名称未設定:2007/12/24(月) 01:58:50 ID: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名称未設定:2007/12/24(月) 02:03:36 ID:x38QJxgF0
確認して無いけど、拒否されるって時点で既にバグじゃないの?
48名称未設定:2007/12/24(月) 09:36:38 ID:cvmlmFPy0
AppleScriptを特定のキーショートカットで実行しようとしています。
(10.5.1, Mail 3.1)

ぐぐって出てきたMail 2.0のHelpによると、
ttp://docs.info.apple.com/jarticle.html?path=Mail/2.0/jp/ml1083.html
たとえばCtrl-Oで起動したければ
"~/Library/Scripts/Mail Scripts"にスクリプトを保存し、
スクリプトのファイル名末尾に「___ctrl-o」を入れて
「スクリプトメニューをアップデート」するとよいように
書いてあります。しかし、Leopardのスクリプトメニューには
そのメニューがありません。
スクリプトメニューから手動で実行するとちゃんと動作するん
ですが、希望するショートカットでは動作しません。
さらに、ぐぐって出てきた他のページでは「___ctrl-」ではなく
「___ctl-」となっているのでそれも試しましたが動作しません。

この仕様はLeopardでは削除されたのでしょうか。
49名称未設定:2007/12/24(月) 13:48:07 ID:e4ptlFhi0
昔はMail.app自身がスクリプトメニュー持ってたけど、その頃の話じゃねえべか? Tigerでも動かない。

こういうのみつけた。
http://lists.apple.com/archives/applescript-users/2003/Oct/msg00823.html
http://www.sfc.wide.ad.jp/~gen/blog/archives/2006/01/script_menu.html
http://www.microsoft.com/japan/mac/column/contents/98.mspx (*5)の説明のとこ
50名称未設定:2007/12/24(月) 13:50:05 ID:bKfuMTsQ0
>>45
スクリプトエディタからの実行ではクラッシュしなかったのだが
やり方が違うのか?
51名称未設定:2007/12/24(月) 14:00:14 ID:PMlwBjQD0
>>49
当方 10.3.9、Mail 1.3.11 の環境ですが、
Mail のメニューバーの巻物印をクリックすると、たしかに
上から2番目に「スクリプトメニューをアップデート」ってのがありますな。
52名称未設定:2007/12/24(月) 14:05:30 ID:P4VbbP/m0
解答になってないけどこんなのもあるよ
ttp://www.red-sweater.com/fastscripts/
53名称未設定:2007/12/24(月) 20:27:24 ID:Nac2AV4C0
>>45
giving up after ...を書かないと

キャンセルボタンをデフォルトのボタンにすることはできません。

というエラーメッセージが出るね。
AppleScriptというよりも>>45をコンパイルできてしまうスクリプトエディタのバグなのでは。
@10.4.11
54名称未設定:2007/12/24(月) 21:11:17 ID: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名称未設定:2007/12/24(月) 21:36:06 ID:Nac2AV4C0
レパード欲しいのう。。。
56質問:2007/12/26(水) 01:37:13 ID:Jcz3GcRF0
http://blackbird.cocolog-nifty.com/progtalk/2007/03/itunes_f4ed.html

このサイトで紹介されている30分後にMacを終了するスクリプトを実行してみたところ
「NOT super user」と表示され、実行されません。権限が無い?とかそういったことかなと
思うのですが、解決方法を分かるかた教えてください。よろしくおねがいします。
5756:2007/12/26(水) 01:38:28 ID:Jcz3GcRF0
書き忘れましたが当方 OS10.5.1です
初心者質問で申し訳ないですがよろしくお願いします。
58名称未設定:2007/12/26(水) 08:55:40 ID:QpduC8Xy0
件のページにそうコメントしてスクリプト直させれw
59名称未設定:2007/12/26(水) 10:49:45 ID:DykRmPC50
>>56
管理者権限でないと動作しないスクリプトなんだろうよ。
アカウント設定で管理レベルを上げて使うしかないだろう。
6056:2007/12/26(水) 13:13:00 ID:Jcz3GcRF0
>>59
ありがとうございます。しかし、管理者権限でログオンしても何も変わりませんでした
何か別の手順があるんでしょうか?
61名称未設定:2007/12/26(水) 13:29:39 ID:XoQzgrkG0
>>56

delay 1800
tell application "Finder" to sleep

これでやってみて
62名称未設定:2007/12/26(水) 13:30:05 ID:fAxFLO6h0
do shell script "Sleep 10"--これなら10秒
tell application "Finder" to sleep

こっちはTigerだけど、上の通りで、スクリプトエディタからの実行でも問題なく動いたよ。
内容的にも、通常のユーザー(=管理者だよね?)で問題ないはずだけど。
LepardではスーパーユーザーじゃないとSleepが使えないのか?
ターミナル起動してSleep 10って入力してリターンで、10秒後に次の行が出るか試してみたら?
6356:2007/12/26(水) 14:42:42 ID:Jcz3GcRF0
ありがとうございます。教えていただいた方法で無事動きました。

自分の書いたスクリプトはこんなかんじだったのですが、shutdownがいけなかったんですね。
ありがとうございました。
do shell script "shutdown 180"
tell application "Finder"
shutdown
end tell
64名称未設定:2007/12/26(水) 17:13:08 ID:milt/RbT0
ああ、なるほど。
do shell script "sleep" の sleep は、Macをスリープさせるのではなく
コマンドの実行をしばらく休むというものでした。だから、ここは書き換えちゃ
ダメだったんです。
(ほんとは、AppleScriptにdelayコマンドがあるんで、それを使えば簡単なんですが)
65名称未設定:2007/12/26(水) 17:53:21 ID:EjE9lbUP0
むしろこんなのをスクリプトメニューから実行した方が邪魔にならなくていいんでは

#!/bin/sh
sleep 10
osascript -e 'tell application "System Events" to shut down'

あと、shut downとかsleepとかのパワー関連はFinderでなくSystem Eventsにtellするのが流行りらしい、というかOS Xでは推奨。
66名称未設定:2007/12/27(木) 01:47:14 ID:RndQBQ+30
Apple Eventのログ取ると分かるけど、Finderにtellしても
結局System Eventsに下請けに出されてる。プロセス関係もそう。
67名称未設定:2007/12/27(木) 03:36:23 ID:Co1d2Pbu0
そのうち
tell application "Finder" to sleep
なんて書いたら

AppleScript エラー
変数 sleep が定義されていません。

て怒られるようになるんだろうか。
68名称未設定:2007/12/27(木) 10:46:53 ID:/KIEzCw20
そっちのほうがいいなあ
69名称未設定:2007/12/28(金) 13:02:50 ID:+XIGD6Sl0
CDを挿入すると自動的にitunesが立ち上がり、ビットレート選択画面が表示され、
選択すると自動的に音楽の読み込みが始まるような動作ってapplescriptでできますか?
70名称未設定:2007/12/28(金) 13:24:23 ID:E9eNe2G00
知らんけどコンパネの「CDとDVD」の設定で自分で作ったスクリプトでも設定しておけば良いんじゃない?
71名称未設定:2007/12/28(金) 17:22:31 ID:e6qZoYE70
>>65
スクリプトメニューからシェルスクリプト実行できるの?
72名称未設定:2007/12/28(金) 19:30:28 ID:Yy9Yv8ct0
iTunesは自動で立ち上がらないか?
自動で読み込むのもiTunesの設定でできるな。
毎回ビットレートを選択したいの?

73名称未設定:2007/12/28(金) 20:00:44 ID:9tTwCYMZ0
>>71
うん。
ただしターミナル上で実行される訳じゃない。
74名称未設定:2007/12/28(金) 21:04:56 ID:0whPc3T9P
>>71
>スクリプトメニュー - route99 の日記
ttp://slashdot.jp/~route99/journal/78037
75名称未設定:2007/12/29(土) 01:22:56 ID:AwbgqQHE0
>>56
このスレはさ、1から作ってくれっていう初心者の質問にも答える人とかいるぐらい
優しい人が多いんだけどさ、それにしても他のサイトにも同じ質問するなんて
たとえ初心者でもルール違反だぜ。

同じ質問するなら、同じ日に書くんじゃなく少し時間をあけて若干質問内容も変えようよな。

1から作ってくれっていう図々しい奴もそうだが、こういうこと平気でやってると
ここのいい人たちも答えることしなくなってスレが枯れてくんんだよ。

はっきり言うけど、マジやめろよな。初心者だからという言い訳はすんなよ。
76名称未設定:2007/12/29(土) 03:50:39 ID:y3Wq1JFf0
人間としての初心者だろうから大目に見てやれよ。
77名称未設定:2007/12/29(土) 04:10:22 ID:4OWyvzdg0
ほんとこのスレの連中には驚くというか、呆れるというか。
親切ってよりもASジャンキーで、解決する課題に飢えてるんじゃないかとも思える。
78名称未設定:2007/12/29(土) 05:07:15 ID:EDaQL3es0
>>76
そういう問題以前の話しだろ。自分で自分の首を締めるつもりか?
79名称未設定:2007/12/29(土) 05:12:14 ID:EDaQL3es0
大体他のサイトでも同じ質問するなんて、答えてくれた人たちに対して失礼もいいところだ。
まだ1から作ってくれってホザいてる方が、かわいいよ。
80名称未設定:2007/12/29(土) 22:02:55 ID:tax5Gvzs0
まあまあ、もういいじゃないか
こうやってあちこちで嫌われて損するのは本人なんだから
8169:2007/12/30(日) 03:27:55 ID:l4VNXBnB0
>>72
itunesは立ち上がるんですが、動き方として、
CDを入れるたびにitunesが立ち上がって、それだけでなくビットレートの選択も聞いて欲しいんです
CDごとにビットレートを微妙に変えたくて…
細かい注文ですみません。

>>70
ヒントをありがとうございます。
ここで設定できそうですね。あとはスクリプトを用意すれば…
itunes関連のサイトは多いのですが、ビットレートはなかなか見つかりません。
82名称未設定:2007/12/30(日) 05:05:42 ID:EVhz60Rf0
69はAppleScript書けるの書けないの?
書けるならiTunesがAppleScriptからビットレート変更したりできないの
すぐ分かると思うが。mp3ならiTunes-LAME使ったら?
AACは知らん。ffmpegとかか。
83名称未設定:2007/12/30(日) 05:42:38 ID:l4VNXBnB0
>>82
回答ありがとうございます。itunesから乗り換える気はなかったのであきらめることにします。
asは細かい文法は全く分かってないです。
84名称未設定:2007/12/30(日) 09:46:03 ID:c6zlbZkx0
エンコーダの種類は変えられそうだけど。
ビットレートの変更は,なんとかなんとかでマウスクリックとか制御してやるとできそうじゃんん。
まったく無理じゃないと思う。
面倒だから作らないけど。
85名称未設定:2007/12/30(日) 11:03:20 ID:VPc7u6oGP
>>84
なんとかなんとかって Cliclick のことかなぁ?
>Cliclick
ttp://www.bluem.net/downloads/cliclick-en/
86名称未設定:2007/12/30(日) 11:42:20 ID:Ab4Yg+cu0
GUI Scripting のことかと思ったら違ったのか。
しかしいろんなソフトがあるもんだなあ。
87OS9でAppleScript勉強中:2007/12/30(日) 13:06:14 ID:ANF0cxNF0
暮れも押し詰まってきてるというのに,どっぷりAppleScriptにハマってます.

ところで,以下のようなリストあるとします.
{"コスモタイガー2", "コスモゼロ", "ブラックタイガー", "コスモゼロ"}

"コスモゼロ"という項目が重複していますが,リストの一部が重複しているかどうかを
判断させるには,どうしたらいいのでしょうか.containsではその項目が存在している
ことがわかっても,重複まではわからないですよね,たぶん…….
88名称未設定:2007/12/30(日) 13:14:54 ID:ac4OMj/+0
>>87
リストを別のリストにコピーするってのはどうよ
一つずつコピーしていって、その都度コピー先に含まれるかチェックする
入っていたらスキップ、とか
89OS9でAppleScript勉強中:2007/12/30(日) 13:57:43 ID:ANF0cxNF0
>>88
例えば,"コスモタイガー2"を抜き出し,
{"コスモタイガー2", "", "", ""} ← {"コスモタイガー2", "コスモゼロ", "ブラックタイガー", "コスモゼロ"}
containsを使えばということだと思うんですが,これでは全てが対象になってしまうと思うんです.
実際似たようなこと考えて,元リストから複製リストを作成して一つずつ比較してみてやったりしました.

ということではなく,なにか自分が勘違いしているのかな?
90名称未設定:2007/12/30(日) 14:53:23 ID:UaIcXGnF0
Essential Sub-routines
List Manipulation Routines
http://www.apple.com/applescript/sbrt/sbrt-07.html
COUNTING OCCURRENCES OF AN ITEM IN A LIST
91OS9でAppleScript勉強中:2007/12/30(日) 15:45:00 ID:ANF0cxNF0
>>90
たぶん重複している項目の数を結果として示すスクリプトだと思うのですが,
英語苦手なのでよく内容はわかりません.該当しそうなものを使ってみましたが,
OSX向けなのでエラーが出てダメでした.

でも,情報ありがとうございました.
92名称未設定:2007/12/30(日) 15:59:27 ID:uUC4yVjn0
>>89
最終的に何がしたい。
リストにダブりがあるかどうか知ることが最終目的ではないだろ
93名称未設定:2007/12/30(日) 16:25:50 ID: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
94OS9でAppleScript勉強中:2007/12/30(日) 16:53:04 ID:ANF0cxNF0
>>93
does not containを使えばいいのかあ,それが >>88 の指してることなわけですね.
なるほどです.あとは,theSourceとtheDestの比較をすれば,そのリストで項目が
重複しているかどうかわかりますね.

ありがとうございます.感謝します.
95名称未設定:2007/12/30(日) 23:05:40 ID:tIuzWWcg0
うちの場合、OS9でなら重複チェック等はTanaka's osaxで簡単に済ましてる
96名称未設定:2007/12/31(月) 12:52:18 ID: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名称未設定:2007/12/31(月) 13:46:43 ID:BZwXIydk0
98名称未設定:2007/12/31(月) 13:49:47 ID: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名称未設定:2007/12/31(月) 13:50:15 ID:MpuWxXDi0
かぶったスマソ
100名称未設定:2007/12/31(月) 14:27:34 ID:sIJQD9ek0
>>97, 98さん。素早い返答ありがとうございます。
なるほど、スクリプトエディタではない別の環境で動く構文なのですね。
この件といいosascriptではまたちょっと違う等、
なかなか複雑という印象ですね。
ひとまずやりたい事は出来そうです。
重ねてお礼申し上げます
101名称未設定:2007/12/31(月) 17:30:21 ID:0M0H32ts0
アプリやOSAXごとに全然世界が違うし、
バッドノウハウみたいなのもたくさんあるし、
AppleScriptは頭を柔らかくしないと。
102OS9でAppleScript勉強中:2008/01/01(火) 22:41:13 ID:chjaDrUH0
昨年もいろいろ皆さんに教えていただいたおかけで,アルゴリズムを考えるための
Scriptを60近く,実用にたえるAppletは,5つほど作成することができました.
心から感謝します.今年もよろしくお願いいたします.

>>95
name containsとか便利ですよね.でも,あまりに便利すぎて
OSXに移行するとき困りそうなので,二の足踏んじゃうんですよ.
103名称未設定:2008/01/03(木) 19:40:41 ID:+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名称未設定:2008/01/03(木) 19:49:09 ID:wZWVECP60
>>103
item 1 of (selection as list)

なぜかは聞くな
105名称未設定:2008/01/03(木) 21:50:59 ID:+I1HKPi20
>>104
な、なるほど・・・?
OS 9 の頃とは細かいところで変わってるんだなあ・・・
106名称未設定:2008/01/04(金) 00:37:26 ID:GMKEK95d0
AppleScript にだってバージョンがあるんだぜ
107名称未設定:2008/01/04(金) 03:43:05 ID:y09UQnZ+0
文法とかの細かい変更は仕方ないにしても
バージョン上がってもOS9時代よりアレなのもどうかと
108名称未設定:2008/01/04(金) 17:18:33 ID: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投げ出すひとって大勢いそうだし。
レオでもこのままなのか?
109OS9でAppleScript勉強中:2008/01/12(土) 01:27:33 ID:ZvUtVv6e0
今,Jon's CommandsというOSAXでwalk foldersという命令を使っているのですが,
作成したスクリプトを動作させる度に,スクリプトの容量がどんどん増えていくという
とんでもない不具合(?)に悩まされています.

walk foldersを利用されている方,どうやってこれを解決されているんでしょうか…….
110名称未設定:2008/01/12(土) 01:44:49 ID:mykv1KeI0
スクリプト晒さない事にはOSAXのせいかどうかもわからない
111名称未設定:2008/01/13(日) 00:19:00 ID:mPW5Lte20
109のwalk folders件ですが,いろいろと試行錯誤してはみたものの,
結局Jon's Commandsを使う限り不具合は解消されないようですので,
諦めることにしました.
112名称未設定:2008/01/13(日) 01:41:08 ID:iAZtFkcN0
ここにあるね
ttp://homepage.mac.com/tkurita/scriptfactory/Monologue/ClassicContents/BugsInTheLife/walkfolders.html

それにしても、おまえは自分で組んだscriptを晒さないね
113名称未設定:2008/01/13(日) 02:04:03 ID:mPW5Lte20
ScriptFactoryさんのことは知っていての質問だったわけですが,
結局そこに書いてある通り,無理だったことが身をもってわかりました.

それから,自分の質問内容が気に入らないであれば,スルーして下さい.
114名称未設定:2008/01/13(日) 02:10:33 ID:zUdfVohq0
コテを付けてください。
115名称未設定:2008/01/13(日) 02:19:50 ID:1fj0Uanb0
いや、俺は外したままでいてくれた方が落ち着くw
116名称未設定:2008/01/13(日) 02:38:23 ID:aDuZrHg+0
OS9なら普通はTanaka's osaxの MT List Files とか使うから
そんな不具合有るものわざわざ使わないよ。
117名称未設定:2008/01/13(日) 02:56:04 ID:mPW5Lte20
>>116
OSX移行するとき,MT List Filesが足かせにならないかって心配してまして,
でも,OS9専用ってことで割り切ってTanaka's osaxを利用することにします.
ありがとうございます.
118名称未設定:2008/01/13(日) 09:05:17 ID:aDuZrHg+0
そんな心配は無用です。
OS9>XでAppleScript自体の仕様も相当変わっているので
どのみち書き換えが必要になりますw
Xになってからも、細かく仕様変更がされていてスクリプト変更してるくらいなのでorz
119名称未設定:2008/01/13(日) 11:42:55 ID:KxNPf8Aw0
時代とともに言語 / API 仕様がかわるのは当たり前。
Objective-C も Ruby も Java も C も C++ も Fortran も
PHP も Perl も C# も、みんな変わってるじゃないか。
120名称未設定:2008/01/13(日) 12:37:39 ID:VTigvD2v0
でも、ちゃんとバージョンごとの仕様を明確にしてほしいな。
特に下位互換性がない変更の場合。
121名称未設定:2008/01/13(日) 18:48:54 ID:Y7FH7T8P0
今さらですけど,Tanaka's osaxのファイルリストアップは,Jon's Commands
のそれよりも扱いが簡単で,フィルターも強力ですごい便利.もっと早く利用して
おくべきだったと,ちょっと後悔.

OSXで書き換えが必要になった時,Tanaka's osaxに替わるOSAXがあるのかどうか,
激しく心配ですけど,一度便利なものを知ってしまうと,もう後には戻れませんね.
122名称未設定:2008/01/14(月) 03:35:29 ID:ka4JNNii0
Tanaka's osaxのMac OS X版を作るプロジェクトとか、やればいいのかねえ。
123名称未設定:2008/01/14(月) 05:00:16 ID:ENhFNRr20
旧板にはAppleScriptのスレは無いのかね?

applescript-usersって公式メーリングリストあるけど、投稿量が多すぎてついていけず
退会したけど、ちょっとのぞいてみりゃあ>>121-122みたいな心配はいらんと知るよ。

OS XではUNIXのツール群が使えるし…
OS9でAppleScript勉強中氏も、そんな埃かむった小道具いじってる時間をbashなり
perlなりを勉強する時間にあててみてはどうかね。
124名称未設定:2008/01/14(月) 06:39:32 ID:IiEa8l6g0
OS9でもJperlやらいろいろ有るけど
アプリ操作やアプリ間連携動作やらが簡単に出来るからAS使ってるわけで
データ処理とかプログラミングがしたいわけではないのでw
125名称未設定:2008/01/14(月) 11:42:38 ID:LQf2u36d0
偏屈な人だw
126名称未設定:2008/01/14(月) 14:25:09 ID:EX8tgjk10
いや埃かむった小道具って言ったのは、ASのことではなく、メンテされなくなった
機能拡張とかのことですわ。AppleScriptの中でUNIXのツール群が使える(又はその逆)
ってのは9とXの最大の違いではないか。正規表現使いたければdo shell scriptの中に
ごく普通の言葉(世界標準の書き方)で書けばいいわけですよ。あるいはターミナルでの
ファイル削除でもゴミ箱を経由させるように、シェルスクリプトの中でtell application Finder
したり。
127名称未設定:2008/01/14(月) 14:36:51 ID:KZRT+ChJ0
>>126
124さんと同じことをやりたいので,AppleScript.
ちょっと違うのは,AppleScriptに関連するものは何でも興味津々.
PerlもbashもデータベースのFileMakerとかも.OSAXも作ってみたい.

OSXに移行した時にはもう,UNIX三昧しまくりしちゃいますよ.はい.
以上,できるできないは別として,素人のたわ言です.チラ裏終わり.
128名称未設定:2008/01/16(水) 08:43:11 ID:8C/XGZPx0
俺はシェルスクリプトにGUIをかぶせるためにapplescriptをかじった。
applescriptは(もw)ド素人。
でもapplescirptはCUIに拒絶反応ある人にお手製ツールを使ってもらうのにいいよ。
129名称未設定:2008/01/17(木) 01:47:09 ID:qWQcQ6AM0
文字コードを気にせずに文字データのやり取りが出来るようにならないかなー。
130名称未設定:2008/01/18(金) 00:24:11 ID:5Yva5GU+0
リストのソートも,命令一つでできるといいのになあ.
131名称未設定:2008/01/18(金) 01:33:20 ID:q0uCyray0
osax使えばsort命令一つで出来るぉ
132名称未設定:2008/01/19(土) 00:03:36 ID:WANsk5dY0
>>131
何のOSAXかは知らないけれど,リストソートできるものがあったなんて.
リファレンスのシェルソートサブーチンを,ずっと使ってましたよ.
133名称未設定:2008/01/19(土) 02:04:45 ID:bNlBOqxZ0
AppleScriptでデフォルトWebブラウザを知る方法は無いでしょうか?
134名称未設定:2008/01/19(土) 02:27:59 ID:Q4PHZ+3z0
>>133
「AppleScriptでデフォルトWebブラウザ」でググったら1件目で出てくるんだぜ

書いてある様にdo shell script "defaults read 〜"するか、
Tiger以降ならproperty list itemでも一応取れるか
135名称未設定:2008/01/19(土) 15:06:56 ID:njSmylLF0
最近のgoogleは賢いなあ
136133:2008/01/19(土) 17:23:10 ID: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名称未設定:2008/01/19(土) 18:34:22 ID:1KIB+dgT0
>>131
そのまんまの名前のOSAXがありましたね.これは嬉しい.早速使ってます.

どういう理由かはわからないけど,ドロップしたファイルというのは必ずしも
ファイル名順には変数には読み込まれないようで,処理する時に困ってたんです.
というわけで,助かりました.
138名称未設定:2008/01/19(土) 18:44:46 ID:JRs7HsQo0
>>137
ファイルのリストだったらFinderでソートできますよ。
tell application "Finder"
set theList to selection
sort theList by name
end tell

139名称未設定:2008/01/19(土) 19:09:47 ID:1KIB+dgT0
>>138
Finderのオブジェクトならいけるみたいですね.でも,Finderの悪しき影響を
受けちゃってるみたいで,例えば1,2,10のファイルだと1,10,.2になっちゃいます.
OS9だとそうなるんですけど,OSXでは改善されているのかなあ.
140名称未設定:2008/01/19(土) 20:21:46 ID:HrKYcUkt0
>>139
osxは改善されてる
141名称未設定:2008/01/19(土) 22:49:04 ID:cZYltYPw0

>>139
その手の問題は、昔からNatural Orderで解決済みです。
142名称未設定:2008/01/19(土) 23:26:21 ID:XXfRL/cq0
>>140
教えていただいて,どうもです.

>>141
Natural Orderは使ってて,確かにFinder上では問題ないです.
ただ,AppleScriptの扱いはNatural Orderのそれに準じないようです.
143名称未設定:2008/01/19(土) 23:47:13 ID:+u9o5DpX0
Finder で sort by name してもダメなんですか?
144名称未設定:2008/01/20(日) 00:02:56 ID:KOKQVTo30
>>143
ダメですね.今はもうOSXが主流だから事実上問題ないと思いますけど.
145名称未設定:2008/01/20(日) 04:12:44 ID:0kj954Xl0
>>144
うちのOS9.2.2/AS1.8.3/Natural Order の環境では
OSAX sort でも Finder で sort by name でも問題なくNatural Order で並びます。
146名称未設定:2008/01/20(日) 12:59:21 ID:zbY9Ad8U0
>>145
ちょっと確認したいんですが,>>131に書いてある通り,Finder上から見える
ファイル名の並びではなく,ファイルをドロップした変数に読込まれる順番という
ことですよね.

Natural Orderを使えば,1と2と10というファイル名をドロップした時に,
変数の中が,1,10,2 のファイル名にはならないっていうことでいいですか?

うちの環境は,OS9.2.2/AS1.8.3/Natural Order 1.4です.
147名称未設定:2008/01/20(日) 18:14:52 ID:EvEGGTMq0
>ファイルをドロップした変数に読込まれる順番
ではなくて、変数に読込んだ後script上で

>Finder で sort by name
148名称未設定:2008/01/20(日) 18:25:07 ID: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名称未設定:2008/01/20(日) 18:26:48 ID:20mX5rRl0
ということはではなくてですか? じゃなくて,
ということですよね? ということです.
150名称未設定:2008/01/20(日) 19:22:05 ID: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名称未設定:2008/01/20(日) 21:43:38 ID:aF5u7c2B0
value of
152名称未設定:2008/01/20(日) 22:22:04 ID:ReuX4mAI0
うまくいきました。
ありがとうございます。
value of、わすれてました
153名称未設定:2008/01/21(月) 01:15:17 ID:7Z0drbOg0
sortの件,自分のスクリプトの書き方が悪いのか,環境が悪いのか
わかりませんが,いずれにしてもFinderは使わずOSAX利用にします.
OSXが改善されているんであれば,この件はもう問題ないと思いますので.
154名称未設定:2008/01/21(月) 02:36:11 ID:JBjSBARS0
おまえ OS9でAppleScript勉強中 だろ
珍しくスクリプトを晒したな、では教えてやる
(OS9でAppleScript勉強中でなかったらすまん)

>>148 のスクリプトは根本的に間違ってるぞ
まず、ハンドラを呼び出しといて返り値を受け取るようになってない
次に、ハンドラに渡した引き数をハンドラ内で上書きして消している
そのまた次ぎに、ハンドラから返り値を戻していない

俺んとこはOS9環境じゃないから最終的にちゃんとソートされるかどうかわからんが
修正してからもう一回やってみな、たぶんできるんじゃなか
155名称未設定:2008/01/22(火) 01:10:20 ID:HArE3TYz0
他にもハンドラの指定とか色々抜けててコンパイルすら通らなさげ
156名称未設定:2008/01/22(火) 02:45:38 ID:4s1CaZPN0
コンパイルはできるよ、ただ機能してないだけ
157名称未設定:2008/01/22(火) 03:57:44 ID:2GbLjtHn0
機能してないスクリプトを書いた本人です.理解の無さがそのまんま
露呈するカタチになってしまいました.いろいろと指摘して頂いた方,
ありがとうございました.

ハンドラのこといまだによくわかんないですけど,まあいっか.
158名称未設定:2008/01/22(火) 04:03:36 ID:pm2VHoUi0
ハンドラーを理解するのは難しいね
159名称未設定:2008/01/22(火) 04:12:49 ID: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名称未設定:2008/01/22(火) 21:07:32 ID:HArE3TYz0
>>156
my指定するか、scriptで囲ってtellなりofなりで指定するかしないとエラー出なかったっけ?
無視されるだけだっけか

手元に無いからわからん
161名称未設定:2008/01/22(火) 22:10:15 ID:4s1CaZPN0
myを使うのは、アプリケーション内での処理から、ハンドラ呼び出すときとかに必要

普通のハンドラ(サブルーチン)はscriptで囲う必要なし
そのルーチン自体にpropertyを埋め込んで何度も使いたい場合なんかに使うかな...
でも、あんまり使ったことはないな
162名称未設定:2008/01/22(火) 23:22:52 ID:HArE3TYz0
ありゃ、勘違いして憶えてたのかな
指摘サンクス
163名称未設定:2008/01/23(水) 02:16:53 ID: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名称未設定:2008/01/23(水) 02:20:46 ID: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
165164:2008/01/23(水) 02:39:22 ID: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
166名称未設定:2008/01/23(水) 02:50:08 ID:jJ/hUDlk0
>>164
>>165
眠い中,丁寧な解説ありがとうございました.
レスを参考に書き換えて実行したら,見事にできました.めちゃくちゃ嬉しい.

on open dropList
set dropList to dropHandler(dropList) of me
repeat with i in dropList
display dialog i as string buttons {"OK"} default button 1
end repeat
end open

to dropHandler(dropList)
tell application "Finder"
set dropList to sort dropList by name
end tell
return dropList
end dropHandler
167名称未設定:2008/01/23(水) 02:54:34 ID:jJ/hUDlk0
of me は,無くてもよさそうです.レベル1上がったかもしれない.皆さんに感謝です.
168名称未設定:2008/01/23(水) 03:38:02 ID:8sW51IY70
ハンドラ of me あるいは my ハンドラは、
tell ナントカの内側で呼び出すときに必要になる。

たとえば、
tell application "Finder"
set theList to every file of (choose folder)
set dropList to dropHandler(theList)
end

to dropHandler(dropList)
--略
end dropList

なんてやるとエラーになる。
呼び出すところを、my dropHandler(theList) あるいはdropHandler(theList) of me
としないといけない。

必要ないときに付けても害にはならないので、
わたしは(>>161とは逆に)、常に付けておく習慣にする派。スクリプトを
デバッグしながら、修正したりするときに、myは付けっぱなしにしておいた方が
いらないエラーに出会わないので。
169名称未設定:2008/01/23(水) 08:25:20 ID:sV0qOwWq0
ハンドラの頭のtoってなんですか。今までonしか見たことがなかったもので。
170名称未設定:2008/01/23(水) 11:43:29 ID:L0F7r9lE0
どっちでもいいです。好きな方を使ってください。
171名称未設定:2008/01/24(木) 01:31:14 ID:PWw4lLLi0
dialogをwindowにattachして表示していて、
表示するdialogによって後処理を変えたい場合はどうやるのがベターなんだろう?
具体的にはこんな感じ↓

--
on clicked theObject
if name of theObject is "btnA" then
display dialog "A" attached to window 1
else if name of theObject is "btnB" then
display dialog "B" attached to window 1
end if
end clicked

on dialog ended theObject with reply withReply
(* "btnA"を押したらdialog"A"を、"btnB"を押したらdialog"B"を表示する *)
(* でもって"A"のOKを押した時と"B"のOKを押した時で違う処理をしたい *)
end dialog ended
--

ボタンだったらInterface Builderで作成する際に名前付けておけば、
on clickedでやってるみたいに区別できるけど、
dialogに名前をつける方法が全く見当付かないんだよね
172名称未設定:2008/01/24(木) 01:31:58 ID:PWw4lLLi0
今のところの代案は2つあって、まずボタンで区別する方法

--
on clicked theObject
if name of theObject is "btnA" then
display dialog "A" buttons {"Cancel", "OK"} attached to window 1
else if name of theObject is "btnB" then
display dialog "B" buttons {" Cancel ", " OK "} attached to window 1
end if
end clicked

on dialog ended theObject with reply withReply
if button returned of withReply is "OK" then
(* AのOKの後処理 *)
else if button returned of withReply is " OK " then
(* BのOKの後処理 *)
end if
end dialog ended
--

簡単だけど全部のボタンを個別に考える事になるので、
数が増えてくるともの凄くわかりづらい感じがする
173名称未設定:2008/01/24(木) 01:32:24 ID:PWw4lLLi0
もう一つ
globalな状態変数を作って、display実行直前にアップデートする方法

--
property lastDialog : ""

on clicked theObject
if name of theObject is "btnA" then
set lastDialog to "A"
display dialog "A" attached to window 1
else if name of theObject is "btnB" then
set lastDialog to "B"
display dialog "B" attached to window 1
end if
end clicked

on dialog ended theObject with reply withReply
if lastDialog is "A" then
(* Aの後処理 *)
else if lastDialog is "B" then
(* Bの後処理 *)
end if
set lastDialog to ""
end dialog ended
--

ダイアログ別に書けるのでわかり易くはあるんだけど、
いまいちスマートな気がしない


もっといい方法があったらご指南下さいませ
174名称未設定:2008/01/24(木) 02:25:26 ID:UgLPzr1s0
とりあえず、いわゆるAppleScript Studioのはなしをするときは、その旨一言断ってもらえると
ありがたい。Xcode入れてない人にとってはなんのこっっちゃわからんから。

で、なんかわかりませんけど、単に行き詰まってるだけでは?「ダイアログのOKを押したとき…」
っていうのを頭から消してみたら?
ダイアログはダイアログであって、それをごちゃごちゃ拡張するぐらいなら、Scriptオブジェクト
でも使って正しく一から機能を定義すべき。
175名称未設定:2008/01/24(木) 02:47:45 ID:PWw4lLLi0
>>174
別に全員が全員のレスを読む義務なんて無いし、わからん人には答えも出せないだろうから、
あまり迷惑はかからないような気がしたんだ
ごめんなさい

で、scriptで分けるのはなるほど合点
ファイル自体分けるのも悪くなさそうですな
176名称未設定:2008/01/24(木) 07:39:45 ID:gSZwdT8s0
AS Studioはほぼ分からないけれど
Cocoaなら、Dialogを表示するためのメソッドを別に起こし、Dialog
から戻ってきたときに実行させるメソッドを指定しておく。
メソッド1:ダイアログA表示
メソッド2:ダイアログA後処理
メソッド3:ダイアログB表示
メソッド4:ダイアログB後処理

ASでも基本的な考え方は同じようでいいのでは。
要は、一つのハンドラで処理しようと考えずに、個々に作るって方法。
177名称未設定:2008/01/28(月) 04:45:44 ID:Lv8zmNMU0
文字列の先頭または末尾にあるスペースや改行を削除したいと考えています。
character of theStings で一文字ずつチェックすればいいのはわかるのですが
もっと簡単で速い方法がありそうな気がしています。
Unixのコマンドとかに何かないでしょうか?
178名称未設定:2008/01/28(月) 09:00:13 ID:wC267zY50
>>177
デリミタにして割って戻せば?
但し、先頭と末尾、スペースと改行ってきまってんなら、データによっちゃあ一文字づつ判定した方が早いかもね。
ASの配列の扱いは遅いから。
URL、pathを割るだけならデリミタ使った方が楽にかけるけど。
179名称未設定:2008/01/28(月) 09:21:13 ID:aEMLetUe0
sed
180名称未設定:2008/01/28(月) 11:00:46 ID:wWgbdatJP
>>177
php の trim 使えば?
181名称未設定:2008/01/28(月) 19:18:20 ID:Cc1krv5x0
>>177
処理するデータ量によると思うけど、多くの場合は、AppleScript で閉じた方が速度は速いと思う。OSAX 経由による新しいプロセスの起動は馬鹿にならないコストが発生する。書くのはめんどくさいかもしれないけど、使い回せるようにしておけば OK。

また、do shell script では、引数としてデータを渡すか、一時ファイルを経由するか以外にデータを渡す方法は無い。普通は、簡便に引数としてデータを渡すことを想定していると思う。でも、それは避けるべき。なぜなら、引数に与えられるデータは数kB 程度の制限があるから。
182名称未設定:2008/01/28(月) 21:11:12 ID:6Mnl2a+20
そら制限あるに決まってるけど、たまにはドキュメント見直しといたら?
183名称未設定:2008/01/28(月) 21:57:15 ID:t1dhc6kE0
OS9ならTanaka's osaxで簡単にスペースや改行削除、文字列置換出来るんだけど…
普通、こういうのってテキストエディタ使わない?
アプリをAppleScriptで操作するってんなら話もわかるけど。
184名称未設定:2008/01/29(火) 00:00:05 ID:SqnO2VLc0
こんなソフトありませんかスレで質問したものです。
そこでいただいたスクリプトに追加してドロップレットの形にもってこれました。
先ほどはありがとうございました。
なお、エラー処理は入れていません。

代わりにInfo.plist側でfolderのみドロップ可能の制限を付けてます。

on open of target_files
tell application "Finder"
repeat with theFolder in target_files
set theNumber to count items of folder theFolder
set name of theFolder to (name of theFolder) & " (" & theNumber & ")"
end repeat
end tell
end open

185名称未設定:2008/01/29(火) 00:15:51 ID:8rKQZbo00
>>184
こちらこそ勉強になりました
186177:2008/01/29(火) 01:05:53 ID:y2zrfE5B0
ありがとうございます。
そうなんですよtrimがやりたいんです。
1行の文字列を想定しているので、do shell scriptで渡せる範囲で十分かな
とは思ったんですが(って、制限があるの知りませんでしたが)。
sed で一発なのかな?
地道に削った方がいいのかな。
187177:2008/01/29(火) 02:06:24 ID:JvyyVCGs0
あれ。書き込まれていない…ってことはどっかに誤爆したか。

ありがとうございました。
sedも捨てがたい気もしたんですが、一応AppleScriptで書いてみました。
お礼がてら発表。
将来必要な人はご自由にお使いください。

to trimSting(theStr)
set blankcha to {" ", tab, return, ASCII character 10}
repeat with l from 1 to length of theStr
if character l of theStr is not in blankcha then exit repeat
end repeat
if l is length of theStr then -- 空白文字しかない
return ""
else
repeat with r from length of theStr to l by -1
if character r of theStr is not in blankcha then exit repeat
end repeat
return text from l to r of theStr
end if
end trimSting

---
set testStr to " ねこ cat " & return & " "
trimSting(testStr)
188177:2008/01/29(火) 02:11:25 ID:JvyyVCGs0
普通のフォントだと小文字のlが見づらかったですね、失敗。
左と右でlとrだったんですが。
189名称未設定:2008/01/29(火) 08:16:45 ID:KVrSUKlu0
190177:2008/01/31(木) 16:50:50 ID:hk4Y87xF0
>>187
バグ見っけ。
" A" みたいな、最後の1文字だけ空白でないとき、結果が""になります。
関数の最初(repeatの前)を以下に修正

to trimSting(theStr)
set keeper to ASCII character 0
set blankcha to {" ", tab, return, ASCII character 10, keeper}
set theStr to theStr & keeper
repeat with l from 1 to length of theStr
(以下同じ)
191名称未設定:2008/02/02(土) 14:35:22 ID:jL2sCx8L0
ここでいいのかどうかわかりませんが。

Word 2004でマクロを使って文字置換をしていたのに、Word 2008ではマクロが使えない(作れない)ので困っています。
カタカナをひらがなに一括変換したり、漢数字をアラビア数字にまとめて直したりするには、Applescriptを使うしかないのでしょうか。参考になりそうなサイトでもあれば教えてください。
192名称未設定:2008/02/02(土) 15:21:35 ID:FXyhVtyz0
2004と2008両方使えば?
VBA使えるならAppleScriptはさして難しくないと思うが、
参考になりそうなサイトはググって出てきたサイトです。
193名称未設定:2008/02/02(土) 15:26:19 ID:1y5wM5OO0
194名称未設定:2008/02/03(日) 01:19:05 ID:XiMWeNMG0
今まで使えていたスクリプトが使えなくなりました。
どなたか理由が分かる方いれば教えてください。
内容は最近使った項目を消去するスクリプトです。
ずいぶん前にこんなアプリスレで作ってもらった物なので
自分では原因が分からず、、、です

tell application "Finder"
activate
end tell
tell application "System Events"
click menu item "メニューを消去" of menu "最近使った項目" of menu item "最近使った項目" of menu "Apple" of menu bar 1 of process "Finder"
end tell
195名称未設定:2008/02/03(日) 01:34:51 ID:/wDJiqO+0
>>194
使えなくなったってのはどう使えなくなったのか?
きっかけが何かあるんじゃない?
OS10.5で実行したらちゃんと最近使った項目は全削除出来たよ。
196名称未設定:2008/02/03(日) 02:31:16 ID:XiMWeNMG0
>>195
説明足らずでした
OS10.4.10で、こんなエラーが表示されます
「NSReceiverEvaluationScriptError:4」
特に何かアプリを入れたとか、何かを削除したとかは無いと思います たぶん、、
調べてみるとこんなページがありました
http://veadardiary.blog29.fc2.com/blog-entry-543.html
当該のアプリは入っていないのですが、他のアプリが悪さしてるんでしょうか?
197名称未設定:2008/02/03(日) 03:28:05 ID:wixDB7Lv0
まさかとは思うが、システム環境設定のユニバーサルアクセスのところの
“補助装置にアクセスできるようにする”のチェックがはずれていたりしないか?
198名称未設定:2008/02/03(日) 12:17:29 ID:mT7m/8wW0
>>197
チェックしてみたら、まさしくそれでした
助かりました 
ありがとうございます
199名称未設定:2008/02/05(火) 21:28:00 ID:bkb6G5hd0
AppleScriptから自分の環境のグローバルIPを知るのはどうすればいいのですか。
Mac OS X 10.4.11です。
200名称未設定:2008/02/05(火) 22:39:17 ID:iWlRhzBT0
これかな?

IPv4 address of (system info)
201名称未設定:2008/02/06(水) 02:24:34 ID:MF/4kPwX0
グローバルIPとは限らんけど、その辺は意味わかってるのかな>>199
202名称未設定:2008/02/06(水) 02:59:20 ID:1bh4jcpH0
>>200
残念ながらローカルIPでした。

>>201
意味わかってないかも。
WebにアクセスしたときにREMOTE_ADDRでみられるあれを知りたいのです。
203名称未設定:2008/02/06(水) 03:05:39 ID:MF/4kPwX0
>>202
ネットワークアダプタが1個だとIPは1つしかないぞ
それがローカルかグローバルかは環境による
両方持ってることなんてあり得ない

多分ネットにはルータ経由で繋いでるんでしょ
だとすると表示されてるリモートアドレスはプロバイダがルータに割り当てたアドレスだから、
AppleScriptでは取り様が無いんじゃないかなぁ
ルータの説明書でも見てくださいな
204名称未設定:2008/02/06(水) 03:24:30 ID:r9gNuwZ/0
>>202
do shell script "curl http://www.ip-adress.com/ | perl -ne 'print $1 if /My IP: ([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)/'"
205名称未設定:2008/02/06(水) 03:50:46 ID:MF/4kPwX0
>>204
内側から取りにくけりゃ外側から取ればいいとこまでは考えていたが、
こんな方法があったとは…

curlもip-adress.comも知らなかったわ
206名称未設定:2008/02/06(水) 04:41:34 ID:OFpD2CYS0
僕はルータの設定ページから
スクレイピングってのをやったことあるぞ。
207名称未設定:2008/02/06(水) 04:57:50 ID:1bh4jcpH0
ありがとうございました。そういう方法しかないんですね。
いわれてみるとたしかにそんな気がします。

#!/usr/local/bin/perl4

print "Content-type: text/html¥n¥n";
print "<HTML>¥n";
print "<HEAD><TITLE>address</TITLE></HEAD>¥n";
print "<BODY>¥n";
print $ENV{'REMOTE_ADDR'};
print "¥n</BODY>¥n";
print "</HTML>¥n";

こんなCGIをつくっておいて
do shell script "curl -s '" & checkURL & "' | grep '¥¥([0-9]¥¥{1,3¥¥}¥¥.¥¥)¥¥{3¥¥}'"
で、拾うことにしました。

grepがエスケープだらけでわけわかんね
208名称未設定:2008/02/07(木) 06:06:02 ID:jDyPrUGu0
うちのはグローバルIPなので確認のしようがないんだけど
dotted decimal form of host of (("http://" & (host name of (system info))) as URL)
これじゃだめだよね...きっと
209208:2008/02/07(木) 09:39:35 ID:jDyPrUGu0
いろいろ調べているうちに、ひょっとしていけてるんじゃないかという気がしてきた。
210208:2008/02/07(木) 11:43:56 ID:jDyPrUGu0
すいません、だめだったようです。
211名称未設定:2008/02/07(木) 19:11:58 ID:sn+SQ1ai0
>>207
CGIはHTMLつくらなくてもいいんじゃないか?
212名称未設定:2008/02/08(金) 11:35:09 ID:h4NoFh0Y0
文字列の置き換えって、結局sedでやった方が楽のような。

ファイル名の置き換えをしようとしているんだけど。
>【鏡音リン初音ミク】夢みることり【オリジナル】‐ニコニコ動画(RC2).flv
<【鏡音リン初音ミク】夢みることり【オリジナル】.flv
こんな感じでやれそう。

tell application "Finder"
set theName to name of this_item
set theNewName to my RemoveIt(my GetNFC(theName))
(*
set name of this_item to theNewName
*)
end tell

to GetNFC(theItem)
set theScript to ("echo " & (quoted form of theItem) & "| iconv -f UTF-8-MAC -t UTF-8")
return (do shell script theScript)
end GetNFC
to RemoveIt(theItem)
set theScript to ("echo " & (quoted form of theItem) & "| sed -e 's/‐ニコニコ動画(RC2)//' -e 's/ニコニコ動画(RC2)‐//' ")
return (do shell script theScript)
end RemoveIt
213名称未設定:2008/02/08(金) 11:35:49 ID:h4NoFh0Y0
これよりは楽だよね?

to RemoveIt(theItem)
set theCurrent to AppleScript's text item delimiters
set AppleScript's text item delimiters to ("‐" & "ニコニコ動画(RC2)")
set newItem to (text items of theItem)
set AppleScript's text item delimiters to theCurrent
set newItem to newItem as Unicode text
return newItem
endRemoveIt

もっと楽な方法あるかな。
214名称未設定:2008/02/08(金) 12:04:12 ID:8BLe8zJK0
ちょっとした置換はsedのほうが書くのは楽だけど、
大量に処理するときはdelimitersで書いたほうが処理速度がはるかに速い。
215名称未設定:2008/02/08(金) 22:26:43 ID:lh4IbSJr0
>>214
>大量に処理するときはdelimitersで書いたほうが処理速度がはるかに速い。
こういうのは「ノウハウ」という
216名称未設定:2008/02/08(金) 23:10:24 ID:YaBd+HUr0
Mac OS X 付属の Oxford American Dictionary が言うところの
"practical knowledge or skill" ってやつですね
217名称未設定:2008/02/09(土) 00:20:03 ID:ZJALACSM0
delimiterで区切ったときの項目数が多すぎるとクラッシュする。
テキストサーチでやると若干遅いが潜在的なバグを回避できる。
これもノウハウ。

218名称未設定:2008/02/09(土) 01:20:34 ID:8c3p0UXM0
スクリプティング機能追加に,表現形式という名のフォルダを置いておくと,
AppleScriptの動作が気持ち速くなる for OS9.これもノウハウ.なんちって.
219名称未設定:2008/02/15(金) 23:01:50 ID:VcvI2WhG0
初心者質問スレから来ました。

applescriptを使って環境設定をワンクリックで設定変更できるか教えて欲しい。
具体的にはディスプレイの回転の項目を設定したいんだが、すいませんが回答頼む
220名称未設定:2008/02/15(金) 23:19:48 ID:gLV++OtN0
tell applic(省略されました。続きを読むには言葉遣いを直すか中学校を卒業してください。
221名称未設定:2008/02/15(金) 23:24:01 ID:VcvI2WhG0
AppleScriptを使用して、環境設定→ディスプレイの中の回転の項目を一発で
設定できる方法を探しています。どなたかご存じの方がおられましたらご教授願います。

>>220
確かに変だし中途半端だよね。すいませんでした。
222名称未設定:2008/02/15(金) 23:41:19 ID:gLV++OtN0
223名称未設定:2008/02/15(金) 23:55:59 ID:VcvI2WhG0
>>222
ありがとうございました。
tell applicationでググってそれっぽいサイトみつけて途中までやったんだけど
すぐに挫折して泣きそうだった。本当に感謝してます
224名称未設定:2008/02/24(日) 18:40:42 ID:ws+hBWV50
保守ついでに.
OS9からOSXへの環境移行を始めているところなんですが,基本的なところで
迷ってます.TigerではないLeopardのAppleScriptって,イケてます?
225名称未設定:2008/02/24(日) 20:04:58 ID:oEGBiLxe0
>>224
do shell script が使えることがかなりイケてる!
226名称未設定:2008/02/24(日) 22:23:17 ID:ws+hBWV50
>>225
それは,Tigerでも使えるような…….やっぱり,Leopardにしておきます.
227名称未設定:2008/02/24(日) 23:07:06 ID:g63r+uIp0
>>224
文字コードがようやくUnicodeになったのが個人的にはイケてるな
228名称未設定:2008/02/24(日) 23:47:18 ID:ws+hBWV50
>>227
文字の扱いが楽になったっていうことですよね.それはいいかも.
229名称未設定:2008/02/24(日) 23:56:39 ID:w0z0aOsN0
ようやくバグの一つが解決したからといって
それで楽になったと言えるのかどうかorz
230名称未設定:2008/02/25(月) 00:10:08 ID:ZjnJnKMr0
>>229
本格的な開発をするわけでないので,多少のことなら目を
つむってって感じなのだけど.肩を落とすほど致命的なバグ?
231名称未設定:2008/02/25(月) 02:02:53 ID:4eCpQ4Pi0
232名称未設定:2008/02/25(月) 05:32:03 ID:0xO5hGXC0
10.5.2でもlengthがNFD:NormalizationForm Dに未対応。
困ってるひと他にもいたらフィードバックしてくれ。
233名称未設定:2008/02/25(月) 06:05:07 ID:w92nhx6K0
どうせ聞き入れられないに一票w
234名称未設定:2008/02/25(月) 09:40:42 ID:yH7aXyxU0
>>232
set nfd to <<data utxt304B3099304D3099304F3099>> as Unicode text
length of nfd -- 3 on OSX 10.5.2
これじゃいかんの?
235名称未設定:2008/02/26(火) 00:00:00 ID:fORONKKs0
>>231
どの辺にそれが書いてあるのかわからないけど,レパにしちゃいます.
どっち使っても不具合があるというなら,新しい方にしようということで.

>>232
日本ユーザーからのフィードバックは少ないから,要望は常に後回しになってる
みたいなこと,どこかのブログで読んだことあります.同じこと何度もしつこく
フィードバックしないとダメみたいですね.
236名称未設定:2008/02/28(木) 01:27:06 ID:G1C0CAJl0
OSX10.5から文字列処理が全部Unicode化したのは良いんだけど、文字列比較は
sorting localeによって動作が違うね。
"た" is "タ"
sorting localeが日本語だとtrueが返るけど、それ以外だとfalseが返る。
237名称未設定:2008/02/28(木) 03:36:09 ID:lEqImwua0
true が返るのか・・・
238名称未設定:2008/02/28(木) 04:01:43 ID:a+IF9Sh30
AppleScriptって使えたらすごく便利だとは思うが
アプリケーションごとにどんな命令があるのかとかよく分からなくて
結局使えないって印象。
ここの人たちはどうやって勉強してるの?
239名称未設定:2008/02/28(木) 07:04:03 ID:jD7kJlja0
おいらにとってはshellscriptの方が
まさにそんな印象なんだが…
240名称未設定:2008/02/28(木) 13:28:29 ID:hSWm1N4N0
アップルストアとかで,講習会とかやってくれたらいいのにねー。有料でも行きたい。
241名称未設定:2008/02/28(木) 14:59:25 ID:sn/A/kuB0
>>238
>ここの人たちはどうやって勉強してるの?
オレも知りたい、ちゅうかやっぱり英語が堪能でないとダメ?
>>240
だね。
242名称未設定:2008/02/28(木) 15:39:33 ID:LAId1muE0
アプリケーションの用語説明を開いて適当に試してみるしかないんじゃない?
243名称未設定:2008/02/28(木) 19:17:12 ID:Ec6shymB0
辞書をみて文法に当てはめるだけだよな。
244名称未設定:2008/02/28(木) 20:11:00 ID:n5t/c3qw0
ターミナルとAppleScriptはどう違うの?
245名称未設定:2008/02/28(木) 21:00:54 ID:36ItuIwQ0
質問がおおざっぱすぎる。テレビとラジオは違うものです。
逆にどういう点を同じ、あるいは似ていると思うのかを言うと回答が返ってきやすいだろね。
246名称未設定:2008/02/28(木) 21:10:34 ID:lEqImwua0
このスレは優しい人が多いなあ
247名称未設定:2008/02/29(金) 00:37:02 ID:xwnBOCeK0
>>238
本やサイトを最初から読んで……というやり方だと,挫折しやすいかも.

>>241
英語堪能じゃない自分でも,ちょっとしたもの作ってます.慣れです慣れ.

と,初心者の自分が偉そうに書いてみました.
248名称未設定:2008/02/29(金) 00:54:43 ID:LmoyoSs00
まだ日が浅くてUI Elements主体でやってる俺だが、
適当にtellりつつpropertiesやらUI Elementsやらactionsやら叩いてるだけで、
それなりに何とかなってるな
249名称未設定:2008/02/29(金) 05:21:29 ID:735ElfWC0
GUI Scriptingはこれ使うと楽だよ。それなりの値段だけど。
http://prefabsoftware.com/uibrowser/

特定のGUI部品までのパスが一発で取得できる。
JavaScriptやる人ならFirebugみたいって言うと分かるかな。
ま、ちょっと違うけど。

あとScript Debuggerというのも超絶便利。高いけど。
アプリケーションのオブジェクトモデルやプロパティが丸見え。
現在の変数の値とか丸見え。
http://www.latenightsw.com/sd4/

どっちも初心者にこそ使ってもらいたい。
ブレークポイント設定して、そこからステップ実行、変数の中身の
遷移を観察するという手段を知ると、いろんな疑問が氷解すると思うよ。

「高いから自分にはもったいない」じゃなくて、その逆ね。

この二つがあると無いとではAppleScriptの世界は180度違うといえる。
250名称未設定:2008/02/29(金) 12:28:49 ID:MqA3O8Rr0
OS9でコンパイルされたTipをOSXで使えるようになりませんか。
ソースはありません。
251名称未設定:2008/02/29(金) 15:42:49 ID:anwHyA/U0
>>249
お金がなくて買えないけど
すごく良さそうですね
こんな方法もあるんだなー
252名称未設定:2008/02/29(金) 15:48:51 ID:mZKfY1Dh0
例えばOSを再インストールしたとき、
システム環境設定やら
Finder環境設定, Finder表示オプションやらを
いちいちいつもの設定にしてやるんだけれど
そういうのをAppleScriptでやってもらえないかと思ったとき
どうやって調べて実装したら良いの?

~/Libraryをコピーする、とか
OSインストール後に初期設定だけ済ませた状態の
HDDのディスクイメージを取っておいてDiskUtilityから復元、とか
そういうので対応可能かもしれないけれど
AppleScriptでやってみたいと思ったら
実現するための情報収集はどうするのかな、と。
253名称未設定:2008/02/29(金) 22:37:26 ID:zVY9Pl4V0
>>252
1. 手元にある AppleScript 関係の本を調べる
2. アップルのサイト(開発者向けサイトを含めて)の中を見て回ったり、その中で検索したりする
3. AppleScript の専門サイトの中を見て回ったり、その中で検索したりする
4. google で "AppleScript" "System Preferences" "Finder" あるいは設定名
("Dock", "Appearance" etc.)などをキーワードに検索する
5. 「システム環境設定」「Finder」それぞれの用語辞書を開いて見てみる

俺が思いつくのはこんなもんかなあ…。
実際やってみると例えばこんなのが見つかる。

AppleScript Tutorial on Scripting System Preferences
ttp://macscripter.net/articles/468_0_10_0_C/
AppleScript: Scriptable System Preferences
ttp://www.apple.com/applescript/features/system-prefs.html
Re: Setting Finder Preferences and Folder Views
ttp://lists.apple.com/archives/Applescript-users/2002/Feb/msg00944.html
254名称未設定:2008/02/29(金) 23:31:44 ID:LmoyoSs00
>>248
PreFabはデモ版使ったけどなんか合わなかったんだよね
Script Debuggerは良さそうなんだがちょっと躊躇してる

>>252
俺の場合は設定変更前と変更後の両方で、
defaults readを実行したり各種Preferencesフォルダのファイル更新状況を調べたりしてる
後は同じ事をdefaults writeで実行すればいい

あるいはGUI Scripting使うかFull keyboard accessをAll controlにするなりして、
単純に自動操作させたりとか
255名称未設定:2008/03/01(土) 00:24:01 ID:v+1mpmUh0
>>249
うはっwこんなの欲しかった。Thx!
256名称未設定:2008/03/01(土) 00:59:22 ID:VBl/0pmg0
>>253-254
貴重な情報、本当にありがとうございました!
月曜以降になってしまいますが、
ひとつひとつ実践してみます。

257名称未設定:2008/03/01(土) 01:20:27 ID:xRCC+LT+0
>>254
うっわ、自分にレスしてた…
言うまでも無いが、>>248じゃなくて>>249
258241:2008/03/01(土) 14:21:54 ID:KKQdwl3O0
>>247
>慣れです慣れ
とは言いつつ、英語が多いからなぁ…。(´・ω・`)
259名称未設定:2008/03/02(日) 01:35:40 ID:Icr0OYjb0
>>258
わからない時は,その都度翻訳サイトを利用してますよ.

意味もそうだけど,単語の発音がわからないのも困る.
脳内ではかなりいい加減な『いいまつがい』してましたし.
trueはすぐにわかったけど,falseなんて去年まで変な読み方してた.
260名称未設定:2008/03/02(日) 02:57:58 ID:rkhQZIZg0
ふぁるす乙
261名称未設定:2008/03/02(日) 03:18:15 ID:h1vJwPf+0
英単語の発音を調べるなら、その単語を選択した状態にして
メニュー → アプリ名 → サービス → スピーチ → テキスト読み上げを開始
とすると簡単です。

スレ違いスマソ...
262名称未設定:2008/03/02(日) 22:38:04 ID:Cv7+fARa0
>>261
今やってみてちょっと感動.こんなところでOSXのありがたみを実感.ありがとう.
ところで,何度やってもフォースにしか聞こえない.ジェダイの騎士になった気分だ.

>>253
> 1. 手元にある AppleScript 関係の本を調べる
元々Macのプログラム本は少ないけど,AppleScript関連はさらに少ないですよね.
263名称未設定:2008/03/03(月) 00:55:18 ID:5CQXfIjw0
OSXのありがたみて、あんた
スピーチなんてずーーーーと昔から有りますがなw
264名称未設定:2008/03/03(月) 01:15:10 ID:x3AyCSfX0
>>263
確かに.ただ昔は,別途インストールしなきゃダメだったじゃないですか.
そういう意味でわずらわしくないと.なにせ時代に取り残された9組だったので,
無線LANのありがたみとか,AppleScriptの開発環境の良さとか,今になって
やっと実感できてるわけです.あ,スレ違いなので,この辺で.
265名称未設定:2008/03/03(月) 01:24:14 ID:Yaf6GNz10
say "false"
266名称未設定:2008/03/03(月) 02:37:55 ID:mXAHJizs0
(*´д`*) ふぁるす
267名称未設定:2008/03/03(月) 13:13:30 ID:S4/8ofiI0
phallus (;´Д`)ハァハァ
268名称未設定:2008/03/03(月) 17:25:46 ID:1VTfV7tL0
say -v Victoria "vals!" & say -v Alex "vals!"
眼が、眼がぁ〜
269名称未設定:2008/03/03(月) 18:31:23 ID:ZBFQQZHZ0
Alexさんがいない。
270名称未設定:2008/03/03(月) 23:30:07 ID:QFpsBzSk0
>>268
それ,AppleScriptじゃない。
271名称未設定:2008/03/04(火) 17:09:23 ID:F0w0ZcP+0
初心者の質問で申し訳ありません。
MacOSX上にて、
AppleScriptでアプリケーションAdobe Illustrator CS3の
ファイル>スクリプト>xxxxx.jsxを実行する記述を、
どなたか教えていただけないでしょうか。
スレ違いでしたら、お許しください。
272名称未設定:2008/03/04(火) 21:07:48 ID:KwpYQg180
>>271
GUIスクリプト使うか
目的のスクリプトの中身を読み込んでdo Javascriptで実行くらいしか思いつかないなぁ。
デフォルトで入ってたjsxを読み込んでみたけど頭3バイトにへんなものが。
あとスクリプト内の2バイト文字が文字化けする。

set JS_path to "Macintosh HD:Applications:Adobe Illustrator CS3:Presets.localized:Scripts.localized:ドキュメントを Flash として書き出し.jsx"
set FileHandler to open for access JS_path
try
set JS to read FileHandler from 4
on error
close FileHandler
end try
close FileHandler
tell application "Adobe Illustrator"
do javascript JS
end tell

もっといいやり方がありそうな気がする。
273名称未設定:2008/03/05(水) 01:33:56 ID:7Ov2bkOw0
>>>272
271です。
書き込み、ありがとうございます。
さっそく、スクリプト内の2バイト文字を1バイト編集して、
いろいろサンプルをつくりで実験してみます。
272さん、感謝いたします。
ありがとうございました。
早めに、結果報告できればと思います。
274名称未設定:2008/03/05(水) 07:27:02 ID:smF94b8f0
>>273
Macで直接作ったJavascriptだったらもしかしたらfrom 4とかいらないかも
下から2行目のdo javascript JSの部分を実行しないようにしておいて最後に

JS

の1行足して実行→結果を見て検証してみて
275名称未設定:2008/03/05(水) 12:11:47 ID:vN2SMSvg0
do javascript内でincludeすればいんじゃね?

#include "../include/lib.jsxinc"

#includepath "include;../include"
#include "file.jsxinc"

CS2はちょっと違って、

@include "file.jsxinc"

だった。

Modular Programming Supportの章参照
http://www.adobe.com/devnet/bridge/pdfs/javascript_tools_guide_cs3.pdf
276名称未設定:2008/03/05(水) 15:49:04 ID:z396smgw0
>>272
>>275
271です。
272さん、275さん
ありがとうございます。
初心者で申し訳ありません。
272さん記述を検証で、実行できました。
ありがとうございました。
275さん、Modular Programming Supportの章参照してみましたが、
初心者でまだ、参照できる身分でないようです。
大変申し訳ありません、
272さん記述の275さん補足の全記述を
書き込んでいただけないでしょうか?
DTP製作担当で勉強中です
宜しくお願い申しします。
277255:2008/03/06(木) 00:59:40 ID:WhsBlfAF0
>>249
AppleScript、ほぼ初めて位な勢いで組んでみたけど、
ScriptDebuggerのおかげで、楽にできた。Thx
使えるメソッドとかプロパティとかが一覧されるってだけで、
やっぱり相当変わる。

ちなみにFinderの前面windowで選択されているフォルダから、
ユーザからの入力された文字列を含むファイルを一括選択っていう
Path FinderのSelectみたいなヤツを組んでみた。
アプリ形式で起動に3秒かかるのが難点。遅い…
278名称未設定:2008/03/06(木) 02:26:20 ID:l7O1uaZT0
>>276 仕事でそれでお金もうけるんでしょ?もしくは会社の立場?
死ぬほどググるか、お金払って講習行くべきじゃないかな?甘えるなと言いたいけど。私も甘いな。
tell application "Adobe Illustrator"
  activate
  do javascript file "MyHD:Applications:Adobe Illustrator CS3:Presets.localized: 改行なし
  Scripts.localized:ドキュメントを Flash として書き出し.jsx"
end tell

ARIAがなかったら起きてこなかったよ?週一度の楽しみ。
279名称未設定:2008/03/06(木) 02:33:31 ID:MwGAoFLw0
>>272
Illustrator CS3 の do javascript は
do javascript anything : javascript code or file to execute
ってかいてるからファイルを直接指定すれば良いんでないの?
パスを(なんらかの方法で)取得して as alias すれば、
そのまま do javascript で動いたけど? おれなんか勘違いしてる?
280名称未設定:2008/03/06(木) 02:34:50 ID:MwGAoFLw0
あやや
281名称未設定:2008/03/06(木) 02:46:01 ID:l7O1uaZT0
>>280
>>277 書いたのさらしてみて欲しい。起動で3秒?
282名称未設定:2008/03/06(木) 05:23:19 ID:6sDKu0iM0
>>277
定期的にScriptDebuggerをすすめているんだけど、
実際に試したのはあなたが初めてだね。
Command+Shift+DでDebugモードに切り替えて、
ステップ実行してみると真価がわかるよ。

行頭をマウスでクリックしてブレークポイントを仕掛けて、
この状態で保存すると、ドロップレットのようなスクリプトも
デバッガでデバッグできて便利。

Explorer機能も素晴らしく便利。
ターゲットアプリの現在のすべてのプロパティの一覧が階層表示される機能。
重要なのはリロードをかけたときに、
変化があったプロパティが赤く表示されること。
Adobeアプリみたいにプロパティが無数にあって、
どこのプロパティをいじれば目的が達成できるか分からないときに、
アプリの操作の前後でExplorerをリロードしてプロパティの変化を見ると、
一目瞭然でとても楽。

用語辞書の全文検索も便利だし、ほんとに素晴らしいですよ。
283名称未設定:2008/03/06(木) 12:09:01 ID:i0bfXiAo0
>>278
>>279
271です。
278さん、279さん
ありがとうございます。
おかげさまで検証できました。
複雑に考えすぎました。
これを機に少しづつ記述出来るように
がんばります。
284名称未設定:2008/03/07(金) 12:40:03 ID:a4mQZK3X0
IllustratorCS3の質問です。
Illustrator上で使用されている特定色を、スクリプト中で指定した色に置換しようとしています。

tell application "Adobe Illustrator"
tell document 1
set x to count path items
repeat with y from 1 to x
tell path item y
if class of fill color is {class:CMYK color info, cyan:100.0, magenta:0.0, yellow:0.0, black:0.0} then
set fill color to {class:CMYK color info, cyan:100.0, magenta:100.0, yellow:0.0, black:0.0}
end if
if fill color is {class:CMYK color info, cyan:0.0, magenta:100.0, yellow:0.0, black:0.0} then
set fill color to {class:CMYK color info, cyan:100.0, magenta:100.0, yellow:0.0, black:0.0}
end if
if fill color is {class:CMYK color info, cyan:0.0, magenta:0.0, yellow:100.0, black:0.0} then
set fill color to {class:CMYK color info, cyan:100.0, magenta:100.0, yellow:0.0, black:0.0}
end if
if fill color is {class:CMYK color info, cyan:0.0, magenta:0.0, yellow:0.0, black:100.0} then
set fill color to {class:CMYK color info, cyan:100.0, magenta:100.0, yellow:0.0, black:0.0}
end if
end tell
end repeat
end tell
end tell

と、濃度100%のpath itemであれば置き換わるのですが、ここで
if class of fill color is {class:CMYK color info, cyan:10.55, magenta:20.12, yellow:13.2, black50.1} then
のように、濃度指定に小数点が加わったpath itemが置き換わりません。
試しに get fill color of selection で色情報 を取得した結果、
{class:CMYK color info, cyan:10.549998283386, magenta:20.120000839233, yellow:13.199996948242, black:50.09999871254}
をそのまま置換対象に指定してもダメでした。
色の指定方法になにかコツでもあるのでしょうか? というか、ライブカラーがAppleScriptから使えれば・・・
285名称未設定:2008/03/07(金) 23:33:17 ID:kFs/a5y/0
おかしい……

tell application "Safari" to activate
tell application "System Events"
tell process "Safari"
click menu item "新規タブ" of menu "ファイル" of menu bar 1
end tell
end tell

これが動かない。
"NSReceiverEvaluationScriptError: 4"というのが出てしまう。
同様に以前使えていたこの手のスクリプトが
全部使えなくなってる。。。

Safariを英語で起動して

tell application "Safari" to activate
tell application "System Events"
tell process "Safari"
click menu item "New Tab" of menu "File" of menu bar 1
end tell
end tell

これなら動くんだが。
同じ症状の人いる?
OSは10.4.11っす。
286名称未設定:2008/03/08(土) 01:06:37 ID:p++qvKaQ0
普通に動くぞ。

"新規タブ" as Unicode text

とかやってみるとか?

tell application "Safari"
make new document
tell window 1
make new tab
set myTab to make new tab
set current tab to myTab
end tell
end tell
287名称未設定:2008/03/08(土) 01:24:40 ID:vJRA+jH80
>>286
不思議だ……
今やったらどれも普通に動いた……

あと、Safariでタブを開くのは
実験しやすい例として挙げただけです。
お騒がせしてすんません。
288名称未設定:2008/03/08(土) 01:32:42 ID:PPuno8f60
システムイベントは時として操作不能になったりするよね。不安定だ。
289名称未設定:2008/03/08(土) 02:49:02 ID:+IQ8Meub0
> "NSReceiverEvaluationScriptError: 4"というのが出てしまう。
これって「補助装置を使用可能にする」のチェックを入れてない時に出るエラーと同じだよね
って事は何かの理由でSystem Eventsが死んじまってたのかな
290名称未設定:2008/03/08(土) 10:41:10 ID:vJRA+jH80
>>288
そうなんだ。。。
今まではそういうことなかったんで焦ってしまった。

>>289
完全に死んでたなら英語版も操作できないはずなんで、、、
直ったときも何か特別なことをしたわけじゃなく
いつの間にか直ってたって感じだし
原因わからん。。。
291名称未設定:2008/03/08(土) 14:05:49 ID:Q70RfTPM0
MacOSX_Adobe Illustrator CS3の
ドキュメント設定の単位をミリメートルに
変更したいのですが、
うまくいきません...

tell application "Adobe Illustrator"
tell document 1
set ruler units of settings to "millimeters"
end tell
end tell

どなたか正解を教えてください。
292名称未設定:2008/03/08(土) 14:53:31 ID:p8OLteBh0
>>285,289
"NSReceiverEvaluationScriptError: 4"
は叩こうしているオブジェクトが見つからないときに出るエラーだから
UI Scriptingがらみではやたら出てくる(もっとエラーを場合分けして欲しい)。

なんかでフォーカスが外れてたんじゃないかとも思うんだけど、activateしてますねえ。

293名称未設定:2008/03/08(土) 16:18:46 ID:7oCvTeF20
>>291
こんな感じじゃない。PhotoshopだとこれでOKなんだけど。

tell application "Adobe Illustrator CS3"
set ruler units of settings to mm units
end tell
294名称未設定:2008/03/08(土) 16:28:57 ID:euYHp1U50
>>291
document直下のプロパティだから

tell application "Adobe Illustrator"
tell document 1
set ruler units to "millimeters"
end tell
end tell

でいいと思うんだけど
ruler units (centimeters/inches/millimeters/picas/pixels/points/qs/unknown, r/o)
Illustratorの場合は読み込みのみだからできない
295名称未設定:2008/03/08(土) 17:13:09 ID:Q70RfTPM0
>>293
>>294
293さん、294さん、ありがとうございました。
すいません、両記述を検証してみたのですが、
ゴメンナサイ...うまくいきませんでした。
ポイント設定のドキュメントがいっぱいあったら、
あきらめて、ルーラー右クリックでコツコツ切り換えて
いくしかないんでしょうかネ...?
もうちょっと勉強します...。
ありがとうございました。
296名称未設定:2008/03/08(土) 18:59:10 ID:GobIqkI20
このスクリプトの使い方を教えて下さい。
スパースディスクイメージのサイズを内容の削除と共に縮小するようにできるらしいのですが。

Sparseimage Compactor
http://www.loukash.com/en/download/sub06.html
297294:2008/03/08(土) 22:36:23 ID:euYHp1U50
>>295
紛らわしい書き方してゴメン。
ruler unitsはr/o(リードオンリー)だからスクリプトで変更できないよ。
298名称未設定:2008/03/08(土) 22:58:55 ID:y8t7tq380
>>297
297さん、ありがとうございます。
javaでも変更出来ないんでしょうね。
picasとかpixelsとか結果を返されても...
諦めて、コツコツ切り換えて頑張ります。
ありがとうございました。
299名称未設定:2008/03/09(日) 00:59:45 ID:WzH6I10i0
>>296
「内容の削除と共に」縮小するんじゃなくて、
内容が削除済みで不要になった部分を縮めてくれるだけなのでは?
それはそれで便利だと思うけど。
300名称未設定:2008/03/11(火) 13:59:34 ID:QyaBA8JL0
OS 10.5使ってる方、Finderに関するスクリプトで、10.4で動いていたものが動かなくなったとか経験ありますか?
移行しようとしてるので何かご存知なら教えて頂きたいです。
301名称未設定:2008/03/11(火) 16:26:12 ID:p6G5fCin0
質問させてください。
「両両矢印」というスクリプトがwebに載っていたので
Leopardで使おうと思ったのですが、
実行すると「この """ の後に identifier を書くことはできません。」
という構文エラーが出てしまいます。
OS10.5では使えないのでしょうか???

tell application "Terminal" to do script with command "defaults write ¥"Apple Global Domain¥" AppleScrollBarVariant DoubleBoth"
302名称未設定:2008/03/11(火) 16:32:41 ID:MpthMO0W0
¥マークっつーかバックスラッシュがひっかかってると思うので
set backslash to ascii character 128
としておいて¥を変数backslashに置き換える。

10.4同士でも、昔G4で書いたのがMBに持っていったら、
こうなったりしたんだよなあ。
303名称未設定:2008/03/11(火) 17:02:34 ID:EbMNJQah0
AppleScript使ったことないけど、
\"を\\\"にしてみるとか。
304301:2008/03/11(火) 22:29:29 ID:soU3qy4e0
ありがとうございました。
¥記号をバックスラッシュに変えてみましたが
だめでした。

これ(↓)でもやってみましたが、
tell application "Terminal"
do script with command "defaults write ¥"Apple Global Domain¥" AppleScrollBarVariant DoubleBoth"
end tell

ターミナルに
Rep argument is not a dictionary
Defaults have not been changed.
と言われてしまい、実行できませんでした。
Leopardでは無理なのでしょうか…。
305名称未設定:2008/03/11(火) 22:58:56 ID:P3AcA+gQ0
tell application "Terminal"
set a to ASCII character 34
set b to "defaults write " & a & "Apple Global Domain" & a & " AppleScrollBarVariant DoubleBoth"

do script with command b

end tell

AppleScriptの勉強というわけでないなら、
Terminalを立ち上げて、以下をコピペしてreturnした方が早い。
defaults write "Apple Global Domain" AppleScrollBarVariant DoubleBoth
これで同じことになる。
306名称未設定:2008/03/11(火) 23:08:47 ID:n73G0PLR0
なんでdo shell scriptを使わないんだ。
307名称未設定:2008/03/12(水) 00:53:38 ID:/i3s+ldu0
初回起動時にユーザーに何らかの文字入力をもらって、
それを初期設定として保存。
以後、起動するたびにその初期設定を
自動で参照するというような動作を考えています。

ttp://www.kiwi-us.com/~mizusawa/penguin/html_hint/as_x/index.shtml#handles
を参考にScriptEditorで試してみたところ、
>--初期設定ファイルに保存する
>set contents of default entry thisKey of user defaults to thisContent
のdefault entryの部分で
「このidentifierの後にidentifierを書くことはできません」と表示されます。

>OS XのProject Builder/Xcodeで使うための
とあるところから、Xcodeを使用したAppleScriptApplicationのみ
サポートされた構文(ScriptEditorからは不可)ということなのでしょうか。
308301:2008/03/12(水) 03:07:27 ID:UnqQRjxv0
>>305
うおお! できましたあ!
ありがとうござます! もっと勉強します!
309名称未設定:2008/03/12(水) 09:40:45 ID:wGL+J+WJ0
>>307
property使うのじゃ駄目なの?

property userInput : ""

if userInput is "" then
activate
set userInput to text returned of (get display dialog "入力してくらさい" default answer userInput)
end if

log userInput
310名称未設定:2008/03/12(水) 13:37:58 ID:/gWa61+50
スクリプトエディタの環境設定→フォーマットの内容ってどこに保持されてるんでしょう?
com.apple.ScriptEditor2.plist ではないようですが・・・
311名称未設定:2008/03/12(水) 13:39:46 ID:/gWa61+50
com.apple.applescript.plist でした!死ね俺
312名称未設定:2008/03/12(水) 19:34:00 ID:UBYuJcgG0
>>307
そのサイトの最初に書いてある通り
「特に断わりがない限り、このページ内ではXcodeを使ったAppleScriptの開発のことです。」
ですね。そのあとは断りなしにOS XでのAppleScriptって書いてるから、拾い読みすると勘違いする。

で、Script Editorで作ってるならpropertyは従来通り有効です。
313名称未設定:2008/03/12(水) 19:34:07 ID:/gWa61+50
たびたびですいません。

OS 10.4.11(PowerPC)で作成したスクリプト(スクリプトまたはJapanese.lproj含むアプリケーションバンドル形式)を
OS 10.5.2(Intel)のスクリプトエディタで開くと「|」で囲っていた全角変数名、ハンドル名がすべて「||」になってしまっています。

一度10.4.11でテキストで書き出して、10.5.2で再ビルドするしか対応はないのでしょうか?
314名称未設定:2008/03/14(金) 17:38:00 ID:Z7/qqbMh0
こんなソフトを探しています Part 30より
画面の選択した部分をフローティングウィンドウのスティッキーズにするスクリプト

57 名前: 名称未設定 Mail: sage 投稿日: 2008/03/14(金) 13:49:25 ID: Z7/qqbMh0
>>41-42
昔作ったやつだwナツカシスw
てなわけで改良してみた。
do shell script "screencapture -s -i -t png -c"
tell application "Stickies"
activate
end tell
tell application "System Events"
try
set wflag to do shell script "defaults read com.apple.stickies ¥"WindowFlags¥""
on error
set wflag to "0”
end try
keystroke "n" using command down
keystroke "v" using command down
if wflag is "0" or wflag is "4" then
keystroke "f" using {command down, option down}
end if
end tell
315名称未設定:2008/03/14(金) 20:13:26 ID:Z7/qqbMh0
>>314訂正
set wflag to "0”←ここのダブルクオーテーション半角にしてください。
316名称未設定:2008/03/20(木) 04:42:41 ID:/25GQr6h0
OS10.4にてことえり環境設定の「入力方法の設定」(かな入力/ローマ字入力) を
ワンタッチで切り替える方法を探しています

最初にスクリプトエディタの記録ボタンでアクションをレコードする方法を試したんですが
これにはエディタが全く反応せず断念(そんなレベルなんです…w)

スレッドを立てるまでもない質問 Part75 で相談したところ
KotoeriPreferences.appを呼び出して GUI Scriptingで操作すれば出来るかも?
詳しくないので分からんからAppleスクリプトスレで可能かどうかだけでも聞いてみたら?
とアドバイスをもらい誘導されて来ました

上記の考え方でことえり環境設定の操作は出来そうでしょうか?
317名称未設定:2008/03/20(木) 06:11:48 ID:j06/ETj40
ターミナルで設定をいじる方法がわかればいいんだが
318名称未設定:2008/03/20(木) 09:53:34 ID:m9+aeXGCO
defaults write com.apple.kotoeri kana "1"
とやって書き換えてみたけど挙動が変わらないだけでなく
ことえり環境設定が落ちるようになった
319名称未設定:2008/03/20(木) 14:40:19 ID:Q6M2dbFY0
質問です。
on open(theItemsDropped)
display dialog
end open

この中のdisplay dialogでドロップされた項目を表示させたい場合、
どのように書いたらいいのでしょうか。

ちなみにスクリプトエディタを10.5.2(intel)で使ってます。
320名称未設定:2008/03/20(木) 16:39:24 ID:FqrBMRjR0
>>319
こんなのとか

on open (theItemsDropped)
set theItemsList to ""
repeat with anItem in theItemsDropped
set theItemsList to theItemsList & (anItem as Unicode text) & return
end repeat
display dialog theItemsList
end open
321319:2008/03/20(木) 16:44:29 ID:9RVw2Pgg0
>>320
ありがとうございます!
それです。助かりました。
322名称未設定:2008/03/20(木) 17:55:37 ID:udsnDrUC0
323名称未設定:2008/03/20(木) 18:26:30 ID:GraLyZIG0
>>322
いいね!
今まで各ページが検索で引っかかることはあったけどトップページが見つからんかった

次スレから>>1に含めておくといいんでないか
324名称未設定:2008/03/21(金) 02:32:25 ID:mPCf9W930
>>316
可能っちゃ可能

set startupdisk to (path to startup disk) as Unicode text
set kp to startupdisk & "System:Library:Components:Kotoeri.component:Contents:Support:KotoeriPreferences.app"
activate application kp

tell application "System Events"
tell process "KotoeriPreferences"
repeat while not (exists window 1)
end repeat
click radio button "入力操作" of tab group 1 of window 1
if (value of pop up button 3 of tab group 1 of window 1) is "ローマ字入力" then
click pop up button 3 of tab group 1 of window 1
click menu item "かな入力" of menu 1 of pop up button 3 of tab group 1 of window 1
else
click pop up button 3 of tab group 1 of window 1
click menu item "ローマ字入力" of menu 1 of pop up button 3 of tab group 1 of window 1
end if
delay 1
click button 1 of window 1
end tell
end tell
325名称未設定:2008/03/23(日) 07:07:57 ID:ILggNdiF0
亀すみません>>316です

>>324
おぉ、ありがとうございます!
で、早速コピペして走らせて見たんですが
ことえり環境設定が開いた時点で止まります…orz
何がイカンのでしょうか

>>317
それが出来ると一番スマートですよね
自分のレベルでは壁が厚いなー
326名称未設定:2008/03/23(日) 16:29:42 ID:VTNHLCsD0
ユニバーサルアクセスの「補助装置にアクセスできるようにする」に
チェックを入れると幸せになれるかもしれない
327名称未設定:2008/03/24(月) 10:07:56 ID:D6WqN9yt0
幸せになれました♪

>>324さん>>326さん
お世話になりました<(_ _)>

これを元に自分なりに研究してみたいと思います
どうもありがとうございました
328名称未設定:2008/03/30(日) 02:36:28 ID:eax93US40
テキストエディタで幾つかの同じ文字列の色を変えたい時はどうすればいいでしょうか・・・
329名称未設定:2008/03/30(日) 03:26:56 ID:Jt+V+9U30
>>328
あんまり細かいことを考えなければ

tell application "TextEdit"
set thewords to a reference to words of document 1
set cword to "文字列"
repeat with aword in thewords
if aword as Unicode text is cword then set color of aword to {65535, 0, 0}
end repeat
end tell
330名称未設定:2008/03/30(日) 03:35:25 ID:eax93US40
>>329
文字列を緑に変えたかったらどこをどうすれば<(_ _)>
331名称未設定:2008/03/30(日) 03:40:59 ID:Jt+V+9U30
{0, 65535, 0}にするのさ
332名称未設定:2008/03/30(日) 08:22:16 ID:X2hxBPpO0
[Redの値,Greenの値,Blueの値]ね
ユーティリティフォルダのDigital Color Materあたりを参考にすると良い
333名称未設定:2008/03/30(日) 09:27:49 ID:vx2yto+L0
set theColor to choose color
でカラーパレット出るよ。
334名称未設定:2008/04/01(火) 00:17:51 ID:DQunLESr0
>>329を全くの素人向けに翻訳


> tell application "TextEdit"
アプリケーション「テキストエディット」に命令するぜ!

> set thewords to a reference to words of document 1
文書1(手前の文書)の全ての単語1つずつへの参照を thewords と呼ぶぜ!

> set cword to "文字列"
「文字列」という文字列を cword と呼ぶぜ!

> repeat with aword in thewords
thewords の1個ずつ(=全単語1つずつ)を順番に aword と呼びつつ繰り返すぜ!

> if aword as Unicode text is cword then set color of aword to {65535, 0, 0}
もし aword が cword と同じだったら、 awordの色を {65535, 0, 0}(=赤)に変えるぜ!

> end repeat
ここまで繰り返すぜ!

> end tell
ここまで命令するぜ!


書いてから思ったけど>>330はこんな事しなくても理解してそうだな
まぁいいや
335名称未設定:2008/04/01(火) 08:50:06 ID:xBxx7MKs0
いえ、>>316な自分にはとても参考になりました
どうもありがトン<(_ _)>
336名称未設定:2008/04/01(火) 09:09:00 ID:NEMH3aND0
>> ID:DQunLESr0

すいません。これからもちょくちょくお願いします。ものすごく…良いです。
337316=335:2008/04/01(火) 14:29:26 ID:xBxx7MKs0
自分が言うのもなんだけど
ちょくちょくお願いするのは…ちょっと…甘え過ぎだと…思う
338名称未設定:2008/04/01(火) 23:59:54 ID:DQunLESr0
>>335-336
おや、意外に好評でびっくり
例えば>>334の対応関係をちゃんと理解できれば、

tell 〜
application 〜
set 〜 to 〜
a reference to 〜
words of 〜
document 1
repeat with 〜 in 〜
if 〜 then 〜
〜 is 〜
color of 〜
end repeat
end if

この辺の構文の意味はほぼ掴めるはず
説明してないのって 〜 as Unicode text ぐらい

暇だったらまたやってもいいけど、
人の書いたコードを読み解くのって上達の常套手段だから、
自分で書いてみるのもいいかもね

というかAppleScriptはかなり口語的な言語だから、
この手の変換を逆方向にやってあげればそれだけでコードが書けちゃう
339名称未設定:2008/04/02(水) 01:11:41 ID:T/2jhPJy0
>>338
if~から外れた時はどこに行くの?
340名称未設定:2008/04/02(水) 01:53:06 ID:u3Cz3dku0
>>339
then以降をやらずに次の行に進む、が正解
外れた時だけ何かやりたいなら

if 〜 then

(else if 〜 then)

else

end if

みたいに書く

>>1のリンク読めば大体の事は書いてるんだから、ちょっとは考えてくれよ
1から10まで解説する気はねーぞ、無駄だし
341名称未設定:2008/04/02(水) 03:02:50 ID:T/2jhPJy0
>1から10まで解説する気はねーぞ、無駄だし

了解。
しかし、あれだね。こういう、スクリプトとかプログラムとか何がきっかけで始めたの?
「無いから作る」って事だと思うんだけど、やり始めはやっぱり予備知識0から始めたんでしょ?
すっごいパワーだな。
若くなきゃ出来ないな。

342名称未設定:2008/04/02(水) 03:08:02 ID:T/2jhPJy0
あ、そうだ。
全く初めての人は>1のリンク先に有る

●AppleScript入門教室
http://homepage.mac.com/tuyano/AppleScriptTutor/index.html
がいいかも。

まだ読み始めですが。

このスレはちょっと僕にはハードルが高かったですね。ごめんなさい。
3年くらいROMってます。
343名称未設定:2008/04/02(水) 05:30:29 ID:DzpvqjWM0
>>341
40歳すぎてからプログラムというものをはじめた人も世の中にはいるから、
心配しないで歳を取っても良い。
344名称未設定:2008/04/02(水) 07:29:38 ID:HWmpAvdY0
年取ると覚えたことをすぐ忘れちゃうから大変
345名称未設定:2008/04/02(水) 12:00:14 ID:YHVQhl3w0
同じことで何回も感動できるようになるからお得だぞ
346名称未設定:2008/04/02(水) 12:01:11 ID:XuBhI1ra0
あるじゃーのんにはなたばをあげてください
347名称未設定:2008/04/02(水) 16:13:11 ID:JNcLA3m30
。・゚・(ノД`)・゚・。
348名称未設定:2008/04/02(水) 16:24:53 ID:LsIFwZ180
なんだこの流れw
349名称未設定:2008/04/02(水) 18:42:23 ID:CQpML/ZY0
あるじゃーのんのおはかにはなたばをあげてやてください

って、このセリフだけでうるうるしちゃうよ。
350名称未設定:2008/04/02(水) 19:22:18 ID:f69Dr7rS0
初心者です。
MacOSX、Adobe Illustrator CS3上、

tell application "Adobe Illustrator"
 tell document 1
set NewText to make new text frame at it with properties {contents:"さんぷる", kind:point text, position:{100, 800}}
 end tell
end tell

"さんぷる"の文字色をレジストレーションにしたいのですが、
又は、document 1上既存の "段落スタイル" を適用なんて
出来ちゃうんでしょうか?
どなたか教えていただけないでしょうか。

351名称未設定:2008/04/02(水) 23:54:06 ID:I5wY8xUw0
tell application "Adobe Illustrator"
tell document 1
apply paragraph style paragraph style "段落スタイル1" to paragraph 1 of selection with clearing overrides
end tell
end tell

cf. apply, apply paragraph style, apply character style
352名称未設定:2008/04/03(木) 00:24:37 ID:bPnkEHSU0
>>341
俺(>>340)は仕事上の必要に迫られて憶えた、というか勉強中
初めて触れてからまだ1年経ってないよ

元々Cの知識はあったけどかなり忘れてて、
今はそっちもリハビリ中だわ
353名称未設定:2008/04/03(木) 01:07:02 ID:+8uTLOgL0
>>341
若くないけど自分もAppleScriptに挑戦してます.勉強のために作ったもの,
自分が欲しくて作るもの,職場の要望で作ったもの,の三つあります.

寝食忘れて作ることもしょちゅう.
問題が解決できず,ほったらかしにすることもしょっちゅう.
354名称未設定:2008/04/03(木) 01:41:04 ID:j3JxyX2k0
AppleScriptは変なバッドノウハウがたくさんだから、
別なメジャー言語もやっといた方がいいよ
355名称未設定:2008/04/03(木) 12:31:08 ID:3GKPKBKx0
>>351
351さん、ありがとうございました。
記述を参考に色々やってみましたが、
うまくいきませんでした。
コンパイルをクリックに疲れました。
あきらめます。
356名称未設定:2008/04/03(木) 12:33:52 ID:59ReCl7u0
ちなみにenterキーでコンパイルできる
357名称未設定:2008/04/03(木) 14:27:10 ID:3GKPKBKx0
ありがとうございます。
最近は、祈る気持ちをこめて、
クリックしてます。涙...
358名称未設定:2008/04/03(木) 14:43:53 ID:j3JxyX2k0
いろいろって何をどうしてどうなったんだよ

tell application "Adobe Illustrator"
tell document 1
set NewText to make new text frame at it with properties {contents:"さんぷる", kind:point text, position:{100, 800}}
apply paragraph style paragraph style "標準段落スタイル" to paragraph 1 of NewText with clearing overrides
end tell
end tell

参考: apply, apply paragraph style, apply character style
359名称未設定:2008/04/03(木) 15:42:33 ID:3GKPKBKx0
>>351
>>356
>>358
ありがとうございました。
正常に記述検証出来ると、
感動してます!涙...
selection→NewText なんですね...
感謝いたします。

360名称未設定:2008/04/05(土) 14:30:41 ID:OLipY2fZ0
基本的な事だと思うんですが、お付き合いください。
クイックタイムにmidiファイルを演奏させるにはどうすれば良いのでしょうか。

tell application "QuickTime Player" to play document "/music.mid"

なんてやってるんですけど実行エラーになってしまいます。
361名称未設定:2008/04/05(土) 16:04:55 ID:ODfHKQAD0
>>360
tell application "QuickTime Player"
open alias "music.mid"
play document 1
end tell

alias〜〜の書き方がわからなかったら
open (choose file)
362名称未設定:2008/04/05(土) 17:43:30 ID:OLipY2fZ0
オープンしてから演奏、ですか。
ありがとうございました。

363名称未設定:2008/04/06(日) 08:53:55 ID:akPUX5vz0
質問です。
あるjpgファイルがディスクに保存してあり、
これをitunesで管理しているあるトラックのartworkにする、
というようなapplescriptは可能でしょうか?
364名称未設定:2008/04/06(日) 09:01:00 ID:akPUX5vz0
自己レス 可能らしい事は
ttp://clipmarks.com/clipmark/CFF4703C-F2DE-44FE-8711-4E043BCEF85D/
で確認。
これから実装をがんばってみます。
できたら貼るかも。
365名称未設定:2008/04/09(水) 23:36:29 ID:WXsfa0K30
OS 10.5用
ダウンロードしたファイルを初めて開くときのセキュリティ警告属性をなくすフォルダアクションスクリプト

on adding folder items to action_folder after receiving action_items
repeat with an_item in action_items
tell application "System Events"
set item_name to (display name of an_item)
set item_path to (POSIX path of an_item)
end tell
set attr_list to (do shell script "xattr -l '" & item_path & "'")
if (attr_list as string) contains "com.apple.quarantine" then
do shell script "xattr -d 'com.apple.quarantine' '" & item_path & "'"
--一応通知はしておく
display alert "ファイル「" & item_name & "」のダウンロードファイル属性を除去しました" message "開く時は注意して下さい" buttons {"OK"} default button 1 as warning
end if
end repeat
end adding folder items to
366名称未設定:2008/04/10(木) 03:03:57 ID:xAg86ny70
非建設的なことを言おうとしたけどやめた
367名称未設定:2008/04/10(木) 05:03:45 ID:RVCLwuDm0
・・・警告をなくす警告を出したら意味ないんじゃ。
368名称未設定:2008/04/11(金) 20:36:43 ID:G5tvyV890
言いやがったッ!
369名称未設定:2008/04/11(金) 20:45:15 ID:wFjrf0Vs0
giving up after 1とかすればいいじゃない
370名称未設定:2008/04/12(土) 14:32:17 ID:NbIkce3H0
しかし本当に文字コード回りは厄介だな。
どうにも理解できん。10.5では動くのに。
10.4ではutf8を引数でosascriptに渡す、色々をiconvで色々に変換する、
utf16テキストファイルを作ってそれを読み込ませる、
等試したが、いまいち動かん。
しかし、他の言語(つってもrubyしか知らない。しかもへっぽこ)で直接叩くスキルもなし
やれやれ。
だいたいunicodeって理念は一つのコードでムニャムニャ…
ここは愚痴は禁止スレだっけ?まあそんなこんなで
371名称未設定:2008/04/12(土) 15:18:15 ID:Gaowh2q40
>>370
10.5 は知らないけど、10.4 での文字リテラルの文字コードは言語環境で決定される primary encoding だけです。日本語環境の場合はMacJapanese(だいたい Shift-JIS)。

だから、osascript に渡せる文字列の encoding は Shift-JIS だけです。
意地でも UTF-8 を渡したい場合は、AppleScript の中で、AppleScript が Shift-JIS だと勘違いしている文字列を UTF-8 の文字列に型変換してやる必要がある。

AppleScript での強制的型変換は、AppleEventData.osax を使うとできます。
http://www.occn.zaq.ne.jp/ski/lib/indexj.htm

ちなみに、利用例です。
http://homepage.mac.com/tkurita/scriptfactory/Softwares/TheOtherScripts/SmartTitle/index.html
372名称未設定:2008/04/13(日) 07:03:02 ID:CGeeJTvy0
>>371 愚痴に対してサジェスチョンをしていただいてありがとうございます。
ご意見、リファレンスを参考にもう少し頑張ります。
373名称未設定:2008/04/13(日) 10:25:42 ID:8H0MbBL60
テキストエディタなどで「パ」と打ってデリートを押すと「パ」がいっぺんに消える。
SafariやFinderでは「゚」が消える。
この違いってなんですか?
374名称未設定:2008/04/13(日) 17:51:12 ID:jZY1/eg00
ひとつは、UnicodeのNFCとNFDの違い。
+プログラマがいい加減に処理してるかきちんと処理してるかの違い。

だと思う。
375名称未設定:2008/04/13(日) 18:03:54 ID:yD1MBJ6n0
376名称未設定:2008/04/13(日) 21:59:21 ID:l0eokO4n0
どっちの処理がきちんとしてるんだろう。
377名称未設定:2008/04/14(月) 12:20:43 ID:WKz0wy9i0
DigitalTV Recorderという録画ソフトが終了したら
スリープするというスクリプトを作成したいのですが
以下のようなイメージです。
初スクリプトですが、指導、お願いします。

if
tell application "DigitalTV Recorder"
quit
tell application "Finder"
  sleep
end tell
end if
end tell
378名称未設定:2008/04/14(月) 13:49:07 ID:GkY4BOpw0
property isRunning : false
set an to "DigitalTV Recorder"
set interval to 10

on idle
if (isRunning and (not my findProcess(an))) then
set isRunning to false
tell application "System Events"
sleep
end tell
end if
if (my findProcess(an)) then
set isRunning to true
end if
return interval
end idle

on findProcess(pname)
tell application "System Events" to return exists (every process whose name is pname)
end findProcess
379名称未設定:2008/04/14(月) 15:47:04 ID:1uyWa7MM0
OS9の頃使ってたスクリプトがスタンドアローン形式なんだけど
10.5.2で再コンパイルしたら書類形式で、なんかいちいちスクリプトエディタが立ち上がるんだけど
スタンドアローン形式にできないの?
380377:2008/04/15(火) 00:18:15 ID:sH3ts+il0
>>378
ありがとうございます。構文、勉強になります。
環境は10.4.11です。すいません、書き忘れてました。

質問です。
このスクリプトを使用するタイミングは
予め対象になるアプリケーションを立ち上げて
それからスクリプトを実行、という順序でしょうか?

スクリプトエディタのライブラリに登録できないアプリは
AppleScriptは実行できないのでしょうか?

対象のアプリケーションをmiにして
上記の順番で実行しましたが、10分たってもスリープしません。
…根本的に使い方間違っているのかなorz

381名称未設定:2008/04/15(火) 01:11:37 ID:BSJoXtIF0
>>379
OSXからのユーザなんでスタンドアローンとやらがピンと来ないのだが、
実行形式にしたいだけなら「名前を付けて保存」でアプリケーションか
アプリケーションバンドルを選べばいいのではないかと
382名称未設定:2008/04/15(火) 01:22:42 ID:BSJoXtIF0
>>380
スクリプトを保存するときに「実行後、自動的に終了しない」にチェックを入れて、
アプリケーションかアプリケーションバンドル形式で保存

んで対象アプリの立ち上げ前でも後でもいいので、
スクリプトをアプリケーションとして起動

10秒ごとに"DigitalTV Recorder"が起動してるかをチェックして、
起動を確認した後に終了されてればスリープって感じと思われる
383名称未設定:2008/04/15(火) 01:39:07 ID:0eGILr3y0
>>377 >378さんでも、>382さんでもなくて、ただの横です。ただの朝帰り、酔っ払い、お邪魔虫です。
何をしたら?って書いたのはだれ?
スタンドアロンのアプリケーションを作るのだけなくて、何らかのアプリケーションのイベントを取得するって言うのがアップルスクリプトの醍醐味。
それやりたかったんでしょ?対象アプリ立ち上げて、まってるだけじゃなにも起きないよ?miを終了してみな?
あと、そのソフトがアップルスクリプト対応じゃなかったら、もち、無理だし。>380 を読むとそれかな?

やりたいことから作り始めるのが、もちろんだよ。でも、少しくらいチュートリアル的なことやってみるべきじゃないんかな?
ネットにサンプルいっぱいあるんだし。一行プログラムのひとつでも書いてみたら?うー、釣られたのかな?かな?でも、レスあるし。

質問少ないし、ま、週一くらいしか見に来ないけど。で、答えたいなっておもっても、めちゃ洗練されたすごい答えする人いっぱい。で、それ見て感動してばっか。
でもって、自分では発表するほどのことはかけない。うーーーん。愚痴でもいいから、たまにはカキコしたかっただけでした。日記でした。お休みなさいませ。
384名称未設定:2008/04/15(火) 01:48:40 ID:Eun9mVB70
飲み過ぎなのは分かった
385名称未設定:2008/04/15(火) 03:31:46 ID:BSJoXtIF0
ありゃ、
読み飛ばしちゃってたけど

>>対象のアプリケーションをmiにして
この辺意味わからんな
System Eventsの綴りでも間違ってる?

あといつもの
>>197>>326
この辺りもやってなさそうな気が
386名称未設定:2008/04/15(火) 11:26:15 ID:xQIqQRNs0
>>381
アプリケーションバンドルで上手くいった
ありがとう
387377:2008/04/15(火) 15:43:03 ID:sH3ts+il0
>>382
保存方法がわかっていませんでした。
ありがとうです。
変数anが定義されていません、というアラートが出てしまいます。


>>383,385
ぐだぐだですいません。SAMPLEいじりを始めたばっかりです。

miはAppleScriptに対応しているテキストエディタのことです。
"DigitalTV Recorder"はAppleScriptに対応してないかもしれないので
動作を確認しようと思って。
わかりにくい書き方ですいませんorz

ユニバーサルアクセスはチェックはいってます。

お時間ある方、よろしくお願い致します。
388378:2008/04/15(火) 16:14:39 ID:kvGsh2oo0
コンパイルしただけで動かしてなかった。
変数のスコープの問題。

property isRunning : false
set an to "DigitalTV Recorder"
set interval to 10

on idle
if (isRunning and (not my findProcess(an of me))) then
set isRunning to false
tell application "System Events"
sleep
end tell
end if
if (my findProcess(an of me)) then
set isRunning to true
end if
return interval of me
end idle

on findProcess(pname)
tell application "System Events" to return exists (every process whose name is pname)
end findProcess
389名称未設定:2008/04/15(火) 23:00:19 ID:BSJoXtIF0
コンパイルすらできない状態でレスしてたり

>>386
合ってたか
それは何より

>>387
"DigitalTV Recorder"とやらの代わりに"mi"で試してみたって事ね、理解した

ちなみに>>378>>388は別にAppleScriptに対応していなくても、
tell application "System Events" to processes
でプロセスが引っ掛かるアプリならみんな使えると思うよ
例えばプレビューとか

>>388
propertyと暗黙のrunがくっついてるとわかりにくいと思うのだが、
anとintervalはidleに入れるかproperty使った方が良くない?
390名称未設定:2008/04/16(水) 00:55:12 ID:iIK5ElI30
目的を果たした377はもう居ないんだから
どうでもいいよ
391名称未設定:2008/04/16(水) 01:43:19 ID:wACX2fz10
ここは質問と発表のスレだから、話題提供した人がいなくなっても
興味のある人が話し合うのは有意義じゃないか。
392名称未設定:2008/04/16(水) 08:24:50 ID:b3lNUUL60
まあまてよ。
393377:2008/04/16(水) 09:52:46 ID:NUZ2klBX0
>>390
おはようございます。います。
時間のずれは許してください。
AppleScriptリファレンス探しが難しいです。
394名称未設定:2008/04/16(水) 17:06:10 ID:0GJp/Ns10
DigitalTV Recorderには「予約録画終了時にPCを休止させる」機能が
あるみたいだけど、わざわざスクリプトにしてるのは例えなの?
395名称未設定:2008/04/16(水) 23:39:24 ID:foMx2NsZ0
>>377さん。
実を言うとわたしもたぶんそれをもってるんよ。週1時間もTV見ないんだけどな。
IOデータの。だろ?でも、そのソフト使ってない。
スクリプタブルのフリーかな?シェアかな?に変えた。めちゃいいのがあるぞ。専用のスレあったよ?確かここにだ。

でも、そか、あれもスクリプタブルだったんか。うん!!!なんでもいいからがんばれ!!!
スクリプト覚えたいなら、応援するぞ!!!応援だけだけどな!!!
396377:2008/04/17(木) 05:27:45 ID:29xhLM7q0
>>394,395
はい、そのソフトです。
休止設定はあるんだけど
AppleScriptで制御できそうだな、と、ここ見てて思って。
これを機会にスクリプトでどうにかしてみたい!と
おこがましくも思い立ちました。

他にも終了したらスリープさせたいものもあるので
基本を覚えたいです。
397377:2008/04/17(木) 05:36:36 ID:29xhLM7q0
変数 of me
初期に任意に決める変数は、
この書式が基本と覚えていいですか?

短いスクリプトはFlashのスクリプトに似ている感じがします。
読みやすいです。

>>388,389
ありがとうございます!
398名称未設定:2008/04/17(木) 09:10:12 ID:sOP5iSbm0
set 変数 to 任意の値

が基本
399名称未設定:2008/04/17(木) 09:19:48 ID:/SKv8Od60
ttp://mtlab.ecn.fpu.ac.jp/xnote/070209160623.html
コレをテンプレにいれほしい
400名称未設定:2008/04/17(木) 16:14:39 ID:royLru430
以下のスクリプト、display dialogが3回ともtrueになってしまいます。
4行目の {i} を {i as string} とすると false,true,true となってくれます。
これはAppleScriptのバグと考えていいのでしょうか
Mac OS 10.5.2 (Intel)

set searchString to "11"
set loopList to {"11", "22", "33"}
repeat with i in loopList
set strList to {i} as list --4行目
display dialog ((searchString is not in (every item of strList)) as string)
end repeat
401名称未設定:2008/04/17(木) 16:19:44 ID:royLru430
補足

5行目
 (every item of strList)
の部分は余計ですね
 strList
とだけ書いても動作は同じです
402名称未設定:2008/04/17(木) 16:25:27 ID:RPBa2Tiq0
>set strList to {i} as list

set strList to i as list
403名称未設定:2008/04/17(木) 16:48:41 ID:BcWLJJHy0
文字列の比較はunicode textにキャストしないとうまくいかない@10.4.11
双方明示的にキャストしないとだめなこともあるかもね
10.5では直ってるのかな

set searchString to "11"
set loopList to {"11", "22", "33"}
repeat with i in loopList
display dialog searchString /= (i as Unicode text)
end repeat
404名称未設定:2008/04/17(木) 17:04:17 ID:royLru430
>>402
それでも動きますね。
>>403
当方10.5です。まだキャストしないといけないパターンはあるようですね。ちなみに
 (class of searchString) as string
 (class of {item 1 of strList}) as string
はどちらもtextでした。

ちなみに以下の書き方でも false,true,true となってくれました。

set searchString to "11"
set loopList to {"11", "22", "33"}
repeat with i from 1 to (count of loopList) -- repeat with i in loopList から変更
set strList to {item i of loopList} as list
display dialog ((searchString is not in strList) as string)
end repeat

実行環境の内部的な動きを予測するに、repeat with i in loopList だと、
strListに入るのが「"11"の参照の参照」になってしまうからかな、とか思いますが。
一応バグレポートは出してみようと思います。
405名称未設定:2008/04/17(木) 17:09:24 ID:royLru430
書き忘れた
>>403 は当方の10.5環境では false,true,true でした。
as Unicode text を除くと true,true,true でした。
406名称未設定:2008/04/17(木) 17:23:18 ID:lc+HHQME0
>>400
>set strList to {i} as list --4行目
 ↓
set strList to contents of {i} as list --4行目
というのが一番本質的な修正だと思います。
元のスクリプトだと、strListに入ってるのは参照で、searchStringは実体なので
型が合わずに比較がfalseになります。
contents of で参照から実体を取り出せます(正確にはcontentsは参照型のプロパティの一つ)。

set theList to {1, 2, 3}
repeat with i in theList
display dialog (i = 2)
end repeat
極端な話、これだけでも、思うようには動きません。
i = 2 を contents of i = 2 にするとうまくいきます。
407名称未設定:2008/04/17(木) 17:51:34 ID:royLru430
>>406
おおお、なるほど。

contents of という記述を知りませんでした。調べてみたら reference to なんてのもありますね。
参照とかそういうの意識しなくていい言語かと勝手に思ってましたが、
そういう命令が用意されてるんでしたらそういう訳にはいきませんね。
(ちゃんとLanguage Guide読まにゃ・・・)

set strList to {i} だと参照のlistになって、
set strList to i as list だと実体のlistになるってのも微妙な気が・・・

連投ですいませんが、 item 1of strList が参照かどうかって知る方法はあるんでしょうか?
408名称未設定:2008/04/17(木) 19:16:16 ID:1nWe2yjh0
すみません、質問させてください。
大量のフォルダ整理のため、AppleScriptを勉強をしてまだ2日目の初心者です。

スクリプトを見れば一目瞭然なのですが、ファオルダ名にパスを入れて整理したいのです。

でも何とか自力で下のスクリプトを組んだのですが、ちょっと不具合と改良したい点があるのです。

●複数のフォルダには対応していない。
●階層表示を途中まで消したい。
 (/Users/a/Documents/b/c/d/e/をb/c/d/eに)
●階層表示を「/」から「_」などの害のない文字に変えたい。


私は本当にかじったばっかりで、自力ではここまでが限界です。それこのスクリプトはもしかしたらダメなものかもしれません。凄くいしょぼいものですが、どなたか愛の手をお願いします。


書いたスクリプト
---------------------------
on open (DropItem)
set pPath to POSIX path of (DropItem) as string
set the clipboard to pPath as string

tell application "Finder"
activate
set BB to (DropItem) as string
set name of folder BB to pPath
end tell
end open
---------------------------
409名称未設定:2008/04/17(木) 19:54:09 ID:+iWY17NL0
>>408
repeat with A in B
set 〜〜〜 A 〜〜〜
end repeat

で複数対応。
あんま焦んないでゆっくり覚えた方がいいさ
410名称未設定:2008/04/17(木) 23:07:36 ID:9oT/sSuq0
on open (DropItem)
repeat with i in DropItem
set pPath to POSIX path of i as string
set the clipboard to pPath as string

tell application "Finder"
set BB to i as string
set newName to my gsub("/", "_", pPath)
set name of folder BB to newName
end tell
end repeat
end open

on gsub(src, dst, txt)
set oldDelimiters to AppleScript's text item delimiters
try
set AppleScript's text item delimiters to my u(src)
set parsedTxt to every text item of my u(txt)
set AppleScript's text item delimiters to my u(dst)
set replacedTxt to parsedTxt as string
set AppleScript's text item delimiters to oldDelimiters
on error
set AppleScript's text item delimiters to oldDelimiters
end try
return replacedTxt
end gsub

on u(str)
return str as Unicode text
end u
411名称未設定:2008/04/18(金) 00:25:28 ID:L5sCt7Zl0
>>407
繰り返しの各回最初に set i to item n of theList ではなく、
set i to a ref to (item n of theList) が省略されていると思いねぇ
つまりi には実体の数字ではなく、 item n of {1, 2, 3} という参照が順に設定される
これは「repeat with A in B 〜 end repeat」の仕様だから、
バグレポート出したって意味ないよ

contents of 〜 は参照の実体を返すものだから通るのは当然、
ってかその為に用意されてるんだから

> set strList to {i} だと参照のlistになって、
> set strList to i as list だと実体のlistになるってのも微妙な気が・・・

{item 1 of theList} と item 1 of theList as list の違い

> 連投ですいませんが、 item 1of strList が参照かどうかって知る方法はあるんでしょうか?

class of item 1 of strList is refference でダメだっけ?
412名称未設定:2008/04/18(金) 11:01:04 ID:dJYBuVQZ0
>>409>>410さんありがとうございます。

>>410さんのスクリプトでやってみたらほとんど完璧でした。
取りあえず作業を終わらします。
そうしたら>>410さんのスクリプトをもう一度見直して勉強します。
413名称未設定:2008/04/19(土) 17:51:23 ID:NY56a/Op0
BootCampを使っていて、毎回起動ディスクを選択するのが面倒なので
「起動ディスクをWindowsパーティションにして再起動する」
というAppleSctiptを書きたいのですが、どう書いたらいいんでしょうか?
restartを使うのはわかるのですが、
起動ディスク選択をapplescriptで記述する方法がわかりません><
414名称未設定:2008/04/19(土) 18:01:07 ID:ji5C++Ya0
415名称未設定:2008/04/23(水) 16:39:19 ID:BnG0FN8G0
質問です。
起動したときに特定のアプリケーションを開きたいのですが
こんな考え方でいいんでしょうか?

tell application "System Events"
if application "Finder" is running
tell application "特定のアプリの名前" to run
end tell
end if
end tell

「ログイン時に開く」に登録すると
不具合が出たファイルがあったので
それをAppleScriptで開きたいと思いました。

…書いていて気がついたのですが、
どのみち起動したらAppleScriptを動かさないといけないんですよね。
「ログイン時に開く」と同じような振る舞いは無理なんでしょうか?
よろしくお願いします。
416名称未設定:2008/04/23(水) 16:52:17 ID:Hc3Eze4u0
tell app "アプリ" to activate

と書いてアプケーション形式で保存してログイン時に開くに登録
417名称未設定:2008/04/23(水) 20:21:48 ID:qd66T45W0
不具合が出るファイルの詳細を出さないと解決しないと思われま
418名称未設定:2008/04/24(木) 00:13:32 ID:XbztdGAE0
>>415
if文の意図が不明
Finderが起動しているか確認しなきゃならん理由って?

ちなみにrunningはLeopardでしか使えないので注意
更にSystem Eventsを使う意味もない

あと1つ目のend tellは要らん
419415:2008/04/24(木) 02:55:41 ID:bgnbSQ9m0
>>416
ありがとうございます。勉強になります。
>>418
Finderが起動してからアプリが開くイメージがあったので
if文にしてしまいました。

質問です。
ログインで起動させたらアプリを隠したいので

tell application "起動させたいアプリ" to activate
tell application "Finder"
activate
end tell

動作はしましたが、
該当アプリを「ログイン時に開く」に登録したときと
同じ不具合が出ました。
(再起動時にAirMacが切れてしまう)
Finderを手前に持ってくる考え方がまずいでしょうか?
420名称未設定:2008/04/24(木) 04:23:18 ID:YGMJUo5+0
>>419
つうかさ、AppleScript的には何の問題もないというか、
>>417さんが書いてる通りその秘密のアプリの問題だ。
421415:2008/04/24(木) 05:39:09 ID:bgnbSQ9m0
>>420

該当アプリは上の方で出ていたIOデータのTVについてきた
Channel Managerっていう留守録アプリです。

10.3.9まではログイン時に自動で立ち上がってたんだけど
Tiger用にバージョンあげたらログイン時に開かなくなって
手動で登録したら、なんだか不具合が。

削除したら、大丈夫だったんで
ログインに登録しなければ大丈夫かな?と。
422415:2008/04/24(木) 05:42:06 ID:bgnbSQ9m0
377です。
連続でおんぶにだっこなんで、ばつが悪くて
いろいろ秘密にしてました。
すんません。
423名称未設定:2008/04/24(木) 07:51:27 ID:5Seo7pWa0
AirMacの問題はログイン直後でなくちょっと間をおいてから
該当アプリ起動なら大丈夫なのかな?
delay付ければアプリケーション起動するまでの時間を調節できると思うけど。

delay 10
run application "該当アプリ"
424名称未設定:2008/04/24(木) 11:12:18 ID:Gbut8ZH30
>>415
AirMacの問題はOSのアップデートをしていないのでは?
ttp://docs.info.apple.com/article.html?artnum=301530-ja
それから、こういう事はアイ・オーのサポートを受けるべきだよね。
425415:2008/04/24(木) 21:21:46 ID:bgnbSQ9m0
>>423
ありがとうございます。
こういう書き方でもいいんですね。

>>424
OSアップデートはしています。
慌てていたので肝心のサポートへの連絡失念してましたorz
指摘、ごもっともです。メールで連絡しました。
スレ違いすいません。

で、スレ違いついでに、状況変わって、
該当アプリを「ログイン時に開く」に登録しても
AirMacの不具合が今現在はおこらなくなりました。
…原因特定できず、なんだか消化不良です。

AppleScriptって敷居が高かったんですが
これを機会にいろいろ書いて実行してみます。
426名称未設定:2008/04/24(木) 21:53:13 ID:Kmq11vc90
スクリプトエディタの環境設定の中にプラグインって項目があるけれど、初期だと何も入ってないよね。
あれってどんなのがあるの?
427名称未設定:2008/04/25(金) 00:32:03 ID:VfgWNAv50
OSXってAppleScript以外にも,いろんなスクリプト言語から使えるから
激しく目移りしちゃいそうになる.ダメだ,誘惑が多すぎる.……チラ裏.
428名称未設定:2008/04/25(金) 01:13:24 ID:OXemIun10
AppleScript以外が候補に上がる処理って
AppleScriptの優位性ないんじゃ…遅いし。
429名称未設定:2008/04/25(金) 01:33:14 ID:dGg/PZCN0
C, Obj-C, pascal, perl, awk, sh, ruby, python, lisp, と色々言語はかじってきた。
ここであえて言う。AppleScriptは糞言語。
430名称未設定:2008/04/25(金) 07:07:31 ID:0yyljuaM0
そもそもApplescriptは言語というよりアプリ自動操作する為のモノなのでw
あえて比較するなら、HSPとか?
431名称未設定:2008/04/25(金) 07:15:33 ID:3Fzgvl0aO
かじり方からすると大学生、または大卒アマグラマだな。
432名称未設定:2008/04/25(金) 07:27:14 ID:b0qvfVq50
かじって来た、ってんだからアマだろう。
だが大卒というのはなぜに?中高専門専修修士博士ではないのは何だろう。
pascalか?pascalだからだな!?

applescriptはアプリ操作のための物というのはその通りだわ。
どうしようもなく一般的だが、言語は使い道によって使い分ける、
って結論だろうな。
433名称未設定:2008/04/25(金) 10:48:02 ID:6DA3JbBA0
AppleScriptで一点良いところがあるよ

処理時間でタイムアウトを指定できるところ。ブロックでくくって
タイムアウトをかますことで、エラーハンドリングが出来るじゃん。

これって他のモジュールや他のアプリケーション、もちろんScript自体
のエラーで止まってしまっている場合のエラーハンドリングが簡単に
かける。AppleEventって結構すぐ止まったりするから、これがないと
とっても大変。

例外が投げられる言語ならではなので他でもできるっちゃできるけど。
時間切れの処理って意外と扱いにくくて。
434名称未設定:2008/04/25(金) 15:29:51 ID:bW9g+2TJ0
QuarkXPress + Applescriptで処理という、懐かしいことをするはめに...。
で、10年ほど前の知識(Mac OS 8あたり?)をもとにスクリプトを書いてみましたが
どうしてもわからないことがでてきました。

画像ボックスの大きさなどをちょっと変更する程度のスクリプトなんですが
昔だと

set {Y1,X1,Y2,X2} to bounds
set {Y1,X1,Y2,X2} to {(Y1 as real),(X1 as real),(Y2 as real),(X2 as real)}

みたいにすれば画像ボックスの座標を数値として取得できたと思うのですが、
これをやると
「data FXVMFFF77EFE をタイプ real に変換できません。」
などと言われます。

テストしたのは、10.4とMacOS9(Classicではなく)のスクリプトエディタからです。
何か変わったんでしょうか?

#昔はいっぱいあったApplescript関係のWeb、軒並みなくなってんのね......
435名称未設定:2008/04/26(土) 13:18:37 ID:weRm80Be0
1)LocationFree Playerを起動
2)コマンド+Fを押す
3)ウィンドウを左に500ピクセルほど移動
4)コマンド+Fを押す
5)コマンド+Sを押す

をApplescriptで実現する場合、どう書くのがよいでしょうか?
3)が分かりません…
436名称未設定:2008/04/26(土) 14:30:42 ID:1nasT5MR0
tell application "TextEdit"
if (count of windows) > 0 then
set travelDistance to 500
set {a, b, c, d} to bounds of window 1
set bounds of window 1 to {a - travelDistance, b, c - travelDistance, d}
end if
end tell
437名称未設定:2008/04/26(土) 15:44:40 ID:QHICzu+z0
LocationFree PlayerはScriptableなの?
438名称未設定:2008/04/26(土) 16:10:01 ID:weRm80Be0
>>436
ありがとうございます。
それは3の部分のみですよね。
がんばってみます
439名称未設定:2008/04/27(日) 04:31:08 ID:CqDC21800
全部GUI Scriptingでやるならこうかね

tell application "System Events"
tell application process "LocationFree Player"
kestroke "f" using command down
tell window 1
set {x, y} to position as list
set position to {x - 500, y}
end tell
kestroke "f" using command down
kestroke "s" using command down
end tell
end tell

keystrokeの前後は適当にdelay噛ました方が良いかも
440名称未設定:2008/04/27(日) 07:04:51 ID:xzqKt+1u0
s/kestroke/keystroke/g
441名称未設定:2008/04/27(日) 16:02:51 ID:I0hIN91K0
Illustrator CS3でプリント用にスクリプトを書いているのですが
ページ範囲の指定がわかりません……

print options を見ているのですが、該当項目が見つけられません
copies があるので job option あたりかなぁ〜とは思っているのですが
ご教示お願いします
442名称未設定:2008/04/28(月) 01:20:48 ID:Mdyt9GKv0
>>440
訂正サンクス
かっこわるorz
443名称未設定:2008/04/28(月) 17:57:34 ID:ZkH3S18f0
>>441
そもそも、Illustratorにページの概念無くね?
444名称未設定:2008/04/29(火) 10:52:26 ID:b64L+nUj0
>>443
タイリングで出すときに指定したい時があるんだけど
別のやり方見つけたので自己解決
445名称未設定:2008/04/29(火) 14:33:35 ID:OrSHwtdE0
その自己解決の内容を書けよ。
それがマナーだろ。
じゃないと以後答えないよ。
446名称未設定:2008/04/30(水) 03:53:06 ID:iRmFe5Tn0
OS 10.5.2のDVDプレーヤのスクリプティングについて

今、早送り中、巻き戻し中のどちらか、を判断する方法ってないですよね?
dvd state だとどちらも scanning なんですが
447名称未設定:2008/04/30(水) 04:59:04 ID:8NJRWVLi0
my getDVDState()

on getDVDState()
tell application "DVD Player" to set res to dvd state
if (my u(res) is equal to my u("scanning")) then
tell application "System Events"
tell application process "DVD Player"
tell menu 1 of menu bar item "制御" of menu bar 1
set fwd to enabled of menu item "順方向にスキャン"
set rew to enabled of menu item "逆方向にスキャン"
if (fwd and (not rew)) then
return "rewind"
else if (rew and (not fwd)) then
return "forward"
end if
end tell
end tell
end tell
else
return res
end if
end getDVDState

on u(str)
return str as Unicode text
end u
448名称未設定:2008/04/30(水) 22:12:46 ID:ti+GScgk0
tell application "Finder" は、ドットで始まるフォルダーは
扱えなかったりしますか。
449名称未設定:2008/04/30(水) 23:21:24 ID:VrLjl44z0
聞くより試した方が早くない?
或いはSystem Eventsで代替できそうならそっちでやるとか
450名称未設定:2008/04/30(水) 23:30:53 ID:F7cGPVuL0
FInderではできない。System Eventsではできる。

tell application "System Events"
set dotfile to folder "Macintosh HD:Users:username:.emacs.d"
creation date of dotfile
end tell
451名称未設定:2008/05/01(木) 01:05:41 ID:Qb45XqkK0
Finderでも不可視ファイルが見える状態ならできそうな気が
452名称未設定:2008/05/01(木) 02:25:30 ID:217bEEZ30
AppleScriptの他にシェルスクリプトもカジってみたくなり,書籍購入してきました.
パラ見して取っ付きやすそうなのを二冊ほど.(下の二冊)
www.gcug.net/sample/ss.png
453446:2008/05/02(金) 00:51:22 ID:b5wztDlz0
>>447
わざわざ回答を書いて下さってありがとうございます!
454名称未設定:2008/05/02(金) 01:21:44 ID:Ld0kWcNV0
最終的にはファイル名の選択した半角カタカナ部分を
全角カタカナに変換したいと思ってあれこれ調べたのですが
うまくできません。ガ行がうまく変換できません。

ファイル名の選択した部分だけの変換、という操作は
可能でしょうか?

アドバイスよろしくお願いします。


set hankatatext to "ヴガギグゲゴザジ"----半角カタカナテキスト

set hankatatable to " !?-アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ"
set zenkakutable to " !?−アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ"
set zenkakutext to ""
considering case
repeat with x in hankatatext
set y to 1
set convtext to x as string
if convtext is in hankatatable then
repeat with x in hankatatable
if convtext contains (item y of hankatatable) then
set convtext to (item y of zenkakutable) as string
exit repeat
end if
set y to y + 1
end repeat
end if
set zenkakutext to zenkakutext & convtext
end repeat
end considering
zenkakutext --全角に変換されたテキスト
455名称未設定:2008/05/02(金) 01:50:49 ID:OxrQ18O50
set hankatatable to "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ !?-アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ"
set zenkakutable to "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ !??アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ"
set zenkakutext to ""
considering case
repeat with x in hankatatext
set y to 1
set convtext to x as string
if convtext is in hankatatable then
repeat with x in hankatatable
if convtext contains (item y of hankatatable) then
set convtext to (item y of zenkakutable) as string
exit repeat
end if
set y to y + 1
end repeat
end if
set zenkakutext to zenkakutext & convtext
end repeat
end considering
456名称未設定:2008/05/02(金) 02:47:15 ID:MhGW9MLl0
>>454
あのページに書いてあるように、テーブルの内容をリスト形式にするのが手っ取り早いかな。
set hantable to {"ヴ","ガ","ギ","グ"・・・}
set zentable to {"ヴ","ガ","ギ","グ"・・・}
ってな要領で。めんどくさいけど。
457名称未設定:2008/05/02(金) 02:49:39 ID:MhGW9MLl0
いや、だめだ、スマソ
458名称未設定:2008/05/02(金) 02:56:05 ID:aImAwxbY0
自分だったら置換しちゃうかな


set hankatatext to "ヴガギグゲゴザジ" ----半角カタカナテキスト

set hankatatable to " !?-アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ"
set zenkakutable to " !?−アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ"
set zenkakutext to hankatatext
repeat with i from 1 to (count of character of hankatatable)
set zenkakutext to f_Replace(zenkakutext, (character i of hankatatable), (character i of zenkakutable))
end repeat
zenkakutext --全角に変換されたテキスト

on f_Replace(theText, theOldWord, theNewWord)
set theDefDel to AppleScript's text item delimiters

set AppleScript's text item delimiters to theOldWord
set theTextItemList to (every text item of theText) as list

set AppleScript's text item delimiters to theNewWord
set theRes to every item of theTextItemList as text


set AppleScript's text item delimiters to theDefDel

return theRes
end f_Replace
459名称未設定:2008/05/02(金) 02:57:21 ID:MhGW9MLl0
入力元の1文字先を常に見るようにして、
それが濁点や半濁点だったら・・・という対処があるかな。
460名称未設定:2008/05/02(金) 02:58:54 ID:aImAwxbY0
あれ?
濁点で一文字なのか
コピペしたら変換されちゃったのかな
お恥ずかしい
461名称未設定:2008/05/02(金) 03:02:28 ID:MhGW9MLl0
もしかして10.4と10.5とで半角濁点の扱いが違ってたりしたら・・・
462名称未設定:2008/05/02(金) 03:06:04 ID:aImAwxbY0
リスト形式にして、濁点文字から先に置換すればいけるかな
463名称未設定:2008/05/02(金) 03:07:53 ID:MhGW9MLl0
set hantext to text returned of (display dialog "半角カナ→全角カナ" default answer "") --テスト用ダイアログ
--set hantext to "半角テキスト" --これは例。文字列は任意で。
set hantable to "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッー。、「」"
set hantable2 to "ヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ"
set zentable to "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォャュョッー。、「」"
set zentable2 to "ヴ ガ ギ グ ゲ ゴ ザ ジ ズ ゼ ゾ ダ ヂ ヅ デ ド バ ビ ブ ベ ボ パ ピ プ ペ ポ "
set zentext to ""
set dakusyori to 0
set i to 1
considering case
repeat (count hantext) times
set y to 1
set convtext to item i of hantext as Unicode text

--濁点の処理
if i < (count hantext) then
if (convtext is in hantable) and ((item (i + 1) of hantext) is "゙" or (item (i + 1) of hantext) is "゚") then
repeat with x in hantable2
if convtext contains (item y of hantable2) then
set convtext to (item y of zentable2) as Unicode text
if item (i + 1) of hantext is "゚" then set convtext to (item (y + 10) of zentable2) as Unicode text
set dakusyori to 1
exit repeat
end if
set y to y + 1
end repeat
end if
end if
464名称未設定:2008/05/02(金) 03:08:39 ID:MhGW9MLl0

--濁点が連続したときの処理
if convtext is "゙" or convtext is "゚" then
if dakusyori is 1 then
set convtext to ""
set dakusyori to 0
else
if convtext is "゙" then set convtext to "゛"
if convtext is "゚" then set convtext to "゜"
set dakusyori to 0
end if
end if

--通常
if convtext is in hantable then
repeat with x in hantable
if convtext contains (item y of hantable) then
set convtext to (item y of zentable) as Unicode text
exit repeat
end if
set y to y + 1
end repeat
end if

set zentext to zentext & convtext
set i to i + 1
end repeat
end considering
display dialog "" default answer zentext buttons {"Cancel", "Copy"} default button 2 --全角に変換されたテキスト。
465名称未設定:2008/05/02(金) 03:09:22 ID:MhGW9MLl0
フォルダの中を探したら↑が出てきた
けど、自分でもよく解釈できてない
466名称未設定:2008/05/02(金) 04:15:49 ID:ZfEsontI0
php使う方法

set hankatatext to "ヴガギグゲゴザジ" ----半角カタカナテキスト
set zenkakutext to do shell script "php -r '$text = $argv[1]; $text = mb_convert_kana( $text, \"KV\", \"UTF8\"); print $text;' " & quoted form of hankatatext
log zenkakutext
467名称未設定:2008/05/02(金) 05:35:45 ID:OWVyOTu50
Transliterate OSAX使えば?
468名称未設定:2008/05/02(金) 14:49:27 ID:Ld0kWcNV0
AppleScriptは選択中のテキストを取得して処理する、
は実装してない、と読んだ覚えがあるんですが
ってことは
フォルダの名前の特定の部分だけを選択して
そのままそこだけ変換、って無理なんでしょうか?

>>465
濁点部分もちゃんと変換されてます。
半角カタカナから全角カタカナ、甘く考えてました。
469名称未設定:2008/05/02(金) 15:43:08 ID:OxrQ18O50
総スルーだけど、 >>455 の修正でできない?
Leopardではできてるよ。

Finderはできないが、テキストを扱うアプリなら大抵選択範囲の中で
処理できるよ。

Finderのselectionはファイルそのものになってしまうんだな。

クリップボードにコピーし、処理後にペーストする、
という流れでならできるけど、編集状態が解けないようにAppleScript
を実行するのが大変だな。

余分なところが変換されないよう、処理内容を見直すのが本道だろう。
470名称未設定:2008/05/02(金) 16:22:27 ID:cPTgUCGi0
>>469
10.4だとできないっす。
10.4だとガを2文字として扱い、10.5だと1文字として扱うっぽい?
471名称未設定:2008/05/03(土) 04:16:39 ID:mLrL5wAX0
>>454
こんな感じで,うちのLeopardではイケました.

set hankatatext to "ヴガギグゲゴザジ"----半角カタカナテキスト

set hankatatable to " !?-アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ"
set zenkakutable to " !?−アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョヴガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポ"
set zenkakutext to ""
considering case
repeat with x in hankatatext
set y to 1
set convtext to x as string
if convtext is in hankatatable then
repeat with x in hankatatable
if convtext is in (item y of hankatatable) then
set convtext to (item y of zenkakutable) as string
exit repeat
end if
set y to y + 1
end repeat
end if
set zenkakutext to zenkakutext & convtext
end repeat
end considering
zenkakutext --全角に変換されたテキスト
472名称未設定:2008/05/03(土) 18:23:08 ID:vfQBRveY0
>>468
工夫すればできるでしょ。
473名称未設定:2008/05/04(日) 01:57:34 ID:OeyC/A9x0
まさか System Events を使うとかじゃ
474名称未設定:2008/05/07(水) 03:16:16 ID:NSF/865G0
>>468
ファイル名とかの場合、スクリプトを動かした時点で
文字の選択範囲が解除されちゃうから無理
475名称未設定:2008/05/07(水) 07:55:03 ID:hQlnT3NO0
iKey等のユーティリティにて、キーボードショートカット
からAppleScriptを実行するようにすれば回避可能。

部分選択文字はクリップボードにコピーして取得するしかないと思うが。
加工したのを戻す際はSystem EventsでCommand+Vだね。
Command+Vするまでに編集状態が解除されないとは限らないのが
GUI Scriptingの弱点。
476名称未設定:2008/05/07(水) 14:59:23 ID:uczu7oQ+0
フォルダ名を取得
選択部分だけ変換
フォルダ名を変更

とやるならペースト動作はしなくてもいいような
477名称未設定:2008/05/09(金) 00:27:22 ID:WzJ5ULt40
色々考えてみたが、選択箇所の取得にコピーする以外の方法が無い事を踏まえると、
ペーストした方が結局は安定するかもしれないな

コピーだと選択している位置までは把握できないのだけど、
offsetとか使っての位置判断では同じ文字列が手前にあった場合に無視できない

ついでにこれはLeopard限定かもしれないが、
1byte文字と2byte文字が混在しているとoffsetの結果が変な事になったりする
478名称未設定:2008/05/09(金) 05:34:51 ID:+KAU1cZT0
AppleScriptでファイル名のUTF-8の処理はNFDとNFCの違いを意識しないといけない
HFS+のファイル名はNFDらしい。で、Standard Additionの「length」などがNFDを
きちんと処理しないのは10.5.0から。

で、こんなことをする必要があるそうで。
to GetNFC(theItem)
set theScript to ("echo " & (quoted form of theItem) &
" | iconv -f UTF-8-MAC -t UTF-8")
return (do shell script theScript)
end GetNFC

フィードバックしる。
479名称未設定:2008/05/09(金) 21:17:50 ID:nqlOEcPd0
>>478
逆でしょ。10.5になってからきちんとNFDでも1文字として扱う様になった。
http://developer.apple.com/releasenotes/AppleScript/RN-AppleScript/index.html
> character elements of text count a combining character sequence as
> a single character.
あとNFDをNFCに変換するのは解決策にはならんよ。Precomposed formが存在しない
文字はNFCでも複数code pointの組合わせのまま
480名称未設定:2008/05/09(金) 21:44:18 ID:Gweu8pUF0
>>479
characterはNFDを扱うけど、lengthはNFDを扱えないよ
「だ」をテキストエディタに打ち込んだもの
「だ」をファインダのファイル名にうちこんだもの
それぞれをAppleScriptでlengthで評価してみれば一目瞭然。

バグリポーと炭。
481名称未設定:2008/05/09(金) 22:45:01 ID:WzJ5ULt40
> 1byte文字と2byte文字が混在しているとoffsetの結果が変な事になったりする
って昨夜書いたけどこれは間違いって事ですな


offset of "1" in "ダ1"
count of "ダ1"
offset of "1" in "ダ1"
count of "ダ1"

という様なのを実行すると
10.4.11では全角の場合offset/countとも2、半角だと同じく3になった
10.5.2ではも全角では同じ2なのが、半角だとoffsetが3だけどcountが何故か2
なんだかどっちつかずな結果


同じ事をフォルダ名なんかでやってみると

tell application "Finder"
set fullName to name of item 1 of (selection as list)
set lastLetter to item -1 of fullName
offset of lastLetter in fullName
count of fullName
end tell

10.4ではoffset/countとも濁点付きの字を2文字として処理
10.5はoffsetは2文字、countは1文字として処理
どちらも全半角の差はなし


ってトコまで調べてなんでかなーと悩んでたんだけど、
>>478-480こういう事なのか
…まだよくわかってないけど
482名称未設定:2008/05/09(金) 22:55:08 ID:9XdYezEc0
>>480
lengthはちゃんと動く。OSX 10.5.2では
length of "だ" -- 1
length of (<<data utxt3060>> as Unicode text) -- 1
length of (<<data utxt305F3099>> as Unicode text) -- 1
offset ofはUTF-16の単位で数えてるから、こっちを言ってるんだと思うけど
マッチ長が判らないから有無の判定位にしか使えないと思う。
細かい処理はどの道characters ofでの分解処理が必要でしょう。
483名称未設定:2008/05/09(金) 22:57:32 ID:9XdYezEc0
あれID変わっちゃった。>>479>>482ね。
484名称未設定:2008/05/09(金) 23:17:18 ID:u1O6IA4d0
前スレの806以降あたりが参考になるんじゃないかと思う,この問題の流れ.
485名称未設定:2008/05/09(金) 23:27:57 ID:aOCFh+oC0
便乗よいでしょうか?以下のようなスクリプトが正常に動かないのもUnicodeの不具合?
タブやリターンをas Unicode text で変数にいれても、アスキーナンバーで設定しても同じ。
データセットやってなかったけど、0の数が違うだけで同じだよね?

choose file with prompt "please select at tab stop Text. with UTF-8 of 16" without invisibles

set myTextFile to open for access file TextFileName
repeat
  try
    set end of returnTextList to read myTextFile before return using delimiter {",", tab} as Unicode text
    --set end of returnTextList to read (myTextFile as Unicode text) before return using delimiter {",", tab}
  on error errMsg number errNo
    close access myTextFile
    if errNo is -39 then
      set errorFlag to false
      exit repeat
      --return {returnTextList, TextFileName}
    else
        set errorFlag to true
    end if
    exit repeat
  end try
end repeat
log returnTextList
--あきらめてデリミタで処理
486名称未設定:2008/05/10(土) 00:26:49 ID:VbDXvMT+0
>>474-475
この辺の解決策として使えるかな?

まず以下のスクリプトをアプリケーションバンドルとして保存
"初期画面"のチェックは外し、保存場所はユーザスクリプトフォルダにしておく

on run
tell application "System Events" to frontmost of application process "Finder"
if not result then return
tell application "System Events"
keystroke "c" using command down
end tell
set beforeString to the clipboard
if (clipboard info for "class txtn") is {} then return
set afterString to half2full(beforeString)
set the clipboard to afterString
tell application "System Events"
keystroke "v" using command down
keystroke return
end tell
end run

on half2full(beforeString)
return "ガギグゲゴ" --半角⇒全角の変換処理は省略
end half2full
487名称未設定:2008/05/10(土) 00:27:29 ID:VbDXvMT+0
保存したらパッケージの中を開いて、info.plistにNSBGOnly="1"を追加する
テキストエディットの場合はこんな感じで追記

<key>NSBGOnly</key>
<string>1</string>

Finderでフォルダ名の一部分を選択した状態で、
スクリプトメニューから作ったバンドルを実行すれば一丁あがり
488485:2008/05/10(土) 00:30:00 ID:AXZ6BNKG0
思い出しついでに、いろいろ触ってみてましたが...無理。今日はあきらめて寝ます。

>>485 だけだとわかんないですよね。デバッグ用の切り出しのコピ。
英語がめちゃくちゃなのはスルーしてください。ASSでユニコードがデバッグできんのが悪い!!!と言うことで。
try
  set end of returnTextList to read myTextFile before return using delimiter {",", tab}
on error errMsg number errNo

ここでエラートラップに引っかかったやつを本当はBOMをみて、だったのですが、
不安定なので環境設定(UTF16ON)あたえて

if UTF16ON is 0 then
  set rerunText to read myTextFile as --《class utf8 --》 -->about FileMaker Pro export UTF-8
else if UTF16ON is 1 then
  set rerunText to read myTextFile as Unicode text -->about FileMaker export ProUTF-16
end if
で、仕方がないからこうやってテキストで取り込んで、Winの時とLFの時の処理してデリミタです。
今の私ならなんとかなるかな?と思いrun scriptの中身開けていろいろやってみたけど、だめでした。
489名称未設定:2008/05/10(土) 00:36:43 ID:VbDXvMT+0
>>486
文字化けしてた

> if (clipboard info for "class txtn") is {} then return

> if (clipboard info for <<class txtn>>) is {} then

"<<"は option + ] 、">>"は option + shift + ] って事で
490名称未設定:2008/05/10(土) 05:32:00 ID:N/3UarJ/0
>offset ofはUTF-16の単位で数えてるから、こっちを言ってるんだと思うけど

うわ、そうだった、ごめん。はずかし!

>マッチ長が判らないから有無の判定位にしか使えないと思う。
これ、NFDとNFCが同じ文字として判定されていないから、有無の判定にも
使えないってことだと思うんだけど・・・違う?
491名称未設定:2008/05/10(土) 05:41:45 ID:mM5tFqp50
AppleScriptを突然使わなきゃいけない状態になって
困惑している者です。(ASに関してはほぼ素人です。。)

widget(js)からosascriptでAppleScriptを叩き、
そこからshellコマンドを引数付けて実行しようかと思っています。

on run argv
do shell script "./program" & " " & item 1 of argv & " " & item 2 of argv & " " & item 3 of argv & " " & item 4 of argv
end run

…という感じで書いてまして、引数4つ付けて動作はしています。
こちらを引数の数を不定にするには、どう記述すれば良いのでしょうか?

for文(repeat?)みたいなもので、引数のlength分繰り返して文字列を生成し
do shell scriptで実行、という感じなのかなとは思いますが
記述が分かりませんです。。
492名称未設定:2008/05/10(土) 06:21:19 ID:yeoqfpJC0
>>491
こういう意図かな?

set argvs to ""
repeat with argv in argvlist
set argvs to argvs & " " & (argv as unicode text)
end repeat
do shell script "./program" & " " & argvs
493名称未設定:2008/05/10(土) 12:02:28 ID:mM5tFqp50
>>492さん

こんな時間にどうもありがとうございます!
なるほど、こういう感じで書くのですね。勉強になります。

他の言語での記述となりますが

var argvs:String="";
for(var i:Number=0;i<argv.length;i++){
argvs=argvs+" "+argv[i] //そしてUnicode変換?
}
//そしてdo shell script実行

みたいな処理が行われていると考えて良いのですよね。
repeatがイマイチピンと来ないのですよね…。
ちょっと勉強してきます。。
494名称未設定:2008/05/11(日) 11:47:15 ID:oYKxTVuQ0
どうにか動きました!
そのままのコードでは動かなかったので
こんな感じで。

on run argv
set argvs to ""
repeat with aVal in argv
set argvs to argvs & " " & (aVal as Unicode text)
end repeat
do shell script "./program" & argvs
end run

どうもありがとうございました!
495名称未設定:2008/05/17(土) 23:44:33 ID:0UIW3yyo0
iTunesなんだけど
sound volume (integer) : the sound output volume (0 = minimum, 100 = maximum)
ってなってるけど実際にやってみると

--ここから
set vol to ""
tell application "iTunes"
repeat with i from 0 to 100
set sound volume to i
set temp to sound volume
if not i = temp then
set vol to vol & i & "→" & temp & ", "
end if
end repeat
end tell
display dialog vol
--ここまで

3→2, 4→3, 6→5, 9→8, 10→9, 12→11, 15→14, 16→15, 17→16, 22→21, 23→22, 28→27, 29→28, 34→33, 37→36, 43→42,

となる、これはバグなんだろうか
なんだか気持ち悪い
496名称未設定:2008/05/18(日) 02:54:22 ID:WE/6toaH0
>>495
毎回同じ結果?
497名称未設定:2008/05/18(日) 03:12:16 ID:C87Yn8So0
いや、そうじゃなくて
3をsetしてるのに2になったりってこと
498名称未設定:2008/05/18(日) 03:39:13 ID:Z+SGi+Bj0
うちでも同じ結果だな
499名称未設定:2008/05/18(日) 03:47:22 ID:C87Yn8So0
あきらめるしかないっぽいなぁ
500名称未設定:2008/05/18(日) 03:57:49 ID:F94FBFJ50
tell application "iTunes"
set sound volume to 50
end tell
501名称未設定:2008/05/18(日) 04:08:20 ID:WE/6toaH0
>>497
1,2,5…は合ってて3,4,6…は1少ないって事はわかってるよ
それが毎回同じ結果になるならそういうバグなんだろうなって

もしズレる場所が違ってくるなら時間差みたいなもんかなとか
例えば
set sound volume to i
set temp to sound volume
この間にdelayかければ発生しないのかなってさ

0⇒100じゃなくて100⇒0にしてみるとか、
手元にMacがあれば色々実験してみたいところだ
502名称未設定:2008/05/18(日) 06:44:43 ID:LRWJ9ifd0
>>501
delay入れても同じ。
ちなみに3から3.499999は2だけど、3.5から3.9だと3。
小数が何桁まで認識されるかは不明。

内部で処理する数との割り切り方の問題かな。
503名称未設定:2008/05/18(日) 10:59:53 ID:9xu/qY5t0
多分、iTunesのGUIのサウンドコントローラのスライダーの長さが
0〜100まで無くて、>>495 の様に皺寄せされているんだと思うよ。
504名称未設定:2008/05/18(日) 12:52:21 ID:C87Yn8So0
きちっと狙った値にセットする為にはどうするのがスマートな方法なんだろう
caseでわけるとか配列にしておくとかはちょっとゴリ押しな感じがするし
505名称未設定:2008/05/18(日) 14:00:36 ID:Z+SGi+Bj0
配列使っても狙った値にセットは不可能では。34とか。
506名称未設定:2008/05/18(日) 15:20:12 ID:C87Yn8So0
0.1刻みでセットしてみたところ
4, 6, 10, 12, 17, 23, 29, 34, 37, 43
は無理だという事がわかった、あきらめた
507名称未設定:2008/05/18(日) 17:50:47 ID:rXkvVfUC0
>>495のスクリプト自分だったらどう修正するかって考えていたんだけど,
中でset sound volumeの値を無理矢理設定しても設定されないってことなんですね.

そうか,そういうことかあ.

後学のために聞きたいんですが,「caseでわける」というのはif文で分岐,
配列っていうのは,listを使って処理するっていう考え方でいいですか?
508名称未設定:2008/05/18(日) 21:29:55 ID:rXkvVfUC0
repeat with ~ in から要素を取り出し修正スクリプト作ろうと思ったけど,
ループの中のループ処理は,流れが把握しにくいね…….
509名称未設定:2008/05/18(日) 23:51:41 ID:rXkvVfUC0
>>495 の自分的修正スクリプト.
ボリュームの不具合はなおらないけど,処理の考え方の一つとして.

set vol to ""
set correct to {0, 0, 0, 1, 1, 0, 1, 0, 0, 1, 1}
tell application "iTunes"
set StandardVolume to sound volume
repeat with i from 0 to 10
set x to item (i + 1) of correct
set sound volume to i + x
set temp to sound volume
set vol to vol & i & "→" & temp & ", "
end repeat
set sound volume to StandardVolume
end tell
display dialog vol
510名称未設定:2008/05/21(水) 16:06:57 ID:tSz2ge7R0
選んだフォルダのサブフォルダも探したいときってどうするの?
インデザインver2とインデザインCSとCS2とクォークファイルのエイリアスを
任意の場所につくりたいのです。というかファイルの一覧がテキストで欲しいんですけど
サブフォルダで躓きました。再帰とか繰り返しがそれっぽいんですけど
一気に理解できない感じになってしまいました
サブフォルダ含めないまではこうなりました。

set folder1 to alias "任意の場所"
set folder2 to alias choose folder

tell application "Finder"
make new alias file at folder1 to (files of folder2 whose file type = "InDd")
make new alias file at folder1 to (files of folder2 whose file type = "IDd3")
make new alias file at folder1 to (files of folder2 whose file type = "IDd4")
make new alias file at folder1 to (files of folder2 whose file type = "Xdoc")
end tell


このへんをいじいじしていたらできますか?
http://www.tonbi.jp/AppleScript/tips/Reference/Plural.html
511名称未設定:2008/05/22(木) 01:02:41 ID:+IkhpeFZ0
>>510
Jon's Commands X の walk folders で簡単に
というのはダメかな
512名称未設定:2008/05/22(木) 01:30:11 ID:yIFoBHBA0
>>510

set folder0 to (choose folder)
my do_something(folder0)

to do_something(thefolder)
tell application "Finder"
set theList to files of thefolder
repeat with aFile in theList -- ファイルに関する処理
--ここに実際の処理がはいる
display dialog (aFile as Unicode text) --サンプル
end repeat
set theList to folders of thefolder
repeat with aFolder in theList -- フォルダに関する処理
my do_something(aFolder) -- 再帰!
end repeat
end tell
end do_something

再帰の骨組みです。
repeatを(folderもfileもその他も一緒にした)itemで回して、その都度folderか否かチェックして
分岐するのでもいいけど、わたしはfilesとfoldersでわけちゃう方が(バグ取りが楽な気がして)好み。
513名称未設定:2008/05/22(木) 01:53:14 ID:xFhR5m0/P
>>510
entire contentsでサブフォルダ内のファイルも取得できる

set theAliasFolder to alias "hoge:hoge"
set theFolder to choose folder
tell application "Finder"
set theFiles to (every file of entire contents of theFolder) whose name ends with ".jpg"
make new alias file at theAliasFolder to theFiles
end tell
514名称未設定:2008/05/22(木) 02:39:04 ID:yIFoBHBA0
>>513
>entire contents
これMac OS 9時代にバグバグだったから、なんか怖くて使えないんだけど
もう平気になってる? なってるよね。
515名称未設定:2008/05/22(木) 03:35:41 ID:xFhR5m0/P
>>514
そうなんですか。
使い込んでないので自分はわかりません。

ちょっと調べたらバグの情報じゃないけど
http://piyocast.com/as/?cat=6&paged=2
にentire contents の高速化のtipsがあった。
516510:2008/05/22(木) 15:53:45 ID:cNV5rNkO0
>>512
>>513
ありがとう
>>513の方法でつくってみました

set theAliasFolder to alias "エイリアスを保存するフォルダ:"
set theFolder to choose folder
tell application "Finder"
set theFiles1 to ((every file of entire contents of theFolder) whose file type = "IDd3")
set theFiles2 to ((every file of entire contents of theFolder) whose file type = "IDd4")
set theFiles3 to ((every file of entire contents of theFolder) whose file type = "Xdoc")
set theFiles4 to ((every file of entire contents of theFolder) whose file type = "InDd")
make new alias file at theAliasFolder to theFiles1
make new alias file at theAliasFolder to theFiles2
make new alias file at theAliasFolder to theFiles3
make new alias file at theAliasFolder to theFiles4
end tell

なんとかこれで動いたっす!大量にあるばあいは結構重い!
517名称未設定:2008/05/22(木) 17:09:42 ID:er7ESnbb0
再帰処理も覚えておくと役に立つかと
518名称未設定:2008/05/22(木) 17:22:29 ID:cNV5rNkO0
はい、再帰は敷居が高い感じがしますが
勉強します
519名称未設定:2008/05/24(土) 12:36:13 ID:DMp6rd400
repeat
beep 1
end repeat

escキーを押すことでループから抜け出すようにしたいと思っています.
if文とexit文を使う際のescキー判定方法がわかりません.ヒントいただけませんか.

利用環境 OSX10.5.2 Leopard
520名称未設定:2008/05/25(日) 04:50:25 ID:t7Oydnc60
>>519
アップルスクリプトではそういう操作はできないです。
521名称未設定:2008/05/25(日) 10:34:45 ID:3nkndhMY0
>>520
わかりました.ありがとうございます.

上とは関係ないですけど,AppleScriptの命令をたくさん持つアプリに出会うと
ワクワクしますね.この命令使えばあんなことやこんなことできるなあって.
522名称未設定:2008/05/25(日) 11:21:38 ID:aFR9roAO0
どんな命令が使えるのかわかんなくて嫌になるんだけどな・・・
523名称未設定:2008/05/25(日) 13:13:06 ID:mr4y3yBS0
>>519、521
AppleScriptStudio(Xcode)なら似た様な事は可能な気もする
524名称未設定:2008/05/25(日) 15:21:34 ID:3nkndhMY0
>>522
今,radioSHARKというアプリの命令の充実ぶりに萌えてハマって,
といういきさつがあってのレスだったんですが,確かに用語集がせめて
日本語だったら……,というのはよく思いますね.

>>523
Xcodeですか.小さなスクリプト組むのにも丸一日かかるくらいですから,敷居が高そう.
525名称未設定:2008/05/25(日) 15:46:49 ID:/2tz3DHR0
>>519
try
display dialog "" giving up after 1
on error
exit repeat
end try

とかを適当なトコに入れ込めば、「escキーで抜ける」って希望については
AppleScriptだけでも何とか叶うかと。禿しくブサイク & 劇遅な方法だけど・・
526名称未設定:2008/05/25(日) 16:15:54 ID:IS/3OcSo0
Jon's Commands Xにkeys pressedってコマンドがあるけど、Intel未対応だったりするんで
あんまりはすすめません。
ttp://www.seanet.com/~jonpugh/

527名称未設定:2008/05/25(日) 16:29:12 ID:3nkndhMY0
>>525
ダイアログが出てはマズい処理なので,escキーで止まることはできても
やっぱり使えないです.でも,わざわざどうもでした.
エンドレスループでも,command + . なら終了できますよね
でもソフトの終わらせ方として美しくないのでこれはダメだなって.

>>526
ありがとうございます.OS9の時,使ってました.intel未対応ですか…….
ネット上で配布するScriptなので,それを考慮するとちょっと難しいですかね.
528名称未設定:2008/05/25(日) 16:42:36 ID:eHOGmrwS0
on any key ってなかったっけ。
529名称未設定:2008/05/25(日) 23:58:54 ID:3nkndhMY0
>>528
う〜ん,よくわからないです.検索でも6件しかひっかからず.
もうこれは仕方ないと思うので,あきらめます.

昨日一つアプレット作成して,今またもう一つアプレット作成中なんですが,
いやー楽しいです.もちろん簡単には作成できないものの,試行錯誤の中でできた!
っていう実感が,また次のアプレット作成に繋がっていくっていう感じで.
530名称未設定:2008/05/26(月) 00:53:55 ID:lJYd5OUM0
UNIXのcommandでいいから、呼ばれたときに押されてるキーを返すものあればいいのだけど
531名称未設定:2008/05/26(月) 23:59:45 ID:5+bWNc520
Safariで現在開いているページのHTMLソースを取り出したいのだけれどうまくいかない。
get source や get document じゃないみたいだ・・・
532名称未設定:2008/05/27(火) 00:32:41 ID:aVs7J+oC0
>>531
get source of document 1
533名称未設定:2008/05/27(火) 01:07:38 ID:kfFo1NNz0
>>531
ここに,そのものズバリのソースがありますよ.
ttp://blog.b-shock.co.jp/pooza/2006/08/jchecker_x.html

JChecker使いには,最高のスクリプトじゃないかな.
534名称未設定:2008/05/27(火) 01:44:44 ID:kfFo1NNz0
tell application "Finder"
get processes
end tell

上で得られる値というのは,Finder形式の参照値ですよね?
これをaliasクラスに変換したいのですが,単にas alias listではダメなようです.
どうやって書いていけばいいのでしょうか.ヒントいただけませんか.
535名称未設定:2008/05/27(火) 03:58:08 ID:P9eVsDAC0
tell application "Finder"
properties of (item 1 of processes)
end tell

とやると中程に答えが
536名称未設定:2008/05/27(火) 19:46:05 ID:ueRg+y4Z0
>>532,533
ありがとう、うまくいったよ。
537名称未設定:2008/05/27(火) 23:25:24 ID:XiUUgxqB0
>>535
う〜ん…….教えたいただいたのにもかかわらず結局わからないので,
自分でもう一度いろいろと試してみることにします.ありがとうでした.
538名称未設定:2008/05/28(水) 00:30:51 ID:M9Hejn350
答えはfile of (item 1 of processes)だよ
539名称未設定:2008/05/28(水) 10:03:13 ID:MeIDKUq20
>>538
それをヒントに,以下のようにしたら全プロセス(たぶん)取得できました.
つまり,as alias listしなくてもいいということですよね.

tell application "Finder"
ile of every process
end tell

と,無事これで終わりと思ったら,おかしな問題がでてきました.
mdworkerというアプリだけが, missing valueを返してきます.
このアプリだけ「所在不明だよ〜ん」ってことかな.

なんか変だけど,スルー処理すればいいやってことにしておきます.
ありがとうございました.
540名称未設定:2008/05/28(水) 10:04:46 ID:MeIDKUq20
間違えたので,訂正.

× ile of every process
○ file of every process
541名称未設定:2008/05/28(水) 13:06:49 ID:MysNeaZx0
AppleScriptを使用して、
Excelファイルのシート名を変更することは可能ですか?

フロッピーに入ってるExcelファイルのシート名を変更したいのですが、
だいたいこんな感じで動かないものかと書いてみましたが、
ダメです。

tell application "Finder"
set thefile to item 1 in disk "NO NAME"
set the name of thefile to "Book1.xls"
end tell
tell application "Microsoft Excel"
set thesheet to worksheet of thefile
set the name of thesheet of thefile to "Book1"
end tell


どこがいけないでしょうか、
それともシート名の変更は無理ですか?
542名称未設定:2008/05/28(水) 13:45:08 ID:NTu42TFH0
>>541
2008だけど、これで変えられたよ?
tell application "Microsoft Excel"
tell document 1
set name of active sheet to "test"
end tell
end tell
543542:2008/05/28(水) 13:56:39 ID:NTu42TFH0
脊椎反射でカキコしてしまった。もっと手前の状況かな?
まずは、"applescript アプリケーションを指定してファイルを開く" とかでぐぐってごらん。
ファイルが開けられるようになったら、次はスクリプトエディタの用語説明でエクセルを指定してsheetで検索。
中にいろんなこと書いてあるから、いろいろ試してみる。
544541:2008/05/28(水) 14:52:09 ID:MysNeaZx0
>>542
できました!
ありがとうございます、本当に助かりました!

今度はこのシート名を変更したファイルを保存、閉じる、
というところまで全部スクリプトでやりたいので
ご教示いただいたやり方で検索して自己解決してみます。

本当にありがとうございました。
545541:2008/05/28(水) 17:12:46 ID:MysNeaZx0
何度もすみません‥‥‥
ファイルを閉じたいのですが、


tell application "Finder"
set thefile to item "Book1.xls" in disk "NO NAME"
end tell
tell application "Microsoft Excel"
open thefile
set name of active sheet to "Book1"
close thefile saving yes
end tell

とやると

"Book1.xls" of disk "NO NAME" は close メッセージを認識できません。

と言われてしまいます。

何が間違ってるでしょうか?

子供のお迎えに行かなきゃならないので
そろそろ退社いたします。
どなたかご教示いただければ幸いでございます。

546542:2008/05/28(水) 18:09:20 ID:NTu42TFH0
closeって、applicationもdocumentもsheetも受け取ってくれないね。用語説明不親切だ。

tell application "Microsoft Excel"
set hoge to properties
set name of active sheet to "test"
save
close active window
end tell
547名称未設定:2008/05/28(水) 23:08:19 ID:QBUfBFj20
iTunesをストップ状態にしておいて,以下のスクリプトを実行.

tell application "iTunes"
set a to player state
end tell
set a to a as Unicode text
if a = "stopped" then
beep 3
end if

スクリプトエディタ上から実行するとちゃんとBEEP音がするのに,
アプリケーション化して起動させるとBEEP音が出ない…….
アプリ化すると,別な値が返ってくるみたい.for iTunes 7.6.2 (9)
548名称未設定:2008/05/29(木) 01:08:41 ID:UNoYS8NF0
スクリプト作成で疲れた時は,いつもこのアプリを動かして遊んでます.
わかる人にはわかる,FLASH版ぽいゴルゴ.

www.gcug.net/as/golgo.zip
549名称未設定:2008/05/29(木) 03:43:47 ID:6CYEe+Ep0
excelって返り値のクラスが謎だらけでスクリプトを組みにくい
550541:2008/05/29(木) 08:58:31 ID:cl3xm2du0
>>542
おはようございます、レスありがとうございます。
これから記述してテストしてみるところです。
取り急ぎお礼まで。
本当に助かりました!
551541:2008/05/29(木) 11:27:55 ID:cl3xm2du0
>>542
スクリプトを書いてテストしてみました。
見事、思い通りに動かすことができて感激です。
本当に感謝いたします。
ありがとうございました!
552542:2008/05/30(金) 06:04:58 ID:ycnuqgis0
おめでとう。
お勉強なら次は、フロッピの中の複数のエクセルファイルを自動で順次開けて、
ファイル名と同じ名前をシートに付けて、ハードディスクの指定フォルダに保存とか。。。なんだろうなんけど。
お仕事だし一回やったら終わりかな?ご苦労様でしたのだ。

送迎はなくなって久しいけど、毎日弁当作成じゃ。こっちのがきついぞ?
553名称未設定:2008/05/31(土) 22:44:27 ID:B8JufaMJ0
これは難問だ。
特に,フロッピの部分は,現行モデルですべて廃止されているだけに超難問だ。
554名称未設定:2008/06/01(日) 02:15:15 ID:xFBQ5pF70
>>553
USB対応のFDドライブつなげるだけやん。
555名称未設定:2008/06/01(日) 04:36:46 ID:DDMywfa/0
まあ、持ってる人はね。
初めて買った7300には付いてたなあ。
556名称未設定:2008/06/01(日) 07:40:40 ID:0jp0oo+e0
すみません、初心者の質問で恐縮なのですが、
日付の計算はどう書けばよいのですか?
ググったところ、day of ((current date) +100*days)というのはあったのですが、
今日からではなく、例えば6/10の100日後といった場合の書き方がわかりません。
初歩的過ぎて載ってないのだと思いますが、どうぞよろしくお願いいたします。
557名称未設定:2008/06/01(日) 08:33:24 ID:wIZQtaZO0
date "2008年6月10日"
558556:2008/06/01(日) 10:06:18 ID:q/bze7sW0
>>557
どうもありがとうございました。
日本語でおkとは思いもよりませんでした。勉強します。
559名称未設定:2008/06/01(日) 10:08:25 ID:0QmhM4G20
current date
だけ実行すると,きちんとした書式でウインドウの結果タブに表示される。
560556:2008/06/01(日) 10:18:01 ID:q/bze7sW0
>>559
目から鱗です。ありがとうございます。
561名称未設定:2008/06/01(日) 12:04:59 ID:ArpmDwqb0
たとえば date "6/10"ってかいてコンパイルすると、いろいろ補われた形になります。
562556:2008/06/01(日) 12:55:11 ID:bEVJyS/c0
>>561
またもや目から鱗が。ありがとうございます。
昔Appleのサイトにこういう初心者向けのチュートリアルがあったはずなんですが見つからず。。
地道に頑張ってみます。
563名称未設定:2008/06/02(月) 22:46:58 ID:q97JbuTK0
システム初期設定の日付の書式に依存する,環境依存の書式なので気をつけてね。
実体としての日付オブジェクトは同じなんだけど,コンパイル済みスクリプトを開くと,システムの環境で書式が変わる。

564名称未設定:2008/06/03(火) 23:45:01 ID:s2jMl+RZ0
デスクトップ上にフォルダ1というフォルダを作成し,その中にフォルダ2を作ります.
それで以下のスクリプトを実行.

tell application "Finder"
set dPath to (choose folder)
set rPath to (every folder of (dPath)) as alias
end tell

Tiger使ってる方,日本語のフォルダ名が正常に取得できてますか?
565名称未設定:2008/06/03(火) 23:59:33 ID:bupaGeAM0
>>564
根本的に解ってないし。これバグでしょ?すごいでしょ俺って天才?ってわけ?
なにがTigerなわけ?ま、書き方は機に食わないけど真面目に勉強の人の可能性も0.0001%
まず初心者本読むかググるかしろ。as 消して rPath を class で見てみな。
566名称未設定:2008/06/04(水) 00:04:25 ID:29QfKesx0
なんでそんなにつっかかるんだろう?何か悪いことしたかな?
質問気に入らなかったら,ごめんね.スルーして下さいな.
567名称未設定:2008/06/04(水) 00:15:58 ID:mrNfJXEH0
>>564
ごめん。プログラムうまく動かなくて気が立ってた。最低だ。
set rPath to every folder of dPath -->括弧つけ過ぎ、よけいに読みにくいかも。
set hoge to item 1 of rPath as alias
こう書いてみて。一つのオブジェクトでもListだよ?いつからだったかな?Xから?最初から?
568名称未設定:2008/06/04(水) 00:17:01 ID:mrNfJXEH0
>566
遅かった。本当にごめんなさい。
569名称未設定:2008/06/04(水) 00:29:26 ID:NTYEfbHB0
>>564
フォルダ1の中に複数のフォルダがあって
もしその複数のフォルダ全てのパスをリストで一気に取得したかったら
as alias → as alias list
にするといいよ。

ちょっと上で出てるけど
570名称未設定:2008/06/04(水) 00:29:41 ID:29QfKesx0
>>568
安易に質問しちゃったのが,間違いでした.すみません.
下のサイトの記事を読んでて,Tigerではそういうこともあるのかな?って普通に疑問でした.
ttp://www.m-m-j.com/2008/06/tiger_applescript/
自分はLeopardなので,確かめようがなくてここにパパッとに書いてしまったのがまずかったですね.

書いていただいたsourceは参考にさせていただきます.ありがとうございました.
571名称未設定:2008/06/04(水) 00:35:06 ID:29QfKesx0
>>568
いえいえ,中途半端にわかったつもりでいる自分もかなり痛いです.ほんとすみません.

>>569
はい.いろいろ試してみます.
572565:2008/06/04(水) 02:21:21 ID:mrNfJXEH0
>>564 許してくれるんか。良いやつだな、ありがとうなのだ。
>570 のリンクは濁点とかの作り方でUnicodeで正規に規定されている2種類で、appleが選んだのが間違いみたく言われてるやつだと思う。*要出典(2chねるは正確な情報を求めています、推測に基づいた記述は.......)
ま、現実今はサポートしてないんだしMSの動きを待つべきだったのかも。

UTF-8以外でも、UTF-16以外のエンコードを間違いなく判断することは、OSやプログラムでは出来ないんよ(私では、だな)
推測してダイアログに表示して、これでいいですか?くらい。読めなかったら変えてくださいよ?って。

エンコーディングはお約束の話題。ここにも過去ログにも話題たっぷり、解決法たっぷり。
LANでWinや9から取ったファイルや、Unarchiveの中身のファイル名。そして、それがFinder上で見た目変じゃなくても。
本当に化けたらどうしようもなくなるんだけど、濁点が離れたくらいなら、iconvしたらよい。ちょい上、もしくは前スレ参照。
うし、休憩終わり。がんばろ。いや、寝るべきか。
573名称未設定:2008/06/04(水) 04:28:34 ID:qqf0EFu30
何このツンデレな流れw
574名称未設定:2008/06/04(水) 11:59:57 ID:ZNKxSWHY0
>>512の文章をそのまま使ってつくってみたのですが再帰処理が無限につづいてしまいます
止めるのはどうすればいいでしょう
選択フォルダ以下のインデザインとクォークファイルのエイリアスを決まったフォルダに作るスクリプトなのです。

set folder0 to (choose folder)

my do_something(folder0)

to do_something(thefolder)
tell application "Finder"
set theList to files of thefolder
repeat with aFile in theList -- ファイルに関する処理
set theAliasFolder to alias "エイリアスを保存するフォルダ:"
make new alias file at theAliasFolder to (files of thefolder whose file type = "InDd")
make new alias file at theAliasFolder to (files of thefolder whose file type = "IDd3")
make new alias file at theAliasFolder to (files of thefolder whose file type = "IDd4")
make new alias file at theAliasFolder to (files of thefolder whose file type = "Xdoc")
end repeat
set theList to folders of thefolder
repeat with aFolder in theList -- フォルダに関する処理
my do_something(aFolder) -- 再帰!
end repeat
end tell
end do_something
575名称未設定:2008/06/04(水) 22:35:32 ID:mrNfJXEH0
>>574
いきなり本番で動かさずに、3階層くらいのフォルダをつくって試してみる。
次に処理したいフォルダをファインダでカラム表示で開けて行き、有限かどうかの確認。
無限ならそのフォルダのシンボリックを切る。
有限なのにループするなら9環境に詳しい人の答えを待つ。
576名称未設定:2008/06/05(木) 03:30:57 ID:C/EDE7DB0
上の弟にツンデレを聞きました。(ある程度解っていたつもり。シャナ1は見てました。2は途中でやめたけど。原作はもち全部持っています。10日は本編じゃなくてS2なんだ。悲しい)
らき☆すた -->touchだと一発変換だと自慢しておりましたが。
漫画と動画かがみん!!!特集(自作)の編集アニメを見さされました。あんなのが友達に居たらプロポーズします。私は可愛くないです。本当に噛み付いただけです。チラ裏終わり。

>>575 の追加(カキコ読み直して心配になりました)
>>510さんだよね?>512 さんがきてくれるのを待つのが一番良いんだろうけど、
もしも、サーバに対してやろうとしてるのなら、で、会社なら。システム管理者さんにまず聞いてからやって。
で、>516 ので出来てるんだったら、今回はお勉強だよね?システム管理者さんに黙って絶対にサーバいじったらだめ。
これだけです。おやすみなさいませ。
577名称未設定:2008/06/05(木) 17:11:01 ID:FI8e5Pv80
510です
環境はOS10.3.8でサー場じゃなくて自分のパソコンの中での処理です
原文をコピーして付け足しただけなので
どの命令がどうなってんのかさっぱりです
578名称未設定:2008/06/06(金) 01:28:13 ID:OQdXiy1r0
>>574
>>512そのままだとどうなりますか?
それも無限ループしているようなら、表示されるダイアログがどうなってるか調べてみて。
579名称未設定:2008/06/07(土) 14:11:22 ID:PimN9+Kf0
MacBook&10.5.3です。
メニューにある
AirMacを入にする/切にする
をスクリプトで制御するにはどうすればいいでしょうか?
580名称未設定:2008/06/07(土) 17:06:24 ID:txBFZrnk0
>>579
メニューの「ログインウインドウ...」を選択するスクリプト
ヒントになるかと

tell application "System Events"
tell process "SystemUIServer"
tell first menu bar
set menuExtraList to every menu bar item
repeat with aExtra in menuExtraList
try
tell aExtra
click
try
tell front menu
tell menu item "ログインウインドウ..." to click
return 0
end tell
on error
click
end try
end tell
end try
end repeat
end tell
end tell
beep
end tell
581名称未設定:2008/06/07(土) 17:07:42 ID:txBFZrnk0
↑って貼ってみたけど、昔に作ったからもっと効率良い方法あるかも
582名称未設定:2008/06/07(土) 19:10:04 ID:VGcTvXMJ0
>>579
AirMac AppleScriptでググったら一発目に出てきたぞ。
ちなみに俺は試してないのであしからず。
http://d.hatena.ne.jp/zariganitosh/20080317/1205744874
583579:2008/06/08(日) 17:04:44 ID:aD7XR1GO0
有益な情報ありがとうございました。
おかげさまで解決しました!
584名称未設定:2008/06/10(火) 04:28:34 ID:hKgbzJnR0

特定のフォルダ(「オリジナル」)の中身(ai、swf、wmp、psdなど)を開いた時、
「これはオリジナルです」
というダイアログを出すにはどうしたら良いでしょうか…?
ついでに、開いた書類の名前をリストにして書き出す…なんて
出来るのでしょうか?

585名称未設定:2008/06/10(火) 05:07:51 ID:qmJ2wx1F0
>>584
Finderで開いた時は無理、スクリプトから開いた時なら可能。
586541:2008/06/10(火) 16:35:48 ID:k2+dChcz0
またお伺いしました。

>>542
その節は大変お世話になりました。
通りがかりでその後スレも拝見せず失礼いたしました。
あれからシステムはうまく動いて
実際にシステムを使ってる方からも好評をいただきまして
感謝が絶えません。

今日は一般的な質問ですが、
スクリプトエディタの「用語説明を開く…」で
希望のアプリケーションが表示されなかった場合は
そのアプリケーションはAppleScriptを使って動かせない、
という解釈になりますよね?

AppleScriptを使って「StuffIt Deluxe」を動かしたかったのですが、
このメニューで「StuffIt Deluxe」が出てこないので
悲しいです。

「無理」の一言で構いませんので
どなたか教えてくださいませ。
587541:2008/06/10(火) 16:46:59 ID:k2+dChcz0
たびたびすみません。
先走って書き込みしてしまいましたが
StuffIt Deluxe のマニュアルを見てみたら
AppleScriptを使えるみたいですね、
もうちょっと勉強してからご質問することにします。
スレ汚し失礼しました。

お弁当毎日は激務ですね。
私も毎年長期休暇(夏休とか)が恐怖です。



588541:2008/06/10(火) 17:16:54 ID:k2+dChcz0
三度もすみません。
やっぱりダメでした。

アプリケーションのバージョンも書かずに書き込みしてしまいましたが、
SfuffItのバージョンは8.0.2、
スクリプトメニューから「スクリプト用語説明を開く」をやったら
AppleScriptに「アプリケーションの用語説明がありません」
と言われてしまいました。

見ていたマニュアルはバージョン7.0のものでした。

私がダメでした。

589名称未設定:2008/06/10(火) 20:05:01 ID:Qp+mL8sc0
>>588
StuffIt Deluxeは持ってないな。
Expander12.0.1なら用語説明ついてるし、解くのは書いた記憶もある。
たぶんDeluxeでも今のだといけるんじゃ?
590名称未設定:2008/06/10(火) 22:31:26 ID:ieMMJdk90
Expanderは12.0.2が出ている。
591541:2008/06/11(水) 11:08:29 ID:cV13gNos0
おはようございます。

ずいぶん古いアプリを使っちゃってたみたいです、
上司に相談してアップグレードしてみます。
バージョンがかなり開いちゃったから新規購入かも。

いずれにしても費用対効果がネックになりそうです。
(新しいソフト買ってまで自動化するような作業か?と自問自答)

592名称未設定:2008/06/11(水) 11:30:56 ID:Tp3Rj5m30
>>591
StuffIt特有の特別な機能を使っていないならzipを使ったら?
汎用性高いし、標準機能だし、ASとかASS使ってshellscript書いたらお手軽かつ超高機能に変身。
勉強にもなるし、自動化する価値ありだと思うよ?
593541:2008/06/11(水) 14:06:49 ID:cV13gNos0
実はですね、やりたいことが

ファイルメーカーで作った郵便番号のデータベースがある

日本郵便のサイトからCSV形式の郵便番号データをダウンロードできるので、
これをダウンロード
(ダウンロードしたファイルは圧縮ファイル(lzh))

このファイル↑の解凍とファイルメーカーへのインポートを
ファイルメーカーのスクリプトでおこないたい

郵便番号データは適期的にアップデートされるので、
ダウンロード&解凍&インポートをファイルメーカーのボタンひとつでやりたい

なんですけど、
つまりダウンロードしたlzhファイルの解凍を
AppleScriptでできるのであれば
ソフトはなんでもいいと思ってます。

594541:2008/06/11(水) 14:59:39 ID:cV13gNos0
連続カキコすみません。
StuffIt Expander 10.0をダウンロードして
用語説明を見てみたら「expand」とあったので、
さっそく試してみました。

tell application "StuffIt Expander"
activate
expand "Macintosh HD/User/hoge/desktop/hoge.lzh" to "Macintosh HD/User/hoge/desktop/hoge.csv"
end tell

とやったのですが
うまく動きません。

つまりデスクトップにダウンロードされた「hoge.lzh」を解凍したいのですが、
なにか文が足りないんでしょうか?

595名称未設定:2008/06/11(水) 15:07:45 ID:zevGEtDT0
>>594
activateってtellの前に入れるものなんじゃね?
596541:2008/06/11(水) 15:22:00 ID:cV13gNos0
>>594

入れ替えてみました。
StuffIt Expanderに「接続が無効」と言われます。
解凍したいファイル「hoge.lzh」と
解凍した先のファイル「hoge.csv」の
接続「to」のことでしょうか。

作業しながらのカキコで失礼します、
用語説明を見ると
「to」の次に記述するのは「optional destination to expand into」とあるので
解凍したファイルの保存先を書かなきゃいけなかったんでしょうか??

もうちょっと試行錯誤してみます。
597名称未設定:2008/06/11(水) 17:20:26 ID:Oc91wg6J0
>>596
転記ミスかも知れないがいろいろおかしいぞ。

正解は

tell application "StuffIt Expander"
activate
expand "/Users/hoge/Desktop/hoge.lzh"
end tell
598名称未設定:2008/06/12(木) 02:32:26 ID:0iF54XuS0
>>591
>いずれにしても費用対効果がネックになりそうです。
ごめん、これじゃ何も書けんわ。じゃ、わたしらなんで無償で答えてるの????
わたしら、あなたにお金請求した???

人が無意味に(同じことの繰り返し)の作業してるのなら、
もっとクリエイティブ(言葉にすると笑える)に専念出来るようにがんばってるのに。
それに価値を認められないなら。

経営者云々じゃなく、あなたが思ったんだよね?こっちが道化だな。
ググるスキル無いからここにきたんでしょ?かえれよ!!!!
599名称未設定:2008/06/12(木) 07:11:33 ID:NEr7m8TZ0
>>598
どうしたの?
何か仕事でつらいことでもあったの?
600541:2008/06/12(木) 09:26:55 ID:841c50bR0
>>598
すみません、大変不快な思いをさせてしまいました。
そんなつもりじゃなかったんですが;;


>>597
ありがとうございます。
それですと
The destination "MacOS" is missing or unavailable.
Please select another destination.
と言われてしまうので、
たぶん「to」を使って解凍先を書いてあげないとダメなのかな?って思いました。




601名称未設定:2008/06/12(木) 11:37:12 ID:VpDfdDWW0
aliasパスで書かないとだめなんじゃないの、推測でしかないけど。

まあ541の人は安易に書き込まずに基本から調べて
1日2日じっくり考えてスクリプト書いた方がいいと思うよ。
602541:2008/06/12(木) 11:38:56 ID:841c50bR0
全然話が違うんですけど、
みなさんはどこでどうやってAppleScriptを習得されてるんですか?

ネットを検索しても日本語のリファレンスというかマニュアルがほとんどないし、
今、手元には「AppleScript Programming for MacOS X」がありますが、
Finderの操作などはこれを見ながら四苦八苦してどうにかやってますが
アプリケーションを動かすとなるともう全然お手上げです。
イベントログで返ってきたエラーの内容もよく理解できなくて。

ちなみに私自身はプログラミングの経験は皆無で
FileMakerをかじってる程度です。
603名称未設定:2008/06/12(木) 13:31:11 ID:nOJK8vdO0
AppleScript PARKのIntroductionを見て、基本を押さえる。
用語説明やサンプルスクリプトを見ながら、自分で試行錯誤してみる。
発表まとめ等を見て、その発想はなかったわと思いながら参考にする。
604541:2008/06/12(木) 15:40:47 ID:841c50bR0
>>601
そうですね、おっしゃるとおりだと思います。
自身の勉強も含めてもう少し自力で取り組みます。

>>603
テンプレにしっかり目を通してきます!
605名称未設定:2008/06/13(金) 00:18:51 ID:oA2BwLiP0
>>541
tell application "StuffIt Expander"
activate
expand "Macintosh HD:Users:ユーザ名:Desktop:1.lzh"
end tell

expandの後は,圧縮ファイルの場所でいいようです.
ver.7でも最新のver.12でも,書き方が同じなのを確認しました.

> 実際にシステムを使ってる方からも好評をいただきまして
感謝されるとやる気がでますね.自分もそれが作成の原動力の一つになってます.
606541:2008/06/13(金) 15:17:02 ID:0j8Vh1S20
できました。
ディレクトリの区切りを「/」ではなくて「:」にするべきだったみたいです。
「/」ではエラーばっかり返ってきて全然動きませんでした。
ご回答くださった皆様、本当にありがとうございました。

目的の圧縮ファイルをスクリプトエディタのウィンドウにドラッグ&ドロップすると
勝手にディレクトリが「/」になるので、
もう思い込みで「ここはいじっちゃいけないところだ」
とかたくなに信じて疑いませんでした。
コロンに直して実行したら簡単に動いて涙が出そうでした。

これからも時間がある限りAppleScriptを勉強したいと思います。
自動化できていろいろ楽しいですし。


607541:2008/06/13(金) 16:39:29 ID:0j8Vh1S20
何度もすみません。

ちょっと疑問に思ったのですが、
OSのバージョンやAppleScriptのバージョンで
パスの区切りは「/」になったり「:」になったりするものなんでしょうか。
ここでも回答くださった方によってパスの区切りの記述が異なってますよね。

当方、
OS10.4.11
スクリプトエディタ2.1.1

で「:」で正常に動作します。
608名称未設定:2008/06/13(金) 17:17:23 ID:I4Q++sjq0
AppleScriptネイティブは":"、"/"はUNIXスタイル。
詳しくは "AppleScript POSIX"でgoogleってみて。
609名称未設定:2008/06/14(土) 02:49:45 ID:0OxvvzDe0
AppleScriptの、てゆうかMacの従来形式やね
"Macintosh HD:Users:hoge:desktop:hoge.lzh"

↑をPOSIX形式で表現するとこうなる
"/Users/hoge/desktop/hoge.lzh"
起動ボリュームではない場合はこんな感じ
"/Volumes/Macintosh HD/Users/hoge/desktop/hoge.lzh"


前者は概ねどんなアプリでも使えるけど、
do shell scriptなど使った場合のシェルコマンドのパラメータには、
そのままだと使えない

後者はSystem Eventsやシェルコマンドにはそのまま使えるけど、
Finderとかではちょっと使い辛い


POSIX path of 〜 とか 〜 as POSIX file 使って相互変換可能なので、
うまく使い分けるのがコツ
ファイルをスクリプトエディタやターミナルにドロップすると、
それぞれの形式でのパスが見れるので参考になるかと
610名称未設定:2008/06/15(日) 03:01:28 ID:s25A5nQk0
>>609について、具体的な変換方法の記述が分かるページ
Travellers Tale: POSIX 形式の path と Mac 従来の path の変換
http://homepage.mac.com/travellers/blog/C746134881/E613669364/index.html
611名称未設定:2008/06/15(日) 11:13:13 ID:NFKtW5FZ0
System EventsやShellはUNIXの仕様なのでPOSIX形式,Finderは旧来のMac形式を使う。
612名称未設定:2008/06/16(月) 02:53:55 ID:U9TV9n0u0
System Eventsは別にUNIX仕様って事でもなくない?
新しいからどちらでも使えるってだけで
613名称未設定:2008/06/16(月) 07:30:29 ID:+3HVOAdZ0
UNIXなわけねぇだろ
614名称未設定:2008/06/17(火) 10:32:02 ID:NlOEc8i70
acrobat professional 7で
get name of every bookmarkを実行すると文字化けするのですが
回避方法はないのでしょうか?
615名称未設定:2008/06/19(木) 00:13:16 ID:669m0ony0
ちょっとわからないので教えていただきたいのですが,

display dialog "\"アップルスクリプト\"" --(ここでは\は全角ですが実際は半角)

\" ではなく \ で書かないと,10.5ではエラーになってしまうのですが,
10.4Tigerはこの書き方で問題なく引用府が表示されますでしょうか?
616名称未設定:2008/06/19(木) 00:14:40 ID:669m0ony0
上の記事

>\" ではなく を
>¥" ではなく に

訂正します.
617名称未設定:2008/06/19(木) 00:56:55 ID:IZOpjVdP0
>>615
問題なく表示される。

もっと詳しく言うと、スクリプトエディタ上で
¥のキーを押下した時の挙動が10.4と10.5で違う。(以下全て全角表記)

10.4で¥キーを押下した時、入力される文字は¥。
ただし、コンパイルを行うと\に変換される。
10.5で¥キーを押下した時、入力される文字は\。

実験環境は下記の通り。
10.4.11…PowerBook G4 1GHz Combo(PPC)
10.5.3...MacBook 2.1GHz Combo(Intel)
スクリプトエディタのフォントは両方ともOsaka等幅。
618名称未設定:2008/06/19(木) 09:54:31 ID:B5DEs8GO0
>>617
コンパイルすれば,\に変換されるということですね.
わかりました.どうもありがとうございました.

AppleScriptはほんと面白いですね.これからもずっとハマりそう.
619名称未設定:2008/06/19(木) 10:33:18 ID:GHQPXkQ50
10.4 intel で
display dialog "¥\" と書いてすぐに実行すると、
ちゃんと実行されてダイアログに\と出る。
ところがコンパイルすると、
"""があるべきところですが云々のエラーが出る。

10.4でもppcでコンパイルしたときは大丈夫だったんだがなあ。
620名称未設定:2008/06/19(木) 22:44:46 ID:6coFj/7V0
Applescript初心者です。
tell application "Finder"
set i to icon of ("/Developer" as POSIX file)
end tell
「Finder でエラーが起きました:&1 を取り出すことはできません。」
とエラーが出てしまうのですが、icon of ではアイコンを取り出すことはできないのでしょうか。
621名称未設定:2008/06/20(金) 19:46:47 ID:Ax5M1vkQ0
>>620
実装されてないから、取り出すことはできない、らしい。
http://www.tonbi.jp/AppleScript/dic/FinderX/Object/index.html

上記のページがどのバージョンを指すか知らないが、
OSは10.5.3、AppleScriptのバージョンは2.0.1でも無理だった。
622名称未設定:2008/06/21(土) 21:23:34 ID:oK9e+ku80
漢字Talk7.5の頃はできたとおもうけど。


623名称未設定:2008/06/22(日) 11:37:53 ID:iqRqcCt80
itemの中にiconがあるな
624名称未設定:2008/06/22(日) 11:49:51 ID:8zmm63UC0
iTunesスレで紹介されていたものを試してみたのですが
set a to properties of audio CD playlist 1 of (source 1 where kind is audio CD)
としたところディスクリプタ・タイプが一致しませんというエラーが出ました。
OS9での知識ですがproperties ofでたいてい属性が取得できたと記憶していて
試しにFilemakerを対象にset a to (properties of cell 1 of current record)としてみたら
エラーは出ないけど何も帰ってきませんでした。
それぞれname of 等だとちゃんと値が帰ってきます。
どこがいけないのでしょうか。
OS X 10.4.9 / iTunes 7.2
625名称未設定:2008/06/22(日) 17:55:06 ID:vTAPVBIg0
Script Debuggerで見てみると、iTunes7.6.2には
propertiesってpropertyは無いみたいだね。
普通はpropertiesというpropertyがある。
だからじゃないかな。

こういう場合propertyのリストってどうやって取るんだろうね。
every propertyとかはダメ。
626名称未設定:2008/06/22(日) 18:14:48 ID:0Fs+nSDs0
>>621
OSはMac OS 10.5.3です。
実装されてないんですか…

>>622
裏覚えですがOS 8ではApplescriptからアイコンいじれてた気がします。

>>623
スクリプトエディタのライブラリ見てみました。
icon family n : (NOT AVAILABLE YET) A family of icons
の「NOT AVAILABLE YET」が、実装されてないという意味なのかな…
627名称未設定:2008/06/22(日) 19:31:55 ID:BbRlGTTz0
>>622,626
名著「AppleScriptリファレンス」を見る限り、確かに使えないようなことは書いてない。
ただAppleScriptリファレンスはMacOS 9までが前提。

ここからは俺の予想なんだが、>>621のページを見るとアイコンだけでなくラベルも
実装されてないことになってる。
これはきっと、OS 9からOS Xへ移行したときに、OS的に扱い方が変わってしまった機能が
FinderのAppleScriptの機能部へ、きちんと実装されなかったんじゃないかな。
ラベルはOS X当初では存在しなかったし、アイコン情報を保持するリソースフォークの
扱いも変わってしまったし。

>>626
ちなみに裏覚えじゃなく、うろ覚えな。
http://www.tt.rim.or.jp/~rudyard/hirago014.html
628名称未設定:2008/06/23(月) 16:37:40 ID:eO288o+20
ユニバーサルアクセスのズームってAppleScriptでどう書くの?
629628:2008/06/23(月) 17:15:32 ID:eO288o+20
自己レスします。
やり方わかった!
http://lists.apple.com/archives/applescript-users/2008/Jun/msg00089.html
630名称未設定:2008/06/25(水) 16:36:22 ID:JgH7rFNa0
OS10.4.11

デスクトップのサイズを取得したいんですが、
メニューバーとdockの高さを除いたものを得ることは出来ますでしょうか?

tell application "Finder"
bounds of the window of the desktop
end tell
631名称未設定:2008/06/25(水) 17:10:05 ID:2l/hTG0V0
>>630
ウィンドウ最大化ならサンプルありそうだが、探したわけ?
一応メニューバーの高さは22px、dockは人によって違うから自分で計れ。
632名称未設定:2008/06/25(水) 20:50:38 ID:bw3IAeYI0
>>631
ありがとうございます。探したものを使っていたんですが、
FinderだとメニューバーとDockの裏まで潜って最大化されるもので。

tell application "Finder"
set menuHight to 22
set displayBounds to bounds of window of desktop
set displayPosition to {item 1 of displayBounds, (item 2 of displayBounds) + menuHight}
set displaySize to {item 3 of displayBounds, (item 4 of displayBounds) - menuHight}
end tell

メニューバはこれでいいんでしょうか?

Dockなんですがあらかじめサイズを指定しなくても
「現在のDockの高さ」というようなコマンドはないのでしょうか?
633名称未設定:2008/06/25(水) 20:57:50 ID:rPBnauZg0
ググレカス
http://www.google.com/search?rls=en-us&q=how+to+get+dock+height+applescript

tell application "System Events"
set dockApp to (application process "Dock")
set sizeDock to size of UI element 1 of dockApp
get sizeDock
end tell
634名称未設定:2008/06/25(水) 21:29:34 ID:MmbMMPTz0
さすがグーグル先生だな
635名称未設定:2008/06/25(水) 22:13:54 ID:bw3IAeYI0
>>633
ありがとうございます!
ここまで教えてもらってアレですが僕には無理でした。

本当にありがとうございました。
636名称未設定:2008/06/25(水) 22:42:17 ID:kHae/WsW0
        ∧∧
       ヽ(・ω・)/   ズコー
      \(.\ ノ
    、ハ,,、  ̄
637名称未設定:2008/06/26(木) 00:53:10 ID:gYLVV4zS0
>>635
いつものおまじないが抜けてると見た>>197>>326

>>633の内容は合ってるはず
sizeDock にDockの幅と高さの値がリスト形式で代入される

Dockの位置が左右の場合とか考えると、
もっとややこしくなるけど、それでもやれなくはない
638名称未設定:2008/06/27(金) 08:33:36 ID:NkF9VXyG0
スクリーンショット撮ってphotoshop辺りで計れば良いんじゃないの?
639名称未設定:2008/06/27(金) 21:02:24 ID:Jvc8Ftqq0
そんな話では無いと思うけど...
適当なアプリを起動してWindowのサイズを取得した方が手っ取り早い。
tell application "TextEdit"
set zoomed of front window to true
set theDesktopSize to bounds of front window
quit
end tell
theDesktopSize
640630:2008/07/01(火) 21:56:11 ID:h63tRPEZ0
諦めてたところ、僕でもいじれそうなサンプル発見しました。
結局こうなっちゃってすいません。
皆さん、そしてAll Aboutの人ありがとう。

全然いらないかもしれませんが、嬉しかったので貼っておきます。
元のウィンドウサイズと切り替えられれば更に嬉しかったんですが、それでもかなり便利になりました。

tell application "System Events"
set frontmost of it to false
set aApp to (name of every process whose frontmost is true) as text
tell process aApp
tell window 1
set position to {0, 22}
set size to {1024, 768}
end tell
end tell
end tell
641名称未設定:2008/07/05(土) 02:20:18 ID:6zvA66Ej0
apple scriptで現在の処理内容をモードレスに通知する方法はありますか?
調べてはみたのですがsayでしゃべらせる位しか思いつかない、、、

具体的には下のスクリプトで使いたいです
iTunesで選択したファイルをライブラリに取り込まずにmp3にしているのですが
エンコードしているファイル名を表示させたいのです


tell application "iTunes"
set seltrack to a reference to selection
repeat with x in seltrack
set theTitle to name of x as text
set thePath to location of x
set posixPath to POSIX path of thePath
do shell script "/opt/local/bin/faad ¥"" & posixPath & "¥" -o ~/tmp.wav"
do shell script "/opt/local/bin/lame ~/tmp.wav ~/Music/mp3/¥"" & theTitle & ".mp3¥""
do shell script "rm ~/tmp.wav"
end repeat
end tell
642名称未設定:2008/07/05(土) 03:36:13 ID:Zaxs/0FKP
>>641
自分も昔はsayで通知してたけど最近はGrowl使ってる。
643名称未設定:2008/07/05(土) 15:28:13 ID:xB46WlEm0
>>642
Growlをインストールして少しいじってみたら
やりたかったことがあっさりできてしまいました!
どうもありがとうございます
644名称未設定:2008/07/05(土) 15:31:19 ID:myMpay9q0
なにやったかくらいかいてけよな
ナレッジシェアだぜ
645名称未設定:2008/07/05(土) 18:56:40 ID:GqXQoiLi0
643じゃないけど面白そうなので調べてみた。

GrowlはAppleScriptで操作が可能。
ただし、Growlを使うにはGrowlへの登録が必要。
この登録もAppleScriptで行うことができる。
登録はregisterコマンド、通知はnotifyコマンドで行う。
それぞれのコマンドの説明は、GrowlHelperAppの用語説明を参照。
646名称未設定:2008/07/05(土) 19:06:28 ID:PhEo2TFy0
GrowlってOSXのNotificationを活用してるやつだよね
Growl経由でNotificationを受け取ったり
こっちから送ったり出来るって解釈であってる?
647名称未設定:2008/07/05(土) 19:39:02 ID:GqXQoiLi0
>>641
モードレスの意味を分かってないでしょ。
意味が分かってないなら、処理を止めずにって言えば良いのに。

おそらく>>641はdisplay dialogを使って処理内容を表示すると、
表示している間は処理が止まるから他の方法をさがしているのだと思う。

だが結論から言うと、残念ながらAppleScriptは基本的にアプリケーションモーダルにしか
処理することはできない。
つまり処理の間にsayコマンドを入れても、Macがしゃべっている間は
sayコマンドの後の処理は一切実行されてない。
648643:2008/07/05(土) 19:49:02 ID:GqXQoiLi0
>>646
AppleScriptでGrowlに対して出来ることは、メッセージの通知のみ。
つまりNotificationを受け取ったりはできない。
要は、display dialogで行っている表示を、Growlの通知ウインドウで表示する、
というような感じだと思う。

display dialogで行っている内容をGrowlで行う利点は、
(1) ダイアログの見栄え
(2) display dialogの場合、表示を行っている間(=表示が見えている間)は処理が止まる。
  しかし、Growlなら表示の処理はGrowl自体が行うため、通知処理が終われば
  すぐに次の処理を実行できる。
649名称未設定:2008/07/05(土) 22:21:12 ID:x8bEKZt70
そんなのやりかた次第だろ。
display dialog やsayでも,他のアプリにtellでやらせてtimeoutさせれば並行して処理を続けられる。
Growlからのイベントも受け取るようにすることはできるし,そのように設計されているはず。
ハンドラをそのように定義してやればよいだけ。
650名称未設定:2008/07/05(土) 22:26:06 ID:LNjwt7BJ0
>>649
>Growlからのイベントも受け取るようにすることはできるし,そのように設計されているはず。
>ハンドラをそのように定義してやればよいだけ。

にわかに信じがたいんだが、よければサンプルソースを提示してくれないだろうか
651643:2008/07/05(土) 23:47:23 ID:GqXQoiLi0
>>649
>他のアプリにtellでやらせて
並列で処理を走らせるならば、それが正解。
要は複数アプリケーション、別プロセスで行えばいいわけだ。
ただ、それはアプリケーションモーダルとは言わないだろ。
複数のアプリケーションを起動してもできなければ、それはシステムモーダルという言い方を
オレはしているはずだ。そこまでは言ってないだろ?
652641=643:2008/07/06(日) 01:17:45 ID:0HEYo/0C0
何故か同じ番号を名乗っている人がいます。間違えたのでしょうか?

>>647
確かにモードレスの意味は十分に理解できていないですね
sayはモーダルな動きをしているのには一応気づいていました
ただ他に要求をみたす方法が思いつかなかったので
AppleScriptがモーダルな動きしかしない話など参考になります。ありがとうございます
Growlからの通知を受け取る方法は是非知りたいので調べてみます
653641=643:2008/07/06(日) 01:18:30 ID:0HEYo/0C0
>>644
おっしゃる通りですね。拙いですが一応ソースをのせておきます。

tell application "iTunes"
set seltrack to a reference to selection
repeat with x in seltrack
set theTitle to name of x as text
set thePath to location of x
set thePath to POSIX path of thePath

tell application "GrowlHelperApp"
notify with name "Start encoding" title theTitle description theTitle & "をエンコーディング中" application name "aac2mp3"
end tell

do shell script "/opt/local/bin/faad ¥"" & thePath & "¥" -o ~/tmp.wav"
do shell script "/opt/local/bin/lame ~/tmp.wav ~/Music/mp3/¥"" & theTitle & ".mp3¥""
do shell script "rm ~/tmp.wav"
end repeat
tell application "GrowlHelperApp"
notify with name "End encoding" title "エンコーディング終了" description "エンコーディング終了" application name "aac2mp3"
end tell
end tell

エンコーディング前と後に通知を出しているだけですが
654641=643:2008/07/06(日) 01:19:40 ID:0HEYo/0C0
>>644
事前にGrowlに通知を登録しています。これは以下のコード。一度だけ実行すれば登録されます
tell application "GrowlHelperApp"
set the allNotificationsList to {"Start encoding", "End encoding"}

set the enabledNotificationsList to {"Start encoding"}

register as application "aac2pm3" all notifications allNotificationsList default notifications enabledNotificationsList icon of application "Script Editor"
end tell

以下のページを参考にしました
http://growl.info/documentation/applescript-support.php
655名称未設定:2008/07/06(日) 01:49:21 ID:baBzqqG70
643ではなくて645だった。
>643、ごめんなさい。
656名称未設定:2008/07/10(木) 14:31:23 ID:sX4Xq3NU0
iCal の「読み込み...」メニューに相当するコマンドを探したのですが,見つけられませんでした。
手動だと,ファイルの形式(ical, vcal, entourage)とカレンダーの指定があるので,

import FILE with vcs type into calendar 1

みたいなイメージを持っていたのですが,それらしきものありません。

AppleScript で「読み込み...」をするコマンドを教えて下さい。
657名称未設定:2008/07/11(金) 00:08:58 ID:omBran1R0
iTunes Ver.7.7,残念ながら >>495 のバグは修正されてないようですね.
658名称未設定:2008/07/11(金) 02:21:07 ID:Oc+AvbFv0
>>657
バグじゃないと思う。
Logicなんかでもフェーダーの値を指定してもその通りにならなかったりするし、
OSの内部的な仕様なのかも。
659名称未設定:2008/07/11(金) 10:34:49 ID:wRJUWaIN0
>>658
どうやらそうかもしれません.
radioSHARKというアプリもiTunesほどじゃないですけど,一致しない値がありました.

>>656
choose file命令でファイルを選択後に,open命令で指定したファイルを開く.
変換は自動でおこなわれるんじゃないかと思います.検証したわけじゃないので,
間違ってたらスルーして下さい.iCal独自の命令は……,見つけられませんでした.
660名称未設定:2008/07/11(金) 10:48:50 ID:JoU3vbuS0
そういうのは丸め誤差ってやつだと思うよ

内部的に64段階で持っているとか、中の実装がどうなっているかによって
切り捨てとかが行われてずれが出てくる。気にしないでいいかと。
661名称未設定:2008/07/11(金) 22:36:50 ID:TIuOv/F+0
iTunes で現在聞いている曲の情報を取得してテキストで保存したいと思っています。
同様の目的で作られた Now Playing.app というフリーソフトのパッケージの中にあった
applescript で目的の情報が取得できるということは分かったのですが、
それを「テキストで保存する」という部分の処理を、applescript でどう書けばいいのかが分かりません。
上記のスクリプトを少しだけ自分流に書き直したのが以下ですが、
tell application "iTunes"
return (name of current track) & " | " & (album of current track) & " | " & (artist of current track) & " | " & (genre of current track) & " | " & (comment of current track) & " | " & (rating of current track) & " | " as text
end tell
これで、例えば
"If The Moon Turns Green | The Great American Songbook | Carmen McRae | Jazz | | 0 | "
といった結果を得られるんですが、それをテキストデータとして保存したいのです。
どう書けばいいんでしょうか?
662名称未設定:2008/07/11(金) 22:58:55 ID:c4N9/MjY0
tell application "iTunes"
set a to (name of current track) & " | " & (album of current track) & " | " & (artist of current track) & " | " & (genre of current track) & " | " & (comment of current track) & " | " & (rating of current track) & " | " as text
do shell script "echo ¥"" & a & "¥" >> ~/test.txt"
end tell
663名称未設定:2008/07/11(金) 23:02:09 ID:lwoH+WgV0
>>662
quoted form of a
の方が安全かも
664名称未設定:2008/07/11(金) 23:04:40 ID:lwoH+WgV0
>>663
その場合\"は消します。
do shell script "echo " & quoted form of a & " >> ~/test.txt"
665名称未設定:2008/07/11(金) 23:11:19 ID:c4N9/MjY0
>>663,664
指摘Thx。生半可な知識でスマソ。
これ、改行の"¥¥n"みたいなのもちゃんと解釈してくれるのな。便利。
666名称未設定:2008/07/12(土) 02:19:24 ID:vMfJh/XM0
>>661
クリップボードに入れる。という手段が主流だと思うが。
667名称未設定:2008/07/12(土) 08:27:41 ID:Kb9lXwqu0
うーん、>>662-664 で教えていただいた通りに、
出力先を ~/test.txt にしても、ホームディレクトリに test.txt が落ちて来ません。
絶対パスにしないとダメなのかと思って、該当箇所を /Users/ore/test.txt にしてもダメ。
何が違うんでしょうか?

tell application "iTunes"
return (name of current track) & " | " & (album of current track) & " | " & (artist of current track) & " | " & (genre of current track) & " | " & (comment of current track) & " | " & (rating of current track) & " | " as text
do shell script "echo " & quoted form of a & " >> /Users/ore/test.txt"
end tell
668名称未設定:2008/07/12(土) 08:56:29 ID:TrpRARN6P
>>667
a が定義されてないじゃん。
>>662 をよく見てみなよ。
669名称未設定:2008/07/12(土) 10:01:34 ID:Kb9lXwqu0
>>668
return (name of current track) & " | " & (album of current track) & " | " & (artist of current track) & " | " & (genre of current track) & " | " & (comment of current track) & " | " & (rating of current track) & " | " as a
とするといい? んですかね?
670名称未設定:2008/07/12(土) 10:38:43 ID:Op3f98+K0
671名称未設定:2008/07/12(土) 11:31:29 ID:IFe2vODv0
>>662の2行目の出だし、>>661>>667とじっくり見比べるといい。
672名称未設定:2008/07/12(土) 22:03:34 ID:Kb9lXwqu0
>>670-671
うおお出来た。出来ました。どうもありがとうございました。

tell application "iTunes"
set a to (name of current track) & " | " & (album of current track) & " | " & (artist of current track) & " | " & (genre of current track) & " | " & (comment of current track) & " | " & (rating of current track) & " | " as text
do shell script "echo " & quoted form of a & " >> ~/tmp/currentTune.log"
end tell

これ、日本語に訳すと
a を to ( ... ) のテキストとしてセットし、
echo で a の形式を持ったものを quote した形で、
~/tmp/currentTune.log として出力、
を、iTunes に告げよ。
という意味ですよね。違うかな?
673名称未設定:2008/07/12(土) 22:11:34 ID:piSFo2Ks0
大体そんな感じでいいよ。
do shell scriptはiTunesに関係する機能ではないけど。
674名称未設定:2008/07/15(火) 23:39:53 ID:qKRJWUbr0
質問です。
「スリープしますか?」のダイアログを出して、何も操作しなければスリープ
というのを作ってますが、ボタンを押さないとスリープにならないのでご指導ください。

display dialog "スリープしますか?" buttons {"キャンセル", "OK"} default button 2 giving up after 10
if sAns = "OK" then
  tell application "System Events" to sleep
end if

display dialog "スリープしますか?" buttons {"キャンセル", "OK"} default button 2 giving up after 10
if gave up = true then
  tell application "System Events" to sleep
end if
if gave up = false then
  set sAns to button returned of result
  if sAns = "OK" then
    tell application "System Events" to sleep
  end if
end if
675名称未設定:2008/07/16(水) 00:13:20 ID:ulCt9Xk/0
>>674
ボタンの値を取得せねばならない。
set thebutton to button returned of (displaydialog ...)
とやればthebuttonにボタンがOKかキャンセルかが返る。
それからスリープするかしまいか判断。
676名称未設定:2008/07/16(水) 00:18:40 ID:bL773uDg0
set a to button returned of (display dialog "スリープしますか?" buttons {"キャンセル", "スリープしない"} default button 2 giving up after 10)
if a is "スリープしない" then return
tell application "System Events" to sleep

これじゃだめ?
677名称未設定:2008/07/16(水) 00:59:01 ID:EmzC9ETh0
>>675
>>674をコピペする時に、サンプル1で、button returnd of resultの行が抜けていました。
これで、ボタンを押さずに10秒待った時に、スリープに入らないので困ってます。
gave upが値を返すということで、作ったのが>>674サンプル2です。

>>676
普段スリープに入る時に、このスクリプトを使い、ボタンを押してスリープするので。
無動作でスリープさせたい時とは、サブ機の作業中にメイン機をスリープにしておきたい時です。
スクリプトを起動→ハード切替機でメインサブ切り替え→メイン機が勝手にスリープ
こんなかんじで。

別の話ですが、サブ機からメイン機をスリープすることもできると思いますが、
常時共有状態にしていないので、作ってません。
678名称未設定:2008/07/16(水) 01:28:20 ID:iJTjIcGR0
>>677
gave up は button returned と同じく display dialog の結果なので、
gave up of result って書かないと通じない

display dialog "スリープしますか?" buttons {"キャンセル", "OK"} default button 2 giving up after 10

これを単体で実行してボタン押したり10秒待ったりしてみれば、
どんな結果が返るのかわかると思う


とまぁそれはさておき
キャンセル押すとエラー扱いでどっちみち処理が停止するのだから

display dialog "スリープしますか?" default button 2 giving up after 10
tell application "System Events" to sleep

実はこれだけで事足りてる気がする
679名称未設定:2008/07/16(水) 02:58:45 ID:EmzC9ETh0
>>678
それでできました。
また、gave upのof resultを入れてなかったのと、else ifの存在を忘れていたのとで、
サンプル2を改良したらこれもできました。
こちらは後学のため説明欄に入れておきます。ありがとうございました。
680名称未設定:2008/07/17(木) 22:55:47 ID:yyu5rIq90
set aAns to (display dialog "スリープしますか?" buttons {"キャンセル", "OK"} default button 2 giving up after 10)

if gave up of aAns then
tell application "System Events" to sleep
else if text returned of aAns = "OK" then
tell application "System Events" to sleep
end if

681名称未設定:2008/07/19(土) 11:18:58 ID:vooFMv6a0
スレ違いだったら,スルーして下さい.
AppleScript Studioをはじめようと思ってますが,一番最初のところでつまずいてます.

MBPのLeopard環境なのですが, インストールDVD内にある Optional Installs.mpkg
そのままをインストールすればいいのか,それとも Xcode Tools フォルダ内にある
XcodeTools.mpkg のみをインストールすればよいのか判断できずに迷ってます.

AppleScript Studioを利用されている方,教えていただけませんか.
682681:2008/07/19(土) 13:20:28 ID:vooFMv6a0
わかりました.XcodeTools.mpkgをインストールすればいいみたいですね.
スレ汚しすみませんでした.
683名称未設定:2008/07/19(土) 15:52:38 ID:bk5OwOwe0
>>682
iPhoneSDKを入れるともっと幸せになれるぞ
684名称未設定:2008/07/19(土) 19:02:59 ID:vooFMv6a0
>>683
今,AppleScript Studioでめちゃめちゃ楽しく遊べているので,
iPhoneSDKが使える人はもっと楽しくてしかたないでしょうね.
685名称未設定:2008/07/20(日) 03:07:49 ID:7ZHrvxgT0
以前
Service Scrubber
http://www.manytricks.com/servicescrubber/
で「URLを開く」というサービスメニューにショートカットを割り当てて利用していた。
ICeCoffEEも利用しているが、キーボードだけで選択したURL文字列をデフォルトブラウザで開きたい場面が結構あったので。
ところがLeopardからはService ScrubberではOSビルトインのサービスに触れないようになってしまった。

そこで、
Spark
http://www.shadowlab.org/Software/spark.php
を利用してなんとかならんものか、と。

やりたい事は、任意の最前面のアプリで選択中の文字列を「その時点でのデフォルトブラウザ」に渡す。

任意のアプリで選択されている文字列をサービスの「URLを開く」に渡したのと同じ結果が得られればよい。

以前、似たような事をしようとしてキーストロークでコピペしようとしてどうもクリップボードの扱いや前面アプリの取得とか自分には思いのほか難しくて挫折してしまった。

applescriptでさらっとサービスに渡すような方法ってないものですかね?
686名称未設定:2008/07/20(日) 03:25:10 ID:Az/g6AfM0
>>685
今10.5.3使ってるけどシステム環境設定のキーボードとマウスで
サービスメニューにもショートカットキー付けられたよ。
687名称未設定:2008/07/20(日) 03:39:31 ID:7ZHrvxgT0
>>686
サンクス!
灯台下暗しとは。助かりますた!
688名称未設定:2008/07/20(日) 03:49:51 ID:7ZHrvxgT0
>>686
追記。
日本のアプリと海外のアプリでは
URL を開く
Open URL
と表記が違うため、どちらでも動かしたいときはどちらも設定しないとダメみたい。
689名称未設定:2008/07/20(日) 14:09:36 ID:tWDdM2yv0
システム環境設定のサウンド設定で
出力先を内部オーディオとUSBとを
トグルで切り替えるアップルスクリプトが作りたいんですが
どうしたらいいでしょう
tell application "System Preferences"
set current pane to pane "サウンド"
tell application "System Events"
tell application process "System Preferences"
set shoOn to checkbox 1 of group 1 of window "サウンド"
if value of shoOn is 1 then click shoOn
end if
end tell
end tell
end tell
で消音をオフにするのはできたんですが
選択のところをどう記述するのかが分からないです
690名称未設定:2008/07/20(日) 21:42:20 ID:maPeYYeH0
>>689
私は試していないのでよくわかりませんが、こちらのコードを参照されてみてはいかがですか
http://www.oreillynet.com/mac/blog/2006/07/applescript_audio_output_switc.html
http://forums.macosxhints.com/showthread.php?t=45384
http://www.macosxhints.com/article.php?story=20050614171126634
691名称未設定:2008/07/20(日) 22:31:14 ID:tWDdM2yv0
ありがとうございます
いけましたまさに目的のものでした
tell tab group 1 of window "サウンド"
click radio button "出力"
selected of row 2 of table 1 of scroll area 1
こういう記述をするんですね
692683:2008/07/21(月) 18:20:46 ID:es8W2zO40
>>684
そっちの話じゃなく、UTF-8でもデバッガが動くようになる。
693名称未設定:2008/07/21(月) 18:47:45 ID:4fv7Bjyx0
>>692
UTF-8にすることのメリットはわかりませんが,ファイルエンコーディングにはバグがあり,
日本語(Mac OS)にしないとダメみたいなことが参照している本に書いありました.

つまり今のXcodeのバージョンでは修正されて問題ないっていう話ですか?
694名称未設定:2008/07/22(火) 15:35:03 ID:owCyWE8X0
初心者スレより誘導されてきました。

UTF-8-macでURLエンコードされた文字列を含むテキストファイルを、
URLエンコード部分をデコードして別ファイルに保存、
といったことはスクリプトでできますか?


PercentEncodeServiceを使えば、選択範囲のUTF-8-mac URLエンコードをデコードすることができるようです。

 が、テキストファイルを全選択して変換、といったことはできませんので、
一つ一つURLエンコードされた部分を見ながら選択しなくてはなりませんので、数が多い場合手間です。


例えばですが、iTunesのプレイリストの「iTunes Music Library」ってありますよね。
このファイルには大抵、UTF-8-mac URLエンコードされた文字列が複数あります。
これをスクリプトにつっこんだら、変換されたテキストが出力される…という形が理想です。
695名称未設定:2008/07/22(火) 19:50:18 ID:yDzYwCXU0
>>694
できるだろうし、同じ AppleScript を使うにしても、やり方はいくつもあると思う。

例に挙がっている iTunes Music Library の変換程度なら、コマンドライン一発でもできる。
ターミナルを開いて以下を実行(USERNAME は自分のユーザ名に置きかえる)

perl -ne '$_ =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;print $_' /Users/USERNAME/Music/iTunes/iTunes¥ Music¥ Library.xml > /Users/USERNAME/Desktop/iTunes¥ Music¥ Library.decoded.xml

これでデスクトップに iTunes Music Library.decoded.xml という名前で変換後のファイルが作成される。
(試した環境は OS X 10.4.11, perl 5.8.6)
696名称未設定:2008/07/22(火) 20:03:33 ID:yDzYwCXU0
すまん こっちのほうがいいかな

perl -ne '$_ =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;print $_' '/Users/USERNAME/Music/iTunes/iTunes Music Library.xml' > '/Users/USERNAME/Desktop/iTunes Music Library.decoded.xml'
697名称未設定:2008/07/22(火) 23:10:34 ID:cHDYIc6w0
693の件,よくわからないので気にせずやっていきます.

ところで,Leopard(10.5.4)の起動ディスク最上位階層にある etc, tmp, var
三つのエイリアスフォルダ,info forでエイリアスかどうか調べるとfalseの値が
返ってきます.

エイリアスフォルダをデスクトップに持ってきてから調べると,ちゃんとtrueになるという.
よくわからない現象.不思議です…….
698名称未設定:2008/07/22(火) 23:13:20 ID:DmEa5hm/0
>>697
その3つのエイリアス動かしちゃダメだよ
699名称未設定:2008/07/22(火) 23:13:56 ID:DmEa5hm/0
ホントはエイリアスじゃなくてシンボリックリンクな
700名称未設定:2008/07/22(火) 23:46:54 ID:cHDYIc6w0
info forの結果は相変わらず不明ですが,とりあえず動かすなってことですね.
覚えておきます.どうもでした.
701683:2008/07/23(水) 00:33:32 ID:8AtNrK3T0
>>697
悩ませてすまん。今使っているバージョンでソース内に日本語使ってデバッガが動いているなら忘れてくれ。
702名称未設定:2008/07/23(水) 00:37:53 ID:Kp5ebz340
>>694
誘導主ですが、ファイル丸ごとだと良く分からないところに
>>695,696助け船ありがとう
ドロップレットにしてみた。
アプリケーション形式で保存してテキストファイルをドラッグ&ドロップ

on open fileList
tell application "Finder"
repeat with i in fileList
set filePath to quoted form of POSIX path of (i as alias)
set newPath to quoted form of (POSIX path of (desktop as alias) & "decoded-" & name of i)
do shell script "perl -ne '$_ =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;print $_' " & filePath & " > " & newPath
end repeat
end tell
end open
703名称未設定:2008/07/23(水) 01:22:07 ID:n1y1+faN0
>>700
いらんお節介かもしれんが info for は使わぬ方が無難
704名称未設定:2008/07/23(水) 18:40:36 ID:JHUMV1xC0
>>701
693のバグの件,「ゼンマイびゅんびゅん」にも書いてありましたので
そのように設定して作ってたんですが,使ってるXcode 3.0ではUTF-8でも
問題なく使えるようです.参考までに.

>>703
ファイルがエイリアスかどうかを調べるには,info for を使う方法しかしらないので,
頼ってしまうんですよね.なぜ使わない方がいいのかその理由はわからないですけど.
705694:2008/07/23(水) 22:22:04 ID:Fl7A9mGf0
694です。お礼が遅くなってすみません。

>>695,696
ありがとうございます!問題なく動作しました。

>>702
誘導、そして回答ありがとうございました。
ファイルの保存形式を「アプリケーション」にしなければいけない事に少々悩みましたが、なんとかいけました。


しかしこのapple script、windowsでいうところのUWSCのようなソフトが標準で搭載されているのですね。
macの使い勝手がいい、と方々で聞いた理由がわかった気がしました。


ただ、教えて頂いた方法で作成したファイルを、保存形式をutf-16にしても
windowsで文字化けするのが痛いところです。
例)コンピレーション→ピの部分が「ヒ」と「。」に分かれる。
共用でなんとかつかえないかなと思っていたのですが。。。
706名称未設定:2008/07/24(木) 01:29:01 ID:CbDX67PAP
>>705
> ただ、教えて頂いた方法で作成したファイルを、保存形式をutf-16にしても
> windowsで文字化けするのが痛いところです。
> 例)コンピレーション→ピの部分が「ヒ」と「。」に分かれる。
> 共用でなんとかつかえないかなと思っていたのですが。。。

「os x ファイル名 unicode 正規化 nfd nfc」とかでググってみましょう。
707名称未設定:2008/07/24(木) 01:32:08 ID:dswazg+C0
do shell script ls -l でシンボリックリンクが判定できるみたいですが,
日本語ファイル名には対応してないようです.また一つ勉強になりました.
708名称未設定:2008/07/24(木) 01:55:57 ID:0ltaoSUZ0
>>705
いちどこちらをお試しください。

perl -ne '$_ =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;print $_' ¥
'/Users/USERNAME/Music/iTunes/iTunes Music Library.xml' ¥
> '/Users/USERNAME/Desktop/iTunes Music Library.decoded.xml' && iconv -f UTF-8 -t UTF-8-MAC ¥
'/Users/USERNAME/Desktop/iTunes Music Library.decoded.xml' ¥
| iconv -f UTF-8-MAC -t UTF-16LE > '/Users/USERNAME/Desktop/iTunes Music Library.decoded.utf16.xml'

デスクトップに iTunes Music Library.decoded.xml というファイルの他に iTunes Music Library.decoded.utf16.xml
というファイルを作成します。こちらのほうは Windows に持って行っても文字化けしないはずです。
コードとしてはむちゃくちゃ(もっときれいに書ける)のような気がします。
709名称未設定:2008/07/24(木) 01:59:35 ID:0ltaoSUZ0
↑いちどテキストエディタにでもコピペしてから、行末の¥はoption+¥に、
USERNAMEのところはご自分のユーザ名に置き換えてから、
ターミナルにコピペして実行してくださいね。

>>702さんのコードを使わせていただくとこんな感じになりました。

on open fileList
tell application "Finder"
repeat with i in fileList
set filePath to quoted form of POSIX path of (i as alias)
set newPath to quoted form of (POSIX path of (desktop as alias) & "decoded-" & name of i)
set newNewPath to quoted form of (POSIX path of (desktop as alias) & "decoded-utf16-" & name of i)
do shell script "perl -ne '$_ =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;print $_' " & filePath & " > " & newPath & " && iconv -f UTF-8 -t UTF-8-MAC " & newPath & " | iconv -f UTF-8-MAC -t UTF-16LE > " & newNewPath
end repeat
end tell
end open
710名称未設定:2008/07/24(木) 02:12:20 ID:0ltaoSUZ0
すみません
iconv -f UTF-8-MAC -t UTF-16LE
のところはただの
iconv -f UTF-8-MAC -t UTF-16
でも問題ないみたいですね
付け焼き刃なのですみません あとスレチ気味なのも
711705:2008/07/24(木) 05:16:36 ID:HsSBWrHs0
>>706
ありがとうございます。
このあたりの単語でぐぐって、初心者スレからこちらへ誘導して頂いた次第です。

>>708
実行してみたところ、
iconv: conversion to UTF-8-MAC unsupported
iconv: conversion from UTF-8-MAC unsupported
と表示され、中身が空のファイルが生成されました。


>>709
こちらは途中までうまくいくようですが、

iconv:(stdin): cannot convert

と表示され、途中で止まってしまいました。
できたファイルを見てみると、1400行近くまではきちんとコンバートされているようでした(mac,win双方で確認)。


スレ違い気味の質問ですみません。とても助かっています。
712名称未設定:2008/07/24(木) 20:05:48 ID:aQWBKCDLP
>>711
その辺りの単語じゃなくて、その単語でググレよ。
初心者スレからその調子じゃないか。
713705:2008/07/24(木) 21:45:46 ID:HsSBWrHs0
>>712
おっしゃること最もだと思います。
当方の不徳の致すところです。

すでにほとんど回答に近い物もいただきましたし、今後のヒントもいただきました。
これ以上はスレ違いですので、後は試行錯誤でなんとかします。

お目汚し申し訳ありませんでした。
ありがとうございました。
714名称未設定:2008/07/28(月) 07:14:56 ID:U0PW2Ynt0
iTunesの曲名・アーティスト名・アルバム名の特定文字列の置換を行うスクリプト 作ってみた

http://cos5.orz.hm/~yakumo/wwwww/
715名称未設定:2008/07/28(月) 08:27:24 ID:NL8Skhv90
age
716名称未設定:2008/07/30(水) 10:08:57 ID:qZxfFThl0
質問させてください。
「Mail」の受信箱にあるメッセージの中から
特定の文字列を件名に含むメッセージを検索するスクリプトをググったところ
念願のものが見つかりました。

tell application "Mail"
tell inbox
set theMessage to first message whose subject contains "Hoge"
end tell
end tell

ここで3行目の「first」ですが、
自分の力ではこれに気づけませんでした。
ここの「first」はどういう解釈なんでしょうか?
717名称未設定:2008/07/30(水) 10:31:02 ID:+PK0rNF70
>>716
message 1 と同じ。その条件で見つかった最初のメッセージ。
合致したのをリストとして全部取り出すなら、every message。
718716:2008/07/30(水) 10:51:02 ID:qZxfFThl0
>>716

おお

「first message」でも「message 1」でも動きますね、知らなかった。
ただの「message」じゃダメなんですね。
ここでつまづいて動かなくて悩んでました。
すごく勉強になります。

期待どおりに動いてくれるとウキウキしちゃいますね。
ありがとうございました!


719716:2008/07/30(水) 10:52:00 ID:qZxfFThl0
すみません、ageちゃいました。
720名称未設定:2008/07/31(木) 01:02:57 ID:tRylyolL0
ageていいよ
721名称未設定:2008/08/02(土) 01:26:07 ID:VJ2DAZ1R0
質問なんですが、
まず、アップルスクリプトの初心者スレはありますか?
もしあったら誘導願います。

質問内容ですが、アップルスクリプトで全アプリに汎用な
「command+Q」と「command+W」をコンテクストメニュー
又は、FinderPop項目に入れて実行させる事はできますか?

全く理解していないトンチンカンな質問だったらごめんなさい。

実は最近までOS9を使っていてOS移行に伴いマイクロソフトの
トラックボールからMighty Mouseに変えたため
エクストラボタンに割り当てていた「command+W」が
使えなくなって不便を感じているんです。

よろしくお願いいたします。
722名称未設定:2008/08/02(土) 01:30:46 ID:J7unINm70
君は多ボタンマウスなりトラックポールなりを買った方が早い。
723名称未設定:2008/08/02(土) 01:32:15 ID:W0Z363Qf0
初心者質問スレなら幾つかある
自分でスレッド一覧を「初心者」とかで検索した方が早い

で、件の内容だがそれはもうAppleScriptの範疇じゃないね
システム環境設定のマウスとキーボードあたりをじっくり見てみたらどうかな
724名称未設定:2008/08/02(土) 01:58:31 ID:X/i4MtmB0
OnMyCommandでいいんじゃないのか
725名称未設定:2008/08/02(土) 04:13:23 ID:w4guFxgl0
726名称未設定:2008/08/02(土) 16:49:55 ID:t6/qW1A20
すべてのアプリケーションを隠せばほぼ同様のことができると思う。
Finderか何かでapplicationのvisible属性か何かを変えていたような気がするけど,再現できない。
UI Scriptingでメニューの「ほかを隠す」を実行させてもいいかもしれない。
727名称未設定:2008/08/02(土) 17:27:34 ID:EGHGBOIo0
OnMyCommandのAppleScript実行で
tell application "System Events"
keystroke "w" using command down
end tell
でコンテキストメニューからウインドウが閉じた。
728721:2008/08/02(土) 21:19:22 ID:hQGjHNSQ0
>>727
すみません、そのスクリプトをスクリプトエディタにコピペ
してみたのですが、どう保存してどこに置けばいいのかわかりません。
教えて下さい、お願いします。
729名称未設定:2008/08/02(土) 22:08:31 ID:EGHGBOIo0
>>728
OnMyCommandってコンテキストメニュープラグインを入れて
OMCEdit.appで設定する
http://www.42ch.net/UploaderSmall/source/1217682011.png
730721:2008/08/03(日) 01:10:45 ID:skYiAklV0
>>729
OnMyCommandはDLしてインストールしたのですが
OMCEdit.appが英語でよく分かりません。
日本語版はもうないのでしょうか?
731名称未設定:2008/08/03(日) 05:51:01 ID:mK76g5dg0
>>680
甚だしく遅いレスですが、その構文でもいけました。ありがとうございました。
text/button returned ofの後ろは"result"だけと思い込んでましたよ。
732名称未設定:2008/08/03(日) 22:31:23 ID:EmHypTth0
Caminoで開いている複数のタブをそのままSafariで開くことってできますか?
733名称未設定:2008/08/03(日) 23:59:14 ID:yEsgv3lS0
Excel 2008のAppleScriptですが、
paste special の with skip blanks が無視されませんか?
734名称未設定:2008/08/04(月) 01:02:03 ID:wM+K9oIR0
下がってるからみんな読まないよ
735名称未設定:2008/08/04(月) 01:02:59 ID:K7bWJPZ50
>>732
こんな感じ?

tell application "Camino"
tell front window
repeat with caminoTab in tabs
tell application "Safari"
tell front window
set safariTab to make new tab
set URL of safariTab to URL of caminoTab
end tell
end tell
end repeat
end tell
end tell
736名称未設定:2008/08/05(火) 02:26:11 ID:PL3QNLBZ0
>>735
ありがとうございます。

CaminoからタブのURLをリストで取り出すやり方でやろうとして全然できなかったので、
大変助かりました。
737名称未設定:2008/08/08(金) 15:43:21 ID:bj2cYl2s0
質問させてください。
MacOS 10.4.11
スクリプトエディタ2.1.1

書類フォルダにある4個のPDFファイルを
Acrobatで開くスクリプトですが、

tell application "Finder"
set theFolder to folder "Documents" of home
select files 1 thru 4 of theFolder
set theList to selection
set theNbr to count theList
repeat with i from 1 to theNbr
set theFile to item i of theList
tell application "Adobe Acrobat Professional"
activate
open file (theFile as string)
end tell
end repeat
end tell


ファイル名に「―(emダッシュ)」が入っていると
上記のスクリプトがうまく動きません。
イベントログを見ると
拡張子の「.pdf」がどういうわけか「.pd」となってしまって、
結果 Acrobatで「そんなファイルありません」と言われます。

ファイル名からemダッシュを抜けばいい話ですが、
なんだかスッキリしないです。
AppleScriptでこの記号は扱えない、ということですか?
738名称未設定:2008/08/08(金) 16:14:55 ID:euNEXkuy0
>>737
Shift JISコードで5Cが使われる文字はどーたらこーたらってのがあるから
仕方ないんでね?
739名称未設定:2008/08/08(金) 17:14:06 ID:WZTH74660
>737
なんか回りくどく書いている理由がわからんけど、
Finderから開けば「―(emダッシュ)」が入ってても問題ないよ。

tell application "Finder"
set theList to selection
open selection using path to application "Adobe Acrobat 7.0 Professional"
end tell
740739:2008/08/08(金) 17:16:14 ID:WZTH74660
ゴミが残ってた。スマソ。
コレね。
tell application "Finder"
open selection using path to application "Adobe Acrobat 7.0 Professional"
end tell
741名称未設定:2008/08/08(金) 17:33:01 ID:4PuT4Qm/0
>>737
open file (theFile as string)

open theFile
にするんじゃダメなんだっけ?
742739:2008/08/08(金) 17:54:49 ID:WZTH74660
ああ、
open theFileはダメだけど
open (theFile as alias)なら―(emダッシュ)入ってても問題ないね。
743名称未設定:2008/08/08(金) 18:28:37 ID:auIpSgqJ0
なんでstringかな?かな?
open file (theFile as Unicode text)
744名称未設定:2008/08/09(土) 15:48:48 ID:WhSh9OhW0
iTunesで次のような処理をするスクリプトが欲しいと思っています。

1) Podcastを更新
↓(完了後)
2) iPodを同期
↓(完了後)
3) iPodをとりはずす

2と3については、以下のように書けばいいと思うのですが、
1の部分と、(完了後)という指示をどう書くべきかがわかりませんでした。

お手数ですが、アドバイスいただけるとたいへん助かります。

2)
tell application "iTunes"
update
end tell

3)
tell application "iTunes"
eject
end tell
745名称未設定:2008/08/09(土) 17:08:08 ID:qF1Rwi2i0
ttp://dougscripts.com/itunes/index.php

に参考になりそうなのないか探してみたら?
746名称未設定:2008/08/09(土) 21:10:30 ID:bj5ArJ4w0
>>744
ポッドキャストの更新は
updateAllPodcasts

完了したのを認識するのはたぶん無理。
747名称未設定:2008/08/10(日) 12:45:30 ID:J5P4uJX60
set RefreshFlag to false
tell application "iTunes"
updateAllPodcasts
delay 30 --ポッドキャストの更新チェックの待ち時間(秒)登録してるポッドキャストの数に応じて変更
tell application "System Events"
tell process "iTunes"
tell outline 1 of scroll area 1 of splitter group 1 of splitter group 1 of window 1
set SourceLists to name of static text 1 of rows
repeat with i in SourceLists
if i starts with "ダウンロード" and i ends with "項目" then set RefreshFlag to true
end repeat
repeat
set SourceLists to name of static text 1 of rows
set DLendFlag to true
repeat with i in SourceLists
if i starts with "ダウンロード" and i ends with "項目" then set DLendFlag to false
end repeat
if DLendFlag then exit repeat
delay 2 --ダウンロードが終了したかどうかのチェック間隔(秒)
end repeat
end tell
end tell
end tell
if RefreshFlag then update (sources whose kind is iPod)
end tell
--同期終了が認識できないのでejectは手動で
748747:2008/08/10(日) 12:49:33 ID:J5P4uJX60
ダウンロードそのものの時間が短すぎると最初の待ち時間で終わるので
回線が遅かったり1番組が大きいポッドキャスト聞いてる人じゃないとまともに動かないかも。
749名称未設定:2008/08/10(日) 16:03:05 ID:JedI4tyI0
"別名で保存…"ダイアログのように、ウィンドウにくっついてベロンと出てくるタイプのダイアログの中のボタンをクリックしたいのですが、どのようにしたら良いのでしょうか。
OSは10.5.4です。
750747:2008/08/10(日) 19:46:48 ID:wTLmJJRB0
>>749
そのウインドウ出した状態で
tell application "System Events"
tell process "hogehoge"
tell window 1
get UI elements
end tell
nd tell
end tell
的な感じで操作したいUI elementsを探っていく

>>748に追記
エディタ上で実行すると動くけどiTunesのスクリプトフォルダに突っ込んで実行したら
NSReceiveEvaluationScriptError:4になった。何がダメだかもうワカンネ
751749:2008/08/10(日) 19:53:54 ID:JedI4tyI0
>>750
ありがとうございます。できました。
752名称未設定:2008/08/11(月) 21:13:47 ID:RcSUNlw10
天才がいるね
753名称未設定:2008/08/12(火) 02:15:43 ID:qAt0Wkz20
!!

なぜ俺がいるとわかった・・・?
754名称未設定:2008/08/12(火) 02:24:28 ID:ff9CfASx0
>>324
Leopardになったら、KotoeriPreferences.appの場所が変わったみたいだね。
System:Library:Input Methods:Kotoeri.app:Contents:Support:KotoeriPreferences.app
755名称未設定:2008/08/12(火) 13:36:59 ID:wOKcQRE+0
いきなりですが、AppleScriptでゲームを作れると思いますか?
756名称未設定:2008/08/12(火) 14:30:50 ID:MeW2yoLV0
そりゃ作れるだろ
757じゃんけんゲームを作ってみたよ!:2008/08/13(水) 06:22:22 ID:FedFpU/J0
set answerList to {"グー", "チョキ", "パー"}
set cpuAnswer to some item of answerList
log cpuAnswer

display dialog "じゃん、けん、ポン!" buttons answerList
set yourAnswer to button returned of result
log yourAnswer

if cpuAnswer is yourAnswer then
set endMessage to "あいこでした"
else if (cpuAnswer is "グー") and (yourAnswer is "パー") then
set endMessage to "あなたの勝ちです!"
else if (cpuAnswer is "チョキ") and (yourAnswer is "グー") then
set endMessage to "あなたの勝ちです!"
else if (cpuAnswer is "パー") and (yourAnswer is "チョキ") then
set endMessage to "あなたの勝ちです!"
else
set endMessage to "あなたの負けです…"
end if

display dialog endMessage

--愚痴
--display dialogではボタン名ではなく、ボタンのリスト位置を返せれば
--こんな不格好なソースにならないのになぁ
--朝の20分じゃこれがおいらにゃ限界
758名称未設定:2008/08/13(水) 14:37:42 ID:rovACtMm0
set {G, C, P} to {"グー", "チョキ", "パー"}
set cpuAnswer to some item of {G, C, P}
log cpuAnswer

display dialog "じゃん、けん、ポン!" buttons {G, C, P}
set yourAnswer to button returned of result
log yourAnswer

if cpuAnswer is yourAnswer then
set endMessage to "あいこでした"
else if {{cpuAnswer, yourAnswer}} is in {{G, P}, {C, G}, {P, C}} then
set endMessage to "あなたの勝ちです!"
else
set endMessage to "あなたの負けです…"
end if

display dialog endMessage
759名称未設定:2008/08/23(土) 23:40:50 ID:r67yamp60
Finderのアイコンビューのオプション変更で、アイコンサイズは set icon size ..... で変更できるけど
「グリッド間隔」を変えたい場合は何を指定すればいいんでしょうか。
760名称未設定:2008/08/24(日) 20:04:32 ID:JAfu1aUc0
表示オプションにグリッド間隔変える設定なんてあったっけ?
変えれたのはアイコンサイズだけじゃなかった?
761名称未設定:2008/08/24(日) 20:57:47 ID:JAfu1aUc0
10.5からできるようになったのか。すまん。
762名称未設定:2008/08/26(火) 23:28:52 ID:uP7y2d/IP
入力フィールドAに書いてある文字列を取ってきて
文字列のうち「 / 」または「: 」を改行に置換して
入力フィールドBに書き込む
なんてことは AppleScript で可能なんでしょうか?
763名称未設定:2008/08/26(火) 23:33:01 ID:jKIEVQf60
>>762
perlでやった方が早い気がする
764名称未設定:2008/08/26(火) 23:51:24 ID:RTivqWhu0
AppleScript's text item delimiters の設定次第で可能だけど
AppleScript で文字列処理するもんじゃないな
765名称未設定:2008/08/27(水) 12:53:30 ID:l3wUIuhfP
>>764
ありがとうございます。AppleScript's text item delimitersでぐぐってみて
「iTunesの選択した曲の名前欄を参照して":"を改行に置き換えてコメント欄に書き込む」
というスクリプトを書いてみました。

tell application "iTunes"
set theTracks to selection
set TID to AppleScript's text item delimiters
set FI to fixed indexing
set fixed indexing to true
try
repeat with aTrack in theTracks
tell aTrack
set AppleScript's text item delimiters to ":"
set aList to every text item of name
set AppleScript's text item delimiters to return
set aText to aList as string
set lyrics to aText
end tell
end repeat
end try
set fixed indexing to FI
set AppleScript's text item delimiters to TID
end tell

…全く動きません orz 何がいけないんでしょうか?
766764じゃないけど:2008/08/27(水) 13:48:50 ID:xAacEF2X0
set aList to every text item of name を
set aList to every text item of (name as string) にするとか。

それはそうと、コメント欄に書き込むってことだから
set lyrics to aText は
set comment to aText になるんでわ?
767名称未設定:2008/08/27(水) 14:06:03 ID:l3wUIuhfP
>>766
ありがとうございます! 動きました!
いきなり name を指定しちゃダメだったんですね…

後半ご指摘の部分は
「歌詞欄に書き込む」 の間違いです。
申し訳ありません。

これでクラシックのやたらめったら長い歌詞を
適当なところで改行を入れて iPod touch 上で参照できます!
768名称未設定:2008/08/27(水) 16:39:16 ID:l3wUIuhfP
>>767
×やたらめったら長い歌詞を
○やたらめったら長い曲名(作曲者名: 曲名, 作品番号: 楽章. 標題とか演奏指示とか)を

…でした。重ね重ね申し訳ありませんです。
769名称未設定:2008/08/27(水) 22:43:06 ID:r0dGCg7a0
あの、CSV を list にするいい方法はないでしょうか…?

CSV と言ってもカンマを含むものはダブルクオーテーションで囲まれ、
さらにその中で内容としてダブルクオーテーションを含む場合は二回続く
とかソッチ系のフォーマットのファイルなんですが…。

Per を経由してできないかな?と思ったのですが結果を list にして返す
という部分でつまづいてしまいました。

Perl からスクリプトとして書き出して osacompile して loadscript すれば
いいのでしょうか?

もっと簡単な方法はないでしょうか…。お知恵を頂ければと思います。
770名称未設定:2008/08/27(水) 23:57:45 ID:WDLyj8lQ0
Excelだと…
| A,"B",C | D,"E,F" | "G,H,I" |
| 1,"2",3 | 4,"5,6" | "7,8,9" |

CSVにすると…
"A,""B"",C","D,""E,F""","""G,H,I"""
"1,""2"",3","4,""5,6""","""7,8,9"""

このCSV形式のをAppleScriptのlistにしたいという意味?
771名称未設定:2008/08/28(木) 01:18:49 ID:b/l8BaUy0
>>770
はい、そんな感じです。

色々 OSAX も探したのですが、どうもズバリ!ってのはないみたいで…。
772名称未設定:2008/08/28(木) 01:40:46 ID:OSwWw1d/0
csv2listでぐぐるか,自分で書く。
頭から1文字ずつ読んでいき,自分の読んでいるのが""の内か外かステータスで保持するようにすれば書けそうな気がする。
773名称未設定:2008/08/28(木) 01:43:00 ID:OSwWw1d/0
ところで,AppleScriptで指数関数powを使う簡単な方法ってありますか?
774名称未設定:2008/08/28(木) 01:55:49 ID:b/l8BaUy0
>>772
csv2list、そうそう、それも見つけたんですが、インストール中にエラーが
発生してできませんでした(笑)

とりあえずゴリゴリ書いてみようかって気もしてきましたね…。
775名称未設定:2008/08/28(木) 02:01:54 ID:/yHcTg960
set a to 10
set b to 3
set c to a ^ b
776名称未設定:2008/08/28(木) 17:29:31 ID:cx49gVto0
頭がバカで、ダラダラと長いくなってしまいます。
賢くスマートに出来ないでしょうか?

長いのでスクリプトを以下にup。
http://cdriven.web.fc2.com/newfile.html
777名称未設定:2008/08/28(木) 17:35:43 ID:NWohk4Vk0
>>776
配列使ったら?
778名称未設定:2008/08/28(木) 19:49:30 ID:OZ7FV3p40
>>774
1行ずつ読み込んでから( read 〜 before 〜 )
AppleScript's text item delimitersを{","}にして、分解。
listの要素をチェックして「"」で始まって終わってたらそれを取り除く。

でいいのかなあ。
779名称未設定:2008/08/28(木) 21:49:27 ID:V8cuIz/10
すみませんが、少々お教えください

イラストレーターCS3用に書いているのですが
"アピアランスの分割"コマンドが見つかりません
辞書を"appearance"で検索してみると
AutoCADやFlashの書出しオプションしか見当たりません
どのコマンドを使用すればよいのでしょうか?
よろしくお願いします
780名称未設定:2008/08/28(木) 23:42:19 ID:OSwWw1d/0
>>778
おー,1文字ずつより1行ずつの方が速そうだ。

781名称未設定:2008/08/29(金) 00:43:17 ID:1ddcxhSs0
>>778
"123,456",98765,abc,","¥n
こういう時はどうするの?

>>776 のは characters of でリストにセットしてからやった方が?ちゃんと読んでないけど。

.csvは方言多くてきらいだ。記号全部試すのもめんどいし。perl使っても文字コードによっては変な動作するし。
エクセル限定なら.tabで書き出した方が早いんじゃない?
横ごめん。のびてたから、見に来たら楽しそうで。
782名称未設定:2008/08/29(金) 00:50:40 ID:kZ/Z9TQK0
>>781
なるほど、そいつはまいった。
783名称未設定:2008/08/29(金) 01:20:12 ID:zCiQTJnK0
CSV の件ですが、100行ほどかかりましたがとりあえず書けました。
お騒がせしました。ありがとうございました。

1行ずつ読む形だと改行を含むレコードを処理できないので1文字ずつ
処理する形にしました。

そこで発見したんですが、

repeat with theChar in every character of theCSV
end repeat

などとすると CR+LF の CSV の場合は CR+LF が theChar に入って
くるみたいです。便利。けど人によってはうざいのでは…(笑)
784781:2008/08/29(金) 01:46:01 ID:1ddcxhSs0
>769 >778 様。うわ。起きてるし。
>769 様。完成おめでとう!!!
ちなみに改行コードの2バイトList格納はwinファイル扱ったことないから知らなかったよ。
と書いてからその辺の処理の自分のハンドラ見たら
set replaseChara to ((ASCII character 13) & (ASCII character 10)) -->win return
って行があった。これだよね?
エクセルもセルの中に改行いれられるんだー。numbersの特権かとおもってた。

今時のperlはUTF-8ちゃんと動く?ならエクセルってUTFで出してくれたよね?
したら、perl部分はセミコロン3つ4つで書ける?かな?次に挑戦はこれだね。おやすみなさいませ。
785名称未設定:2008/08/29(金) 02:55:50 ID:MwLYqfhr0
>>784
Perl 5はUTF-8いけるよ
BOMを先頭に付けないよう注意ね
786名称未設定:2008/08/30(土) 02:44:50 ID:4zJmXNkG0
>>783
ちなみにWindows版のExcel2000で書き出したCSVの場合だと、
セル内の改行はLF、行末の改行はCR+LFで判別可能だったりする
CSVなんて作り方次第で千差万別だから使えるとは限らんけど


>>781の例もやりようはあるよね
・ダブルクオーテーションで始まって終わってなければ次のとくっ付ける
・ダブルクオーテーションで始まって終わってたら両方取っ払って次へ
こんな感じで
787名称未設定:2008/08/30(土) 10:00:18 ID:xf98ysnd0
既に解決したとこアレだけど、csvの解釈はphpのfgetcsv()に任せてみた。

set csv to choose file without invisibles
set theList to my Csv2List(csv)

on Csv2List(csv)
set {colSep, rowSep} to {0, 1}
set theContent to do shell script "
php -r '
ini_set(\"auto_detect_line_endings\", \"1\");
$csv = $argv[1];
$colSep = " & colSep & "; $rowSep = " & rowSep & ";
$csvFH = fopen($csv, \"r\");
while (($col = fgetcsv($csvFH, 1000, \",\")) !== FALSE)
$row[] = implode(chr($colSep), $col);
print implode(chr($rowSep), $row);
fclose($csvFH);
' " & quoted form of POSIX path of csv without altering line endings

788名称未設定:2008/08/30(土) 10:01:16 ID:xf98ysnd0
>>787の続き

set oldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to ASCII character colSep
set theList to {}
repeat
set pos to offset of ASCII character rowSep in theContent
set theText to text 1 thru (pos - 1) of theContent
set theRow to every text item of theText
if theList is {} then
set theList to theRow
else
set theList to {theList, theRow}
end if
if pos is 0 then
exit repeat
end if
set theContent to text (pos + 1) thru end of theContent
end repeat
set AppleScript's text item delimiters to oldDelim
return theList
end Csv2List

789名称未設定:2008/08/31(日) 14:26:08 ID:TxlCQK+Z0
F11キーを押すとウインドウを隠しデスクトップが現れますが、
これをAppleスクリプトで出来ないでしょうか。
以下のスクリプトで似たことは出来るのですがもっさりしていて不便です。

tell application "Finder"
set a to every process
repeat with b in a
if visible of b is true then
if name of b is not "HideApl" then
set visible of b to false
end if
end if
end repeat
end tell
790名称未設定:2008/08/31(日) 14:30:51 ID:rl0e8LbZ0
key codeでなんとかならんか
ttp://bbs.macscripter.net/viewtopic.php?id=18734
791名称未設定:2008/08/31(日) 15:28:20 ID:vgZxFwbc0
想像するに、こういうこと?

tell application "Finder" to activate
tell application "System Events" to tell process "Finder" to keystroke "h" using {command down, option down}
792名称未設定:2008/08/31(日) 20:06:42 ID:TxlCQK+Z0
>>790-791
おお、どうもです。
タブレットいじってる時などF11まで手を延ばすのが大変なので
これをランチャーに登録しておきます。
793名称未設定:2008/08/31(日) 23:51:35 ID:PxH65fW20
>>792
JISキーボードなら

tell application "System Events" to keystroke (key code 103)

でF11を押せるよ。
794名称未設定:2008/09/01(月) 11:45:48 ID:qnbVXZAli
Mailでメールボックスの選択をしたいんですが、どう記述すればいいんでしょうか

アカウント名が「test」の場合

tell application "Mail"
tell message viewer 1
○○ mailbox "INBOX" of account "test"
end tell
end tell

○○の部分を、choose mailboxes toとかselectionとか色々やってみたんですが
できませんでした、解答をお願いします。
795名称未設定:2008/09/01(月) 15:26:34 ID:2NEwM3Tg0
詳しいことはわからんけど、

HITO KOBO
http://hitokobo.la.coocan.jp/findertoolbar.php

とかSpamSieveのメール移動とかapplescriptを利用したツールが動かなくなってしまった。

applescript関連の動作を初期化するために削除するファイル等を教えて下さい。
796名称未設定:2008/09/01(月) 17:23:48 ID:T51dN20R0
公開してるとこに聞きなさいよ
797名称未設定:2008/09/02(火) 00:01:12 ID:scffs8Rz0
com.apple.Finder.plist を消したらいんじゃない?
と無責任な事を言ってみる

>>793
key code を使う場合、keystroke は書かなくてもいい

tell application "System Events" to key code 103
798名称未設定:2008/09/04(木) 03:43:04 ID:dxV0kutv0
terminalでxev
キーコードが調べられて便利
799名称未設定:2008/09/04(木) 05:49:16 ID:fDfm9IOY0
800名称未設定:2008/09/04(木) 09:08:37 ID:QYxnlg6X0
他人(たぶんヨーロッパの人)が作ったスクリプトを自分用にカスタマイズしようと思って
ほぼAppleScriptの知識なしでいぢってるんですがw (他の言語はいろいろ使えるつもり)

どんな言語環境でも動くようなスクリプトを書きたい場合、日付の書式ってどうする
もんなんですか?
current dateってのが現在の言語環境での書式で日付を返してくるようで、欧米の
日付書式を前提としたスクリプトだと、日本語環境でうまく動かないようなんです。

日付の書式を何か固定した言語/フォーマットで得たりできます?
あるいは言語の異なる日付の書式を互いに変換するような方法とか...
あるいは何かこういう場合の定石のようなものがあれば...
801800:2008/09/04(木) 09:27:11 ID:QYxnlg6X0
うーん、見よう見まねで Sep -> 9 にするような関数を書いてみた。
で、9/4/08 みたいなフォーマットにしとくと結構いけるような感じが。
しかしこれでいいのかな。
802800:2008/09/04(木) 09:40:19 ID:QYxnlg6X0
そもそも >>801 自体も Sep ほげ とかいう書式が得られるという前提に立っているとも
いえなくもないけど。
実際には、current dateの日付と、取得したウェブページに含まれる日付(今んとこ英語)
を比較したりする必要があるんですが。
連投スマソ。
803名称未設定:2008/09/04(木) 12:14:39 ID:WqDvztGj0
ググったらこういうページがありましたぜ
ttp://homepage2.nifty.com/medamacafe/J/applescript3.html
804名称未設定:2008/09/04(木) 13:33:23 ID:4WrItNHm0
do shellscriptでdateが確実?
805名称未設定:2008/09/05(金) 00:02:12 ID:kjsHZmDn0
内部処理される日付は書式に依存しないオブジェクトデータだよ。
それをシステム環境設定の設定に従って文字列と相互変換できる。
文字列からオブジェクトデータには...言語設定に依存してしまう。
取得した日付文字列が固定された書式なら,それを分解して,基準となる日付から秒数単位で足して日付を作り出せる。
2008.9.3 13:30なら,date "2008.1.1" + (元旦からの日数)*24*60*60 + 13*60*60 + 30*60
みたいな。
date "2008.1.1"の部分はコンパイル時に言語に依存しないデータとして格納される。

806名称未設定:2008/09/05(金) 00:15:15 ID:6eATJ7ZT0
AppleScriptは何か中途半端な感じだな
807名称未設定:2008/09/05(金) 09:33:36 ID:zK1wSXauP
>>800
これの 283-285 あたりは?
>おもろい、めずらしいアップルスクリプト発表会 6
ttp://mimizun.com/search/perl/dattohtml.pl?http://mimizun.com/log/2ch/mac/pc7.2ch.net/mac/dat/1117979906.dat
808名称未設定:2008/09/05(金) 12:33:38 ID:mFrLHNNu0
>>793
ありがとうございます。
そちらも試してみましたが、元に戻すのに
結局F11を押さなくてはならないようでした、すみません
809800:2008/09/06(土) 07:12:33 ID:5PG1sbXA0
>>803-807
どうも皆さんいろいろありがとうございます。やはり同じ悩みは他の人にもあるようで安心(w

結局、
a) 日付文字列 -> date オブジェクト
b) date オブジェクト -> 日付文字列
のときに、文字列が標準(言語設定含)と異なる時は、基本的に自前で処理って感じですかね。

とりあえず個々の要素がintegerで取り出せる(月はas integerで)ことがわかったので、
まあなんとかなりそうです。
810名称未設定:2008/09/08(月) 18:46:50 ID:AhJlA3ea0
Skypeでモーニングコールをかけるスクリプト書いてみました。
30秒間かけて相手が出たらサウンドファイルを再生します。

--- メインスクリプト ---
set theNumber to "+81xxxxxxxxxx" (* 電話番号 *)
set theCount to 1 (* 電話をかける回数 *)
set theFilePath to "~/Music/alarm.mov" (* 再生するサウンドファイル *)

(*prepare to play the sound*)
set volume 7
do shell script "open " & theFilePath
tell application "QuickTime Player"
stop document 1
end tell

tell application "Skype"
(* repeat the number of times I set up there *)
repeat with i from 1 to theCount

(* call to the target *)
set theCall to send command "CALL " & theNumber script name "My Other Script"
set theID to word 2 of theCall

(* wait during the darget answer to the call *)
set theStatus to "ROUTING"
repeat while (theStatus is "ROUTING")
delay 1
set theStatus to getStatus(theID) of me
end repeat
811名称未設定:2008/09/08(月) 18:47:48 ID:AhJlA3ea0
(* call for 30 secounds. if someone answered, exit repeat *)
repeat with j from 1 to 6
delay 5
set theStatus to getStatus(theID) of me
if theStatus is "INPROGRESS" then
(* play sound *)
tell application "QuickTime Player"
set current time of document 1 to 0
play document 1
repeat while current time of document 1 is not max time loaded of document 1
delay 5
end repeat
end tell
exit repeat
else if theStatus is "BUSY" then
exit repeat
end if
end repeat

(* finish calling *)
set theCall to send command "SET CALL " & theID & " STATUS FINISHED" script name "My Other Script"
end repeat
end tell
812名称未設定:2008/09/08(月) 18:52:14 ID://2BKglU0
quit application "QuickTime Player"

on getStatus(anID)
tell application "Skype"
set aCall to send command "GET CALL " & anID & " STATUS" script name "My Other Script"
set aStatus to word 4 of aCall
end tell
return aStatus
end getStatus
--- ここまで ---

--- アラーム設定(別スクリプト) ---
set theResult to display dialog "What time do you want to send this message?" default answer "07:00" buttons {"Okay", "Cancel"} default button 2
set theTime to text returned of theResult
set theButton to button returned of theResult
if theButton is equal to "Okay" then
do shell script "echo " & quote & "open /Users/saiga/Development/AppleScript/automail.app" & quote & " | at " & theTime
end if
--- ここまで ---
813名称未設定:2008/09/08(月) 19:07:03 ID://2BKglU0
間違えて古いやつ載せちゃった。自分の名前丸見え...。orz
>>812 のパスの部分は見なかったことにして下さい。

--- アラーム設定(別スクリプト) ---
set theCurrentTime to do shell script "date +%H:%M"
set theResult to display dialog "What time do you want to call?" default answer theCurrentTime buttons {"Okay", "Cancel"} default button 2
set theTime to text returned of theResult
set theButton to button returned of theResult
if theButton is equal to "Okay" then
do shell script "echo " & quote & "open ~/Development/AppleScript/autocall.app" & quote & " | at " & theTime
end if
--- ここまで ---
814名称未設定:2008/09/08(月) 20:30:23 ID:bjvhr6DY0
珍しい名字?
815名称未設定:2008/09/08(月) 20:51:42 ID:J3HndaFP0
Automatorが似合う苗字だな
816名称未設定:2008/09/09(火) 00:47:28 ID:f4IdWTox0
みつきさん!
817名称未設定:2008/09/09(火) 05:45:34 ID:V42tXHff0
齋賀
雑賀
めずらしい名字発表スレ。
818名称未設定:2008/09/09(火) 09:14:40 ID:Dnb5xRGN0
OSに実名を入れなくても問題ないことに気づいたのは漢字Talkの頃だったな。
819名称未設定:2008/09/09(火) 18:15:21 ID:DwpoXTzz0
そう言えば俺も最初は実名入れた気が
820名称未設定:2008/09/09(火) 21:53:14 ID:4VSbG+p80
言わなきゃスルーされたのに。
821名称未設定:2008/09/10(水) 01:39:43 ID:Jhqjc6Yt0
>814-819
いや、その、スクリプトの感想とかは...?
「友達に試してみよう!」とか「ここはこうした方が良い」とか...。

>820
誰かに突っ込まれるぐらいなら自分でつっこんじゃえと思いまして。
822名称未設定:2008/09/10(水) 03:02:58 ID:9AHNJGMr0
独りよがり気味
823名称未設定:2008/09/10(水) 23:33:26 ID:SdGN0sQL0
発表スレでもあるしねぇ
独り善がり大いに結構かと
824名称未設定:2008/09/11(木) 01:13:20 ID:HVF2/Uyb0
ひとりでよがるだの
自分でつっこんじゃえだの
まったくもってハレンチな
825名称未設定:2008/09/11(木) 23:35:30 ID:04zbXBY40
質問です。
全くの初心者です。


Safariで特定のURLを開く

URLを開いて、sorry画面になってしまった場合にURLを再度開く。

sorry画面じゃない場合に処理終了。


というのをApplescriptで作りたいんですが、参考となるコマンドをご教授ください。
appleのwebをみましたがよくわかりませんでした。
826名称未設定:2008/09/11(木) 23:47:05 ID:zvwPAY+S0
sorry画面っつーのが何を指しているのかよくわからんので、まずそれが問題。
もしそれが決まったものであれば、そのソースを読んで、
ソースの中の一部と合致すればsorry画面と解釈して云々

827名称未設定:2008/09/12(金) 00:05:38 ID:Q05/PQl00
> appleのwebをみましたがよくわかりませんでした。

ここの過去レスも見とかないと。
828825:2008/09/12(金) 00:10:58 ID:Q6XHVPWfi
説明不足ですみません。
アクセスが集中しているときなどに出てくる『ただいまアクセスが集中
し、つながりにくくなっています』という警告画面のことです。

よろしくお願い致します。
829名称未設定:2008/09/12(金) 00:13:47 ID:7u4nIql20
503エラーのこと?
あれを判定する方法ってない気がするんだが
830名称未設定:2008/09/12(金) 02:15:16 ID:0/d0qKF90
text of window 1 とかで 503 errorってのが取得できるかな
831名称未設定:2008/09/12(金) 02:29:40 ID:oJiRhiewP
サイトが 503 の時にリロードするスクリプトが書きたい訳なのか。
それなら混雑解消するまで待つべきだと思うけど。
832名称未設定:2008/09/12(金) 02:38:01 ID:2WQFo8m0O
質問するときは何がやりたいかだけじゃなくてなぜ何の目的でやりたいかも書いたほうが的確な回答をもらいやすいよ
sorry画面じゃない場合に終了処理っていうのもよくわからない
せっかくつながったのになんで終了させちゃうの

200が反ってきたら終了、
一定の時間内に反ってこなかったら再度送信、てできるかな
833名称未設定:2008/09/12(金) 02:55:24 ID:208qiYaU0
いやいや処理終了ってスクリプトそのものの事でしょ
Safari終了させたいわけじゃあるまい
834名称未設定:2008/09/12(金) 03:25:31 ID:oJiRhiewP
繋がらない時に繋がるまでずっとリロードし続けるスクリプト書きたいんでしょ。
835名称未設定:2008/09/12(金) 08:20:28 ID:TPzAAX2OP
混雑して繋がらないときに延々と再接続を試みるスクリプトですか…
それって単に対象サイトのダウンを狙った攻撃スクリプトなんじゃないかと…
通報していいですか?
836名称未設定:2008/09/12(金) 15:12:32 ID:aE4fzPSki
チケット予約とかジャネ?
837名称未設定:2008/09/13(土) 21:25:57 ID:66sta4ch0
sorry画面とそうじゃない場合でページタイトルが違う事前提の処理だけどさっと書くとこんな感じかな。
(本当はon idleとかで繰り返した方がいいんだろうけど)
URL、失敗かどうかの判断、待ち秒数とかは適当に変えて。

tell application "Safari"
set open_URL to "http://www.apple.com/jp/"
set target_window to missing value
set connected to false
repeat until connected
-- URLを開く
if target_window is missing value then
-- 新規ウインドウで
make new document with properties {URL:open_URL}
set target_window to window 1
else
-- 既存のウインドウで
set (URL of document of target_window) to open_URL
end if
-- 読み込み完了まで待つ
repeat while ((name of target_window) ends with "を読み込み中")
delay 0.5
end repeat
-- ウインドウタイトルに"sorry"が含まれていれば失敗とする
set connected to (((name of target_window) does not contain "sorry") as boolean)
-- リロード連打になるので30秒待つ
if not connected then delay 30
end repeat
end tell
838名称未設定:2008/09/14(日) 17:57:39 ID:Hguqj4OY0
ソフトとして完成してほしいな
839名称未設定:2008/09/14(日) 19:06:14 ID:W7+QnaG60
アプリ形式で保存するのも嫌な人?
840名称未設定:2008/09/14(日) 19:23:27 ID:PQsa6Pw60
↓以下の「フォームへの自動入力」みたく、「プルダウンメニューを自動選択させる」ことってapplescript使って出来ますか?


>do JavaScript "document.login_form.passwd.value='PWD'" in document 1
841名称未設定:2008/09/14(日) 20:10:45 ID:hfMGMCci0
できるよ。
842名称未設定:2008/09/14(日) 20:22:48 ID:PQsa6Pw60
>841さんありがとうございます。

mixiにログイン後のホーム画面にあるプルダウンメニューの「日記」を選択して
「検索」ボタンを押すとこまでを自動でやりたいんですが、ログイン後の書き方がさっぱりわかりません。
どなたか助けてください。


tell application "Safari"
open location "https://mixi.jp/"
delay 1
do JavaScript "document.forms[0].email.value='*********.co.jp'" in document 1
do JavaScript "document.forms[0].password.value='****'" in document 1
delay 1
do JavaScript "document.forms[0].submit()" in document 1
--ログインここまで

end tell
843名称未設定:2008/09/14(日) 22:02:35 ID:hfMGMCci0
set keyword to "テスト"
set mymail to "youremail"
set mypass to "yourpassword"

set stype to "dialy"
(* community diary album video review music news web *)
set enckeyword to my eucstring(keyword)
set loginurl to "https://mixi.jp/login.pl?email=" & mymail & "&password=" & mypass & "&next_url=/home.pl"
set searchurl to "http://mixi.jp/search_redirect.pl?search_type=" & stype & "&search_encode=euc-jp&search_keyword=" & enckeyword

tell application "Safari"
make new document
set URL of document 1 to loginurl
my waitfor("[mixi]")
set URL of document 1 to searchurl
end tell

on waitfor(s)
tell application "Safari"
repeat while my u((do JavaScript "document.title" in document 1)) is not equal to (my u(s))
delay 0.5
end repeat
end tell
end waitfor

on u(s)
return s as Unicode text
end u

on eucstring(s)
return do shell script "ruby -r kconv -r uri -e ¥"puts URI.encode(¥¥¥"" & s & "¥¥¥".toeuc)¥""
end eucstring
844名称未設定:2008/09/15(月) 03:27:39 ID:O1FvD2J/0
なんか目的がすげー如何わしい気がする
差し支えなければその辺も明らかにしたほうがいいと思った
845名称未設定:2008/09/15(月) 09:42:19 ID:3g4YJ1gF0
検索なんてアドレス開けばいんとちゃうん?
846737:2008/09/16(火) 13:22:40 ID:14KQ2lI90
>>738
>>739
>>741
>>743

質問を投稿したあと夏休みに突入してしまい
いざ夏休みが明けてみたら
質問をしたこと自体を忘れてました…

大変勉強になるレス、
遅ればせながらありがとうございます。

nダッシュを使って動いたので
スクリプトを放置していましたが
今日ふたたびmダッシュで動くように挑戦します。
847737:2008/09/16(火) 15:23:22 ID:14KQ2lI90
できました!
mダッシュをファイル名に使ったファイルを開けました。
超うれしいです。

>>743
文字はもう「as string」しかないと思い込んでました。
とっても勉強になりました。

>>739
すみません質問ですが、
手元にある「AppleScript Programming for MacOS X」だと
特定のアプリでファイルを開くには
「using "XXX(アプリ名)"」と書いてあるんですが、
「using path to "XXX(アプリ名)"」としなければいけないのは
どうしてですか?
たしかに「path to」を入れないと動かないです。


質問しておいて何ですが
あんまりにも亀なので
レスがなくてもめげません。



848名称未設定:2008/09/16(火) 21:56:16 ID:uiuC5pi80
>>837
name of windowはページが読み込み終わる前にセットされちゃうから
ちゃんと読み込み完了を判定するなら

set check to do JavaScript "document.readyState" in document of window id windowID
if check = "complete" then ほにゃにゃら

みたいにするといいんだってさ
じゃないと読み込み前にスクリプトが走っちゃってエラーで止まっちゃう事がある

ヤフーがちょっと前まで毎日ログインを強要する糞仕様だったころ
自動でログインするスクリプト作った俺がアドバイスしてみた
849名称未設定:2008/09/16(火) 22:05:58 ID:rHE0V5TG0
自分は
http://www.apple.com/applescript/archive/safari/jscript.01.html

page_loaded(timeout_value)
を使ってる
850名称未設定:2008/09/16(火) 23:02:40 ID:JAZCGfC90
今日Leopardを10.5.5にアップグレードしたので,検証してみました.

if "あ" = "ア" then
display dialog "同じです"
else
display dialog "違います"
end if

結果は「同じです」
やっぱりこの不具合は修正されていないようです.
851名称未設定:2008/09/16(火) 23:45:58 ID:8FskgzK10
バグ報告されてないかな
852名称未設定:2008/09/17(水) 00:43:14 ID:tMpYQsau0
>>847
ほんとうに「using "XXX(アプリ名)"」と書いてありますか?
私の手元にある『AppleScript Programming for MacOS X』(掌田津耶乃著)には
「open 《開くファイルの参照》 using 《開くアプリケーションの参照》」
「open 《ファイルの参照》 using 《アプリケーションファイルの参照》」
と書いてありますよ。実例として
tell application "Finder"
 open file "text.txt" of folder "Documents" of home ツ
  using application file "TextEdit.app" of folder "Applications" of startup disk
end tell
というのがあげられています。
ポイントは「アプリケーション名」ではなく「アプリケーションの参照」であることです。
要するにアプリケーションの在処をAppleScriptの文法に沿ってちゃんと記述してね、ということ。
上の例でしたら起動ディスクからのフォルダ階層を逐一記述していく形、
using the path to application の場合は、標準フォルダもしくはアプリケーションのパスを
取得するための「Path To コマンド」を使ったものです。
http://docs.info.apple.com/jarticle.html?path=AppleScript/2.1/jp/as189.html
853名称未設定:2008/09/17(水) 02:49:07 ID:Amf1dz6x0
で、>>842はどこいったんだ?
854名称未設定:2008/09/17(水) 07:06:22 ID:9RgGrqm/0
Xcode3.1.1ダウン中。ASSのバグ少しはましになってるのかな?
期待するだけ無駄って感じもするけど。

>>850
てか、ASのバージョン上がってないじゃん。で何時になったら直すんだろ?
>>851
こんなところで言ってないで君もバグ報告しなさい。数が集まれば動いてくれるかも、かも。
絶対に無理そうだな。

ちなみにoffset だけは正常に処理するから、こんな感じで書くのだ。
set str1 to "あ"
set str2 to "ア"
set hoge to offset of str2 in str1

>>737
確認せずに書いたけど as Unicode text で動いたのか。よかった。
855854:2008/09/17(水) 07:16:14 ID:9RgGrqm/0
set hoge to str2 is in str1
なんとなく上の嫌だった、こっちのがましかな?

3.1.1いってきますのだ。タイムマシンとんなきゃ。
856842:2008/09/17(水) 11:44:26 ID:jJlyEfgui
843様

遅くなりすみません!
感謝します。ありがとうです。
857737:2008/09/17(水) 13:42:33 ID:nGhs5aD50
>>852

きちんと読み返してみました。
たしかに、おっしゃるとおりでした。

ところで、
この書き方は
tell application "Finder"
 open file "text.txt" of folder "Documents" of home ツ
  using application file "TextEdit.app" of folder "Applications" of startup disk
end tell
純正のアプリじゃないと動かないですよね?

たとえば、デスクトップに「test.pdf」というファイルを作って、
それを特定のアプリで開こうとするとして、

tell application "Finder"
open file "test.pdf" of desktop using application file "Safari" of folder "Applications" of startup disk
end tell



tell application "Finder"
open file "test.pdf" of desktop using application file "Preview" of folder "Applications" of startup disk
end tell

はきちんと動いてくれるけど、
サードパーティ製のアプリでは、この書き方だと開けないです。

858名称未設定:2008/09/17(水) 19:56:14 ID:3qUi9RPi0
>>857
アプリケーションフォルダの直下にないだけじゃない?

eg)
tell application "Finder"
open file "test.pdf" of desktop using application file "MacOS_X:Applications:Adobe Reader 8:Adobe Reader.app"
end tell
859名称未設定:2008/09/17(水) 21:17:27 ID:tyjnAb5F0
>>854
>ちなみにoffset だけは正常に処理するから、こんな感じで書くのだ。

あるいは id でもいいかも。
if id of "あ" = id of "ア" then

ところで854さんはこれをもうバグレポされてるんですか? で音沙汰無し?
860854:2008/09/17(水) 22:37:33 ID:9RgGrqm/0
>>859
Unicode の区分ではひらがなとカタカナは異字体の様な同じカテゴリに入っている、だかららしい。
じゃ、なんでoffsetとかでは区別出来るの?ってなるんだけど。

MLとかディスカッションボードで言うと。信者に袋だたきに遭うよ?
アメリカ人信者こわいよーーー。マルチバイトは喋るなってかんじ。
平和主義の日本人はバグレポートの返事の「ありがとうございます。次期リリースでは参考にさせていただきます」
を信じるしかないのだ。

暑い。疲れた。こんな時間からご飯食べたら太る。アルコールにするか。
id of は Unicode No. かな?あとで見てみよ。

Xcode3.1.1 のASS。今のところ調子よい。コンパイルで文字崩れたり構文のカラーリング飛んだりしない。
それだけで十分なのですよ、ささやかな願いがかなって嬉しいですよ。わがままは言いませんのだ。
861名称未設定:2008/09/18(木) 10:19:51 ID:nwcaXLQ20
キモイ
862名称未設定:2008/09/18(木) 11:31:46 ID:CP0Oa3rB0
誘導されてきました。
よろしくお願いします。

iVolumeというソフトを使うとiTunesのコメント欄に
「Adjusted by iVolume **/**/**** **:**:**」というコメントが勝手についてしまったので
↑この部分だけを消すスクリプトをお願いします。
*は数字で、曲ファイルによって違う数字が入っています。
他のコメント欄のコメントは消さないようにしたいのですが、
そういう方法はありますでしょうか?


コメント欄から特定の文字列を消すスクリプトとして
http://pc11.2ch.net/test/read.cgi/mac/1221204749/351
を出していただいたのですが、数字がバラバラなため、もう少し違うものがあればと思っています。
863737:2008/09/18(木) 11:51:46 ID:R8gmKrpR0
>>858

あぁあぁ私としたことが…
確かにアプリケーションフォルダ直下に目的のアプリケーションがありませんでした。
で、以下でまったく問題なく動作します

tell application "Finder"
set theFile to file "test.pdf" of desktop
open theFile using application file "Adobe Acrobat Professional" of folder "Adobe Acrobat 8 Professional" of folder "Applications" of startup disk
end tell


ホントに失礼致しました。

今回のことでよく分かったのは、
アプリケーションまでのパスは
やっぱりASで「path to」で任せちゃえば
この問題は避けられる、ということですね。
すごくためになりました。


864名称未設定:2008/09/18(木) 11:54:03 ID:A2jup0Df0
>>862
最初のn文字を削除するようにすればいいと思うが、時間がないから
書いてられない。
865名称未設定:2008/09/18(木) 12:00:56 ID:Ksb4+M840
>>862
もしそれが一行になってるなら、こういう感じで除去してしまえば?
set newComment to do shell script "echo " & quoted form of oldComment & " | grep -v 'Adjusted by iVolume ../../.... ..:..:..'"
866名称未設定:2008/09/18(木) 12:02:13 ID:OIHiFKBH0
>>854もしかしてぴよまるソフトウェアさん?
867名称未設定:2008/09/18(木) 12:54:44 ID:Zp1Zi8dY0
>>860
>Unicode の区分ではひらがなとカタカナは異字体の様な同じカテゴリに入っている、だかららしい。

アルファベットの場合、デフォだと "a" = "A" だけど considering case というのがある。
仮名には対応するものがない(よね?)。フェアじゃねー。

= の挙動自体を変えることはある意味仕様の変更で、それなりのリスクも伴うので、
中の人もあまりやりたくないのかも。
落としどころとしては considering にひらがなとカタカナを区別できるオプションの追加ですかね。
どうでしょう。
868名称未設定:2008/09/18(木) 12:57:30 ID:Zp1Zi8dY0
あるいは
- ひらがなとカタカナを区別可能な比較演算子を新たに導入する
- ひらがなとカタカナおよびアルファベットの大文字小文字がデフォで区別可能な
文字クラスを新たに導入する
とか?
869名称未設定:2008/09/18(木) 12:59:42 ID:RgeldB5wP
>>865
grep の使い方がいまいち分からないんですが、こうですか?

tell application "iTunes"
if selection of front browser window is {} then
display alert "Select track(s) to process." as critical buttons "Cancel"
else
set selectedTracks to selection
set TID to AppleScript's text item delimiters
set FI to fixed indexing
set fixed indexing to true
try
repeat with aTrack in selectedTracks
tell aTrack
set oldComment to comment
set newComment to do shell script "echo " & quoted form of oldComment & " | grep -v 'Adjusted by iVolume ../../.... ..:..:..'"
se
870名称未設定:2008/09/18(木) 13:00:13 ID:RgeldB5wP
>>865
grep の使い方がいまいち分からないんですが、こうですか?

tell application "iTunes"
if selection of front browser window is {} then
display alert "Select track(s) to process." as critical buttons "Cancel"
else
set selectedTracks to selection
set TID to AppleScript's text item delimiters
set FI to fixed indexing
set fixed indexing to true
try
repeat with aTrack in selectedTracks
tell aTrack
set oldComment to comment
set newComment to do shell script "echo " & quoted form of oldComment & " | grep -v 'Adjusted by iVolume ../../.... ..:..:..'"
se
871名称未設定:2008/09/18(木) 13:01:45 ID:RgeldB5wP
(すいません、何か書き込みが途切れます。seの後に続くのは以下のとおり)

set comment to newComment
end tell
end repeat
end try
set fixed indexing to FI
set AppleScript's text item delimiters to TID
display alert "Process was completed." as critical buttons "OK"
end if
end tell

…何か動かないみたいです orz
872名称未設定:2008/09/18(木) 13:22:39 ID:CP0Oa3rB0
>>865
すみません、当方スクリプトに関してまったくの初心者で、
その部分をどこに入れたらいいか教えていただけないでしょうか?
873名称未設定:2008/09/18(木) 13:34:51 ID:T1B7ZYc60
Mac OS 9時代
considering ≪constant conszkhk≫
ってのがあったんだけど、これunicode化のときに廃止されちゃったんだよね。
874名称未設定:2008/09/18(木) 16:09:50 ID:RgeldB5wP
>>862
grepを使いこなすのはかなり難しそうなので
とりあえず>>864さんのアドバイスを取り入れて
コメント欄が「Adjusted by iVolume」で始まってたら
(/とか:とかは単語の区切りと認識されるので)
先頭から9単語を削除するスクリプト

tell application "iTunes"
if selection of front browser window is {} then
display alert "Select track(s) to process." as critical buttons "Cancel"
else
set selectedTracks to selection
set TID to AppleScript's text item delimiters
set FI to fixed indexing
set fixed indexing to true
try
repeat with aTrack in selectedTracks
tell aTrack
if comment starts with "Adjusted by iVolume" then
set aComment to comment as text
set aText to text from word 10 to end of aComment
set comment to aText
end if
end tell
end repeat
end try
set fixed indexing to FI
set AppleScript's text item delimiters to TID
display alert "Process was completed." as critical buttons "OK"
end if
end tell
875名称未設定:2008/09/18(木) 16:20:15 ID:RgeldB5wP
>>874
すんません、AppleScript's text item delimitersは使わないんだから

set TID to AppleScript's text item delimiters
set AppleScript's text item delimiters to TID

この2行は不要でした。つか消し忘れ… orz
876名称未設定:2008/09/19(金) 01:03:50 ID:Gy+O0ufbO
言語設定が日本語だと全かな、全カナ、半カナを等価判別できないけど、
Englishだとできたりするのがまた謎だな

日本語環境でありものの機能使って判別する方法としては…

互いに包含>>855
(A contains B) and (A is in B)

Leopardで追加のid of 〜>>859
(id of A) is (id of B)

shellのtestコマンドでも一応判別できる
(do shell script "if [ " & A & " = " & B & " ]; then echo true; fi") as boolean

どれもアルファベットの大文字小文字すら区別しちまう点は注意が必要
(ignoring case〜は影響しない)
877名称未設定:2008/09/19(金) 14:22:30 ID:O/QAHgiU0
BathyScapheのキャッシュフォルダを定期的に削除したいのですが
スクリプトの作り方がわからなくて断念しました

user/ライブラリ/Caches/BathyScaphe/
BathyScaphe以下に生成されるキャッシュフォルダとファイルを取得し、
すべてのファイルをゴミ箱に移動してゴミ箱を空にするのを作成して頂けないでしょうか。
878名称未設定:2008/09/19(金) 14:44:12 ID:weZ0vi2e0
ここは丸投げして作ってもらえるスレなのか?
879名称未設定:2008/09/19(金) 14:47:07 ID:O/QAHgiU0
tell application "Finder"
  delete folder user/ライブラリ/Caches/BathyScaphe/以下
  empty trash
end tell

難しい
880名称未設定:2008/09/19(金) 14:51:55 ID:weZ0vi2e0
誰だって最初は難しいんだよ。中には例外もいるだろうけど。
881名称未設定:2008/09/19(金) 15:26:59 ID:QE4PBKhZ0
手抜きw

tell application "System Events" to set runningApps to name of every application process whose background only is false
if "BathyScaphe" is in runningApps then
display dialog "BathyScaphe is running, try later." buttons {"OK"} default button 1
else
do shell script "find $HOME/Library/Caches/BathyScaphe/ -type f -delete"
end if
882名称未設定:2008/09/19(金) 15:39:29 ID:xGCDArN+0
>>877
AppleScriptじゃなくて、Unixが持ってるcronを使った方がいいような気がするね。
CronniXっていうGUIで設定できるフロントエンドがあるから、それを使うとらく。

実行コマンドはたぶん
rm -r ~/Library/Caches/BathyScaphe/*
883名称未設定:2008/09/19(金) 16:29:57 ID:8WEYJoml0
>>879
POSIX path じゃなければほぼ正解なのに、惜しいな。いろんなことはともかく。
884名称未設定:2008/09/19(金) 16:32:46 ID:O/QAHgiU0
皆様ありがとうございます。
do shell script "rm -r ~/Library/Caches/BathyScaphe/* を
アプリケーション保存して解決しました!
885名称未設定:2008/09/19(金) 17:10:51 ID:xGCDArN+0
>>884
それだと「定期的に削除したい」が満たされていないけどいいの?
886名称未設定:2008/09/19(金) 17:22:46 ID:O/QAHgiU0
旧いmacを使用していてバチスカ起動してると、次第に動作が重くなり
原因を探した所キャッシュファイルでした。
もっさりしたなと思い立った時にショートカットキーで削除させたかったので
要件はばっちり満たされました。

正規表現もそうだけど、アップル、シェルスクリプトとか使えると便利だなあ
なんか本買って頑張ろう。
887名称未設定:2008/09/19(金) 19:15:13 ID:UJQA2fHX0
AppleScriptによる解決法じゃないけどさ、
BathyScapheのメニューに、「BathyScapheをリセット…」ってのが
はじめからついているじゃん。
それを実行するとキャッシュ消えるよ。
888850:2008/09/21(日) 23:11:54 ID:4uIFf6Jg0
>>859
ASCIIコードのトリッキーな技が使えないからどうしようかと思ってたんですが,
なるほどidを使えばよさそうですね.参考になります.ありがとうございました.

それと >>495 の話題ですが,iTunes 8.0でも結果は同じでした.
つまり,( >>658 >>660 ) がやっぱり答えになるんだろうと思います.
889名称未設定:2008/09/23(火) 07:35:57 ID:oiPe4AMh0
>>876
AppleScriptのUnicode比較APIの使い方が間違ってる。
カレントロケールで動作が変わるAPIにゆるい一致判定オプション
を与えているから、環境に影響されて動作が一定しないし、必要な
区別もつかない。
Roman系の言語でもdiacriticが絡んだりすると動作が怪しいはず。
890名称未設定:2008/09/23(火) 10:30:43 ID:W5glb4U/0
質問です
ASSで簡易的なWEBブラウザ(というよりWEB Viewer?)を作ろうとしています
WebViewにURLを渡して表示というのはcall methodを使うのでしょうか
だとしたらまだ自分には敷居が高いのであきらめるしかないですが
891名称未設定:2008/09/23(火) 10:43:58 ID:FBAy/xZw0
cocoaでやらないことには何か理由があるの?
892名称未設定:2008/09/23(火) 10:47:05 ID:1wFcVsS80
>>899
diacriticってドイツ語のウムラウトとか?
893名称未設定:2008/09/23(火) 12:25:26 ID:W5glb4U/0
>>891
Objective-CがわかるのならAppleScriptでやる必要はないかもしれませんが
そういうことではないですか?
イメージ的にはExamplesのSimpleCarbonWebみたいなもので
Scriptで計算したURLを投げるだけなのでURL入力欄すらないものなんです
894名称未設定:2008/09/23(火) 12:53:48 ID:z2/uUVWv0
簡易ブラウザならどっかに作り方を丁寧に教えてるページがあったよね。ココアだけど。
895名称未設定:2008/09/23(火) 12:59:57 ID:HdkrhHz70
>>890
自分は
http://www.hoboes.com/Mimsy/?ART=494
を参考にして作った
896名称未設定:2008/09/23(火) 13:45:48 ID:HsKUSjYP0
897名称未設定:2008/09/23(火) 14:15:20 ID:W5glb4U/0
やはりcall methodが絡むんですね
>>895で紹介されてる内容を流用したら希望どおりのモノができました。
内容が理解できてませんがこれを足がかりに少しcall methodのことを調べてみます。
898名称未設定:2008/09/23(火) 18:58:23 ID:pZBiO/hw0
指定したアプリを1時間で終了(Command+Q)させるタイマーのスクリプト
どなたか作ってください
WEBカメラアプリ(EvoCam)を起動してから1時間で終了させたいんです
899名称未設定:2008/09/23(火) 19:01:30 ID:7Kpi2w8I0
できた
900名称未設定:2008/09/23(火) 20:01:13 ID:HRSf+AfL0
質問です。
OS10.4.11

アップルのサイトを参考にして、
フォルダアクション設定をしてFAX受信アラートを設定しました。
“add - new item alert.scpt”

このアラートをボタンを押して消すまで表示させ続けたいのですが
参考になるサイトとかありましたらよろしくお願いします。
デフォルトでは30秒のみの表示です。

property dialog_timeout : 30 -- set the amount of time before dialogs auto-answer.
901名称未設定:2008/09/23(火) 20:03:55 ID:d19dwMzY0
どんだけほったらかすことがあるのか知らないけど、
1ヶ月分くらいの秒数を入れとけば
902900:2008/09/24(水) 16:47:44 ID:7OBuIbYH0
>>901
どもです。素直にでかい数字入れちゃえばいいんすよね。
なんか敷居が高くてテンパッちゃいました。
903名称未設定:2008/09/25(木) 01:11:06 ID:ojd/rQs+0
ageて
904名称未設定:2008/09/26(金) 23:43:19 ID:+Q6VEuSnO
>>902
実は0を入れるとボタン押すまで永久に消えなかったりする

或いは単純に
"giving up after dialog_timeout"
をコメントアウトしたって問題無い
905名称未設定:2008/09/27(土) 15:49:12 ID:9+CWRRzS0
Snapz Pro Xをやっとレジストできたのが嬉しくて,勢いでアプレットを作成&発表.

Mac起動時又はログイン時に出るSnapz Pro Xのスプラッシュスクリーンを
スキップにさせるアプレット.公開されているターミナルコマンドを元に,
アプリケーションとしてまとめたものです.

Snapz Pro X Skip Splash Screen
www.gcug.net/spx/spxsss.zip
906名称未設定:2008/09/27(土) 15:50:42 ID:9+CWRRzS0
間違えちゃった.
×スキップにさせる
○スキップさせる
907名称未設定:2008/09/27(土) 16:07:12 ID:CnD6HsBG0
あー確かにあのスプラッシュはウザいな
今は入れてないけど
908名称未設定:2008/09/27(土) 18:45:24 ID:9+CWRRzS0
ですね,思ってることは皆同じっていうか.
909名称未設定:2008/09/30(火) 04:39:46 ID:o93Pcdps0
>>904
ありがとう。試します。
910名称未設定:2008/09/30(火) 10:07:32 ID:VjTBxP0L0
ご教授願います。

ディスプレイの明るさを変えるAppleScriptはどのように記述するのでしょうか。

また、現在の明るさの値を取得することは可能でしょうか。

以上2点、よろしくお願いいたします。
911名称未設定:2008/09/30(火) 13:23:49 ID:PR7Lt0SM0
iTunesにて選択した曲(mp3)と同一フォルダ内にある画像(.jpg)をアートワークに埋め込む
スクリプトをどなたか作っていただけないでしょうか?
曲を複数選択してからスクリプト実行すると一括処理してほしいんですが・・

ちなみに現在のファイル管理は下記のようになっています。

【アーティスト】
 【アルバムA】
  01. XXX.mp3
  02. XXX.mp3
  アルバムA.jpg
  アルバムA.txt
 【アルバムB】
  01. XXX.mp3
  02. XXX.mp3
  アルバムB.jpg
  アルバムB.txt

画像のファイル名は「album.jpg」等に統一しても構いませんので
どなたかお助けください..

同様に同一フォルダ内にあるtxtを歌詞に登録できると最高なのですが..
こちらもファイル名をalbum.txt等に統一しても構いません.
912名称未設定:2008/09/30(火) 17:25:02 ID:7kjLoZL50
ここは「作りたいけど分からないから教えて」って言う人のためのスレだよ。
百歩譲って「手伝って」だな。
913名称未設定:2008/09/30(火) 20:05:41 ID:gU+8KrzcP
>>911
途中まで作ってみた(分かんない部分をコメントアウト)

tell application "iTunes"
if selection of front browser window is {} then
display alert "Select track(s) to process." as critical buttons "Cancel"
else
set FI to fixed indexing
set fixed indexing to true
set selectedTracks to selection
try
repeat with aTrack in selectedTracks
tell aTrack
set fileLocation to (the location of aTrack)
-- ここまでで変数「fileLocation」に選択したトラックの場所が入ります
-- 書式は"ディスク名:Users:ユーザー名:Music:iTunes:iTunes Music:アーティスト名:アルバム名:曲名.拡張子"
-- ここから「fileLocation」を"ディスク名:Users:ユーザー名:Music:iTunes:iTunes Music:アーティスト名:アルバム名:アルバム名.jpg"に変換すれば
-- set artowork to (fileLocation の場所にある画像) を実行
-- さらに「fileLocation」を"ディスク名:Users:ユーザー名:Music:iTunes:iTunes Music:アーティスト名:アルバム名:曲名.txt"に変換して
-- set lyrics to (fileLocation の場所にあるテキスト) を実行でいいんじゃないんですかね
end tell
end repeat
end try
set fixed indexing to FI
display alert "Process was completed." as critical buttons "OK"
end if
end tell
914名称未設定:2008/09/30(火) 20:14:30 ID:MYSvo4rc0
アートワーク関連で、「Find Album Artwork With Google.scpt」の検索先を
iTunesでアメリカから日本のGoogle画像に変更するのはどうしたら良いのでしょうか。
単純な置換では文字化けしたままで検索できません。
Find Album Artwork with Google
http://dougscripts.com/itunes/scripts/ss.php?sp=findalbumartwork
915名称未設定:2008/09/30(火) 20:38:40 ID:LB04PS900
>>911
ここに「歌詞ファイルは音楽ファイルと同じファイル名で拡張子だけを ".txt" に変えた
テキストファイルとして同じフォルダに保存」されていたら表示する
というアップルスクリプトがあったよ。
http://www2.airnet.ne.jp/~kenshi/mac07.html
これと>>913を組み合わせれば set lyrics to (歌詞ファイル) が作れるんじゃない?
んで、それをちょっと改造すれば set artowork to (fアートワークファイル) も作れるよね
916名称未設定:2008/09/30(火) 22:06:02 ID:gU+8KrzcP
>>911
いま気付いたんだが歌詞のテキストファイルはアルバム1枚に1個じゃないよね?
曲1つに歌詞のテキストファイル1個だよね?
01. XXX.mp3という曲の歌詞は01. XXX.txtというテキストファイル
という前提で>>915さんのスクリプトを拝借して歌詞のテキストファイルを
iTunesの歌詞欄にコピーするスクリプトをでっちあげてみた。
デバッグも何もやってないんで動作しなかったらゴメン。
ここんとこがヘンという箇所がありましたらご指摘くださいませ。>諸先輩方

on replace(src, tgt, rpc) -- 文字列を置換する関数
set AppleScript's text item delimiters to tgt
set txtlist to text items of src
set AppleScript's text item delimiters to rpc
set ret to txtlist as string
return ret
end replace
try
tell application "iTunes"
if selection of front browser window is {} then
display alert "歌詞ファイルをコピーする曲を選択して下さい。" buttons {"OK"}
else
set TID to AppleScript's text item delimiters -- text item delimiters を保存
set FI to fixed indexing -- fixed indexing を保存
set fixed indexing to true -- fixed indexing を true にセット
set selectedTracks to selection -- 選択中のトラックを取得

917名称未設定:2008/09/30(火) 22:07:05 ID:gU+8KrzcP
>>916の続き

try
repeat with aTrack in selectedTracks
set file_location to (the location of aTrack) -- 処置するトラックの場所を取得
set AppleScript's text item delimiters to ":" -- テキストを : で分割するように設定
set file_list to text items of (file_location as string) -- ファイルの完全パスをフォルダ名毎に分割
set file_name to (the item (the count of file_list) of file_list) -- ファイル名だけを取り出す
set AppleScript's text item delimiters to "." -- テキストを . で分割するように設定
set text_list to text items of file_name -- ファイル名を本体と拡張子に分割
set file_suffix to (the item (the count of text_list) of text_list) -- ファイルの拡張子だけを取り出す。
if file_suffix is "" then
text_filename to file_name & ".txt" -- 拡張子が無い場合は ".txt" を付けるだけ。
else
set text_filename to replace(file_name, "." & file_suffix, ".txt") -- 拡張子がある場合はそれを ".txt" で置き買える。
end if
918名称未設定:2008/09/30(火) 22:08:38 ID:gU+8KrzcP
>>917の続き

set (the item (the count of file_list) of file_list) to text_filename
set AppleScript's text item delimiters to ":"
set text_filename to file_list as string -- 歌詞ファイルの完全パスを構築する
open for access file text_filename
set text_file to read file text_filename
tell aTrack
set lyrics to text_file
end tell
close access file text_filename
end repeat
end try
set fixed indexing to FI -- fixed indexing を保存した値に戻す
set AppleScript's text item delimiters to TID -- text item delimiters を保存した値に戻す
display alert "作業を完了しました。" buttons {"OK"}
end if
end tell
end try
919名称未設定:2008/09/30(火) 22:28:36 ID:gU+8KrzcP
>>916-918
で、なんか冒頭の「on replace(src, tgt, rpc) -- 文字列を置換する関数」が
正常に動いてないっぽいけど何が間違ってるのか分かりません orz
920名称未設定:2008/09/30(火) 22:35:09 ID:uw+3sFNG0
>>910
ネットをちょっとばかし見て回ったところでは次の3つの方法が見つかった

1. ボタンをポチポチする
--Dimmer:
tell application "System Events"
key code 107
end tell

--Brighter:
tell application "System Events"
key code 113
end tell
921名称未設定:2008/09/30(火) 22:36:38 ID:uw+3sFNG0
2. システム環境設定を起動してGUIスクリプティングで値を設定・取得
--Set value:
set brightness_level to 0.5 -- 0.0 is Min. and 1.0 is Max.
tell application "System Preferences"
set current pane to pane "com.apple.preference.displays"
tell application "System Events" to tell process "System Preferences"
set value of slider 1 of group 2 of tab group 1 of window 1 to brightness_level
end tell
quit
end tell

--Get value:
tell application "System Preferences"
set current pane to pane "com.apple.preference.displays"
tell application "System Events"
tell process "System Preferences"
set brightness_level to value of slider 1 of group 2 of tab group 1 of window 1
display dialog brightness_level
end tell
end tell
quit
end tell

3. 専用のコマンドラインユーティリティを使用する
http://ddccontrol.sourceforge.net/
922名称未設定:2008/09/30(火) 23:42:15 ID:gU+8KrzcP
>>919
サブルーチンにしないで(どうせ1回しか呼び出さないし)ゴリゴリ書いたら
text_filenameに
"起動ディスク:Users:ユーザー名:Music:iTunes:iTunes Music:アーティスト名:アルバム名:01 曲名.txt"
とフルパスが入るようになりましたが…

open for access text_filename
set text_file to read text_filename
close access text_filename

これでtext_fileの中身が":"になっちゃうのは何故… orz
テキストファイルの読み込みの書式が間違ってますか?
923名称未設定:2008/09/30(火) 23:49:09 ID:vvbENqlo0
>>914
意図がイマイチわからないけど、この程度でも一応動いた。

tell application "iTunes"
if selection of front browser window is {} then return
tell first item of selection
set origQStr to artist & " " & name
end tell
end tell
set escQStr to do shell script "echo " & quoted form of origQStr & " | perl -MURI::Escape -ne 'chomp; print uri_escape $_'"
open location "http://images.google.co.jp/images?hl=ja&q=" & escQStr
924914:2008/10/01(水) 07:25:31 ID:iUqcSBbK0
>>923
ありがとうございます。
925名称未設定:2008/10/01(水) 08:23:23 ID:tBb3TrH/P
>>911
なんとか動くようになった…「ファイル名.拡張子」という音楽ファイルの歌詞は
同じフォルダ内の「ファイル名.txt」というテキストファイルに書いてある
という前提でiTunesの歌詞欄にコピーするスクリプト(暫定版)
これで問題なければアートワークをコピーするスクリプトも書いてみますが…

tell application "iTunes"
if selection of front browser window is {} then
display alert "歌詞ファイルをコピーする曲を選択して下さい。" buttons {"OK"}
else
set TID to AppleScript's text item delimiters -- text item delimiters を保存
set FI to fixed indexing -- fixed indexing を保存
set fixed indexing to true -- fixed indexing を true にセット
set selectedTracks to selection -- 選択中のトラックを取得
try
repeat with aTrack in selectedTracks
tell aTrack
set file_location to (the location of aTrack) -- 処置するトラックの場所を取得
set AppleScript's text item delimiters to ":" -- テキストを : で分割するように設定
set file_list to text items of (file_location as string) -- ファイルの完全パスをフォルダ名毎に分割
set file_name to (the item (the count of file_list) of file_list) -- ファイル名だけを取り出す
set AppleScript's text item delimiters to "." -- テキストを . で分割するように設定
set text_list to text items of file_name -- ファイル名を本体と拡張子に分割
set file_suffix to (the item (the count of text_list) of text_list) -- ファイルの拡張子だけを取り出す。
if file_suffix is "" then
text_filename to file_name & ".txt" -- 拡張子が無い場合は ".txt" を付けるだけ。
926名称未設定:2008/10/01(水) 08:31:22 ID:tBb3TrH/P
>>925の続き

else
set AppleScript's text item delimiters to "." & file_suffix
set text_list to text items of file_name
set AppleScript's text item delimiters to ".txt"
set text_filename to text_list as string -- 拡張子がある場合はそれを ".txt" で置き買える。
end if
set (the item (the count of file_list) of file_list) to text_filename
set AppleScript's text item delimiters to ":"
set text_filename to file_list as string -- 歌詞ファイルの完全パスを構築する
set text_file to (open for access file text_filename) -- 歌詞ファイルが無い場合は作成
set lyrics to read text_file
close access text_file
end tell
end repeat
end try
set fixed indexing to FI -- fixed indexing を保存した値に戻す
set AppleScript's text item delimiters to TID -- text item delimiters を保存した値に戻す
display alert "作業を完了しました。" buttons {"OK"}
end if
end tell
927名称未設定:2008/10/01(水) 09:44:50 ID:b3hBAErK0
>>920-921
ありがとうございます。
set volumeの様なものがあるのかとおもってました。
System Preferencesにtellってやらなければならないのですね。
928911:2008/10/01(水) 10:02:13 ID:mBUwXnHE0
>>925-926
ライブラリで対象の複数曲を選択した状態でスクリプトを実行したら
あっっっっという間に完了しましたというダイアログができてきました。。
すばらしい・・・・・・・・・・・!!!!!!
929911:2008/10/01(水) 10:11:16 ID:mBUwXnHE0
それでですが・・・・・


まず、歌詞が埋め込めたら・・・と希望したのは
その曲を聴いててこのアルバムの情報テキストを歌詞を呼び出したときに
見れたらいいな。ということなので

-------------------------
01. XX.mp3
02. XX.mp3

a (vo)
b (p)
Live at "A", june 7, 2010

アルバム説明文
-------------------------

同じテキスト内容が選択した曲に登録さて良いのです。
ですので参照するテキスト名がどのフォルダ(アルバム)でも同一名だとうれしいのですが。。
2000あるアルバムのテキストファイルを一括置換でalbum.txtとうにいたします。

自分でスクリプトを見てみたんですが
どこにそのalbum.txt等ファイル名を指定する場所があるのかわからず。。


そして。。本当に図々しいですが第一の目的はアートワークを一括処理で埋め込みたいのです。。
ここも全アルバム(フォルダ)で共通のファイル名(album.jpg等)になっているとうれしいのですが。

あ、もしかして同一ファイル名.txt or .jpgだとHDD〜アルバムフォルダまでのパスを記述しないと行けないのでしょうか?

どうか天才のお力をお借りできたらと思います。。
930名称未設定:2008/10/01(水) 10:59:56 ID:tBb3TrH/P
>>929
埋め込む歌詞は同じフォルダにあるalbum.txt
埋め込むアートワークは同じフォルダにあるalbum.jpg
という仕様ですね?そちらのほうが簡単ですんで
ちょっと書いてみます…しばらくお待ちを…
931911:2008/10/01(水) 12:30:48 ID:mBUwXnHE0
>>930

ご親切に有り難うございます。
さすがに、選択した曲と同一フォルダ内にある「指定したファイル名.jpgまたは.txt」ではなく、
選択した曲と同一フォルダ内にある「.jpg」の付いたファイルをアートワークへ登録。
選択した曲と同一フォルダ内にある「.txt」の付いたファイルを歌詞へ登録。
という風に全フォルダ内でも共通するワードだけの指定は不可能でしょうか?

【アートワークを登録】
・iTunesで曲を選択してスクリプトを実行
・選択した曲と同一フォルダ内にある".jpg”をアートワーク登録

【歌詞を登録】
・iTunesで曲を選択してスクリプトを実行
・選択した曲と同一フォルダ内にある".txt”を歌詞登録

不可能でしたらすべてのアルバム名.jpgとアルバム名.txtを
album.jpg、album.txt等に置換してからスクリプトを実行します。


何かを立ち上げ何かをする。っていうファインダに命令するレベルのスクリプトはできましたが。。
といってもスクリプトの記録を押して作業しただけですが。。
記述していただいた内容は全く理解できず・・
どこでその「音楽ファイル.mp3」の場所を見に行かせ、
どうやって「音楽ファイルと同一名.txt」を見つけさせ、
どうやってテキスト内容をコピーして歌詞欄にペーストしたのか。。
すばらしいと言うより恐ろしい・・

単純に、
選択された曲が置いてあるフォルダ内にある「指定したファイル名.jpg」を参照してアートワークに貼り付け。
という言葉では簡単に見えるのですが全く分かりません。。
932名称未設定:2008/10/01(水) 12:55:33 ID:kT0UagKe0
jpeg埋め込みってそんなに簡単にできたっけ?
以前やったときはできなかった気がした。
933名称未設定:2008/10/01(水) 13:11:10 ID:dE1RsC/z0
ここはずいぶん親切なヤツが多いな。俺も今度なんか作ってもらおう。
934名称未設定:2008/10/01(水) 13:26:03 ID:tBb3TrH/P
>>931
行き詰まりました orz
いちおう書いてみたんですが歌詞は書き込めるのに
アートワークは書き込めません
何処が書式がヘンなんだろうと思いますが…
>>932
set data of artworkを使ったスクリプトはたくさんあるんですが…
もしかしてjpeg画像だとダメなんでしょうか?
935名称未設定:2008/10/01(水) 13:27:06 ID:tBb3TrH/P
>>934で行き詰まったスクリプト(未完成)

tell application "iTunes"
if selection of front browser window is {} then
display alert "歌詞ファイルをコピーする曲を選択して下さい。" buttons {"OK"}
else
set TID to AppleScript's text item delimiters -- text item delimiters を保存
set FI to fixed indexing -- fixed indexing を保存
set fixed indexing to true -- fixed indexing を true にセット
set selectedTracks to selection -- 選択中のトラックを取得
try
repeat with aTrack in selectedTracks
tell aTrack
set file_location to (the location of aTrack) -- 処置するトラックの場所を取得
set AppleScript's text item delimiters to ":" -- テキストを : で分割するように設定
set file_list to text items of (file_location as string) -- ファイルの完全パスをフォルダ名毎に分割
set (the item (the count of file_list) of file_list) to "album.txt" -- ファイル名を album.txt に変更
set text_filename to file_list as string -- テキストファイルの完全パスを構築する
set (the item (the count of file_list) of file_list) to "album.jpg" -- ファイル名を album.jpg に変更
set art_filename to file_list as string -- 画像ファイルの完全パスを構築する
936名称未設定:2008/10/01(水) 13:28:43 ID:tBb3TrH/P
>>935の続き

set text_file to read (open for access file text_filename) -- テキストファイルを開く
set lyrics to text_file -- 歌詞欄にテキストファイルを読み込む
close access text_file -- テキストファイルを閉じる
set art_file to read (open for access file art_filename) as picture -- 画像ファイルを開く
set data of artwork 1 to art_file -- アートワーク欄に画像ファイルを読み込む
close access art_file -- 画像ファイルを閉じる
end tell
end repeat
%
937名称未設定:2008/10/01(水) 13:30:04 ID:tBb3TrH/P
>>936の続き(936の最後の「%」だけの行は文字化けなんで無視してください)

end try
set fixed indexing to FI -- fixed indexing を保存した値に戻す
set AppleScript's text item delimiters to TID -- text item delimiters を保存した値に戻す
display alert "作業を完了しました。" buttons {"OK"}
end if
end tell
938911:2008/10/01(水) 13:57:33 ID:mBUwXnHE0
set (the item (the count of file_list) of file_list) to "album.txt" -- ファイル名を album.txt に変更
set (the item (the count of file_list) of file_list) to "album.jpg" -- ファイル名を album.jpg に変更

この行はファイル名を変更するスクリプトでしょうか?
それともこのファイル名に変更しておくことってことでしょうか?

指定するファイル名は“.txt”を、“.jpg“でも行けますか?
各アルバムフォルダ内のテキスト・画像ファイル名を変更しようと思うと
すべてを一度別フォルダにコピーしてからファイル名を変更し、
2000近いアルバムフォルダに元ファイル名のデータを戻す作業が待ってるので・・

Filebuddy等で検索してリストアップしたファイル(txtやjpg)を
ファイル名を変更して同一フォルダ内にコピーできるソフトがあれば
ファイル名.txt → ファイル名1.txt など。
処理後にalbum.jpgを削除後にファイル名を元に戻すってできるんですがね。。

とりあえず試しに実行してみます。
939911:2008/10/01(水) 15:11:01 ID:mBUwXnHE0
アートワーク&歌詞登録を実行してみました。

歌詞が、複数選択した曲のなかの最初の曲しか登録されませんでした。
先ほど記述していただいた歌詞登録と比較したらreadの位置が違ったので
修正したところ無事複数選択曲にalbum.txtを登録できました。

set text_file to (open for access file text_filename) -- テキストファイルを開く
set lyrics to read text_file -- 歌詞欄にテキストファイルを読み込む

ファイル名を".txt"と記述してみましたがやっぱりだめなんですね。
".txt"が含まれてるファイル。という風に書くことは無理なんでしょうか?

というかなぜテキストは行けたのにアートワークが登録されないんだろう。。
940911:2008/10/01(水) 15:59:00 ID:mBUwXnHE0
まことに図々しいですが、

放り込んだファイルを同一フォルダ内にコピーしてから
"指定したファイル名.xxx"に変更するようなスクリプトは可能でしょうか?

xxx.jpgをドロップすると同一フォルダにコピーされファイル名がalbum.jpgに変更される。
同一フォルダなので名称が同じだとコピーできないし、
かといってコピー後のファイル名を指定してからコピー実行するするソフトなんてありませんよね。。
941名称未設定:2008/10/01(水) 16:24:28 ID:yi5Sd2MW0
コピーしてリネーム+再度コピー とか書けば出来ね?
942名称未設定:2008/10/01(水) 16:28:19 ID:tBb3TrH/P
>>938
すべてのアルバム名.jpgとアルバム名.txtを
album.jpg、album.txt等に置換してから
スクリプトを実行してください。
それでtxtのほうは登録できるはずです。
jpgのほうは何故か登録できないのは前述のとおりです。
943名称未設定:2008/10/01(水) 16:47:02 ID:v/4GSQ4F0
自分がAppleScriptでjpgからアートワーク追加したときは
http://forums.ilounge.com/archive/index.php/t-96368.html
を参考にした。
ちょっとめんどくさいけどそのまま使えるサンプルコードが書いてあるので助かった。
書き込みが古いので、もし今ではjpgのまま追加できるようになってるなら知りたいな。
944名称未設定:2008/10/01(水) 17:06:51 ID:tBb3TrH/P
>>931
『選択した曲と同一フォルダ内にある「.txt」の付いたファイルを歌詞へ登録』
ってのはカンベンしてください。そもそも Apple Script ってそおゆうの苦手なんです。
grep とか perl とかを併用すれば出来るんでしょうが、ちょっとおいらの手には余ります。

『選択した曲と同一フォルダ内にある「アルバム名.txt」の付いたファイルを歌詞へ登録』
だったら先のスクリプトをちょちょいと変更すれば出来ますよ。見比べてみてください。

tell application "iTunes"
if selection of front browser window is {} then
display alert "歌詞ファイルをコピーする曲を選択して下さい。" buttons {"OK"}
else
set TID to AppleScript's text item delimiters -- text item delimiters を保存
set FI to fixed indexing -- fixed indexing を保存
set fixed indexing to true -- fixed indexing を true にセット
set selectedTracks to selection -- 選択中のトラックを取得
945名称未設定:2008/10/01(水) 17:09:57 ID:tBb3TrH/P
>>944の続き

try
repeat with aTrack in selectedTracks
tell aTrack
set file_location to (the location of aTrack) -- 処置するトラックの場所を取得
set AppleScript's text item delimiters to ":" -- テキストを : で分割するように設定
set file_list to text items of (file_location as string) -- ファイルの完全パスをフォルダ名毎に分割
set (the item (the count of file_list) of file_list) to album & ".txt" -- ファイル名を「アルバム名.txt」に変更
set text_filename to file_list as string -- テキストファイルの完全パスを構築する
set text_file to (open for access file text_filename) -- テキストファイルを開く
set lyrics to read text_file -- 歌詞欄にテキストファイルを読み込む
close access text_file -- テキストファイルを閉じる
end tell
end repeat
end try
set fixed indexing to FI -- fixed indexing を保存した値に戻す
set AppleScript's text item delimiters to TID -- text item delimiters を保存した値に戻す
display alert "作業を完了しました。" buttons {"OK"}
end if
end tell
946名称未設定:2008/10/01(水) 17:18:46 ID:fST5XOHc0
スレが活発になるのは結構だけど、もっと当人の努力が必要と思うんだがなあ。
947名称未設定:2008/10/01(水) 17:23:59 ID:tBb3TrH/P
>>944-945
で、このスクリプトの該当箇所を下のようにちょちょいと変更すれば

set (the item (the count of file_list) of file_list) to album & ".jpg" -- ファイル名を「アルバム名.jpg」に変更
set art_filename to file_list as string -- 画像ファイルの完全パスを構築する
set art_file to read (open for access file art_filename) as picture -- 画像ファイルを開く
set data of artwork 1 to art_file -- アートワークに画像ファイルを読み込む
close access art_file -- 画像ファイルを閉じる

『選択した曲と同一フォルダ内にある「アルバム名.jpg」のファイルをアートワークへ登録』
ってのもできるかなと思ったんですけど全く動かないんですよ。JPEGだとダメなのかな…

>>946
お騒がせしてすいません。そろそろ引っ込みますんで…
948名称未設定:2008/10/01(水) 18:39:13 ID:RcrQAxy30
>944
>『選択した曲と同一フォルダ内にある「.txt」の付いたファイルを歌詞へ登録』
tell application "iTunes"
if selection is {} then error "えらんでください"
set sndFileList to location of selection
repeat with aFile in sndFileList
tell application "Finder"
set theFolder to folder of aFile
set textFilePath to (files of theFolder where (its name ends with ".txt"))
-- textFilePath に拡張子が".txt"のfileの参照のリストが入る。
-- ファイルがなかったとき{}。
-- 複数あったときの処理はどうする?
set jpegFilePath to (files of theFolder where (its name ends with ".jpg"))
-- jpegについても同様
end tell
end repeat
end tell

>>947
ここまでしてもらったら、引っ込む前にアブストラクトくらい書いてってね。>>944
949名称未設定:2008/10/01(水) 18:39:54 ID:RcrQAxy30
さいごの>>944は編集ミスです。すみません
950911:2008/10/01(水) 20:21:15 ID:mBUwXnHE0
>>946
本当にすみません。Applescriptのサイトを見ながらいじってるんのですが。。

選択した曲と同一フォルダ内にある「album.txt」を歌詞へ登録』
tell application "iTunes"
if selection of front browser window is {} then
display alert "歌詞ファイルをコピーする曲を選択して下さい。" buttons {"OK"}
else
set TID to AppleScript's text item delimiters -- text item delimiters を保存
set FI to fixed indexing -- fixed indexing を保存
set fixed indexing to true -- fixed indexing を true にセット
set selectedTracks to selection -- 選択中のトラックを取得
try
repeat with aTrack in selectedTracks
tell aTrack
set file_location to (the location of aTrack) -- 処置するトラックの場所を取得
set AppleScript's text item delimiters to ":" -- テキストを : で分割するように設定
set file_list to text items of (file_location as string) -- ファイルの完全パスをフォルダ名毎に分割
set (the item (the count of file_list) of file_list) to "album.txt" -- ファイル名を album.txt に変更
set text_filename to file_list as string -- テキストファイルの完全パスを構築する
set text_file to (open for access file text_filename) -- テキストファイルを開く
set lyrics to read text_file -- 歌詞欄にテキストファイルを読み込む
close access text_file -- テキストファイルを閉じる
end tell
end repeat
end try
set fixed indexing to FI -- fixed indexing を保存した値に戻す
set AppleScript's text item delimiters to TID -- text item delimiters を保存した値に戻す
display alert "作業を完了しました。" buttons {"OK"}
end if
end tell
951911:2008/10/01(水) 20:31:01 ID:mBUwXnHE0
上記スクリプトのどの部分を入れ替えると
『選択した曲と同一フォルダ内にある「.txt」の付いたファイルを歌詞へ登録』
になるのかな。。
tell application "iTunes"
if selection is {} then error "えらんでください"
set sndFileList to location of selection
repeat with aFile in sndFileList
tell application "Finder"
set theFolder to folder of aFile
set textFilePath to (files of theFolder where (its name ends with ".txt"))

確かにこれでアルバム内のテキストファイルが認識されていますが、
ここから選択して内容をコピペまでつながらない。。
952名称未設定:2008/10/01(水) 23:41:42 ID:IwApV4SV0
本人的にはもう関係無いんだろうけど、
個人的に>>922見てて気が付いたのでメモ

read と close access はエイリアスかファイル参照を渡さないと動作しないけど、
open for access はパス文字列だけでも動作する

普段は参照番号で処理する習慣が付いてたから、
これは気がつかなかった
953名称未設定:2008/10/02(木) 00:51:50 ID:pD8dBPUg0
>>943
一個しか試してないけど read ... as JPEG picture でいけた。

-116エラーってのが memSCErr (サイズチェックに失敗)のことなら、使った画像がたまたま
良かっただけかもしれないけど。
954名称未設定:2008/10/02(木) 01:00:50 ID:pD8dBPUg0

OS X 10.4.11
iTunes 8
画像はAmazon.co.jpから
955名称未設定:2008/10/02(木) 01:49:14 ID:QZEVtUq70
>>953
情報サンスクです。
まだver7使ってるのですがver7だと
>iTunes でエラーが起きました:パラメータのエラーです。
ってでました。8以降の機能なのかな。それとも別の間違いでもしてるのかな。
ちなみに一回8にしたけど、ある仕様が気に入らなかったので7に戻しました。
956名称未設定:2008/10/02(木) 09:22:07 ID:pkJiZDghP
911さん、それでは当方の提示するサンプルスクリプトは
『選択した曲と同一フォルダ内にある「アルバム名.txt」を歌詞へ登録』
という仕様の>>944-945ってことで後はご自分で改良してください。

読み込むファイル名を指定している箇所のキモだけ解説しますと
 set file_location to (the location of aTrack)
ここで処置する曲(トラック)のファイルの場所のフルパスをfile_locationに入れて
 set AppleScript's text item delimiters to ":"
 set file_list to text items of (file_location as string)
ここでfile_locationを":"で区切ってバラバラにしたものをfile_listに入れて
 set (the item (the count of file_list) of file_list) to album & ".txt"
ここでfile_listの最後の項目を「その曲(トラック)のアルバム名.txt」に変更して
 set text_filename to file_list as string
ここでバラバラにfile_listを":"で区切ったフルパスに戻してtext_filenameに入れてます。

『選択した曲と同一フォルダ内にある「.txt」の付いたファイルを歌詞へ登録』
という仕様に改良したければ、>>948さんのスクリプトを参考に考えてみてください。

さらにJPEGファイルをアートワークに登録するスクリプトに改良したければ、
>>947>>943さん及び>>953さんのアドバイスを参考にしてください。

ということで当方は引っ込みます。ご健闘をお祈り致します。

(つーか、おいらはもうちょっとちゃんと勉強しないと付いていけそうにない)orz
957911:2008/10/02(木) 11:07:52 ID:lwqv0cYu0
みなさま有り難うございます。

先程OSX10.5+iTunes8環境で『テキストを歌詞に登録』を実行してみたところ
テキストの冒頭がTo the...なのですが,登録された歌詞を見てみると
oT
とだけ登録されてました..冒頭の二文字だけでしかも逆になってる??
10.5だとまた違うんでしょうね。

>>948さんの.txtを含む書類を認識させたスクリプトを何とか間に入れたいですがまだ成功せず。。
アートワークは何故登録されないんでしょうかね。
>>943のサイトを見ると
set art_file to read (open for access file art_filename) as picture
set data of artwork 1 to art_file
なぜこれでペーストされないんでしょうね。。
プレビューで開いてアートワークにコピペでは貼り付けれるのに。。
958名称未設定:2008/10/02(木) 17:20:17 ID:hhYzJcgE0
>oT
>とだけ登録されてました..冒頭の二文字だけでしかも逆になってる??

違うファイルを参照しちゃってるんだと思うけど…

>アートワークは何故登録されないんでしょうかね。

>>953さんのアドバイスは無視?
959911:2008/10/02(木) 17:58:10 ID:lwqv0cYu0
>>956
いろんな箇所をいじってみたら
set art_file to read (open for access file art_filename) as JPEG picture
set data of front artwork to art_file
でアートワークが登録されました!
アドバイス有り難うございました。

しかし..
複数曲選択で実行しましたが冒頭曲しか登録されません。
歌詞の時はreadの位置を変えることで冒頭曲のみ登録だったのを
一括登録できるようになりましたがjpgに関してはreadの位置を変えると読み込みできません。

今だits name ends with ".txt"のような
txtを含むとかタイプがTXTを選択するというような記述ができず。。

album.txtに変更してしまった場合、
親フォルダ名を参照にalbum.txtやalbum.jpgを
親フォルダ名.txtに変更なんてスクリプトも書けるんでしょうね。。
960名称未設定:2008/10/02(木) 18:28:21 ID:OwJW0Ia30
>>959
人の話を聞けカス。
961911:2008/10/02(木) 21:14:12 ID:8DYrr/i80
OSX 10.5+ iTunes8環境ではアートワーク登録できましたが
OSX 10.4 +iTunes7.6環境ではできませんでした。。
バージョンによって命令の仕方が違うんですね。
もう少し調べてみます。。

>>960
何か話したの?どした?
962名称未設定:2008/10/02(木) 21:25:08 ID:iJDcQlaU0
煽るような返事しか出来ないならスルーしろよ…
963名称未設定:2008/10/02(木) 21:36:25 ID:OMqx/TBj0
>>961
自分の立場をわきまえてレスした方がいいよ
元々ここは丸投げするスレじゃないからね

たまたま善意で教えてくれた人がいただけでさ
多少言われたぐらいでそんな態度だと皆もう相手しないよ

つーかここまでしつこいのもはじめてみたな
本来ならこっちでしょ
Macのこんなソフト・アプリを探してます Part 33
http://pc11.2ch.net/test/read.cgi/mac/1222904774/
964名称未設定:2008/10/02(木) 21:48:24 ID:/X+G3ORz0
やっぱ皆ムカムカしながらROMってたんだなw
965911:2008/10/02(木) 22:24:33 ID:8DYrr/i80
皆様ご迷惑おかけしました。アートワークは諦めます。。
せめて登録するテキストを同一フォルダ内の「".txt"が含まれているもの」にする記述を教えていただけないでしょうか?
set sndFileList to location of selection
repeat with aFile in sndFileList
tell application "Finder"
set theFolder to folder of aFile
set textFilePath to (files of theFolder where (its name ends with ".txt"))
どうやってこれを入れたらいいやら。。
966名称未設定:2008/10/02(木) 22:52:20 ID:sNrWIH2q0
吊り棚
967名称未設定:2008/10/02(木) 22:52:21 ID:z7a4biKZ0
mp3ならアートワークと歌詞を埋め込るcuiツールがあった気がする
968名称未設定:2008/10/02(木) 23:54:34 ID:lAv5R8+20
なんだか細切れになってきて,どこでつまづいているのかわかりにくくなってきた。
ここまでのスクリプトの全文をさらして味噌?
969名称未設定:2008/10/02(木) 23:59:12 ID:NSw/yxPz0
> ここまでのスクリプトの全文をさらして味噌?

それは止めてくれ〜。せめてどこかにうpで。

>>965
・ファイルは必ずある、
・幾つあっても、先頭の一つを選ぶ、
として、とりあえずこれ加えとけば?

set textFile to first item of textFilePath as alias

open/read/closeにはtextFileを指定。
文字コードのこととか、改行コードのこととか、
気になることはあるけど。
970911:2008/10/03(金) 00:18:26 ID:BxHiaM1G0
『選択した曲と同一フォルダ内にある"album.txt"を歌詞へ登録』

tell application "iTunes"
if selection of front browser window is {} then
display alert "歌詞ファイルをコピーする曲を選択して下さい。" buttons {"OK"}
else
set TID to AppleScript's text item delimiters -- text item delimiters を保存
set FI to fixed indexing -- fixed indexing を保存
set fixed indexing to true -- fixed indexing を true にセット
set selectedTracks to selection -- 選択中のトラックを取得
try
repeat with aTrack in selectedTracks
tell aTrack
set file_location to (the location of aTrack) -- 処置するトラックの場所を取得
set AppleScript's text item delimiters to ":" -- テキストを : で分割するように設定
set file_list to text items of (file_location as string) -- ファイルの完全パスをフォルダ名毎に分割
set (the item (the count of file_list) of file_list) to "album.txt" -- ファイル名を album.txt に変更
set text_filename to file_list as string -- テキストファイルの完全パスを構築する
set text_file to (open for access file text_filename) -- テキストファイルを開く
set lyrics to read text_file -- 歌詞欄にテキストファイルを読み込む
close access text_file -- テキストファイルを閉じる
end tell
end repeat
end try
set fixed indexing to FI -- fixed indexing を保存した値に戻す
set AppleScript's text item delimiters to TID -- text item delimiters を保存した値に戻す
display alert "作業を完了しました。" buttons {"OK"}
end if
end tell

OSX 10.4+iTunes7.6.2
971911:2008/10/03(金) 00:24:46 ID:BxHiaM1G0
アートワークに関しては頑張ってみますのでこれだけ書かせてください。。

フォルダ内には必ず一つだけ.txtがあります。

作成していただいた上記スクリプトに>>969さんらの
tell application "Finder"
set theFolder to folder of aFile
set textFilePath to (files of theFolder where (its name ends with ".txt"))
set text_file to textFilePath as alias
をどこかの行と置換して
set text_file to (open for access file text_filename)
set lyrics to read text_file
close access text_file
ここ辺りに繋げるようにすればいいんですよね。。
972969:2008/10/03(金) 00:46:34 ID:Q91v2H9C0
>>969のあの一行は、>>965の最後にくっつけてくれれば良いと思って書いた。

>>971で当てはめると、
set text_file to textFilePath as alias の代わりに
set text_file to first item of textFilePath as alias

だけど、>>971のそれ以下はなんか変だな。
そいじゃ。24はじまるw
973名称未設定:2008/10/03(金) 06:09:14 ID:WsB/GY8t0
finderのファイル操作のスクリプトって、
返り値がリストになってるのを気づかずに、
うっかり右往左往することがままある。
974名称未設定:2008/10/03(金) 06:38:31 ID:72drazYo0
プログラムの用語解説ってホント不親切だよね
975911:2008/10/03(金) 11:51:03 ID:auVKhvGG0
難しいですね・・
tell application "iTunes"
set sndFileList to location of selection
repeat with aFile in sndFileList
tell application "Finder"
set theFolder to folder of aFile
set textFilePath to (files of theFolder where (its name ends with ".txt"))
set text_file to first item of textFilePath as alias
end tell -----ここまででフォルダ内の.txtが指定されてますが・・
tell application "iTunes"
set text_file to (open for access file text_file) -- テキストファイルを開く
set lyrics to read text_file -- 歌詞欄にテキストファイルを読み込む
close access text_file -- テキストファイルを閉じる
end tell
end repeat
display alert "作業を完了しました。" buttons {"OK"}
end tell

iTunesに命令後,Finderに命令しファイルを指定,またiTunesに戻って開いて登録して終了.
これで実行するとiTunesでエラーがおき、
"指定できた.txt"のタイプをfile specificationに変換できません。となります。
こんなに簡単な記述じゃダメですね・・
976名称未設定:2008/10/03(金) 11:59:22 ID:tLWIRrdA0
>>975
set lyrics to
ってそもそも曲を指定してない
977名称未設定:2008/10/03(金) 12:39:50 ID:R8MWYzkdP
>>975
あと、なんでiTunesに2回もtellしてんの?
978名称未設定:2008/10/03(金) 13:11:05 ID:DIk5F5g70
勉強中な振りをしているだけの丸投げ君だからだろ
979911:2008/10/03(金) 15:29:07 ID:auVKhvGG0
リネームソフトを使えば親フォルダを参照にファイル名を戻せそうなので
「曲と同じフォルダ内にある"指定したファイル名"を歌詞に登録」でやってみます。。
本当にお騒がせしました。
980名称未設定:2008/10/03(金) 16:23:55 ID:Wq0mDsqs0
iTunesスレや他スレでも見かけたけど、AppleScript以外のが楽で速いだろ。
参考にするヒト以外は。
981911:2008/10/03(金) 16:50:26 ID:auVKhvGG0
>>980
希望通りのソフトがあればここの皆さんのご迷惑にはならなかんですが・・
今はiTunes7とにらめっこしてアートワークの埋め込みに格闘してます。。
982名称未設定:2008/10/03(金) 17:07:55 ID:R8MWYzkdP
繰り返し処理で1回めはOKで2回目以降はNGってのは
ファイルのopen,close処理の間違いかなって気もするけど
おいらも詳しいことは分かんないんでアドバイスはできません
983名称未設定:2008/10/03(金) 18:16:17 ID:auVKhvGG0
アートワークの登録は何とかreadしてset dataまで行ったんですが結果、登録できないです・・
close accessがあるとset fixed indexing to trueになり削除するとfalstになります。
readでJPEGが開き、やっと
set data of artwork 1 of file track id 2166 of user playlist id 1580 of source id 39 to <data
まで来たんですが登録されないんですよね。。

tell application "iTunes"
set TID to AppleScript's text item delimiters -- text item delimiters を保存
set FI to fixed indexing -- fixed indexing を保存
set fixed indexing to true -- fixed indexing を true にセット
set selectedTracks to selection -- 選択中のトラックを取得
try
repeat with aTrack in selectedTracks
tell aTrack
set file_location to (the location of aTrack) -- 処置するトラックの場所を取得
set AppleScript's text item delimiters to ":" -- テキストを : で分割するように設定
set file_list to text items of (file_location as string) -- ファイルの完全パスをフォルダ名毎に分割
set (the item (the count of file_list) of file_list) to "album.jpg" -- ファイル名を album.jpg に変更
set art_filename to file_list as string -- 画像ファイルの完全パスを構築する
set artworkData to read (open for access file art_filename) as JPEG picture -- 画像ファイルを開く
set data of artwork 1 to artworkData -- アートワーク欄に画像ファイルを読み込む
end tell
end repeat
end try
set fixed indexing to FI -- fixed indexing を保存した値に戻す
set AppleScript's text item delimiters to TID -- text item delimiters を保存した値に戻す
end tell
984名称未設定:2008/10/03(金) 18:22:09 ID:wWHL/Vu90
質問もいいが、もう少し自分のなかで整理して、
ある程度まとまってから書き込んでくれんかな。
それと次スレに持ち越したりしないようにな。
985名称未設定:2008/10/03(金) 18:33:28 ID:tSXcssW/0
ひとついっていい?
こんだけあーだこーだ悩んでる暇があれば、手動で貼付けたほうが(ry
986名称未設定:2008/10/03(金) 18:40:01 ID:CvHFs6fU0
手段が目的化するのってAppleScriptの醍醐味じゃん
987名称未設定:2008/10/03(金) 18:43:54 ID:Abs+u1Ko0
988名称未設定:2008/10/03(金) 20:32:14 ID:qWh+Cs9X0
>>986
ありすぎて困る
989名称未設定
open for accessしてclose accessしないのは
ウンコした後にケツを拭かないようなもの。