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

このエントリーをはてなブックマークに追加
459名称未設定
こんにちは。

AppleScriptでDNS更新するスクリプトを作ろうと思っていますが、
わからない点が多いので質問させていただきます。

DNS更新に用いるのはhttpアクセスで、http://rrrrrrr.rrr&id=id&pass=password
のようなものです。ログイン項目にスクリプトをおいて、起動後は30分毎に上のURL
にアクセスを続けるようなものを考えています。ただ、一つ気になるのが、ネットに
繋がらないときや更新エラーが出た場合に表に出さずに、再度30分後に試みてくれる
ようにしたいと考えています。この場合、一つずつ例外時の対応を記述しないといけ
ないのでしょうか?
460名称未設定:2011/03/22(火) 18:11:24.11 ID:4Lx7sVLT0
on idle
do shell script "curl http://rrrrrrr.rrr&id=id&pass=password"
return 30 * minutes
end idle

これでいけそうなんですが、問題ありますかね?
461名称未設定:2011/03/22(火) 18:35:55.92 ID:YXUIUYXG0
>>460
そのアドレスにわざと間違ったアドレスを入れて
更新時間も短くすれば
エラー時の挙動は簡単に試験できるからまずはそれで試して
462名称未設定:2011/04/29(金) 02:18:56.10 ID:mGeIKQ6g0
ノートパソコンの電池がヘタって来て、突然シャットダウンするようになった。
MiniBatteryLoggerという、自分で設定した電池残量でGrowlに警告を出せるソフトを見つけた。
また、Deep SleepというWidgetで、好きなときにhibernationできることも分かった。

で、思ったんですが、AppleScriptでMiniBatteryLoggerの警告を察知して、
Deep Sleepを起動させるスクリプトを作れば良いのでは!?と思いつきました。

Deep Sleepを起動するスクリプトは多分難しくないと思うのですが、
問題はどうやって、警告をAppleScriptに渡すかです。

調べたところ、Growlの改造版でAppleScriptを起動できるものがあるようで、
それを使おうと思いましたが、Growlそのものの機能が働きませんでした。

別の方法としては、AppleScriptを常に起動した状態にして、
直接警告を監視し続けるのが良いかと思いました。

どちらの方法が良いのでしょうか?また、警告を監視し続けるのはシステムに負担ですか?

463名称未設定:2011/04/29(金) 03:14:20.45 ID:ide1YPLe0
>>462 そりゃ明らかにパワー喰って酷使だろ。
新しいバッテリーを買ってきた方が良いぞ。
464名称未設定:2011/04/29(金) 03:57:41.88 ID:mGeIKQ6g0
>>463
やっぱりそうですか、結構いけるかと思ったんですが…
465名称未設定:2011/05/02(月) 17:54:11.43 ID:dsHEH73I0
tell application "terminal"
 do script with command "hogehoge"
endtell
tell application "terminal" to quit

を実行する時にバックグラウンドかドックに格納した状態で処理してもらうにはどうすればいいでつか

要するにユーザの目に触れさせたくないんですけど
466名称未設定:2011/05/02(月) 18:18:57.15 ID:0smIOcEZ0
do shell scriptじゃダメなの?
それをバンドル形式アプリで保存してInfo.plistにLSBackgroundOnlyを追加してやれば
467名称未設定:2011/05/02(月) 21:14:59.10 ID:W26P8ZAH0
NSUIElementもいいかも。
468名称未設定:2011/05/03(火) 17:43:19.19 ID:q+Cpkjd30
NSBGOnlyとかLSUIElementってのもあるよ
469名称未設定:2011/05/04(水) 23:12:58.76 ID:AtdnDoJs0
AppleScriptっていろんな書き方できるから習得しづらいよね。
470名称未設定:2011/05/06(金) 11:38:25.09 ID:LcZxttWv0
>>466
do shell script なんて知りませんでした
これすげえ便利ですね
ありがとう

でも、バンドル形式アプリを実行する方法とInfo.plistの反映方法が分からん

Info.plistの書き方は
バンドル形式で保存→パッケージの内容を表示→info.plist内に以下のように編集

<key>WindowState</key>
<dict>
<key>LSUIElement</key>
<string>1</string></pre>
</dict>

でおk?
471名称未設定:2011/05/06(金) 11:48:45.91 ID:LcZxttWv0
スマソ、バンドル形式アプリって事はアプリケーション形式ってことですね
472名称未設定:2011/05/06(金) 12:32:05.71 ID:ip1N7c520
> <string>1</string></pre>

ここの</pre>は何ですのん?
473名称未設定:2011/05/06(金) 14:03:13.66 ID:LcZxttWv0
>>472
ttp://xcatsan.blogspot.com/2008/03/nsbgonly-nsuielement-lsuielement.html
ここ参照してますた

やっぱいらないですよね
</pre>は消しますた
474名称未設定:2011/05/06(金) 15:06:52.12 ID:75DRqAeU0
>>472
ケアレスミスが防げるしXcodeを入れてこれを使いましょう
/Developer/Applications/Utilities/Property List Editor.app
475名称未設定:2011/05/07(土) 15:55:10.58 ID:T2s/io/U0
>>474
なるほど、こんな便利なものがあったのですね
476名称未設定:2011/05/09(月) 08:49:01.63 ID:SKs68rTY0
質問させてください

tell application "Finder"でフォルダーを生成するってスクリプトを複数のMACで
動かしてるんだけど、1台だけエラーが出て止まる台があります


クラスFolderを取得できません…とか何とか


他の台では(OS9含む)普通に動いてるんで、
何かのファイルでも壊れてるんでしょうかね?
477名称未設定:2011/05/09(月) 09:00:00.87 ID:/QIUhH9z0
権限とか・・
478名称未設定:2011/05/09(月) 14:47:53.96 ID:m8oN3qEFP
AppleScriptでプログラミングに興味を持ったのですが、
ステップアップにお薦めの言語ってなんでしょう?
理解しやすいとか、雰囲気が似てるとか、汎用性があるとか、理由は何でもいいです。
479名称未設定:2011/05/09(月) 14:53:09.92 ID:kpe/YJrw0
言語は沢山の種類があるけど、スクリプト言語から目を広げてみたら?
C言語の子孫が多いけど、やっぱりオブジェクト指向じゃなきゃいかんだろうから
Objective-C,C++,Javaなどがいいんじゃない?
Objective-CならiPhoneプログラミングが可能になる。仕事ならC++がJavaでは?
開発環境という意味ではX-code 3.xが無料で垣根が低いかな。
480名称未設定:2011/05/09(月) 21:42:00.34 ID:m8oN3qEFP
>>479
ありがとう。
いわゆるC言語ってのがどれも元になってるわけですね。
とするとC言語を勉強しといた方が後々応用が利いたりするのかな。
いずれにしても、どれもググるとはじめての〜とか入門○○みたいなのが引っかかるので、
適当にそれぞれ触ってみます。いじってて興味がわくのが一番だろうし。
481名称未設定:2011/05/09(月) 22:27:55.21 ID:UiXDzCcP0
>>480
今から学習するなら、初めからオブジェクト指向の言語にしといた方がいいと思うよ。
C++やObjective Cとか。
482名称未設定:2011/05/10(火) 00:40:47.22 ID:cZHGhenD0
AppleScriptに似てるなんてHyperTalkくらいしか知らんな
悪い意味でこれほど柔軟性にとんだ言語なんて見たこと無い
483名称未設定:2011/05/10(火) 15:47:36.52 ID:n5xnqbpk0
>>478
PythonかRubyかCoffeScript

AppleScriptの特徴としては、以下のものが挙げられると思う。
・オブジェクト指向
・(そこそこ)動的
・英語っぽい
上記の言語は、オブジェクト指向はちゃんとサポートしてるし、より動的。
英語っぽさはそんなに無いけど、C系言語よりはまだ近い。
Python/Ruby はTerminal.appからも使えるし、
Cocoaと連携出来るPyObjCやMacRubyもある。
CoffeeScriptはNode.jsでサーバー上で使うもよし、ブラウザでも。

でもまあ、MacユーザーならObjective-Cに気軽に触れられるし、
C/C++/Javaは定番だよね。
484名称未設定:2011/05/12(木) 17:23:58.10 ID:K4GvGQrt0
>>478
Mac でプログラムするなら Objective-C がよい。
やっぱ役に立つし、楽しいから。
でも、Objective-C の前に C を勉強しなきゃ行けないけどね。
485名称未設定:2011/05/13(金) 05:56:29.01 ID:s7vsvmD60
>>484
>やっぱ役に立つし、楽しいから。
私は、AppleScript, javascript, perlを主に
使っています。 javascript, perlからAppleScript
に変数を渡して呼び出すのは面倒ですが、
Objective-Cだと、AppleScriptの実行が
スムーズにできますか? それが出来れば、
時間をかけて勉強したいです。
486名称未設定:2011/05/13(金) 08:59:34.57 ID:RGb2TMc/0
>>485
AppleScript≒AppleEventの送受信だから、cで直接AppleEvent送るコード書いた方が
細かい処理ができるし速い。AppleScriptをコンパイルする時間も不要。
Objective-CだとScripting Bridgeが使えるから、AppleEvent直送りでも読み易い
コードも書ける。
487名称未設定:2011/05/13(金) 09:40:43.66 ID:41m+UI5I0
>>485
スムーズかどうかはよくわからないけど、AppleScript と Objective-C の連携方法はいくつもある。

* OSAKit というものがある。それを使えば、AppleScript のハンドラに引数を渡して実行できる。比較的簡単。
* Scripting Bridge を使えば、Objective-C が AppleScript の代わりになる。
* AppleScriptObjC を使えば、特定のインターフェースを意識せずともお互いを呼び出し合えるらしい(使った事がないのよくしらない。)

Javascript から AppleScript を呼び出すという道はないよね。

perl の場合はなんかモジュールがあるのかしら?osascript コマンドを使うのが一番安直だけど、テキストしかやり取りできないね。
488名称未設定:2011/05/13(金) 21:30:05.29 ID:2OwQhE+50
>>487
大昔にこのレスでも書きましたが、このページを参考にして
>http://applescript.tv/linktrigger/

html+javascriptのファイルから直接,次のように:
seekdvd://com.taro.AppleScript.seekdvd?time=321&DVDname=matrix1

seekdvdというAppleScriptを変数を渡しながら実行できます。

489名称未設定:2011/05/15(日) 07:55:02.93 ID:nMka9vUs0
AppleScriptObjCのサンプルなら
QTP7Controllerってのがあるよ。
490名称未設定:2011/05/15(日) 10:36:03.04 ID:UPW4c/M30
>>486, 487, 489
ご助言ありがとうございます。アップルスクリプトの部分に
限定すれば、Objective-CでもCでも学習すべき箇所が限定
されるので、挑戦します。
491名称未設定:2011/05/16(月) 17:32:47.09 ID:gmVE8kZc0
下のスクリプトは、このままではエラーが出るのですが
”ココ”の行のmy_folder2をmy_folderにすると正常に動きます。
理由が分かる方教えてください。set name of~の前にdelayを入れるとこのままでも動きます。
OS 10.4.11です。

global my_folder, Name1, newFile

set theItem to choose file
tell application "Finder"
set Name1 to "myname1.ai"
set my_folder to choose folder
set my_folder2 to make new folder at my_folder with properties {name:"myFoder1"}
set newFile to (make new file at my_folder2 with properties {name:"myname1.ai"}) as text --ココ
my savefile(theItem)
set name of file newFile to "newFile.ai"
end tell
end open

on savefile(theFile)
tell application "Illustrator CS"
activate
open theFile
tell front document
save in newFile as Illustrator with options {compatibility:Illustrator 11, compressed:false, PDF compatible:true}
close
end tell
end tell
end savefile
492491:2011/05/16(月) 17:34:24.98 ID:gmVE8kZc0
書き忘れましたが、choose fileはイラストレーターファイルを選んでください。
493名称未設定:2011/05/16(月) 20:09:17.58 ID:swA9OqX70
昔 さわったぐらいだけど。

choose folder は StandardAdditionsのコマンド。戻り値はAlias。
make new folder は Finder のコマンドで、戻り値はFinder item。

この場合、alias of 〜とか、〜 as aliasとかで型変換してあげれば
動くのでは?
494名称未設定:2011/05/16(月) 20:11:10.38 ID:glb140yI0
>>491
ココの行の次で return して、出来た myname1.ai を illustrator で開いてみな。どうなる?
あと、 choose folder で選択したフォルダの第一階層に、myname1.ai って名前の 中 身 が あ る ファイルがあるんじゃねーのか?
もう少し、基礎から始めた方がよいぞ。あと、イベントログくらい見ような。
495名称未設定:2011/05/17(火) 00:47:20.35 ID:StYsy3d60
>>493-494
ソース見たら営利の丸投げ乞食だろ。反応すんなよ。
496名称未設定:2011/05/17(火) 02:27:48.69 ID:n16kRnso0
>>491
10.4.11
CS3
だと動作したけど…?
497491:2011/05/17(火) 09:09:26.18 ID:G1WXeNUu0
>>493-495
言葉不足で知りたい点が伝わっていなかったようなので詳しく書きます。
要はフォルダ選択してその中に保存したaiファイルの名前を変更するのはすんなりいくのですが、
(ココの行のmy_folder2をmy_folderにした状態)
選択したフォルダの中に更にフォルダを作成してそこに保存したaiファイルの名前を変更しようとすると
delayで待たないとエラーが起きるのです。

ソースが少し回りくどい事をしているのは抜粋なのと、イラレからダイレクトに別名で保存が自分の環境では
上手くいかなかったので一旦仮のファイルを作成してそれを置き換える形にしているからです。
global my_folder,name1はこの抜粋では必要ありませんでした。

後、ソースは自分で書いたので丸投げではありません。
このままだとあまり意味のないスクリプトですから。
自分で書いたスクリプトからエラーの起きる箇所を抜粋して載せてます。
498名称未設定:2011/05/17(火) 13:09:48.53 ID:mjhXslze0
何のエラーが起こるか具体的に書いてないから、確認する気も起こらないんだけど
 update ファイルへの参照
をファイル操作直前に置くと動くんじゃないかな?
Finderは色んな情報キャッシュしてるから、ファイルシステムの変更は即座に
把握されないことがある。update強制するとキャッシュ無効になる。
499491:2011/05/17(火) 13:19:53.32 ID:G1WXeNUu0
>>498
ありがとうございます!
まさにそれで解決しました。こんな方法があるとは知りませんでした。
過去にもこれで解決しそうなエラーに会っていたので他でも試してみます。

ちなみに起きていたエラーは↓です。
Finder でエラーが起きました:操作は完了できませんでした。

>>496
すみません。返信忘れてました。CS1だと上手く動かなかったんですが上位バージョンだと問題ないのかもしれません。
500名称未設定:2011/05/17(火) 21:25:15.48 ID:n16kRnso0
>>499
もう解決したのですね

私もファイル名に特定文字が使われてると
うまく動作しなくて(フォトショップだったかな?)
tmpファイル保存後リネームした事あるけど
イラストレーターで別名保存がなぜ出来ないのかを
解決した方がいいのでは?
501491:2011/05/18(水) 09:19:57.51 ID:H3SaPj/v0
>500
イラレCS1はパスに2バイトフォントが含まれていると保存できないし、
別名保存できないのも仕様かと思ってあきらめていたのですが他の環境ではできるのでしょうか?
新規作成した場合は好きなディレクトリに保存できますし、
既存ファイルを開いてそのまま保存することは問題ありませんでした。
502491:2011/05/18(水) 09:25:31.20 ID:H3SaPj/v0
↑2バイトフォントじゃなくて2バイト文字の間違いでした。
503名称未設定:2011/05/30(月) 02:04:06.58 ID:zpcJhBo/0
★3以上の曲で1アーティスト1曲を100アーティスト抽出する
iTunesのプレイリストを作るAppleScriptをご存知ありませんか?
504名称未設定:2011/05/30(月) 04:03:03.95 ID:40PohkNC0
ttp://dougscripts.com/itunes/ で探してみたら
505名称未設定:2011/05/31(火) 07:17:22.75 ID:bXhe7o0p0
眠れなかったんで作ってみたよ10.4.11、iTunes 9.2.1だけど
下記で、*1 は予め★3以上のスマプレ作っといてそれを指定
*2 は適当に名前変えて
*3 は良さげなら100に

tell application "iTunes"
tell playlist "AAA" -- *1
set keys to my randx(artist of every track)
set newpl to make new playlist with properties {name:"ZZZ"} -- *2
repeat with k in keys
duplicate (some track whose artist is k) to newpl
end repeat
end tell
end tell
506505の続き:2011/05/31(火) 07:18:43.97 ID:bXhe7o0p0
on randx(inl)
set lim to 10 -- *3
set tmpl to {}
repeat with a in inl
if a is not in tmpl then set tmpl to tmpl & a
end repeat
if (count of tmpl) < lim then error "short of artists"
set outl to {}
repeat
set a to some item of tmpl
if a is not in outl then
set outl to outl & a
if (count of outl) = lim then return outl
end if
end repeat
end randx
507名称未設定:2011/06/12(日) 22:14:46.73 ID:o1LohgBg0
VLCのボリュームを100%に変更するにはどうしたらいいでしょうか。
508名称未設定:2011/06/12(日) 23:11:03.61 ID:UxcuFaw20
>>507
VLCってAppleScript対応だったんだ。知らなかった。

tell application "VLC"
set c to 0
repeat while c < 32
volumeDown
set c to c + 1
end repeat
repeat 8 times
volumeUp
end repeat
end tell

Mac OS X 10.5.8
VLC 1.1.5
509名称未設定:2011/06/12(日) 23:39:35.33 ID:o1LohgBg0
>>508
ありがとうございます。

いきなり100%にセットする方法はないのですね。
volumeDown の方の繰り返しを repeat 32 times としないのは何か理由があるのでしょうか。
510名称未設定:2011/06/13(月) 00:21:04.97 ID:VnW/yOYh0
>>509
repeat 32 times がいいと思う。ちゃんと見直してから書き込めばよかった...。で、いきなり100%にする方法は辞書を見る限りなさそう。GUIスクリプティングでできるのかな?
511名称未設定:2011/06/13(月) 00:27:07.32 ID:9WtXEqoW0
>>510
ありがとうございます。

大変勉強になりました。
512名称未設定:2011/06/13(月) 19:08:36.46 ID:pnyN0HVE0
OS X 10.4.11, Safari 4.1.3, Spark 3.0b9です。
Safariのツールバー、ブックマークバー、タブバー、ステータスバーを一括で非表示、表示と切り替えたくて
以下のようなスクリプトをSparkでF3キーに割り当ててみたのですが、F3キーを2回押さないと反応しません。
1回目無反応、2回目すべて非表示になる、3回目無反応、4回目すべて表示される、といった具合です。
どうすれば1回押す毎に反応するようになるでしょうか? 申し訳ありませんがスクリプトの知識はありません。
tell application "System Events" to tell process "Safari" to keystroke "|" using command down
tell application "System Events" to tell process "Safari" to keystroke "B" using command down
tell application "System Events" to tell process "Safari" to keystroke "T" using command down
tell application "System Events" to tell process "Safari" to keystroke "/" using command down
513名称未設定:2011/06/14(火) 01:48:47.06 ID:0wMgRf3+0
safari側がキー入力の受け入れする前にキーストローク終わっちゃってる感じ
delay入れてみては?
この場合ならkeystrokeは連結してもOKかな

delay 0.5
tell application "System Events" to tell process "Safari" to keystroke "|BT/" using command down
514名称未設定:2011/06/14(火) 22:36:06.49 ID:3ArZN9Ds0
どうもありがとうございます。完璧に動作しました。
F3を押すことで、これからキー入力を送るので受け付けてくださいと命令してから
送るまでのあいだに間が必要だったわけですね。
そして、コマンドを押し下げながら順に|BT/と入力していくという風に記述できる。素晴らしいです。
新しいSafariにはフルスクリーンモードが搭載されるという話ですが
これで古いMacでも縦方向を広く使えてとても助かります。
515名称未設定:2011/06/15(水) 08:21:48.72 ID:SgIvrSZc0
へー、tell A to B の二段重ねとかできるんだな
初めて知った
516名称未設定:2011/06/26(日) 20:53:44.56 ID:hWboQH6S0


on mul2(x)
return x * 2
end mul2

上のハンドラを
set myfunc to mul2
myfunc(4)

こうする時はちゃんと使えるのに、次のように
他のハンドラに渡してその中で実行しようとするとエラーになります。

on map for srclist given func:f
set newlist to {}
repeat with m in srclist
set the end of newlist to f(m)
end repeat
return newlist
end map

map for {2, 3, 4} given func:mul2

上のmapに渡すハンドラをscriptでくるむとできるようなんですが
そうしないでもう少し手軽にやる書き方はありますか??
517名称未設定:2011/06/27(月) 11:08:38.16 ID:gzcMikEG0
>>516
 これはスコープの問題。関数呼び出し foo() は 『"foo" と言う名前ラベルのオブジェクトを探して
実行せよ』と言う意味。そこで、スクリプトは実行時に foo を探すが、それが見つからない。なぜなら
デフォルトで探されるのは、(tell節が絡まなければ)スクリプトのトップレベルだから。つまり、
on myfunc(foo)
foo()
end myfunc
と書いた場合、引数の fooはローカルで、foo() の fooはグローバルなので失敗する。
518名称未設定:2011/06/27(月) 11:12:03.11 ID:gzcMikEG0
>>517 から続く) そこで、
on myfunc(foo)
global dummyFunc
set dummyFunc to foo
dummyFunc()
end myfunc
on dummyFunc()
error "直接呼ばないで" number -1
end dummyFunc
と、こんな風に書けば呼び出せる。要点はトップレベルに実体のあるオブジェクト(別にハンドラーで
なくても良い)を用意し、それをローカルからアクセスして書き換えて呼び出せばうまく行くと思う。
519516:2011/06/28(火) 10:34:21.05 ID:VpbYe0TR0
>>518
ありがとうございます
文法の理解が進みました

520名称未設定:2011/07/22(金) 22:05:54.37 ID:mxW1fJc/0
curl 'URL' | iconv -c -f EUCJP -t UTF8

のように、エンコードエラーが出たら無視するようにしたいのですが、applescript上で
do shell script"上記構文"
を使うとエラーが出てしまいます

何かいい対処法やヒントなどあれば、教えてください
521名称未設定:2011/07/22(金) 22:13:25.21 ID:9W6vnX2j0
>>520
try
do shell script"上記構文"
on error
end try

はどうかしら
522名称未設定:2011/07/22(金) 22:32:59.32 ID:2wWalnX+0
>>521
すごいよ、エスパー並みの読解力だわ。
523名称未設定:2011/07/23(土) 00:19:34.30 ID:m4Ufdtmr0
>>521
ありがとうございます

でも、それだと全く取得出来なくなりますよね?

iconv -cオプションのように無効な文字の出力のみを抑えたいんです

ターミナル上では先程の構文で、無効な文字を省いて出力してくれるのですが、
AS上ではエラーになります

AS上で無効な文字を省いて取得する方法は無いでしょうか?

あとUTF8ではなくUTF-8の間違いでした
すいません
524名称未設定:2011/07/23(土) 00:56:37.98 ID:scaHSKdZ0
>>523
>>520
>を使うとエラーが出てしまいます
と記述されてますが、どんなエラーが出るのか記載されていないため
なにも助言出来ません。
エンコードエラーがでてもエラーを無視して処理を続行したい
と解釈すれば、>>521の記述でいいです。

>>523
>でも、それだと全く取得出来なくなりますよね?

try
set ret to do shell script"上記構文"
on error errorMessage
set ret to errorMessage
end try

あるいは、shell側で
curl 'URL' | iconv -c -f EUCJP -t UTF8 | cat
等として、強制的に正常にリターンする。

525名称未設定:2011/07/23(土) 01:32:42.09 ID:b5sJ8HTH0
>>523,520ではないけど@とか使ったEUCのhrml作って試してみた。
「AppleScriptエラー」と出て詳細にiconvの結果っぽいのが途中まで出るだけみたい。

>>524の | cat付けるだけでOK

>>520
知恵袋の方もあなた?
526名称未設定:2011/07/23(土) 02:09:09.44 ID:7Ui7C/si0
>>524

> iconv -c -f EUCJP -t UTF8 | cat

細かいことで申し訳ないけど、下の方が良いと思うよ。
iconv -c -f EUCJP -t UTF8; exit 0
527名称未設定:2011/07/23(土) 02:19:41.38 ID:m4Ufdtmr0
>>524
>>525
ありがとうございます

|cat で、エラー前までの取得が出来ました
今まではページごとに何かに変換してからUTF8に変換のようにしていたのですが、これで手間が減りそうです
いろいろ言葉足らずですいませんでした

>>525
知恵袋の方も私です
マルチにならないよう締めたのですが、ルール違反でしたら申し訳ありません
528名称未設定:2011/07/27(水) 23:46:03.78 ID:fk64YnKf0
Safari 5.1にうpしたら自作スクリプトが動かなくなりますた。
Safariの前面ウインドウにjpg画像が開かれているときに保存を実行するのです。
前バージョンでは問題なく動いてたんですが、自力でどうにもならずでして…
saveでの実際のパスは変数で指定してます。

tell application "Safari"
tell document 1
save in "Macintosh HD:Users:hoge:Desktop:xxx.jpg"
end tell
end tell

私のエロ生命にかかわる大問題です。
誰か助けてくださいまし。
529名称未設定:2011/07/29(金) 00:48:28.17 ID:wA8KkTqC0
まず右手をチンコから放し、用語説明を見るべきでしょう
530名称未設定:2011/07/29(金) 13:07:20.12 ID:kzyOvd/10
>>529
いやいや、これじゃチンコ萎え萎えですよ。
なにか書き方に問題ありそうですかね?
Safari 5.0.5までは問題なかったのに、どう仕様が変わったのかなんなのか。
画像に限らずsave自体できなくないですか?5.1にした皆さんどうでしょう?
531名称未設定:2011/07/29(金) 16:37:37.39 ID:GDDl+ckd0
Lionにしたら、"URL Access String"機能拡張が使えなくなりました。
532名称未設定:2011/07/29(金) 17:36:21.57 ID:kCiFJHtc0
>>531
無くなってるね。
533名称未設定:2011/07/29(金) 20:43:44.43 ID:GDDl+ckd0
Do Shell Script と curlで奮闘していまつ。
534名称未設定:2011/07/29(金) 23:39:11.44 ID:kzyOvd/10
curlで取れない画像なんですよね…
単純にUAとかreferrer見てるとかcookie食わされてるとかじゃないようで。
ブラウザで見れてるんだからcurlで取れないわけないんだろうけど、たぶん俺の洞察が甘いんでしょう。
とりあえず難はあるんだけどGUIスクリプティングの方向で保存するようにしてみます。
スレ違い気味ですんませんでした。
535名称未設定:2011/07/30(土) 01:35:57.14 ID:QnoQCeiE0
Automatorでも無理な感じ?
536名称未設定:2011/07/30(土) 12:46:27.24 ID:c3VemvUD0
ファイルのアイコン画像を好きな画像に変える為に

tell application "System Events" to keystroke "o" using command down
tell application "Preview" to activate
tell application "System Events" to keystroke "acw" using command down
tell application "Finder" to activate
tell application "System Events" to keystroke (ASCII character 30)
tell application "System Events"
keystroke "i" using command down
keystroke tab
keystroke "vw" using command down
end tell

みたいに、かなり無理矢理やってますw

例えば、
プレビューで開かずに画像をクリップボードに入れる
Finderのファイル属性などからアイコンを設定する
などの綺麗な書式は何かありませんかね?
537名称未設定:2011/07/30(土) 19:54:05.12 ID:9xLR3ey50
>>536
「プレビューで開かずに画像をクリップボードに入れる」、提示されたAppleScriptの4行目までのをいろいろパクって置き換えを書いてみた。奇麗な書式かどうかは知らない

property extensionList : {"jpg", "jpeg", "tif", "tiff", "png"}

tell application "Finder" to set theSelection to selection
repeat with theItem in theSelection
 set theItem to theItem as alias
  if the name extension of (info for theItem) is in extensionList then
   set tiffData to read theItem as TIFF picture
   set the clipboard to tiffData
   exit repeat
  end if
end repeat
538536:2011/07/30(土) 21:44:14.79 ID:txsPVdnI0
>>537
なるほどー
TIFFとしてreadするんですね
恥ずかしい話、画像のクリップボードがTIFFだったの頭から全く抜けてました

プレビューとインスペクタがビヨンビヨンと出て来るのが、ビヨンだけになり、スマートになりました
ありがとうございました(>_<)
539536:2011/07/30(土) 22:09:19.67 ID:txsPVdnI0
あとInfo forってのあるんですね
これあれば、いちいちFinder呼ばなくてもnameとか取得出来るんですね
いや、ちょっと感動して
applescriptまだまだ勉強してみます

連投すいませんでした
540名称未設定:2011/08/09(火) 02:18:47.90 ID:5m0jT1FK0
コピーペーストできないソフトに、keystroke関数を使って入力するスクリプトを作りたいのですが
下のソースでは、applescriptのエディタ内ではうまく実行できるのですが、他のソフト(テキストディタ等)
では、うまくいきません・・・ソースのどこが悪いのでしょうか?どなたかお願いします。

tell application "System Events"
set str to get the clipboard
keystroke "a" using {command down}
keystroke 63
keystroke str
end tell
541名称未設定:2011/08/09(火) 03:04:18.63 ID:lVu8ZEeg0
対象アプリをactivateしておいて流し込まないと、ってこと?
542名称未設定:2011/08/09(火) 03:10:12.50 ID:5m0jT1FK0
>>541
すみません、分からないです。
ただ、コピーした内容をapplescriptでペーストしたいだけなのですが・・・
543名称未設定:2011/08/09(火) 04:04:45.76 ID:izSZxQzf0
>>542
ペーストをどのアプリで行うか指定しないと
同じアプリ実行されるだろう。

tell application "Text Edit"
activate
--ペーストする。
end

こんな感じで。あとcmd+vのないアプリなんてあるのかw
544名称未設定:2011/08/09(火) 05:23:21.50 ID:UDrKVUyx0
たまにあるね。
コマンド+vは出来ないけど右クリックメニューから出来るのとか、
その逆もある。
545名称未設定:2011/08/09(火) 12:44:54.30 ID:5m0jT1FK0
>>543 返信ありがとうございます。
>>543のソースを>>540のどこに加えれば良いのでしょうか?何も分からなくてすみません・・
546545:2011/08/09(火) 12:58:24.87 ID:5m0jT1FK0
できたみたいです。
スレ汚しすみませんでした
547名称未設定:2011/08/09(火) 18:00:26.11 ID:OqWUpQIC0
Finderウィンドウ内の指定のファイルを選択状態(ワンクリック状態)にするにはどうすればよいですか?
Google先生に聞いてみたのですが私の検索スキルではそのものズバリを見つけることができませんでした。
548名称未設定:2011/08/09(火) 18:10:08.39 ID:WR7Ef7mO0
>>547
こういうの?
tell application "Finder"
activate
reveal "/Users/MyName/Desktop/hoge.txt" as POSIX file
end tell
549名称未設定:2011/08/09(火) 18:19:53.68 ID:OqWUpQIC0
おおおお、これです!!
試した感じ望んでいた動作です!
ありがとうございました。

Reveal
http://docs.info.apple.com/jarticle.html?path=AppleScript/2.1/jp/as1010.html
じっくりみてみます。
550名称未設定:2011/08/09(火) 21:41:06.88 ID:2kuD7X3Vi
>>549
にゃにゃ(^-^)/
551名称未設定:2011/08/10(水) 03:29:43.62 ID:3HkqA6cK0
QuickTimePlayer 7, OSX 10.6で

連番ファイル(avi)をファイルダイアログで範囲指定して
ex.
a0000.avi, a0001.avi....a0010.avi
新規ムービーファイルを作り、
その連番通りに結合(新規ファイルにコピペで結合できるはず)し
a.aviという名前で保存する。

というAppleScriptを作りたい(教えてもらいたい 作ってもらいたい)んです、、。お願いします。
552名称未設定:2011/08/10(水) 04:56:58.87 ID:4n5JsgAh0
10個程度なら考えてる間に手作業の方が早いよ
553名称未設定:2011/08/10(水) 07:48:31.70 ID:tQCY15lc0
>>551
Terminalで
cat a0000.avi a0001.avi ….. a0010.avi > a.avi

アップルスクリプトにする理由がない。
554名称未設定:2011/08/10(水) 11:06:51.85 ID:iQ4Dxaes0
>>553
しかもその例なら、
cat a00??.avi > a.avi
でいける。a0011.aviとかいらないものが存在するなら、
cat $(jot -w a00%02g.avi 10 1 10) > a.avi
または
cat a000{1..9}.avi a0010.avi > a.avi


555名称未設定:2011/08/10(水) 18:59:48.09 ID:RcoMmZ8YP
>>553
横からすいません、それってmp4やm4vなんかでも有効ですか?
556名称未設定:2011/08/10(水) 19:16:39.35 ID:sxsg4HBUP
>>555
やって見た方が早くね?w
557名称未設定:2011/08/10(水) 20:05:25.86 ID:RcoMmZ8YP
>>556
おっしゃるとおりですんでやってみました

ダメでした orz

2枚組みのDVDをチャプター付きでエンコしたファイル
DISK1.m4v と DISK2.m4v があったんで
その2つをホーム直下に置いてターミナルを起動して
「cat DISK1.m4v DISK2.m4v > TEST.m4v」と入力して
return キーを押したらカリカリと何かやった揚げ句に
ホーム直下に TEST.m4v をペッと吐き出したんですが
喜んで開いてみたら DISK1.m4v と同じ内容のものでした
558名称未設定:2011/08/10(水) 23:48:37.77 ID:YHi/7OQR0
ヘッダがあるから無理でしょ
559名称未設定:2011/08/11(木) 01:26:46.21 ID:K3lO3ltE0
>>557
あまり詳しくないが、aviは単純ファイル連結でも再生できるらしい。
mp4というか、MPEGは本来だと単純ファイル連結できない。
しかし、一部のプレイヤーはそれでも再生出来る。
たしか、VLCは再生できたはず。
QuickTimeでは連結前の最初のファイルしか認識しない。
560名称未設定:2011/08/11(木) 02:15:59.42 ID:1gLoOjAv0
元質問者の >551です。
すでにターミナルで結合を試したけど、うまく再生できなかったため
QT player7のコピペでやってみたら可能だったので
AppleScriptで自動化できないかと思って質問しました。

今、たまたま、調べていたらMPEG Streamclipを試したところ
これなら連番aviファイルを結合することに成功。
さらにバッチ処理も可能でした。

お騒がせしてすいませんでした。




561名称未設定:2011/08/17(水) 01:50:25.51 ID:YJQQg2s+0
562名称未設定:2011/08/17(水) 09:23:02.24 ID:10+pNeuk0
OSX10.5から10.6にしたところ、スクリプトメニューから実行するスクリプトが速過ぎて、制御するアプリ側が追いつかずcmd+cやcmd+vのキーストロークが失敗してしまいます。たまには上手く行くのですが。。。
(多分アプリ側のダイアログが出るのが遅い)
これを回避する方法ってありますか?
563名称未設定:2011/08/17(水) 11:49:18.87 ID:rq8Gjx9x0
>>562
・delayで決め打ち
・ダイアログなら、Quickeys を使ってダイアログが出るまで待たせる
564名称未設定:2011/08/17(水) 12:25:42.60 ID:10+pNeuk0
>>563
やはりdelayしかないんですね。
Quickeys、懐かしい!まだあるんですかね。探してみます。
ありがとうございました。
565名称未設定:2011/08/17(水) 15:09:10.71 ID:t5cnM3LT0
>>564
こういうのはどう?
ダイアログ出るまで無限ループ... 無限ループ... 大丈夫かな?

tell application "System Events"
tell application process "そのアプリケーション"
repeat until exists window "ダイアログの名前"
delay 1
end repeat

--ここにキー操作を書く

end tell
end tell
566名称未設定:2011/08/17(水) 19:02:01.50 ID:10+pNeuk0
>>563
delayでうまくいきました!ありがとうございました。

>>565
実はダイアログウインドウ自体は割とスパっと表示されるんですが、
その中に表示されるべき数値が何故か「もさっ」と出て来るんです。
なのでcmd+cしても空っぽ、tab keyを5回リピートしてペーストしても空白とかorz

しかし、教えて頂いた例は別の所で使えそうなので、参考にさせて頂きます。
ありがとうございました!



567名称未設定:2011/08/18(木) 07:52:19.85 ID:Eyax/Fhd0
>>566
その数値がテキストフィールドに入ってるものなら
テキストフィールド内の値を受け取って入れ込んだ方が確実で速い気がする

repeat 10 times
if value of text field 1 of window 1 is not "" then exit repeat
delay 1
end repeat
set txt1 to value of text field 1 of window 1
set value of text field 6 of window 1 to txt1
568名称未設定:2011/08/18(木) 09:57:40.78 ID:IUUn4b6X0
>>567
うおぉ。これはまた私にとっては一段と高度な構文!
大体の意味は分かるんですが、「text field 1」とか「text field 6」というのは、
"例えば"ってことですよね?そこはtext field 2であったり、3であったりするんですよね? すみません聞いてばっかりで。
569567:2011/08/18(木) 11:51:34.19 ID:M8pRv2rf0
そう例えば。
ダイアログ出した状態で知りたいテキストフィールドに何か入力しておいて
get value of text field 1 of window 1
とやってtext fieldの後の数字を増やして何番目が目的のフィールドか予め確認しておく
570名称未設定:2011/08/18(木) 20:16:07.88 ID:EzBIWePX0
Prefab UI Browser を使えば、text field の番号なんかがマウスオーバーで確認できるよ。
571名称未設定:2011/08/19(金) 02:10:34.36 ID:aBwKjhtc0
value of text fields
properties of text fields
properties of attributes of text fields
色々試してみると面白い
572名称未設定:2011/08/25(木) 22:18:44.89 ID://mjA7Gg0
初心者です 質問すみません
shift+option+r を実行するという単純なスクリプトを作りたいんですが、いざ使用予定のphotoshop上で実行すると
SyntaxError: 数値の桁数が違います。
というエラーが出てしまいます
以下そのスクリプトです、どうか訂正お願いします

tell application "System Events"
keystroke "r" using {option down, shift down}
end tell
573名称未設定:2011/08/26(金) 12:59:26.68 ID:37+fyphA0
スレ復帰テスト
574名称未設定:2011/08/26(金) 13:18:23.08 ID:sfR92wPY0
>>572
その3行のスクリプトをどうやって実行したのでしょう?
エディタから実行すればことえりのショートカットを実行するし
photoshopでスクリプトメニューから実行しても
そんなエラーでなかったのですが…
575名称未設定:2011/08/26(金) 15:31:03.09 ID:TgoqNaez0
>>572

tell application "Adobe Photoshop" to activate
tell application "System Events"
tell process "Adobe Photoshop CS3"
keystroke "r" using {option down, shift down}
end tell
end tell



でどう?Photoshopのバージョンは書き換えてね。
576名称未設定:2011/08/26(金) 15:49:57.99 ID:LuLKKEUX0
optionキーを押しながらiTunesを起動する。
という場合はどのように書けばいいんでしょうか?
577名称未設定:2011/08/26(金) 16:07:14.16 ID:LW24SStE0
578名称未設定:2011/08/26(金) 16:17:21.13 ID:LuLKKEUX0
キーを押しながら起動するスクリプトが分からないんですが。
579名称未設定:2011/08/26(金) 17:19:24.68 ID:LRaEsRBs0
>>578
key down {option}
tell application "iTunes" to activate
key up {option}
580名称未設定:2011/08/26(金) 17:52:32.22 ID:sfR92wPY0
>>575
shift+option+r ってブラシのモードを消去にする
ショートカットですよね?
ブラシツールじゃないからでは?

うちではエラー出ないのであとはわかりません
581名称未設定:2011/08/26(金) 18:02:10.85 ID:LuLKKEUX0
>>579
ありがとうございます。
いくつかあるライブラリ別にiTunesを起動するスプリクトを用意して置くというものです。
とっかかりの部分でつまずいていました。
その後に参照するライブラリの場所の指定部分を続けて完成出来そうです。
582名称未設定:2011/08/26(金) 19:39:48.03 ID:TgoqNaez0
>>580
そんなこと俺に聞かれてもわからんw
583名称未設定:2011/08/27(土) 00:52:31.29 ID:q21a6/BU0
>>582
質問者と別人かよ!w
584名称未設定:2011/08/27(土) 07:19:27.42 ID:3dZgD3TR0
質問者不在のまま質疑応答進行ってよくあるよな
585名称未設定:2011/09/02(金) 16:54:15.29 ID:WJTfHt3F0
Lion 10.7.2 AS2.2.1 ASエディタ 2.4.1
ダイレクトに choose file や choose folder で出したオープンダイアログで、
共有が見えない。ネットワークから見てもマウントしていないし、そこで共有も出来ない。

ASエディタを使わずにテキストエディタ等から実行させても、ASエディタの編集メニューから開くでも同じ状況です。
まあFinder に tell してからやればよいだけだ、といえばそれまでですが。。。
私のシステムが壊れているのか知りたくて。同じ症状出る方おられますでしょうか?
586自動再起動:2011/09/06(火) 15:18:27.09 ID:mirC3VR00
落ちたソフトを自動的に再起動.
http://www.rinpa.com/blog/archives/applescript/index.html
ただし activate は削除した.

これで起動したアプリを隠す (バックグラウンドで開く) ために,
tell application "System Events" to set visible of process "TeamViewer" to false
を end if の後に入れたら成功.でもそれでは隠すのを解除したくても繰り返し隠されてしまう.
ということで,できれば end if の前に入れたい.今のところ失敗してる.どうすればいい?

あと,AppleScript とシェルスクリプトの対応関係なんかを載せたサイトがあれば教えて欲しい.
上記同様のこと (落ちたアプリをバックグラウンドで開く) は,シェルスクリプトでできないかな?
587名称未設定:2011/09/06(火) 15:59:50.14 ID:AVIuXrBB0
588自動再起動:2011/09/07(水) 06:46:30.44 ID:A90jdqil0
>>586 は気長に回答待つが,シェルスクリプトについては,こちらの
http://hibari.2ch.net/test/read.cgi/unix/1308195527/l50
475で改めて質問したので,そちらへよろしく.

>>587 は AppleScript からシェルスクリプトを呼び出す方法とその逆をやる方法.
欲しいのは両者の対応関係を一覧した情報なので,ちょっとちがう.
589名称未設定:2011/09/07(水) 08:46:49.87 ID:W1f1FbRs0
そんな上から目線で質問されましても
590名称未設定:2011/09/07(水) 11:28:50.13 ID:nIHcfgD20
図々しいにもホドガール
591名称未設定:2011/09/07(水) 11:39:07.28 ID:uFWyacgp0
>>588
対応もクソもねーよ。全く違う言語。
夏休みは終わったからな。
592名称未設定:2011/09/07(水) 13:00:16.61 ID:biIQ32s00
あんな上から目線の立場ならそんなのわかりそうだがなあ
593名称未設定:2011/09/07(水) 13:12:57.96 ID:biIQ32s00
launch
の後でループして目的のアプリが起動するのを待ち、その後 set visible する
activate はいらんだろ

アプリ起動をコマンドでやるなら open だな
594自動再起動:2011/09/07(水) 16:40:19.34 ID:A90jdqil0
>>591 情報どうも.ノンプログラマの自分から見れば,AppleScript も automator もシェルスクリプトも機能としては同じなの.
言語としてはたしかに全然違ってそうだけど,共通の目的に使える部分については,対応表も可能だと思ったわけ.

上から目線と言うよりは,単に中立的・白紙的だということだと思う.自分用のメモに最低限の編集施しただけだから.
べつに下から目線にならなくていいよ.
595自動再起動:2011/09/07(水) 16:53:45.07 ID:A90jdqil0
>>593
どうもありがとう.でも,launch の「あとでループする」というのが分からないです〜.

ちなみに以下のスクリプトだと,一回目に起動したときは確かに隠れるが,
その後終了させて自動起動したあとは,なぜか隠れない.

on idle theObject
tell application "System Events" to set AppNames to name of processes
if AppNames does not contain "TeamViewer" then
tell application "TeamViewer" to launch
tell application "System Events" to set visible of process "TeamViewer" to false
end if
return 10
end idle
596名称未設定:2011/09/07(水) 17:03:05.14 ID:3o6ze2JR0
バカだ
597自動再起動:2011/09/07(水) 17:07:09.83 ID:A90jdqil0
どこがバカか分からないので苦労してるのよ.
598自動再起動:2011/09/07(水) 17:13:11.86 ID:A90jdqil0
なぜか分からんが,delay というのを入れたらうまく言った.

tell application "TeamViewer" to launch.
delay 2
tell application "System Events" to set visible of process "TeamViewer" to false
599名称未設定:2011/09/07(水) 17:21:17.77 ID:biIQ32s00
とりあえず「傲慢でした」と謝罪するのが先じゃねw

tell application "TeamViewer" to launch
tell application "System Events"
repeat until "TeamViewer" is in name of processes
delay 0.2
end repeat
end tell
delay 0.5
--tell application "TeamViewer" to activate
tell application "System Events" to set visible of process "TeamViewer" to false

その後調べたら、ただの launch で起動すると起動されたアプリは 「隠す」で起動されるから、それだけで良さそうだけど、なんかのアプリでそうならなかった憶えがある

tell application "TeamViewer" to activate
を一度かましてからじゃないと Dock のアイコンがグレーにならない、うちの環境

タイミングはいろいろ癖があるから delay の値で調節すれば
600名称未設定:2011/09/07(水) 17:22:44.21 ID:biIQ32s00
>>598
うん。launch 行実行されても、プロセスが起動されたわけじゃない
それでいいんだったら、それでいいよ
601自動再起動:2011/09/07(水) 17:45:58.68 ID:A90jdqil0
>>599-600
どうもありがとう.いい人じゃ.ご教示内容は将来の参考に記録しておく.
謝罪はしないが,とりあえず傲慢というより無人格だった.

launch で起動したことを確かめずに次の命令に進んでしまうんだ.なるほど.
602名称未設定:2011/09/07(水) 18:45:29.46 ID:iFdR4flH0
>>601
TeamViewerは使ってないけど、 通常はlaunchで起動するまで待つよ。ただ、起動した後に
初期設定の読み込みなどを始めるアプリ(Photoshopとか)なんかだと、起動した時点で次の処理へ
移ってしまう。

それと、アプリによっては処理が一段落した時点で、隠すを解除してしまう場合があったり、
無視される場合もあるため、delayでタイミングをずらす必要がある。
603名称未設定:2011/09/07(水) 18:57:04.97 ID:biIQ32s00
>>602
tell application "TeamViewer" to launch
tell application "System Events" to set visible of process "TeamViewer" to false
のように launch の直後にプロセスにアクセスしようとしたら、そんなプロセス無いぞって怒られるのがしばしばあるんだけどね
ま、そういう環境もあるってことで
604602:2011/09/07(水) 21:20:42.78 ID:iFdR4flH0
>>603
とりあえず、iTunes、iPhoto、Mail、Safari、Firefox、Photoshop、アプリケーション形式の
スクリプトなど、手当り次第に調べてみたけれど、隠すが無視されることはあってもエラーになる
現象が確認出来ない。現在は10.7で、10.6の頃がどうだったか、起動の直後に隠すような処理は
普段していないので(大抵、その前処理が入る)、10.6だとダメなのかもしれない。

どちらにせよ、そう言う環境を考慮するなら、visibleの値をセットした後に、その値がfalseで
あるか調べるループ処理をするよりも、素直にdelayを挟んだ方が安心だとは思う。
605602:2011/09/07(水) 21:32:00.88 ID:iFdR4flH0
ちょっと補足。最後の2行は>>599のスクリプトに対してではなく、以前に隠すが働くまで
ループさせる処理をしたことがあって、そのことをふと思い出しただけのものです。
606自動再起動:2011/09/08(木) 11:41:33.77 ID:Jp/c58At0
launch が処理対象によってちがう動作をすること了解.
こういう一連のやりとりを見てると,「バカだ」と言われるほどバカでもない気がする.

ちなみに TeamViewer 自動再起動用の applescript をリモート OS 10.6 に置いて,
おそるおそる TV 落としてスクリプト実行してみたら,ローカルとちがう動きをした.
でリモート TV は呼び出しを受けてつながった時点で,窓がドックに収まるようになっていた.
「隠す」処理は無視されるようだから,applescript で入れてもあんまり意味なかった.
ま,他のアプリで applescript 使うときの参考ということで,みなさんには感謝する.

どうでもいいが,TeamViewer は窓を閉じるだけで終了してしまうので,誤操作が怖かった.
そうじなくてもリモートで何らかの理由で落ちてしまったら接続できなくなるので,
こういうスクリプトが役に立つのは間違いない.

欲を言えば,ログアウトした状態で TeamViewer を起動しておけないかとも思う.
AppleScript じゃ無理だろうけど.
607自動再起動:2011/09/08(木) 11:51:46.01 ID:Jp/c58At0
>>606 で「「隠す」処理は無視されるようだから」というのは訂正.
たぶん起動した時点では隠されているはずで,その後外部から呼び出されてつながった時点で
ドックに収まったと推測.
608名称未設定:2011/09/08(木) 13:08:26.94 ID:NSfSmCPR0
そんなクソにも役立たないプライドなんて捨てればいいのに。ネット上では特に
609名称未設定:2011/09/08(木) 13:19:47.80 ID:1Y0ZLU3a0
どこの王様なんだろ
610名称未設定:2011/09/08(木) 13:41:23.65 ID:JXBD50x50
もっと素直に、僕はバカです助けて下さいとはいえないのかな。
プライドが高くて無人格にまで下げるしかなかったのか。
611自動再起動:2011/09/08(木) 14:52:01.12 ID:Jp/c58At0
おやおや,怒られてるみたいね.なんか失礼なこと言ったっけ.
自分の投稿見直したけど,上から目線とか図々しいとか,どの言葉を指しているのか分からんよ.
とにかく,助けてくれたみんな,ありがとね.

ということで,次の方,質問どうぞ.
612名称未設定:2011/09/08(木) 15:03:48.84 ID:tpfYV8Dq0
帰国子女でもないなら、国語の勉強が足りなかったみたいだな。
613名称未設定:2011/09/08(木) 15:34:09.52 ID:JXBD50x50
>>586
>落ちたソフトを自動的に再起動.
>http://www.rinpa.com/blog/archives/applescript/index.html
>ただし activate は削除した.
いきなり、意味不明な書き出し。このスレは質問or発表スレなので
どちらなのか明示すべき。自己中心的としか思えない。
アプリの自動再起動を行うため、以下のblogを参考に…と書き出すべき。

>どうすればいい?/教えて欲しい./でできないかな?
一回の発言で3点も要求するのはわがままと言わざるえない。

>>588
>475で改めて質問したので,そちらへよろしく.
堂々とマルチポス。質問ではなく「考えろ」の色合いが濃い。

>>1
>安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
よく読んどけ。
614名称未設定:2011/09/08(木) 15:47:41.53 ID:93T0/+Kg0
>>611
あっちでもいい顔されてないねー。
initプロセスの代わりに実装されたlaunchプロセスが
常に起動し続けるオプションも持っているから使うべきだとアドバイスされてたね。
615名称未設定:2011/09/08(木) 17:20:48.45 ID:eHsdnmLD0
>>612
帰国子女をひとくくりにするのやめてくれ
616名称未設定:2011/09/08(木) 17:23:04.99 ID:LKWzRIHG0
しかし何で帰国子女っていうんだろうね。
男だっているのに。
617名称未設定:2011/09/08(木) 17:34:48.50 ID:tpfYV8Dq0
>>615
スマンカッタ。

>>616
( ゚Д゚)ポカーン
618名称未設定:2011/09/08(木) 17:39:07.28 ID:kYYmL2fG0
子女という単語は息子や娘を指すんだよ
マジレスだよ
619名称未設定:2011/09/08(木) 17:45:29.21 ID:d8q7lVfk0
まあ単に バカ でいいでしょ
次どうぞ
620名称未設定:2011/09/08(木) 17:52:57.30 ID:YuNj6Wnl0
「良家の子女」などと用いる例があるように「子女」が本来尊称であること、また、「男」の語が入っていないにもかかわらず男女両方の子供を指すことから、
「性差別語」のように連想される。このために文部科学省の組織内名称をはじめとしたほとんどの公共機関と教育機関では「帰国子女」から「帰国生徒」等の
無難な名称へ変更されている。むしろ現在では公の機関では「帰国子女」のほうが少数派である。

だとよ
621名称未設定:2011/09/08(木) 18:16:57.37 ID:HhnInQpU0
まあ、どうでもいいがな。
622名称未設定:2011/09/08(木) 21:16:23.82 ID:+Rco3u7H0
アスペを相手にするお前らは本当に忍耐強い
見てるだけでもイライラした
623名称未設定:2011/09/08(木) 22:13:27.81 ID:1oOJ2Lcx0
>>611
このレス文だけとってみても失礼だな。アスペというのか知らんがコミュ力不足。
624自動再起動:2011/09/08(木) 22:46:52.16 ID:Jp/c58At0
あ,なるほど.アスペルガーには分からない微妙なことだったのね.じゃあ僕にはむずかしいかも.

次の質問が出てないので敢えて答えておくと,
>>613 の指摘は「書き出しが意味不明」ってこと以外は該当しない感じ.
●一回の発言で3点質問するのはわがままというよりは,無用な繰り返しを避けて効率的.
●マルチポストと言っても,ちゃんと断った上で一部分をより適切なスレに分離しただけ.
●丸投げではなくて,ほとんど全部スクリプトを示した上での質問だった.
625自動再起動:2011/09/08(木) 23:10:16.18 ID:Jp/c58At0
>>614
>initプロセスの代わりに実装されたlaunchプロセスが
>常に起動し続けるオプションも持っているから使うべきだとアドバイスされてたね。

どうも補足ありがとう.でもこの補足をふくめ,あちらのスレの解答は今のところぜんぜん理解できてないんです.悲
あちらの質問の仕方は「丸投げ」に近いのは認める.省略したのは,こちらのスレの質問にリンクすることで,
applescript の場合を示しているからだけど.
「このアプリは起動中?」を確かめるコマンドが分かればなんとかなると思うが,
コマンド集探しても見つからなかった.

626自動再起動:2011/09/08(木) 23:56:22.76 ID:Jp/c58At0
シェルスクリプトで教えてもらったマニュアルの項目をしばらく眺めていたけど,
とりあえず Safari のリーディングリスト行きに.
けっきょく Mac OS X に依存したコードになるなら,
シェルスクリプトで書こうとした当初の目的とズレてしまう.

AppleScript でできることはシェルスクリプトでより簡潔な言葉でできると思っていたが,
そうでもないということか.アップルスクリプトちょっと見直した.
このスレッドで分かるように,ユーザーも言わなくていい指摘までしてくれて親切だし,笑
627名称未設定:2011/09/09(金) 00:04:09.87 ID:Mr+dwSyh0
急にスレが伸びてるから、何事かと思えば。
628名称未設定:2011/09/09(金) 01:48:44.05 ID:WtP9HFKA0
ここはスルー力をつけるスレに認定されました
629名称未設定:2011/09/09(金) 02:20:50.62 ID:lEiH7AkU0
tell application "TextEdit" to launch
delay 1
repeat until application "TextEdit" is running
delay 0.5
log "not running"
end repeat
log "running"
--tell application "TextEdit" to activate
--delay 0.5
tell application "System Events" to set visible of process "TextEdit" to false
630名称未設定:2011/09/09(金) 10:03:25.11 ID:8RAmTrLm0
>>625
むかしの話だけど、ログイン後に必ず走らせたいのなら/etc/gettyを使ってrespawn指定のプロセスを作った。
指定のスケジュールで走らせるためにはcronという仕組みがありシステムプロセスであるデーモンが世話を焼いてくれた。
それもこれも、unixカーネルが走り始めて最初のプロセスであるinitがinittabを見て起動するという仕組みを利用していたのね。

でもTigerからinitに変わってlaunchが第一プロセスになって面倒を見てくれるようになった。
システムつまりカーネルモードでも、ログイン後のユーザプロセスでもそれぞれに設定をわけて面倒を見てくれる。
ログイン前から走らせるのなら前者を、ログイン後なら後者を使えばいいよ。
その設定の説明が件のレスだし、そのなかに落ちても自動再起動する設定もあるよ。
どの道、プロセスが落ちたのもシステムに検知してもらうんだからアップルスクリプトに頼る必要はないでしょ。
631名称未設定:2011/09/09(金) 10:06:03.36 ID:8RAmTrLm0
unixの起動について調べたほうが理解が進むんじゃない?
632名称未設定:2011/09/09(金) 13:46:05.69 ID:LGF7NfTy0
いつからこんな怖いスレになった
633自動再起動:2011/09/10(土) 03:13:49.15 ID:JHvupoZi0
>>630
>ログイン前から走らせるのなら[init]を、ログイン後なら[launch]を使えばいいよ。

どうも.シェルスクリプトで書こうとした当初の目的は,それを知っておくと Mac OS X にかぎらず
UNIX コンピュータ全般を操れるであろう汎用性の高さゆえ.
もし launch プロセス?ってのが OS X 独特のもの(かどうかは知らないけど)で汎用性がないなら,
ここで勉強しても上記目的には役立たないことになる.

でも,ログイン前から走らせることは AppleScript では出来ていないから(たぶん出来ないと推測),
それが出来る点においては init の使い方を勉強する価値はありそう.敷居高そうだけど.

>>629
別の例示ありがとう.applescript についてはすでに解決してるけど.
634名称未設定:2011/09/10(土) 03:15:43.55 ID:epBYZUAC0
感謝したあとで否定文を差し込むあたり、性格悪いなと思った
635名称未設定:2011/09/10(土) 04:43:35.23 ID:TbQhhLgT0
本人的には自分は正しいって感覚なんだと思うよ。
異様に高いプライドを間違えた方向に持ってしまっているのが一般社会と馴染まないところかと。
ある意味気の毒ではある。
636自動再起動:2011/09/10(土) 06:23:32.51 ID:JHvupoZi0
>>634 はいはい.順番逆の方がいいってことかな.
637名称未設定:2011/09/10(土) 06:39:52.92 ID:f2rfqAQP0
相手をしてるやつは自分も荒しだと気づけよ
本人のためにもならない
638自動再起動:2011/09/10(土) 07:36:31.27 ID:JHvupoZi0
>>635
人類平等でしょう.プライドとかじゃなくて,
ボクはいっしょに仕事するような相手とは対等な関係を持ちたいの.
見上げもせず,見下しもせず.ま,態度悪いと陰で言ってた上司はいたので,
あなたの指摘も当たってる部分はある.でもたいして困っていないのでご心配なく.

>>637
わるかった.人格攻撃が続くので,つい反応してしまった.
639名称未設定:2011/09/10(土) 09:32:06.76 ID:H19lCgZBP
いるよね、ぺーぺーの新米のくせに
「僕はなんでも分かってるし、仕事も出来るんです。
 あなたはなんでそんなに偉そうなんですか?
 僕は先輩後輩って嫌いなんですよね」
って言うヤツ。まぁワザと演じてるんだろうけどさ。
640名称未設定:2011/09/10(土) 10:16:26.00 ID:vGlTjnDk0
あんたら朝っぱらから元気だねぇ
日曜夜までこの調子で行くのかい?
641名称未設定:2011/09/10(土) 13:19:56.22 ID:SEspeDEh0
>>637>>638
わざと取り違えてるのか知らんが「本人」は>>638だからな
642名称未設定:2011/09/10(土) 13:35:30.59 ID:PQ+2TvO90
たぶん、>>638は一人っ子なんだろう。
法の下の平等と人間関係は違うと気づくべき。
643名称未設定:2011/09/10(土) 14:16:30.92 ID:2x5csyly0
>>636
あなたにとって必要かどうか、っていう情報はスレにとって必要じゃないんだよね
であるのに関わらず自分には不要であると主張するのは性格の問題でしょ
あなたの為のスレじゃないし、あなたの為だけのレスでも無い
644名称未設定:2011/09/10(土) 18:06:00.45 ID:ACwY40A/0
>>633
もう解決済みなのに、個人的な理由でスレを私物化するのはどうかと。何か言われたら、
全てやりかえすようなことを続けていても、スレを荒らすだけ。もし、まだ続けるのなら、
あなた個人のことはぶっちゃけどうでもいいから、きちんと整理してから質問を。

それから例のAppleScriptだけど、on idleを使わずにon runの普通のスクリプトにして、
delayを挟んだループにした方が、負荷が少ない。そのままだと終了が出来ないけど。
645自動再起動:2011/09/10(土) 18:27:03.00 ID:JHvupoZi0
>>643
他人の発言を悪意に取り過ぎ.ボクにとって不要だなんて言ってない.
>>629を書いてくれたひとにとって不要な努力をさせてしまったかもしれないのを軽く謝ってるだけ.

>>633
「別の例示ありがとう.applescript についてはすでに解決してるけど」
で言いたかったことを書き表すとこうなる:

「AppleScript にかんする質問については一応解決したところに,
わざわざ時間をとって別の例を挙げてくれてありがとう.
なるほど is running を使うことで
"System Events" ...in name of processes
と書くのを避けることが出来るのは参考になった.どうも.」

こんなに書かなくても普通分かりそうなものだが…思い込みは恐ろしい.
みんなの忠告は受け取っておくが,どの発言も本人には悪意はないことは理解してくれ.
アスペルガーで人格障害を抱えてるボクのような人間の発言を叩いても
あまり意味がないから,もう止めたほうがいいよ.
646自動再起動:2011/09/10(土) 18:37:20.28 ID:JHvupoZi0
>>644
on run というのもあるんですね.調べてみます.どうも.
647名称未設定:2011/09/10(土) 18:53:07.09 ID:H19lCgZBP
こーゆーのは悪意がないからタチが悪いんだよね…周囲を不愉快にさせるが
本人には悪意がないから絶対に反省しないし、改善される見込みもない。
ま、でも、しょうがないね、そーゆーココロの病気なんだから…
648名称未設定:2011/09/10(土) 22:59:57.01 ID:SEspeDEh0
もういい大人だろうと思うが
悪意が無い≠悪いことをしてない、と気付くのはいつだろうね
649名称未設定:2011/09/10(土) 23:20:10.77 ID:vGlTjnDk0
いい加減スレ違いだって事に気付くのはいつだろうね
650自動再起動:2011/09/11(日) 07:59:14.20 ID:zZ8Z2yWr0
どうも質問をしやすい雰囲気を崩してしまったようなので,
その切っ掛けを作った一人として,解決策を提示しておく.
要するに質問の仕方が悪いといった理由で叩かれる可能性を
できるだけなくしておけばいい.
以下のような説明をスレッドの最初に追加しておくといいんじゃ.


質問は試験問題形式で十分.より適切な回答を得られるよう,その質問を
するに至った事情などを添えるのも場合によっては望ましい.例を示す.

質問.以下の等式をみたすような x, y, z, n の組合せをひとつ以上
見つけるプログラムを書け.
[等式] x^n + y^n = z^n
ただし, x, y, z はゼロでない自然数, n は 3 以上の自然数とする.
また, x^n は x の n 乗のことである.

事情.塾講師をやってます.中学生に上記[等式]を解く宿題を出したところ,
正解者がいなかった.不思議に思って自分でも解こうとしたが,
手作業ではなかなか解が得られないことが分かった.
コンピュータの力で解を求めたい.

651名称未設定:2011/09/11(日) 08:55:09.76 ID:MXpRQ0WrP
しつこいからNG登録しとくか
652名称未設定:2011/09/11(日) 08:58:12.98 ID:br6nMrWh0
キチガイ見世物スレワロタ
653名称未設定:2011/09/11(日) 09:10:29.54 ID:vdQvorkM0
常識が判断出来ない人だったか
654名称未設定:2011/09/11(日) 09:46:13.39 ID:MpPZlcJC0
自動の人については、
投げやり気味に同情してたんだけど、
それはこの上もなく誤りだった様だ。
655名称未設定:2011/09/11(日) 10:05:22.72 ID:PMf6wry20
ほんとに病気の人ってこんななんだな
キモ過ぎる
656名称未設定:2011/09/11(日) 11:00:33.15 ID:N8fByo+k0
自動の人は、アスペというより人格障害のようだ
657名称未設定:2011/09/11(日) 12:28:32.40 ID:AcsvSUjB0
>>650
その質問の例なんだけど…

・丸投げ禁止
・わからない点、エラーが解決できない点についてはスクリプト片を添えて質問

というこのスレのルールにまったく従ってないぞ。
658名称未設定:2011/09/11(日) 13:14:39.99 ID:N5VxcB3z0
スルーしとけバカチン
659名称未設定:2011/09/12(月) 01:45:40.30 ID:YblJmk/40
自動の人って何かと思ったら、初っぱなから名前設定してるのな
なるほど、気をつけよう
660名称未設定:2011/09/15(木) 01:33:20.46 ID:zWqxcQzN0
sage禁止で
661自動再起動:2011/09/17(土) 18:28:23.99 ID:gwVt0Swg0
しつこくするつもりはないのでしばらく黙ってたけど,反対多そうだね.
「試験問題形式で十分」とは書いたが,そうしなければならないなんてことは
一言も言ってないので,べつに反対する理由にはならないはずなんだが.

ま,こういうスレが答える側の論理(「答えてやるんだから,もうちょっと頭下げてね」)に
支配されていることは分かった.
質問者側への配慮ってのは,答える側には分かりにくいもののようだ.
スレッドをウォッチしてるひとは答える側/答えられる側が多いだろうから仕方ないか.

>>657
もちろん>>650 の例のあとには,「私の解答とその問題点」などが続く.
そもそも AppleScript 向けの例になってなかったから,その辺は適当に変える必要がある.
662名称未設定:2011/09/17(土) 20:27:42.26 ID:YTRBTbCg0
教わる者と教える者が対等の立場だと思ってんのか、このバカは。
どんだけ社会経験ないんだ?
本来なら金払って知識を得るもんだぞ。
http://chiebukuro.yahoo.co.jp/
ここだと学校の宿題やセンター試験の答えも解いてくれるらしいぞ。
オレはここまで献身的にはなれないが。
663名称未設定:2011/09/17(土) 20:33:35.84 ID:S6Pk1bT90
キチガイはスルーで
664名称未設定:2011/09/17(土) 20:38:48.39 ID:q0kyPwEL0
AppleScriptを勉強すれば、任意のWebページから指定した文字列を含む段落を拾ってきてテキストに保存してくれるような簡単なアプリケーションはできますか?
できるかどうかさえわかれば自分で頑張ります!

あ、でもFlashを操作するのは無理ですよね、たぶん
665名称未設定:2011/09/17(土) 20:51:33.38 ID:/SaqDz9S0
>>664
出来ちゃう

Flashの操作については試した事が無いので良くわからないが
666名称未設定:2011/09/19(月) 22:30:58.30 ID:UCCE/DG/0
たくさんあるQuick Timeのムービーの注釈のコピーライトとかに入力したいんですが、AppleScriptで一括してできますか?
どなたか、できるかどうか、あるいはヒントだけでも教えてください。
できるならなんとか自力で調べて作ってみたいと思います。
一応、調べたんですがわからず、できないことをやってるのではと思ったので。
667名称未設定:2011/09/19(月) 22:41:13.73 ID:aFHP6lWfP
用語説明からすると、出来そうにない。
668名称未設定:2011/09/20(火) 01:14:09.55 ID:vYR2MgU/0
>>666
使った事はないけど Automator に『ムービーの注釈を設定』と言うアクションがある(10.6)。
たぶんメタタグ関連のコマンドで処理してるんじゃないかな?
669名無し:2011/09/23(金) 00:17:53.55 ID:v1jvnS+70 BE:1707869186-2BP(0)

>>664

AppleScriptいじりたてですが。
SafariとJeditとSystem Eventsを組み合わせて
指定のURLの全文取得が出来ていますので
あなたも出来ると思いますよ。


find string (text) を使ってリピートで取得か、
findAll string (text) で一気にparagraph選択かな?で
自信無いです。
Jedit用語説明見るとこれ以降に続く構文が真偽しか選択できませんね。


フラッシュプレーヤーをインストールしてみました。
用語説明では見つかりませんけど、AppleScriptから使えるのかな。
cliclick使えれば何とかなるかも。


BathyScapheを久しぶり起動したら
バージョンアップがわかったので2.0.5にしてみました。
670名称未設定:2011/09/23(金) 02:00:50.59 ID:ovQMknMc0
>>668
ありがとう。Automator、いじってみたけどワケわからん。
あきらめるわ。
671名称未設定:2011/09/23(金) 10:19:41.63 ID:6sDgG0EQ0
そんなすぐ諦めてちゃ何もできませんがな
Automator簡単だよ、簡単だから簡単なことしか出来ないけど
672名称未設定:2011/09/23(金) 10:47:10.63 ID:9xxpvTWi0
スピーカー音量の設定で指定した値と実際にセットされた値とで一部ずれがあるんですが
これはどういう理由があるんでしょうか?

set volume output volume (val_set)
set (val_get) to (get output volume of (get volume settings))
指定した値(val_set) | 実際の値(val_get)
99 | 98
96 | 97
94 | 93
92 | 91
89 | 88
....。
とりあえずこんな風になっています。
このせいで、スクリプトで現在の音量より1だけ小さい(大きい)音量にセットしたい時に
余計な記述が必要になってしまいます。大した問題ではありませんが。
673名称未設定:2011/09/23(金) 11:19:15.77 ID:pCk/xJAt0
http://www.macosxautomation.com/lion/annotatedversion/index.html

AppleScript では
http://support.apple.com/kb/TA25539
でも、なんかいろいろ壊れているみたいだなあ
674名称未設定:2011/09/23(金) 11:45:17.28 ID:pCk/xJAt0
>>672
10.6.8 ではそんなことないけど、10.7 はそうだね
後ろはなんか3つ区切りみたいだけど、頭はそれとまた別のようで、パターンが意味不明だね
余計なことしてんな
675672:2011/09/23(金) 18:11:30.12 ID:9xxpvTWi0
ああスノレパは大丈夫なんですね。
ついでなんでリストにしてまとめておきますね。ほとんど需要は無いだろうけど。
property list_vol_spacial : {42, 49, 54, 58, 62, 66, 69, 72, 75, 78, 81, 84, 86, 89, 92, 94, 96, 99}
property list_vol_sp_down : {66, 84, 89, 92, 94, 99}
property list_vol_sp_up : {42, 49, 54, 58, 62, 69, 72, 75, 78, 81, 86, 96}
676名称未設定:2011/09/23(金) 18:14:01.97 ID:9xxpvTWi0
spacial じゃなくて special ね‥‥
677名称未設定:2011/09/30(金) 14:54:57.34 ID:EnmE8oAi0
>>665
遅れましたがありがとうございました!!
頑張ってみます。
678名称未設定:2011/10/02(日) 13:22:08.57 ID:XLAmD09K0
-- Delete of Eject
tell application "Finder"
set list_file to (selection as alias list)
repeat with f in list_file
if (kind of f is "ボリューム") then
eject f
else
delete f
end if
end repeat
end tell

SparkでこんなスクリプトをCmd+Del に割り当ててるんですが
kind属性を判断するような箇所をシステム言語によらない形にできないものでしょうか?
679名称未設定:2011/10/02(日) 14:17:17.22 ID:/1ueGcaW0
汎用性に欠けるけど、URLで代用してみるとか
if (URL of f begins with "file://localhost/Volumes/") then
680679:2011/10/02(日) 15:12:04.13 ID:62/wEsBu0

役に立たなかったw
681名称未設定:2011/10/02(日) 15:42:03.82 ID:nP/8UtV50
>>678
if class of item f is disk then
682名称未設定:2011/10/04(火) 12:52:56.49 ID:VjIE+nBg0
iTunesの曲オプションの「メディアの種類」を「Podcast」に変更したいのですが
下記スクリプトだと「オブジェクトのタイプが不明です」というエラーが出てしまいます。

そもそも、変更するプロパティが違うのでしょうか?

tell application "iTunes"
repeat with theTrack in selection
set podcast of theTrack to true
end repeat
end tell
683名称未設定:2011/10/04(火) 13:40:54.95 ID:68QQkr7P0
元々kindを使ってたりわざわざalias listにしてたり、
なかなか興味深いな
684名称未設定:2011/10/04(火) 14:27:44.48 ID:lMfr7Ol30
>>682
r/o
read only属性のようだけど
685名称未設定:2011/10/04(火) 14:48:24.26 ID:VjIE+nBg0
>>684

r/oって、リードオンリーの意味だったんですね!
基本的なことがわかっていませんでした。ありがとうございます。

ということは、自分で調べた限り「メディアの種類」を変更する方法が無いようですが、ご存じの方はいますか?
686名称未設定:2011/10/04(火) 15:16:36.84 ID:8szMkUSS0
>>685
その程度、手動じゃだめなのか。
687名称未設定:2011/10/04(火) 15:40:21.63 ID:VjIE+nBg0
>>686
Automatorを使ってiTunesに取り込む時に、タイトルとかと一緒に設定したかったんですが。
無理なら諦めます…
688名称未設定:2011/10/04(火) 22:56:57.20 ID:oNDIyiaF0
http://www.youtube.com/watch?v=FaOCQ9AQyP0&annotation_id=annotation_583788&feature=iv

リンゴ様。
こいつら韓国人は、徹底的に再起不能にしないと、また、どこかの国から盗みます!
日本からかもしれないし、アメリカからかもしれないし、中国からかもしれないし、その他からかもしれません。

こいつらは徹底的に再起不能にしないと、また盗むのです。
日本でのギャラクシーの販売を確実に退けてください、韓国人は、ギャラクシーを売って日本でお金を手に入れたら、そのお金で世界を旅して、また誰かからアイデアを盗みます。

また同じ目に会いたいのですか?!!!
あなたがたを、ずるいビジネスをしない、良識ある会社であると信じています。
689名称未設定:2011/10/05(水) 00:09:10.32 ID:yJAz9f+20
スレに関係ねーし。百歩譲ってApple関連だとしても、Appleには届かねーし
しーね
690名称未設定:2011/10/05(水) 00:25:36.16 ID:3te3oUQ+0
ああー、すみません。
アップル関連のスレに書き込んでいましたが、手違いでした。
691名称未設定:2011/10/05(水) 10:08:11.81 ID:1cZFye/C0
スクリプトの事ではないのですが、
スクリプトエディタのウインドウ下部の「説明・結果・イベントログ」の表示欄が消えてしまいました。
どうやったら表示できますか?
以前から表示欄の有る物は問題ないのですが、新規で作成したスクリプトには一切表示されません。
692691:2011/10/05(水) 10:09:07.54 ID:1cZFye/C0
書き忘れましたがOSは10.4.11です。
693名称未設定:2011/10/05(水) 10:52:13.78 ID:NT6qLOyk0
>>691
command+1
command+2
command+3
694691:2011/10/05(水) 11:42:21.34 ID:1cZFye/C0
>>693
いや、そう言うことじゃなくて根本的に表示するエリアが存在してないんです。
695691:2011/10/05(水) 11:47:23.92 ID:1cZFye/C0
画像アップしました。
ttp://s3.gazo.cc/up/s3_0637.png
696名称未設定:2011/10/05(水) 13:12:48.63 ID:APuRrr6NP
>>695
動画の方を見てしまって画像を見ないヤツ続出
697名称未設定:2011/10/05(水) 15:42:47.95 ID:kKdlPwnJ0
Script Debuggerを外す
表示欄のあるやつをウインドウ>デフォルトとして保存する
com.apple.ScriptEditor2.plistを消す
等々?
698691:2011/10/05(水) 15:57:36.51 ID:1cZFye/C0
>>697
ありがとうございます。
↓で直りました。でも、どうやって消えたのでしょう?
表示欄のあるやつをウインドウ>デフォルトとして保存する
699名称未設定:2011/10/05(水) 21:33:55.28 ID:NYzhqCI/0
iWorkのNumbersをコントロールしてみようと試行錯誤をしているのですが、
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
tell application "Numbers"
tell table 1 of sheet 1 of document 1
set rn to a reference to (cells of range ("A1:A10"))
set ce to a reference to cell ("A11")
set value of rn to 8
set value of ce to "=SUM(A1:A10)"
value of ce ----> 80
properties of ce
end tell
end tell
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
range ("A1:A10") のような範囲指定方法は、
用語説明の Numbers: Numbers Suite > cell クラス を参照しても記載がないように見えました。
どこか他で説明している箇所があるのでしょうか?
あと、上にあるように value に Numbers数式を入れると、計算結果が取得できますが、
数式そのものはcellのproperties を覗いても見あたりません。 これは取得できないものなのでしょうか?
700名称未設定:2011/10/06(木) 14:14:38.10 ID:7L17iawL0
>>699
俺は式ごとコピーするときはGUI scriptingでごまかしてる
701名称未設定:2011/10/14(金) 23:53:27.99 ID:r3gb/SpC0
今日、ほとんどはじめてのスクリプトを書いて実務に生かせました。
これからよろしくお願いします。
それでひとつ質問なんですけど、今日書いたスクリプトで
set tgtFiles to selection as alias listとして
複数選択したファイル、フォルダをドラッグ&ドロップするとそれらを
処理するものなのですが、自分の環境でやると成功するのに
少し古い、白いiMacだと「can't make alias〜」と出て処理できません。
as alias list のリストをとって、1個だけ選択して処理するとすべて処理できます。
こんなこと、あるんでしょうか?
ソースはすみません会社に忘れました。
702名称未設定:2011/10/15(土) 03:30:13.42 ID:KfABc9qt0
>>701
選択項目がひとつだけの時 as alias list が失敗すると言う問題が以前は有った(Mac OS X 10.4)。
10.5では直っていたはず。
複数選択時にもエラーが起っているなら…それは知らない。
703名称未設定:2011/10/15(土) 10:05:13.55 ID:IcZAXu4q0
>>702
ありがとうございます。たぶんそれですね。回避策はどうするんだろ、、、、?
Strinsでsetして、調べてlistかaliasにする、とかですかね、、、、。
初心者過ぎてわからないw 
実は昨日、激混みのアップルストアで行列を尻目にmac mini買いました〜♪
近所の図書館にぜんまいビュンビュン見つけたので
借りてくる予定でーす♪
704名称未設定:2011/10/15(土) 10:06:56.34 ID:IcZAXu4q0
×Strins
○String
orz
705名称未設定:2011/10/15(土) 11:53:41.87 ID:Wucgn8c40
>>701
ドロップされたファイルリストはdropletのopenハンドラのパラメータで得られるでしょ。
任意のタイミングでFinderの選択を得るのは、こうするのが確実。
on getFinderSelection()
set selList to {}
tell application "Finder"
set selObj to selection
repeat with x in selObj
set end of selList to (get x as alias)
end repeat
end tell
return selList
end getFinderSelection
706名称未設定:2011/10/15(土) 16:39:39.70 ID:i1O2bvxW0
>>703
「〜Studioでびゅんびゅん」だとXcode4では役に立たないかも
707名称未設定:2011/10/17(月) 23:12:03.01 ID:LtHu3kDe0
300MBほどの大きなデータを10個ほど作成して、そのデータをさらに処理する、というような
場合、なにかいい方法はないでしょうか。普通に処理を並べただけだと、2つめの処理がされません。
いろいろ調べてtryかwith timeoutを使うのだとは思うのですが、その「ファイルが完全に生成されている状態」
というのをどう調べればいいか分からないのです、、、。
708名称未設定:2011/10/17(月) 23:51:30.17 ID:XP074dMC0
on idle で数秒ごとにファイルサイズをチェックして、
前回チェックしたサイズと変わらなければ、データ処理を発動すれば?

最近AppleScriptやってないから自信ないけど、
Finderかなんかにファイルサイズを問い合わせると、
常に正しいサイズを教えてくれるわけでは無い「はず」なので、
do shell script "ls -l filepath" とか "wc -c filepath"とかでチェックする。

いま思いついたのはこれくらい。
これ以外の方法を考えるには、もう少し手がかりが欲しいかな。
709名称未設定:2011/10/18(火) 00:09:29.64 ID:TO+b8o7tP
Applescriptじゃなきゃいかんか?
710名称未設定:2011/10/18(火) 00:30:51.18 ID:vvsF9B4H0
>>707
普通に出来ると思うが。なにがしたいのか、なにが出来ないのか
さっぱりだわ。
711名称未設定:2011/10/18(火) 05:27:36.98 ID:SbRoxNYg0
ファイルが開いているかどうかで処理終了を判断できるなら lsof コマンドを繰り返せば
できるんじゃないかな。
712名称未設定:2011/10/18(火) 10:09:10.55 ID:c4W9u+nm0
ファイルをドロップすれば自動的に添付してあらかじめ指定したアドレスに送信できるものを
作ろうとしているのですが、以下の通り実行してもうまくいきません。
Mailへ指示を送るプログラムは今回が初めてで、ネットのいろんなサイトを見て作成したものなので、
もしかしたら今のバージョンに対応していない構文の書き方とかをしているのかもしれません。
診断よろしくお願いします
property Address : ""
on run
display dialog "送信先のアドレス" default answer Address
set Address to text returned of result
end run

on open sendfile
set thename to "test"
set theaddress to Address
set thesubject to "無題"
set thebody to "無題"
tell application "Mail"
set newmessage to make new outgoing message with propeties
{subject:thesubject, content:thebody & return & return}
tell newmessage
set visible to false
make new to recipient at end of to recipients with propeties
{name:thename, address:address}
tell content
make new attachment with properties {file name:sendfile} at after the last paragraph
end tell
send
end tell
end tell


end open
713名称未設定:2011/10/18(火) 15:26:29.91 ID:jRQaLc+c0
>>712
propeties→properties
後、予約語を使わないのは基本。AddressはmyAddressなどに。
Mailへ指示を送るのは初めてとか書いてるけど、予約語を使っているあたりスクリプト自体の経験を感じないが。
714名称未設定:2011/10/18(火) 21:06:35.99 ID:QI5V5fiR0
sageない奴はスクリプトどころかパソコン使用自体の経験を感じないが。
715名称未設定:2011/10/18(火) 21:34:11.17 ID:5eojuChp0
>>713
なんで最後に余計な事言うのさ?
>>714
落ち着こうよ。単語の関連がぐちゃぐちゃだよ?
716名称未設定:2011/10/18(火) 21:38:43.85 ID:5eojuChp0
ああ、そういえば、無闇矢鱈に地雷を踏みまくる人がいたっけ…
717名称未設定:2011/10/18(火) 22:25:43.46 ID:c4W9u+nm0
>>712
普通に誤字だった…変数扱いになってたわ気付け俺。
一応予約語の関連は知ってはいたけど全く考えてなかった。言葉キツいけど細かい所まで見てくれてありがとうございました。
一応直してみたけど、AppleEventのハンドラで誤りが起こりましたで失敗。また色々勉強してきます。
ありがとうございました
718名称未設定:2011/10/18(火) 22:41:11.14 ID:+/M+P5SO0
>>714 にとってのパソコンは2chだけのように読めちゃうぞ
719名称未設定:2011/10/18(火) 23:47:25.34 ID:5F5fedrB0
>>717
いきなり全部組み上げてdroplet化しちゃうから、何がおかしいのか調べられなくなる
初めて作った、それも色んな情報を参考にしたというなら尚更だ

一部ずつエディタ上で実行して流れを掴め
720名称未設定:2011/10/19(水) 00:52:40.69 ID:R0pzufWd0
>>717
ドロップレットでテストしているのか?
起動時(on run)はファイル選択にすると
テストするとき、普通に実行できるぞ。
下はオレのテンプレ。

on open theList
toControl(theList)
end open

on run
choose folder with prompt "フォルダを選んでください" without invisibles
toControl({result})
end run

on adding folder items to theFolder after receiving theList
toControl(theList)
end adding folder items to

on toControl(theList)

repeat with curItem in theList
--処理
end repeat

end toControl

721名称未設定:2011/10/19(水) 02:21:39.40 ID:f1PSMZfz0
>>717 早っ。もうあきらめんの?こんなに人気なのに?
properties の綴り。そしてここにコピペしたのがそのままなら、その後ろの改行消さないと。それだけでうごくんじゃないかな?

>>719 さんのいうとおり。一行づつがんばるのだ。で、>>716 さんよびました?あ、でももっと痛い人いたね。いや、やっぱ私のことかな。。。
せっかくためしてみたから、答えつける。でも、自分やってみてからね。本当は複数ファイルとかいろいろ考えないと。
722721:2011/10/19(水) 02:22:35.41 ID:f1PSMZfz0
--自分のmail用ハンドラ埋もれてる、すぽっとらいと効かないのつらい、ぴよ◯さま。おかりしました。って、たぶんもとからそうだな。
on run {}
set sendfile to choose file
main(sendfile) of me
end run
on open sendfile
main(sendfile) of me
end open
on main(sendfile)
set thesubject to "題名ですね"
set theSender to "[email protected]" --送信者アドレス
set recipientAddr to "[email protected]" --–受信者アドレス
set bodyText to "こんにちは。ひよこさん。¥nソースお借りしました"
sendMail(thesubject, theSender, recipientAddr, bodyText, sendfile) of me
end main
on sendMail(thesubject, theSender, recipientAddr, bodyText, sendfile) -- Mail.appでメール送信を行う
tell application "Mail"
set newmessage to make new outgoing message with properties {subject:thesubject, content:bodyText}
tell newmessage
set visible to true
set sender to theSender
make new to recipient at end of to recipients with properties {address:recipientAddr}
tell content
make new attachment with properties {file name:sendfile} at after the last paragraph
end tell
--send -->コメントアウトしておくから、ぱらめたちゃんといれたらはずしてね。
end tell
end tell
end sendMail
723名称未設定:2011/10/19(水) 07:47:27.09 ID:8tz/nSrC0
mailコマンドじゃいかんのか
724名称未設定:2011/10/19(水) 19:06:36.20 ID:bNjbDz7B0
スレ違いかつ重箱で何だけど、アドレスの例示にはexample.comとかを使いましょう。
725712:2011/10/20(木) 21:54:27.41 ID:+tLRVSrJ0
>>719
一応run時に入力した内容がプロパティとして保存されているか、と、ドロップしたファイルのファイル名が
しっかり出てくるかは確認しました。ただ一番重要なメールの部分が一切手つかずだったんで、そこも確認してみようかと
思います。ありがとうございます。
>>720
ファイルをドロップしただけであらかじめ指定しておいた相手にファイルを送れるってのがやりたいので、
それだとちょっと理想とは外れるんですよね…でもわざわざテンプレまで晒してもらってありがとうございました
>>そうですね!もうちょっと頑張ってみます。改行消すのは書いた後に気付いてやったんですけど、
やっぱり動かない…色々いじってる感じだと、やはりメールを送る段階でのスクリプトに問題がありそうなんだがわからない…
>>722
わざわざありがとうございます。なかなか僕にとっては高度なスクリプトなので、ちょっとづつ動作を確認しつつ使わせていただきたいと思います
>>723
コマンドとは?もしかしてもっと簡単に動かす方法があったりするんですか?
726名称未設定:2011/10/21(金) 00:51:36.10 ID:sj5MvoIW0
>>725
>>720だが、なにか勘違いしてないか。
このテンプレは、ダブルクリックで起動したときはon runが呼ばれ
ダイアログで選択したファイルをtoControlへ処理を渡す
ファイルドロップしたときはon openが呼ばれ受け取ったファイルを
toControlへ処理を渡す。両対応のテンプレ。
スクリプトエディタで実行するときは、普通に実行ボタンを押せばいい。

unixには、mailコマンドがある。だが、こちらも難易度は高いと思うが。
727名称未設定:2011/10/21(金) 02:16:29.34 ID:hJ7UeuFv0
>>725
「propeties」の後が2カ所とも改行されてるみたいだけど、1行に直した?
AS穴のを丸パクしたんだろうけど、このミスといい特徴的な変数の書き方といい、
コピペじゃなくて手打ちしたのだろうか
まずは真似した元のスクリプトをそのままコピペして、自分の環境で動くか確認しようよ

まぁ問題は多分こっち
>make new to recipient at end of to recipients with properties {name:thename, address:address}
最後のaddressがMailにとっては予約語なのでエラーになってんじゃないかな
頭でpropertyのaddressから変数のtheaddressに入れてんだから「address:theaddress」にすりゃ動くでしょ
Mail使ってないので確認はしてないが
728名称未設定:2011/10/21(金) 11:07:45.75 ID:dm4+z5ex0
>>725
>>713の指摘部分直せばそのまま動く。
729712:2011/10/21(金) 18:32:50.75 ID:0fIsYML40
>>726
なるほど。両対応って凄いですね。ありがとうございます。参考にさせてもらいます。
やっぱりハンドラについても勉強しないとなぁ…
>>727
一応指摘頂いたところは直してみました。まずは言われた通り普通にメールを送るだけのスクリプト作ってみて
試してみたいと思います。ありがとうございました
>>728
みなさんが教えてくれる感じだとそれで動きそうなんですが、どうしても誤りが起きてしまう…以下直した後のスクリプト
property sendaddress : ""
on run
display dialog "送信先のアドレス" default answer sendaddress
set sendaddress to text returned of result
end run
on open sendfile
set thename to "test"
set theaddress to sendaddress
set thesubject to "無題"
set thebody to "無題"
tell application "Mail"
set themessage to make new outgoing message with properties {subject:thesubject, content:thebody & return & return}
tell themessage
set visible to false
make new to recipient at end of to recipients with properties {name:thename, address:theaddress}
tell content
make new attachment with properties {file name:sendfile} at after the last paragraph
end tell
send
end tell
end tell
end open
なぜ動かないんだ…
つかみなさんホントにありがとうございます。そしてものわかり悪すぎてすいません…
730名称未設定:2011/10/21(金) 19:15:41.44 ID:XutzDVyk0
ゆとり秋田
731名称未設定:2011/10/21(金) 20:14:32.64 ID:wdCOSeh/0
お値段以上、ユトリ♪
732名称未設定:2011/10/24(月) 11:18:47.40 ID:gHRneV590
>>729
ハンドラ以前にスクリプトの基本を勉強した方がいいよ。
ちゃんと全ての行の意味を理解しているとは思えない。
733名称未設定:2011/10/26(水) 20:11:56.34 ID:l0o6cTZ30
初心者です。
指定したアプリケーションを再起動させる為に下記のスクリプトを実行しています。

tell application "指定したアプリケーション"
quit
end tell
tell application "指定したアプリケーション"
launch
end tell

上記の方法でOS 10.6.8上では問題なく再起動出来るのですが
OS 10.7.2上ですと二度スクリプトを実行しないと指定したアプリケーションが立ち上がりません。
他に良い方法などはありますでしょうか?
734名称未設定:2011/10/26(水) 20:20:59.50 ID:x85bsis80
間に delay 入れたら?
735名称未設定:2011/10/26(水) 20:22:48.04 ID:Aj6zteKS0
>>733
end tell
delay 10 -- とりあえず 10 秒待ってみる
tell application "指定したアプリケーション"
736名称未設定:2011/10/26(水) 20:27:46.12 ID:l0o6cTZ30
>>734
>>735

ありがとうございます。
間にdelayを入れる事によりOS 10.7.2上でも一度のスクリプト実行で再起動出来る用になりました。
737名称未設定:2011/10/26(水) 21:02:31.83 ID:aroaEr1F0
Lionになってからdelayを入れないと動かなくなったのが多いんだが
結構面倒で困る
738名称未設定:2011/10/28(金) 08:04:47.84 ID:hbqcddzB0
すみません、よく分からないので、教えてください。
OSに標準のフォルダアクションで、add^new itemscriptというのがあると思うのですが、
これで、外部のサーバーにつなぎ新着データがあったら知らせるようにしたいと思っています。
サーバーにはすでにつながる状態にしてあり、このフォルダアクションを設定したあと
自分で他のローカルマシンからそのサーバーにデータをアップするときちんと動作している
ようなんですが、そのままデータを待っていてもデータ着信通知が来ず、その後、
自分で確認するとデータが入っている、という状態です。スクリプトの内容もざっと見てみた
のですが、特に問題になるような処理は入ってないようなのですが、、、、、、、。

どなたか原因、わかります?
739名称未設定:2011/10/28(金) 08:06:00.25 ID:hbqcddzB0
すみませんスクリプト名間違えました。
add-new item alert.scptってやつです。
740名称未設定:2011/10/28(金) 10:30:34.93 ID:hJjG3flhP
それから先程まで分からなかったので書かなかったのですが、
つなぐ先はリモートのアップルファイル共有です。
afp://で始まるアドレスで、うちの環境だと、macからしかつなげません。
今、もうちょっと調べたんですが、ファイル共有のASPサービス使ってるようです。
こりゃ特殊すぎでダメですかね、、、、orz
741名称未設定:2011/10/28(金) 10:30:38.13 ID:0LhR2KYo0
なんか良くわからないけど、システム環境設定の共有でリモート AppleEventは設定しとかなくて良いんだっけ?
742名称未設定:2011/10/28(金) 10:56:07.76 ID:VYIpAgfD0
そのスクリプトに「外部のサーバーに」「知らせる」ような仕組みは無いわけで、
それは自分で書いたんじゃないの?
それで「きちんと動作している」って事だから問題はフォルダアクション処理じゃなくてその「外部のサーバーに」「知らせる」処理な訳だ
それを挙げもせずに問題になる処理は無いとか言われても、そうですか変ですねとしか言えませんわ
743名称未設定:2011/10/28(金) 22:30:51.57 ID:hbqcddzB0
>>742
いや、スクリプトはOSについているサンプルスクリプトからひとつもいじってません。
それから、さきほども書いたように「外部のサーバー」にローカルからフォルダアクションを
設定して、ローカルの別のマシンから「外部のサーバー」にファイルを加えると
フォルダアクションを設定したマシンに通知がきます。それなのに実際に欲しい
ファイルを外部の人がサーバーにアップしたファイルは通知されないんです。
744名称未設定:2011/10/28(金) 23:44:26.86 ID:H9IyyR9E0
>>743
>>738
>自分で他のローカルマシンからそのサーバーにデータをアップするときちんと動作している
>ようなんですが、そのままデータを待っていてもデータ着信通知が来ず、その後、
>自分で確認するとデータが入っている、という状態です。


もうちょっと分かる日本語で書いてくれ。
745名称未設定:2011/10/29(土) 00:58:48.63 ID:RXAHWet70
>>743
finderでafp接続した状態でのアクション設定/通知ってこと?
解決策は知らないけど
ローカルのサブマシンで動作確認するんじゃなくて
あなたが直接サーバ上でファイルを配置してみればいいのでは
746名称未設定:2011/10/29(土) 09:08:35.16 ID:bOQ5cDvP0
エスパーするとサーバ上の特定のフォルダへ
他のマシンからファイル追加されるのを
監視したいんだよね?
そのサーバは外部のaspでafp接続と。

試さずに書いてるけど
サーバに仕掛けがないと
仕組み上無理なんじゃねえの
747名称未設定:2011/10/29(土) 10:34:48.79 ID:KvGsceIC0
>>744
何がわからないかお教えいただければお答えしますのでそこを質問していただければ、と。

>>745
下請けにはそんなことはできません。データあげとくから取りにいって処理して早急に戻せ。そんな世界です。こんな単価安い仕事したくないです(泣)。でもしがらみがあって抜けられません。ヤクザの世界に近いです(泣笑)。だから仕事はさっさと済ませたいです。

>>745
そのとおりです。

うちの会社……A、Bのマシン---(外部へ)------サーバーC(afp)

という状況で、AからCにフォルダアクションを設定後、違うBのマシンから
フォルダにデータを入れると、きちんとAに「ファイルが追加されたよ」と通知がきます。
AとBは別個にしかも直接Cにアクセスしているので、実際問題はBが外部であろうが、
内部であろうが関係ない気がするんですが、、、、、。フォルダアクションの動作の仕組み
が調べても分からないのでアレですが、>>741さんのいうところは可能性としては
ありかなあと思っています。違うような気もしますが。

フォルダアクションというのは、フォルダとスクリプトを関連付けて、フォルダの一定の挙動
からFinderがAppleイベントを感知して決められたスクリプトを発動する、というものだと
思うのですが、それともフォルダ自体にスクリプトを埋め込み、それが発動する、というもの
なんでしょうか? もしそうだとするとサーバーに仕掛けがないと動かない気もしますが、
実験事例のように、動く例もあるわけですから、その可能性は薄いのかな、と。

あと考えられるのは接続が見かけ上は接続していても、タイムアウトしている可能性、
とかいうのもあるのかな、と。その場合は別に常時監視するなりして接続を維持する
必要があるのかもしれません。。
748名称未設定:2011/10/29(土) 11:10:46.00 ID:TcimdVUG0
on adding folder items to ハンドラを呼び出す判断としてポーリングなんてしてないんじゃね。無駄が多いから
自分でポーリングすればいいだけのように思うけど。ls -l と diff ででも可能だろ
749名称未設定:2011/10/29(土) 11:26:42.06 ID:e1TetpToP
>>531
今Lionにしたら使えなくなってたんでびっくりした。
curl を使うしかないのか……。
しかしわざわざなくすこともないんじゃないかと思うのだが。
750名称未設定:2011/10/29(土) 11:30:48.03 ID:HkfSs5mz0
>>749
ファイルメーカーでアップルスクリプトを実行していたので困りました。
curlを含んだ実行スクリプトを作って対処しました。なんとかなってほっとしました。
751名称未設定:2011/10/29(土) 11:36:22.75 ID:KvGsceIC0
>>748
ありがとうございます。光が見えました。




しかし、今度はUnixか。げっそり。
applescriptだっておぼつかないのにまた次から次へと、、、、、。
正規表現はどうするのかと調べればperlでやれだの、
zip圧縮するにはやはりシェル使えだの。
結局applescriptだけじゃどうにもならないこと多すぎ。
752名称未設定:2011/10/29(土) 11:52:26.04 ID:5iIS0e3s0
あ〜あ、チラ裏にしちまいやがんの
753名称未設定:2011/10/29(土) 12:01:15.53 ID:TcimdVUG0
>>751
AppleScript でもできるよ
単にフォルダ内のアイテムの詳細リスト保持して、今のとの前のと比較すればいいんだから
ただ ls -l と diff で済ませるよりめんどくさいだけだけど

下請けのくせに文句多すぎ。perlとかzipとか今のと関係無いでしょ
下請けで技術力無くてどないすんねん
754名称未設定:2011/10/29(土) 12:42:08.23 ID:a7pXlsgi0
> 結局applescriptだけじゃどうにもならないこと多すぎ。

激しく同意!!
755名称未設定:2011/10/29(土) 12:58:56.70 ID:n7q4HHoo0
AppleScriptは橋渡しのためのものでしょ。
756名称未設定:2011/10/29(土) 13:14:24.25 ID:ILZktXQd0
元々アプリ制御の為のモノだと思ってたけど
今はAppleScript対応アプリが少なくなってるんでしょうか?
757名称未設定:2011/10/29(土) 13:27:22.26 ID:pGzyZIDH0
アプリ自体が増えてない。Apple純正で非対応の物も多い
やるきあんのか?->実はあまり無い
という微妙な状態じゃなかったっけ?

自分で作ったCocoaアプリ見ると、意識しなくても基本の部分はてんこもりになってくるんだな
758名称未設定:2011/10/29(土) 14:00:12.44 ID:NW5OvFfE0
>>747
>フォルダアクションというのは、フォルダとスクリプトを関連付けて、
>フォルダの一定の挙動からFinderがAppleイベントを感知して決められた
>スクリプトを発動する、というものだと思うのですが
違うよ。Finderは関係無い。
~/Library/LaunchAgents/見れば判るけど、Launchd経由でkernel eventを監視してる。
kernel event発生しない形の変更は検知できない。
自前で監視するなら、フォルダの更新日付トリガーにするのが定番の処理方法だね。
759名称未設定:2011/10/29(土) 15:56:32.33 ID:KvGsceIC0
あーやっぱり神々はどこにでもいますね。いろいろありがとうございます。
>>758
ああFinderとカーネルなどをごっちゃにしてましたね。勉強になります。

ところで正規表現などの話ですが、いましらべたら、QuoEditというシェアウェアが
対応しているようですね。実際に使ったわけではないので分かりませんが、
けっこういけそうです。が、お金は払えない&会社のマシンにインストールできないので
perl勉強します。ちょっとしたことだし。

それから、これもあんまり関係ないけど、Acrobatってうまいことやればapplescriptから
javascriptに変数渡せるようですね。いろいろできそう、、、、。

プログラミング(までいかないけど)は楽しいねぇ。
760名称未設定:2011/10/29(土) 17:11:24.08 ID:n7q4HHoo0
>>759
PHPやRuby、Python、JAVA等も標準で入っているはずだから好きなの選んで使え。
761名称未設定:2011/10/30(日) 21:51:30.96 ID:PkGqRQYy0
win使いなんかね
unixやperl使えたら軽い自動化なんて
それだけでOKな位じゃないかな
いっそcronでrsyncを10分とか30分とかの
間隔で回したらどう

762名称未設定:2011/10/30(日) 21:53:57.85 ID:v5dnG3S60
Mac的にはlaunchdだろ、cronはなくす方向とか結構前に聞いたけどまだあるな
763名称未設定:2011/10/30(日) 22:14:43.88 ID:c2/3epOZ0
質問よろしいでしょうか?

AppleScriptのKeyStrokeは
アプリによって対応してる/してない
があるのでしょうか?
アプリにフォーカスがあたってる時のホットキー(メニューの右横の表記)と
アプリにフォーカスがあたってない時にも動作するホットキー
ともに試したのですが、動作させたいアプリでは何の反応もありませんでした。

アプリ名と送信キーを変えて、Grabとかのアプリに試したところ
問題なく動作したので、少々混乱しています。
764名称未設定:2011/10/31(月) 03:14:39.35 ID:CSarPBmg0
かからないアプリとやらを書いてみたら。
765名称未設定:2011/10/31(月) 10:24:57.09 ID:ZyQK5Uxp0
keystrokeはSystem Eventsの命令であって、
アプリ名の指定とか無い、というかSystem Eventsだ

何某かのapplication processの下で実行しても、
そうでなくても動きに違いは無い
766763:2011/10/31(月) 21:49:39.45 ID:TYREFXjj0
スクリーンショットを取るスクリプトとして

# sample1
tell application "Grab"
activate
tell application "System Events"
keystroke "A" using {shift down, command down}
end tell
end tell

は動きますが

#sample2
tell application "System Events"
keystroke "4" using {shift down, command down}
end tell

は動かないです。Shift+Command+4と押せばスクリーンショットが始まるのに。
グローバル?なホットキーはAppleScriptで呼び出すことは出来ないのでしょうか?
767名称未設定:2011/10/31(月) 21:57:24.46 ID:reLc8wrh0
Command+Shift+4 を処理しているのが、アプリレベルではなくてOSレベルのどっかだからでしょ
Command+Shift+4 を適切にOSレベルのどっかに送ればいいような気がするが、無理なんじゃね

別の >>764 をどうぞ
768763:2011/10/31(月) 21:58:56.65 ID:TYREFXjj0
>>764
ScreenFloatというアプリです。

>>765
上の>>766のsample1で「tell application "Grab" 」「end tell」を削ると動かなります。

プロセスにAppleEventを送信するモデルの実現方法として
System Events宛にtellするコードスタイルではあっても
そのAppleEventの処理自体は受信するアプリケーションに処理を委ねている以上
メッセージの受け取り手のアプリの指定は重要だと思うのですが
認識違っているでしょうか?
まだ始めたばかりで、余り良くわかっていないのですが、、
769763:2011/10/31(月) 22:04:05.05 ID:TYREFXjj0
>>767
まとめると、
・グローバルなホットキーは送信の仕方が不明だから諦めましょう。
・アプリ内のホットキーが送受信できないなら、keystrokeに未対応だから
 対応してる別アプリを使おう
ということですね? 残念です。。。
770名称未設定:2011/10/31(月) 22:07:32.95 ID:reLc8wrh0
>>768
有料のもんか。よくわからないけど、結局やりたいのは Command+Shift+4 なの?
だったら
do shell script "/usr/sbin/screencapture -c"
771名称未設定:2011/10/31(月) 22:14:47.72 ID:reLc8wrh0
>>769
「AppleEventを送信」とかわかってるんだったら、なんとなく想像できなくない?
送信の仕方が不明というか、処理を行なっている所が不明というだけど
772763:2011/10/31(月) 22:25:54.66 ID:lxeTjJiD0
>>770
やりたいことは、ScreenFloatというアプリのスクリーンキャプチャ開始指示
(Command+Shift+4が改良?されたような操作になります)です。
そのグローバルなホットキーはCommand+Shift+2ですが、これはアプリの設定で変更できます。
アプリにフォーカスがある状態でのホットキーはCommand+Nですが、これは変更できないようです。

QuickSilverから起動するための、橋渡し役としてAppleScriptを使えるかな?
と思いたち手習いで書き始めたという感じです。一応
pick menu item "Make new Shot" of menu "File" of menu bar 1
といった感じでメニュー経由では所望の動作を先ほど実現できたのですが
アプリの立ち上げ方に制約(MenuBarに格納できず、Docに格納するしかない)
が出てしまうため、できれば直接グローバルなホットキーを送信できればと思っています。
773名称未設定:2011/10/31(月) 23:25:44.84 ID:PBfQYMtB0
>>772
Cmd + Shift + 数字の組み合わせは
多分だけどキーボードからの入力を最優先にするためにOSがリザーブしてる
だからその組み合わせは使わずに
例えば、F13 を発動キーに設定して

tell application "System Events"
key code 105
end tell

で行ける

F13にした理由はWinキーボードのPrint Screenキーだから
774名称未設定:2011/10/31(月) 23:44:14.07 ID:7I67kM980
>>766
>Shift+Command+4と押せばスクリーンショットが始まるのに
このとき範囲指定はどうしてますか?
Shift+Command+3も動きませんか?
775763:2011/11/01(火) 00:13:43.51 ID:D54MxX6l0
>>773
情報ありがとうございます。
Windowsキーボードが手元にないため今はショートカット設定ができないため、
明日試してみたいと思います。

>> 774
キーボードで直接「Shift+Command+3」を押したり
キーボードで直接「Shift+Command+4」を押したりした場合には
スクリーンショットが直接、ないしは範囲指定後にデスクトップに作成されます。
(当たり前ですが)

それをAppleScript経由で行おうとして>>766のsample2や

#sample3 (sample2の "4"を"3"に変えただけ)
tell application "System Events"
keystroke "3" using {shift down, command down}
end tell

とすると、残念ながら動かないです(具体的には特に何の反応もありません)
どうも、グローバルなホットキーを発行する場合には、
スクリプトの書き方にもう一工夫必要なのではないか?と考えています。
776名称未設定:2011/11/01(火) 00:19:23.25 ID:l/ID4kAf0
>>775
だから
Command + Shift + 数字
以外のキーを設定すればいいって言ってんの

例えばCreate new shotに
option + command + sを指定すれば

tell application "System Events"
keystroke "s" using {option down, command down}
end tell

でOK
ちょっとは応用を利かせることを覚えようぜ
777763:2011/11/01(火) 00:33:53.36 ID:D54MxX6l0
>>776
おおおおお!
動きましたー!\(^o^)/

まずはOSに標準でついてるGrabアプリのホットキーを動かしてから、
という発想で躓いてしまってたみたいです。

>>773
> Cmd + Shift + 数字の組み合わせは
> 多分だけどキーボードからの入力を最優先にするためにOSがリザーブしてる

の推理が結構あたっていそうですね。
でもなかなか不思議な挙動ですねー。
778763:2011/11/01(火) 01:05:28.33 ID:D54MxX6l0
無事解決できたので、自分同様に初AppleScriptな方用にまとめておきます。
AppleScriptからグローバルなホットキーの呼び出しは、
英字との組み合わせはOK、数字との組み合わせはNGでした。

英字との組み合わせは、より正確には、
Ctrl、Option、Shift、Commandでの組み合わせ全15通りのうち
「Ctrl+Option+英字」を除く14通り全てで動作確認できました。
(英字はeまたはsで確認。数字は2で確認)

#OK例
tell application "System Events"
#keystroke "e" using {control down, option down, shift down, command down}
end tell

#NG例
tell application "System Events"
#keystroke "2" using {control down, option down, shift down, command down}
end tell
779763:2011/11/01(火) 01:06:36.79 ID:D54MxX6l0
keycode前の#は外してください。外し忘れです。。。
780763:2011/11/01(火) 01:07:46.39 ID:D54MxX6l0
keycode前の、じゃなく、keystroke前の、でした。。寝ます。。。
781名称未設定:2011/11/01(火) 03:29:58.26 ID:swpkIGzV0
解決したようなので、後の流れは置いといてレスにだけ返しとく

>>768
>上の>>766のsample1で「tell application "Grab" 」「end tell」を削ると動かなります。

それはactivateの対象がGrabじゃなくなっちゃうからだ
Grabを手前に持って来る処理が無いのでキー操作は手前にある別のアプリケーションが受ける事になる
まーこの場合概ねスクリプト実行環境だな

さっきも書いたけどkeystrokeはSystem Eventsの命令=System Events用のAppleEvent
だからSystem Events以外には送れない
tell application ~を多重に重ねた場合外側のは実質的に無視されるのでそういう書き方も出来るけど、
紛らわしいので俺は好きじゃない
782名称未設定:2011/11/01(火) 07:28:37.19 ID:esa/aTOT0
tell application "System Events"
keystroke "$" using {shift down, command down}
end tell

>>778
数字とき、例えば「4」の場合は、shift downされているので、 「4」キーのデータが「$」として飛んでくる。
783782:2011/11/01(火) 07:32:26.96 ID:esa/aTOT0
この場合は飛んで行く、か
784763:2011/11/01(火) 09:21:40.94 ID:lxikuoMp0
>>781
System Eventsアプリがイベントディスパッチャーで

tell application "Grab" #ここでリスナ登録
activate
tell application "System Events" #イベントディスパッチャー経由で
keystroke "A" using {shift down, command down} #登録済リスナにパブリッシュ
end tell
end tell #リスナ登録削除

↑という意味だと予想していたのですが、全く違ったようですね。。
単純に最前面アプリが受信するだけ、と。
指摘ありがとうございました。
785763:2011/11/01(火) 09:45:26.98 ID:+J6C9gi/0
>>782
もともと実現したかったShift+Command+2も以下でできました!

# send shift+command+2
tell application "System Events"
keystroke "\"" using {shift down, command down}
end tell

ホットキーのキーコンビネーションにShiftを混ぜていない場合でも
Shiftを打ち消す?よう1→!、2→"、3→#、…として送信しないとならないとは
余り直感的といえない不思議な仕様ですね。
786名称未設定:2011/11/01(火) 11:10:20.91 ID:l/ID4kAf0
>>785
コマンド+シフト+数字は無理っぽいのではと書いておいて
コメントするのも憚られるが

>不思議な仕様
ちょっと勘違いしてる
keystrokeはあくまで文字の入力用であって
「キー」を送るのではなく「文字」を送るもの
(キーを送りたい場合は「key code キー番号」を使う)

だから「"」を指定した時点でShiftが押されていることになる
すなわちシフトダウンは不要

# send shift+command+2 = command+"
tell application "System Events"
keystroke "\"" using {command down}
end tell

でOK
787名称未設定:2011/11/01(火) 12:04:39.72 ID:swpkIGzV0
key codeでやるならこんな感じ

tell application "System Events"
key code 19 using {shift down, command down} --shift+command+2
end tell
788名称未設定:2011/11/01(火) 22:09:03.93 ID:ytLPZlj70
ブックタイプとか使ってると気づかないかもしれないけど、
テンキーではスクリーンショットとれないし、
キーボードによってはシフト押した時に出る記号が変わることもあるから
keycodeの方が良いと思う。
789名称未設定:2011/11/01(火) 22:12:55.29 ID:ytLPZlj70
と書いた後思ったんだけど、
これって繋げてるキーボードによって挙動が変わるのかな?
2個違う種類のキーボード繋げて実行したらどうなるんだろ?
790名称未設定:2011/11/02(水) 01:15:12.74 ID:hd1GL9wK0
変わらんよ
どのキーボードでもコードは同じ
でなきゃキーボード毎に独自ドライバ用意せにゃならんでしょ
テンキー側でスクリーンショット取れないのは、
フルキーの数字とはコードが違うから

キーを押した時に実行されるイベントをスクリプトで再現してるだけだから、
キーボード繋いでなくても動く
791名称未設定:2011/11/02(水) 06:56:29.75 ID:E9NslX370
GuiScripting的な話があったので、聞くのですが、特定のアプリケーションで
メニューにある項目を実行するのってどうするのでしょう。
具体的にはAcrobatProfessionalであるメニューを実行したいのですが、
http://favapple.net/2010/04/28/558/を参考に

click the menu item "OCR を使用してテキストを認識..." of menu 1
of menu item "OCR テキスト認識" of the menu "文書" of menu bar 1

的なことをやるのですが、いっこうにうまくいきません。そもそも、上記サイトでは、
tell application process "Acrobat"
とSystem Events中でアクロバットのプロセスを呼び出してメニュー実行しているようですが、
Acrobatの用語辞書を見るとmenuやmenu itemなどの項目があるので
tell application "Adobe Acrobat Professional"の中で実行すればいいような気もします。しかし
menuをdoするのかgetするのか良く分かりませんし、なんでmenu 1とかmenu bar 1とか数字が
ついているのかいまいちわかりません。数字を変えたり取ったりしてもできません
いったいどうすれがAcrobatで特定のメニューが実行されるんでしょうか。

それからある単語を違う表記に変える、というテキスト処理をしたいのですが、その変換例が
1000ぐらいになりそうなので、辞書を作り、変換したいと思っています。
今までの蓄積で用例となるものはたくさんあるのでそれを処理して、リストを作るのですが、
・変換の処理はどうするのがいいのか。
・辞書テキストの登録形式はどんな形が汎用的か
が知りたいのです。

変換の処理についてはperlから辞書テキストの変換の対になる組をグルーピングしてマッチさせて返し
逐次変換、という感じで考えてますが、もっと効率的、標準的なテクニックってあるんでしょうか。
applescriptのレコードを使ってもよさそうな気もするんですが、速度的なこととやり方がいまいち、です。

上記を前提として辞書を作るなら「元単語」「:」「変換単語」とかでいいんでしょうか?(「」はつけませんよ)
途中でやり方変えるかもしれないので、applescript内で使ってもターミナル内で使ってもいたずら
しない形、というと、どうするのがいいのかと。エスケープ地獄は正規表現だけでいいです。
792名称未設定:2011/11/02(水) 08:34:41.35 ID:9V8F753N0
/Library/Scripts/UI Element Scripts/ にある Probe Menu Bar.applescript とか Probe Window.applescript とか元に、ちょこちょこ小分けに実行してどういう構造になってるか吟味しなよ
793名称未設定:2011/11/02(水) 12:31:49.35 ID:GuUm7HiK0
>>791前半
メニューの構造を解析するのは面倒なので
専用ソフトもあるようだけど
楽なのは
http://memogaki.soudesune.net/UIElementAction.html
のページの下の方にある
CopyGUIScriptForUIElementUnderMouse
というのを実行させてからそのメニューを選んで
数秒後にapplescript editorにペースト
(作者さんありがとう)
794名称未設定:2011/11/02(水) 12:43:51.51 ID:kBTnZXdR0
>>791
とりあえず>>1と関連リンクぐらい読んで来い

>Acrobatの用語辞書を見るとmenuやmenu itemなどの項目があるので
>tell application "Adobe Acrobat Professional"の中で実行すればいいような気もします。しかし

それでできるかどうかは知らないが、
とりあえずそれがGUI Scriptingじゃない事だけは確かだ

>menuをdoするのかgetするのか良く分かりませんし、なんでmenu 1とかmenu bar 1とか数字が
>ついているのかいまいちわかりません。数字を変えたり取ったりしてもできません

「menu item "OCR を使用してテキストを認識..." of menu 1 of menu item "OCR テキスト認識" of the menu "文書" of menu bar 1」というのは、
「1番目のmenu bar」の中の「"文書"という名のmenu」の中の「"OCR テキスト認識"という名のmenu item」の中の「1番目のmenu」の中の「"OCR を使用してテキストを認識..."という名のmenu item」というそのまんまの意味
各部分(UI elementという)を順番で指定したり名前で指定したりしてるわけだから、
数字を変えたり取ったりしたら別の場所或いは何も無い場所を指す事になるので、
まともに動くわけがない

ツールとか使わないでやるなら↓を実行して、
結果から目的のmenu itemを探せ

tell application "System Events" to entire contents of menu bar 1 of application process "Acrobat"
795名称未設定:2011/11/02(水) 17:53:53.34 ID:fF+OuPRQ0
>>791
>>それからある単語を違う表記に変える、というテキスト処理を
>>したいのですが、その変換例が1000ぐらいになりそうなので、
>>辞書を作り、変換したいと思っています

J edit X の複数一括置換で出来そうだけど
796名称未設定:2011/11/02(水) 23:29:27.86 ID:JgLXDD4cP
>>795
すみません。正しくはファイル名などの変換のため、その方法は難しそうです。
PDFから特定の文字列を抽出し、
その文字列を辞書により変換。
その変換した文字列を使ってさらに
ちがうファイル等を操作します。
797名称未設定:2011/11/03(木) 00:02:51.85 ID:EPeY2qv80
perlでいんじゃないの
798名称未設定:2011/11/03(木) 23:08:54.65 ID:nMYt3FFG0
applescriptってプログラムしているといつのまにか違う言語でプログラミングしていることがよくある。
俺も気づけばちょいちょいとapplescriptで準備して、コア部分はperlとshell
799名称未設定:2011/11/03(木) 23:42:03.12 ID:PDKWkEDJ0
俺はAppleScriptで作り始めて気づけば全部Obj-C
配列遅いからなあ
800名称未設定:2011/11/04(金) 16:48:34.49 ID:DYznHblG0
AppleScriptって三角関数すらねーのかよw
そういう時は他の言語に任せて値を受け取った方が楽だね。
オーバーヘッドを気にする用途なら最初からAppleScriptは使わないし。
わざわざルーチン作ってくれてるサイトとかみると、ご苦労なこったと思う。
801名称未設定:2011/11/04(金) 20:38:50.15 ID:MZh6hEDA0
>>800
そこまで馬鹿だとコメントすら無駄だな。
自分でも何の役に立つか分からんような人生だな。
802名称未設定:2011/11/04(金) 21:04:06.88 ID:bE1lm72j0
いきなり 三角関数「すら」だからなあ。馬鹿と言いたいのもわからなんでもないw
803名称未設定:2011/11/04(金) 21:39:49.72 ID:NiuwVe3g0
使い分けという考えを持てない石頭の持ち主。
804800:2011/11/05(土) 00:22:29.59 ID:Mq69bJ8L0
アホな用途で悪いが、デスクトップのアイコンをクルクル回したかったのですよ。

set c to do shell script "echo \"scale=3;c(6.28*" & (idx - 1) & "/20)\"| bc -l"
set s to do shell script "echo \"scale=3;s(6.28*" & (idx - 1) & "/20)\"| bc -l"
メインパートの前にこんな感じで sin, cos値を配列に溜め込んでおいてから、

set x to (x0 + r * (item idx of list_cos))
set y to (y0 - r * (item idx of list_sin))
set (desktop position of f) to {x, y}
アイコン位置を移動させたわけですよ。
805名称未設定:2011/11/05(土) 00:54:13.23 ID:so3iFS/A0
ふ〜ん、暇人だねえ。ご苦労なこった
わざわざルーチン作ってくれてるサイトの方が有益であり有用だな。俺はAppleScriptで三角関数なんて使わない/使い道思い浮かばんけど
806名称未設定:2011/11/05(土) 00:59:54.64 ID:EEE0E+F90
>>804
それは毎回計算するんじゃなくて
結果を20項の定数配列として持っとくべきでないか?
807名称未設定:2011/11/05(土) 01:22:45.33 ID:Mq69bJ8L0
>>806
グルグル何周も回る時に同じ角度が出てきて再計算するのは速度的にちょっとかなと思って。
事前に配列は作ってありますよ。

計算結果を数値リテラルとして全部コード中に持たせたらどう?という趣旨でしょうか。
今度いろんな形でアイコンを動かす時はそうしてみます。
808名称未設定:2011/11/05(土) 01:26:09.52 ID:/L+GH/fs0
一般の言語って一通り揃ってるから、比較するとAppleScriptは物足りない。
けど、AppleScriptはアプリケーション操作とフロー制御の為のものだから、
下手にやるより、他所に投げるほうが妥当だと思う。
でも、投げた先がPerlやらRubyで、その便利さに気付くと、
いつの間にかRubyの中にAppleScriptが埋め込まれてたりw
809名称未設定:2011/11/05(土) 01:49:54.08 ID:7i7EHx2I0
Photoshopとかイラストレーター使うと三角関数(行列)使うな
アプリ側が持ってるけど

制御して絵を描かせると面白い
昔ながらの数学の基本で動いてるってのがよくわかる
810名称未設定:2011/11/05(土) 03:03:44.58 ID:qMklRvu80
指数対数三角関数は表で持っとくに決まってるだろ
図書館の棚を占領する数表を引いてた百年前から
FPU内のROMを引く現在まで
個別に計算した方が速かったことはない
811名称未設定:2011/11/05(土) 03:05:59.99 ID:emHslc4F0
例の頭のおかしい人なんじゃね?
どっちでもいいから放っておけ
812763:2011/11/06(日) 12:04:34.79 ID:9kULEaYI0
>>786>>787
レス遅くなりました。
key codeで指定する版でも動作確認できました。

> だから「"」を指定した時点でShiftが押されていることになる
> すなわちシフトダウンは不要

この部分は、少し違うのではないかと考えています。
Key Codesというソフトでキーコードを調べたところ
2を押した時、Shift + 2を押した時、それぞれで以下のようにKeysが変わるので、
keystrokeだからとか「"」を指定したからとか関係なく
もともとそういうOSの仕様だと感じます。

Key Down
Characters: 2
Unicode: 50 / 0x32
Keys: 2
Key Code: 19 / 0x13
Modifiers: 256 / 0x100

Key Down
Characters: "
Unicode: 34 / 0x22
Keys: ⇧"
Key Code: 19 / 0x13
Modifiers: 131330 / 0x20102
813名称未設定:2011/11/07(月) 00:15:28.34 ID:bi3C14nk0
tell application "Key Codes" to activate
tell application "System Events"
keystroke "2" using {shift down, command down}
end tell

こうすればテストできる。結果は、
Characters: 2
Unicode: 50/0x32
Keys: shift+command+2
Key Code: 84/0x54
Modifiers: 3277066/0x32010a
で、問題なのは Key code の 84。これは10key pad側の"2"キーのことで、これを識別する
ショートカットは動作しなくなる(テスト:10.6)。

 キーボード周りは難しい。アプリが Keysを見るか、Key Codeを見るかはケースバイケースな面があって、
特に Mac OS時代は APIが貧弱で独自実装が多かったせいでいろいろ問題が起きた。今はアプリに関しては
Cocoaのおかげでマシにはなっているのかもしれないが、時々首をかしげるようなこともある。

 key code と keystorke はどちらもキーダウンイベントを発生させるが、指定したデータだけが送られるのではなく
常にもう一方が適時補完されて発行される。今回の例では補完がご丁寧に 10keyを指定してくれたために
shiftしても """ になっていなかったと言うお話(推定)。ちなみに、この補完は接続しているキーボードの
種別(ASCIIかJIS等)の影響も受けるようだ。
814名称未設定:2011/11/07(月) 11:01:23.76 ID:YUcTRxiI0
要するに keystroke "1234567890." はテンキー扱いって事だよ
例えテンキーなしのキーボード使ってたとしてもそれは変わらない

Finderの表示形式みたくテンキーでも有効なショートカットもあるけど、
そうでなければどっちなのか意識しておかないと
815名称未設定:2011/11/09(水) 01:09:35.80 ID:Y+iyN54w0
AppleScriptをappとして保存して、ホットキー割当アプリを通して実行しているのですが、
実行する度に一瞬だけメニューがそのアプリ名に変わり、ウィンドウフォーカスも一瞬だけ外れて
画面がチラチラするのですが、
これを防ぐ方法(例えばバックグラウンドで実行されるような感じの実行)は可能でしょうか?
816名称未設定:2011/11/09(水) 02:17:01.86 ID:d0PiNkVx0
>>815
パッケージを開いてinfo.plistを編集してみる。
ttp://news.mynavi.jp/column/osx/328/index.html
LSUIElementの項
817815:2011/11/09(水) 08:53:20.70 ID:qkp+Jo4U0
>>816
ありがとうございます。まさにコレです!
818名称未設定:2011/11/11(金) 22:56:57.69 ID:k/EHZhts0
あるテキストが1000ファイルほどあって、それに行番号をつけ、その一部、たとえば20-30行目だけをひとつの
ファイルにまとめたい。そんなときみなさんならどうされます? do shell script で cat -n のperl printな感じで
がんばってるんですが、どうもうまくいかないんすけど。display dialogではうまく抜き出して表示されるのに、
ファイル書き込みが失敗します。うまく引数が伝わってないか、cat -nで入る行番号のあとのタブがいたずら
しているのか、それとも、改行とか文字コードとかが悪いのか。あーもう疲れたっす。
819名称未設定:2011/11/11(金) 23:31:32.89 ID:8jyacdgm0
head -30 hoge.txt | tail -10 >> hogemix.txt
これで hoge.txt の 20〜30行が hogemix.txt に追記される、多分

hoge.txt を回すのはシェルによって変わるから自分で調整してくんろ
820名称未設定:2011/11/12(土) 00:14:00.54 ID:QvuvgXTQ0
Safariからページのソースを取得してファイルに保存する時
open for accessでファイルをオープンして書き込むのと
do shell script "echo " & quoted form of thesource & "> ~/Documents/source.html"
ってするので文字コードとか違ったような気がする
元のコードにも依るだろうしあまり追及してないけど
821名称未設定:2011/11/12(土) 02:28:23.46 ID:abEC04br0
全部シェルスクリプトで書いちゃう
AppleScriptを絡ませる必要性が今んとこ読み取れないんで
822818:2011/11/12(土) 11:01:29.36 ID:GmXwHUiD0
ちょっとスレ違いだけど、なんかAutomatorでPDFからテキスト取り出すとLionと10.4と10.5で吐き出すテキストが違うし、
コードもShift-jisだのUTF8だのUTF16-LEだのころころ変わるし疲れたよ。
ぶっちゃけ聞くけど、改行を含むテキストが入っている変数をperlに引数として渡してファイルに書き込む
にはどーすんの??? 単純にdo shell script でperlでファイル開いてprintして閉じる、だと、うまくいかんのだが。
よくわからないがヒアドキュメントとかなんとか使うのかと四苦八苦して昨日は終わった。
823名称未設定:2011/11/12(土) 11:22:20.48 ID:IJE22zIN0
うまく動かないところの(他所でもほぼそのまま動かせそうな)スクリプトのサンプルと、どううまくいかないのか具体的に言葉で示せよ
何度も何度もバカか
824名称未設定:2011/11/12(土) 11:29:36.83 ID:dGePCkkn0
何言ってるのかわからない
やりたいことを文章にまとめられないのにスクリプトが組めるわけがない
825818:2011/11/12(土) 16:12:36.76 ID:GmXwHUiD0
それじゃほぼコピペします。裸で歩くみたいではずかしーが責任とってヨネ。適当に改行してます。
tell application "Finder"
set a to selection as alias
--変換するファイルを選択しておいて実行。ファイルはUTF-8の改行CR
set filename to name of a
set filename to do shell script "perl -e '$target = q/" & filename & "/; $target =~ s#[/¥¥(¥¥)]#_#g ;
$target =~ s#[ ]##g ; $target =~ s#¥¥&#_and_#g ; print $target;'"
--とりあえずファイル名にエラー起こしそうな字があったら強制排除
set datatxt to do shell script "cat " & quoted form of POSIX path of a & " | perl -pe 's#¥¥r#¥¥n#g' |
perl -pe s#[/¥¥(¥¥)¥¥.]#_#g | perl -pe s#¥¥&#_and_#g | cat -n | perl -ne 'print if 20 .. 30 '"
--似たような感じで変な字は適当に変換しちゃってcat -nして20-30行めをprint
display dialog datatxt--これはうまく表示してくれる。
set pl_file to "/Users/818/Desktop/FileOutput.pl" as Unicode text-
-perlのワンライナーで書くとエスケープ地獄がいやなのでとりあえずファイルで。
do shell script "perl " & POSIX path of pl_file & " " & filename & " " & datatxt
--filename と datatxtを引数で渡してテキストに書き込み
end tell
---------------------
FileOutput.pl 単純に引数受け取ってちょっと整形してテキストに書き込み。
$filename = $ARGV[0];
$datatxt = $ARGV[1];
$filename =~ s/([a-zA-Z]+¥d{2,9}_)(.+)(¥.txt)/$2/;
open(FILE, ">>/Users/818/Desktop/sampletest.txt");
print FILE $filename."¥n".$datatxt."¥n";
close( FILE );
exit;
結果してはfilenameを整形したものと改行がひとつファイルに書き込まれる。見られたくないけど
見てほしい。これが変態の入り口でしょうか。初心者としてはものすごく恥ずかしいです。許してください。
826名称未設定:2011/11/12(土) 17:14:05.50 ID:fFodrs570
>>825

>do shell script "perl " & POSIX path of pl_file & " " & filename & " " & datatxt
ちゃんとquoted form of しとけ。
827818:2011/11/12(土) 17:26:35.34 ID:GmXwHUiD0
>>826
引数にクォーティング??
ちょっといじってみます、、、、、、
もうぜんぜんapplescriptじゃない気がする、、、、、。
828818:2011/11/12(土) 18:16:11.89 ID:GmXwHUiD0
>>826
ありがとうございました!!
do shell script "perl " & POSIX path of pl_file & " " & filename & " '" & datatxt & "'"

としたらだいたい望む結果になりました。感謝感謝です。
お騒がせしてすみませんでした。
829818:2011/11/12(土) 18:40:17.09 ID:GmXwHUiD0
>>828
連続ですみません。
" '" & datatxt & "'"
のところ、
" " & quoted form of datatxt
でもいいんですね。変数にquoted form ofが使えるのは知りませんでした。
なるほどね、、、、。
830名称未設定:2011/11/12(土) 18:48:29.80 ID:fFodrs570
>>829
File側にも付けて欲しいんだけど。
quoted form of POSIX path of pl_file
quoted form of filename
囲まないと空白文字がある場合、次の引数と認識される。
831名称未設定:2011/11/13(日) 22:42:35.56 ID:ag75lT210
教えてください。
>>581の様に、いくつかあるライブラリ別にiTunesを起動するスプリクトを書きたいんですが、
オプションキーを押しながら起動して、ライブラリを選択すると言う手順ではなくて、予めそのライブラリを読み込んだ状態でiTunesを起動したいんですが、どういった方法がありますか?
832名称未設定:2011/11/14(月) 23:38:29.66 ID:Z2NF8dfd0
>>831です。
補足すると、iTunesの起動時にしかるべきプロパティにライブラリへのpathを書き込めないかと言う感じなんですが、何のプロパティを弄ればいいかわからないんです。
833名称未設定:2011/11/15(火) 00:27:30.48 ID:g9RzLu6/0
しかるべきプロパティってのが無さそうじゃない?
シンボリックリンクを張り替えればスイッチできるようだけど
834名称未設定:2011/11/15(火) 08:08:36.61 ID:1en2K5M20
>>833
そうなんです。いろいろググって見ましたけど見つかりません。
だだ起動時に前回のライブラリを読み込んで起動する以上、何かあるはずだと思って。
835名称未設定:2011/11/15(火) 08:47:07.51 ID:RdpFaiMm0
英語苦手なんで、自己責任でよろしく
http://stackoverflow.com/questions/1693780/applescript-to-launch-itunes-with-a-specific-library

~/Library/Preferences/com.apple.iTunes.plistのalis:1:iTunes Library Locationが位置情報みたいで、
あらかじめその値を覚えて置いて、書き込んでやればできるかも
Property List Editor使って手作業でコピペしたときは、見た感じ上手く切り替わってたけど、
後々不都合が出るかどうかは、わからん
836名称未設定:2011/11/15(火) 18:00:26.17 ID:1en2K5M20
>>835
ありがとうございます。
やって見ます。
837名称未設定:2011/11/17(木) 09:23:28.29 ID:qd9WlY6JP
アプレットにドラッグアンドドロップしたものによって処理を変えたいんだけど
簡単な方法はないでしょうか?
ネットで調べると小難しくて時間がかかる方法しか見つかりません。
こんなことも簡単にできないなんてすごい言語だな。
838名称未設定:2011/11/17(木) 09:32:05.77 ID:SnT2dWfs0
>>837
もうちょっと具体的に書いたら?
簡単にはできないってことはクリエータータイプや拡張子では判断出来ないって事だよね?
839名称未設定:2011/11/17(木) 09:39:58.01 ID:/bvoVRy50
なんか恥ずかしいやつだな
840名称未設定:2011/11/17(木) 10:15:09.04 ID:OmYmt39o0
「ドラッグアンドドロップしたものによって処理変え(る)」を「簡単にでき(る)」言語ってなんだろうな
ほとんどの言語がそうらしいのだけど、そうか?
841名称未設定:2011/11/17(木) 13:14:56.94 ID:Q5GbZcwK0

837は言語に詳しそうだから
無理してAppleScriptを使わずに簡単にできる言語使えばいいだけだろw
842名称未設定:2011/11/17(木) 20:59:35.57 ID:C3ni8bXg0
AppleScriptで簡単に出来る言語を呼び出せばフォルダアクションが使えるな。
843名称未設定:2011/11/17(木) 23:56:25.74 ID:4/J9lsBo0
だから、Applescriptは本来アプリを自動操作する物であって
全てApplescript単体で済ませるアプリを作る為の物では無いんだけど
最近は本当に分ってない人が増えたんだね。

以前はOSAXとか使ってファイルヘッダ読み込んで判断とかも出来たけど
今はファイル判定に何を使えば良いのか分からない。
844名称未設定:2011/11/18(金) 02:18:51.27 ID:xsC8rMdg0
>>843
拡張子やタイプクリエータを当てにしないというなら
fileコマンド呼んでその結果を受け取って振り分ければいい
いやマジで
845名称未設定:2011/11/18(金) 03:20:19.56 ID:T524XbJ80
FinderかSystem Eventsで適当な属性を採る
info forで同上
do shell scriptでfileコマンド
readでバイナリヘッダ読み込み

パッと思いつくだけでもこんなに
846名称未設定:2011/11/18(金) 10:38:04.10 ID:mr1wlQXa0
>>844
だよな
以前はAppleScriptの外部を呼べないのでOSAXで拡張していくしかなかったけど、
今は外部のをいろいろ呼べるから誰もOSAXを作ろうとも思わないようになったんだろな
847名称未設定:2011/11/18(金) 16:29:15.16 ID:dG+/8sA10
もし必要になっても、ちっちゃなコマンド作っちゃった方が簡単なんだよね
848名称未設定:2011/11/21(月) 22:30:15.71 ID:a5vxvO+k0
仕事で使ってるマシンでいろいろOSAXを入れるわけにもいかないから、
できるかぎりもともとインストールされている環境でがんばるようにしている。
849名称未設定:2011/11/23(水) 17:39:13.32 ID:1s/grMRj0
>>848
Appletで配布するならbundle内にOSAXごと入れれば良いでしょ。
追加インストールの必要も無いし、OSAXがロードされるのはapplet内だけだし。
850名称未設定:2011/12/01(木) 23:06:03.09 ID:Hd6YNCmM0
なんか最近スクリプト書くのが楽しくて楽しくてしょうがない。
851名称未設定:2011/12/02(金) 10:52:21.43 ID:qcoHsI1I0
わたしにもそう思える時期がありました。
852名称未設定:2011/12/02(金) 22:45:02.56 ID:hxNwPkiO0
>>851
だいたいどれくらいで飽きるの?www
853名称未設定:2011/12/03(土) 12:27:49.09 ID:2k7sXt/c0
メンテナンスでうんざりするようになれば。
854名称未設定:2011/12/03(土) 12:36:04.45 ID:jFi0l4QTP
コントロールできるアプリの機能が少なすぎる。
妄想はいっぱいあるのに、そのせいで実現できない
855名称未設定:2011/12/06(火) 17:31:19.45 ID:Engd3aD30
>>854
じゃあ、コントロールできるアプリを自分で作るのだ。
856名称未設定:2011/12/09(金) 14:11:08.10 ID:xDHAGrZj0
本来のASには詳しくなくてGUI Scripting一辺倒な俺はあんまり困らないんだよね
FlashとSilvelightだけは如何ともし難いけど
857名称未設定:2011/12/10(土) 02:22:23.29 ID:0L88nYTZ0
初心者です。レコード型から必要な要素だけをとりだしたいのですが、以下のBYDAYのように
属性がないとエラーになってしまいますね。無いものは無視するようなエラー処理をしたいのですが
どのような記述をしたらよいのでしょうか?
tell application "Finder"
set testrec to {FREQ:"YEARLY", INTERVAL:"1", BYMONTH:"7"}
get FREQ of testrec
get BYDAY of testrec
get BYMONTH of testrec
end tell
858名称未設定:2011/12/10(土) 02:34:23.32 ID:CuvI4nYV0
tryとerrorを使ってみるとか

tell application "Finder"
set testrec to {FREQ:"YEARLY", INTERVAL:"1", BYMONTH:"7"}

try
get FREQ of testrec
on error
log "FREQ error"
end try

try
get BYDAY of testrec
on error
log "BYDAY error"
end try

try
get BYMONTH of testrec
on error
log "BYDAY error"
end try

end tell
859名称未設定:2011/12/10(土) 15:11:39.19 ID:30jcbcmX0
858 さま
本当に基礎的な事をお聞きしたようでお恥ずかしいかぎりですが、
目的が達成できそうです。ありがとうございました。
860名称未設定:2011/12/12(月) 02:10:13.77 ID:NYbm00YE0




ワイは日本人やが聞いた情報によると、もうじき中国はバブルがはじけて昔の貧乏な元の中国に戻るらしいで
みんなも知っての通りもう経済は破綻してて、取り戻すのは無理なんだそうや


その世界ではごっつい有名な政府関係者筋から聞いた確かな情報やで

まあお前らほどの頭の良い連中には、今さらなくらいのネタやな、失礼なくらいかもしれん
お前らからすればもう常識的なくらいの知識やろ?







861名称未設定:2011/12/14(水) 23:49:04.01 ID:FAr5KFVL0
初心者同然のものです。
このようなスクリプトを書きました。

tell application "Finder"
(choose file) as alias
set doc to result
set doc to doc as alias
set docName to name of doc
my reSize(doc)
end tell

on reSize(doc)

tell application "Adobe Photoshop CS3"
activate
set display dialogs to never
open doc
set doc to current document
resize image doc width 50 as percent height 50 as percent
save current document
close current document
end tell
end reSize

で、スクリプトエディタ上ではちゃんと動く(画像を50%縮小してくれる)ん
ですが、on runで囲ってアプレットにして単体で動かすと、
Photoshopが画像を1ピクセルにしてしまうんです。
原因がさっぱりわからなくて。記述が悪いにしても何をどう直してよいのやら。
ご教授賜りたく思います。
環境はOS10.5.6でPhotoshopはCS3です。宜しくお願い致します。
862名称未設定:2011/12/15(木) 14:02:35.03 ID:0rVCU6VJ0
自分はCS1なんでアレだが、自分の所では0.5 as percentにしないと50%サイズにはならんが。
50にすると50倍にされる。ただアプレットにしても結果は同じ。
863名称未設定:2011/12/16(金) 00:15:58.56 ID:E9q5Df8W0
>>862さん
ありがとうございます。
早速CS1環境で試してみたら確かに動きました。
なんでCS3ではだめなんだろ?
画像の縦横を求めて、それに0.5掛ける方向で考えてみます。
ありがとうございました。
864名称未設定:2011/12/16(金) 02:01:54.74 ID:uc5AQmYP0
>>863
Tiger+CS3(PPC)
アプリケーション形式でちゃんと動いたよ。
865名称未設定:2011/12/17(土) 00:14:47.91 ID:YsAWqdDI0
>>864さん
ありがとうございます。
結局、記述には問題ないみたいですね。謎が深まります。

改めて違う質問をさせて戴きたいのですが。
set theList to [AAA.jpg ,BBB.jpg ,CCC.jpg] as list
上記のように変数theListにファイルネームをリストとして入れたとします。
その変数theListにファイルネームで検索をかける事、そして在るか無いかを
応答させる事は出来るのでしょうか?
866名称未設定:2011/12/17(土) 01:46:05.93 ID:9IQma+3r0
theList is in filename
だったかな。
867名称未設定:2011/12/17(土) 02:06:48.68 ID:bVF46GYq0
>>866
変数が逆

>>865
リストの書き方が違ってるけどその辺は大丈夫?

あるなしだけなら
"ファイルネーム" is in theList
ざっくりこんな感じかな
tell application "Finder"
set fileNames to {"AAA.jpg", "BBB.jpg", "CCC.jpg"}
set theFile to choose file
set theFileName to name of theFile
if theFileName is in fileNames then--ここであるなしチェック
display dialog "ありました"
else
display dialog "ありません"
end if
end tell

ウチの環境(Tiger)だと大文字小文字は無視される。
実ファイルが存在するかどうかだったらexists file "ファイルパス"とか
868名称未設定:2011/12/17(土) 22:40:25.95 ID:YsAWqdDI0
>>866さん
ありがとうございます。お気持ち戴きました。
>>867さん
ありがとうございます。まさにコレです!!
リストにあるなしで分岐させようと思っていたのでまさにコレです。
サンプルスクリプトをコメント付きで書いて戴いたので
バッチリ理解できました。
なるほどなぁ。
一つapplescriptへの理解が深まりました。

スプリクトとは関係ないんですが、このスレはsage進行なんですか?
とりあえずsageときますね。
869名称未設定:2011/12/21(水) 21:07:33.87 ID:Q3pg9rk40
どなたか教えてください。
サーバー上のフォルダにファルダアクションを設定したいんですが、
マシンを立ち上げるたびにフォルダアクションを設定しないといけません。
なんとか自動でマシンを立ち上げるたびにフォルダアクションを設定すること
できないでしょうか。
つか、今は、フォルダアクション設定を立ち上げて、すべてきれいに削除して、
そのうえで再度アクションを設定とかしてるんですが、これ以外に方法ないんでしょうか。
もううざくてうざくて。
870名称未設定:2011/12/21(水) 21:13:20.26 ID:Q3pg9rk40
×ファルダアクション
○フォルダアクション
871名称未設定:2011/12/23(金) 01:13:25.71 ID:xY1zt9DF0
GUIスクリプティングで強引に
下のスクリプトをアプリケーション形式で保存してログイン項目へ追加
run application "Folder Actions Setup"
tell application "Folder Actions Setup"
activate
tell application "System Events"
tell process "フォルダアクション設定"
repeat
if exists menu bar item "フォルダアクション設定" of menu bar 1 then
if value of checkbox "フォルダアクションを使用可能にする" of window "フォルダアクションの設定" = 0 then
click checkbox "フォルダアクションを使用可能にする" of window "フォルダアクションの設定"
end if
keystroke "q" using command down
exit repeat
end if
delay 1
end repeat
end tell
end tell
end tell
872871:2011/12/23(金) 01:19:42.17 ID:xY1zt9DF0
前から使ってるやつだけど、希望のものかな?
一応補足説明
最初のrun〜は
他のアプリケーションがログイン項目に登録されていた場合
tellだけだとactivateしたのが背面にいく事があるので追加。
フォルダアクション設定を終了するのをquitにすると
チェックボックスにチェックが終わらないうちに終了してしまうことがあるのでkeystrokeで。

スクリプト起動後、終了するまでは他のアプリケーションを前面に出さない事。
873名称未設定:2011/12/23(金) 11:44:06.82 ID:BDaPK5dH0
>>871
ありがとうございます。今、環境がないのでテストできませんが、
これは、フォルダアクション設定を起動して「使用可能にする」をチェックする、
というGUIスクリプトですかね、、、、、。
勘違い、かもしれせんか、普通、ローカルにあるフォルダにフォルダアクション
を設定しておけば、次回起動後にもそのフォルダアクションは効いていると思うんだけど、
サーバーにあるフォルダの場合は、設定をしておいても、次回起動後、サーバーに
接続しておいても、フォルダアクションが効かないという状態です。これは複数のサーバー
で試しましたが同じです。フォルダアクション設定の用語説明とか見たり、ちょっとググったり
しましたが、スクリプトなどで自動的に、フォルダアクションを設定するようなこと、
できないんですかね。
できないなら、フォルダ監視して新しいファイルが入ってきたら処理するようなスクリプト
作りたいんですが、まだまだ研究不足。どなたかアドバイスお願いします。
そもそもon addingg folder itemとかいうフォルダアクション用のハンドラって普通には
使えないんでしょうか。
874871:2011/12/23(金) 16:40:13.26 ID:xY1zt9DF0
勘違いしてたスマヌ…
自分の環境だとローカルのフォルダでもちょくちょく動かないことがあって
設定見るとフォルダアクションを使用可能にするチェックが外れてることがあったので
同じような状況だと思った。

System Eventsにattach action to ってのがあるよ
mount volume でマウントして
attach action to フォルダ(alias型)using "スクリプトファイルのパス"
とか
875名称未設定:2011/12/23(金) 16:52:30.51 ID:BDaPK5dH0
>>874
おお、それですね、きっと。using スクリプト、ですか。
すでにvolumeを自動マウントして、接続しているか監視するスクリプトは書いているので、
これを加えればいいんですかね。とても参考になります。System Events のスクリプトが
分からず困ってました。
年末にひと遊びできそうです。ちょっと試して見ます。ありがとうございます。
876名称未設定:2011/12/24(土) 12:11:11.96 ID:CPerrj6dP
>>872
ふ〜ん。ネット知識(笑)?
877名称未設定:2011/12/24(土) 18:28:55.62 ID:sTEhe3c80
またまた初心者です。
evernoteの特定のタグのノートだけをfilemakerproに書き出すスクリプトを作成中です。

tell application "Evernote"
activate
find notes "tag:icalfm"
set target_list to result
set list_num to count target_list
repeat with i from 1 to list_num
open note window with item i in target_list
set note_title to title of item i in target_list
set the_HTML to HTML content of item i in target_list
set plain_Text to do shell script "echo " & quoted form of the_HTML & space & "| textutil -convert txt -stdin -stdout"
tell application "FileMaker Pro Advanced"
activate
tell database "ENtoFMP"
create new record
tell record i
set contents of field "en_title" to note_title
set contents of field "another_content" to plain_Text
end tell
end tell
end tell
end repeat
end tell
こんな感じでいけそうなんですが、evernoteに貼り付けた画像がうまく処理できませんでした。
皆様お知恵をおかしください。
ではメリークリスマス!
878名称未設定:2011/12/26(月) 17:14:10.20 ID:qh9QL6JU0
どなたか教えてくださりません?
あるマシンでスクリプトを組んで保存し、他のマシンに持っていくと、
動かなかったり、ダイアログが文字化けしていたりてし読めないことがある。
いろいろ調べていると、どうも、保存時に設定する改行コードだか文字コードだか
が影響しているらしいことまではわかった。けれど、OSのバージョンが同じでも
改行コードなどが違うこともあるし、完全に同じ時期の機種でも違うこともある
しかもその改行コードなどは変えようと思ってもグレーアウトしていて変えられない。
これ、どういうことなんでしょうか。その影響なのか、細かい所でもそれぞれのマシン
でスクリプトを変えねばならず、ものすごく不便です。どこかの設定で統一できるなら
したいけど、それはどこにあるんてしょうか。
879名称未設定:2011/12/26(月) 17:22:57.35 ID:BADn5r4+0
>>878
ないよ
その不便は甘受するしかない
880名称未設定:2011/12/26(月) 17:33:48.21 ID:GcdhyRCP0
今時ならUTF-8、LFで問題ないだろ
てめぇで統一しろよ
881名称未設定:2011/12/26(月) 18:44:16.92 ID:qh9QL6JU0
>>880
あれ?、そもそも保存時にグレーアウトしてて選択できなくないですか?
OSは主に10.4です。 あれっていったいどこで決まってるんでしょう?
882名称未設定:2011/12/26(月) 19:27:14.33 ID:65Lunl7Q0
つテキストエディタ
883名称未設定:2011/12/26(月) 23:23:37.98 ID:i+f1h9pr0
>>881
10.4 までの AppleScript Editor でのテキストの扱いは MacJapanse (Shift-JIS) でいろいろ問題抱えたままだね
10.6 だと UTF-16 になってて問題無く、10.6 で作ったのを 10.4 に持っていっても 10.4 の AppleScript Editor で開いて実行でなければ問題無いようだけど

改行コードは テキストファイル(.applescript) でしか意味が無く、関係無いね
884名称未設定:2011/12/26(月) 23:24:10.44 ID:qh9QL6JU0
>>882
いやいや、そうじゃなくて、同じスクリプトでもある環境では実行できなくて、
ある環境では実行できるということ。で、よくわからんけど、実行する環境で
保存しなおすと実行できたり、エラーが出たり。これ、どう解決するの?
らとのバージョンではない模様。
885名称未設定:2011/12/26(月) 23:28:06.85 ID:qh9QL6JU0
>>883
ああすみません。書き込みして更新したら書き込み出てきました。
おお、それですか。やっぱなんか違うんだ。めんどくさいなあ。全部マシンのバージョンあげてー。
でも諸事情で上げられないorz 情報ありがとうございます。
886名称未設定:2011/12/26(月) 23:34:00.85 ID:i+f1h9pr0
>>885
10.6 で作ったのを 10.4 で実行するぶんには問題なさそうだけど
10.4 の AppleScript 実行環境は UTF-16 を理解してるみたい。あくまでもアホなのは 10.4 の AppleScript Editor

それでもエラーが出たりとかあったりしたら、日本語でコメント書いていたらそれかなあ
887名称未設定:2011/12/27(火) 01:17:16.40 ID:dJsZ0rhP0
まずAppleScript Release Notesを読もう。特に10.5 Changesの所。
http://developer.apple.com/library/mac/#releasenotes/AppleScript/RN-AppleScript/

10.4まではスクリプト中に書いた文字列は、使用環境での言語設定に従ってShift_JIS等の
古いエンコーディングで解釈していたが、10.5で全部Unicodeに統一した。
10.4までのスクリプトで使用環境に影響されず漢字等を使おうと思ったら、本当は全部
set str to <<data utxt6F225B57>> as Unicode textみたいに書かないといけない。
set str to "漢字"ではダメ。

>>886
10.5でAppleScript.componentの動作が変わった事がキモなので、ScriptEditorどうこうで
何とかなる問題じゃない。
888名称未設定:2011/12/27(火) 03:37:33.07 ID:ftm3Hml00
.scptでも問題あるのか?
日本語メッセージ書いたこと無いから(というか経験的に
危険だろうから回避してる)わからんな。
889名称未設定:2011/12/27(火) 07:34:46.19 ID:TSrSLEGK0
>>887
それが AppleScript Editor のことなんだって
実際 10.4 の AppleScript は UTF-16 を理解しているってか、data utxt6F225B57 あなた自分で言っているじゃない
890名称未設定:2011/12/27(火) 07:39:21.41 ID:TSrSLEGK0
>>889,887
10.6 (て、10.5からか) の AppleScript Editor は
set str to "漢字"
と書いても
set str to <<data utxt6F225B57>> as Unicode text
と同等にしてくれる/なるので、
set str to "漢字"
で問題無いよ。AppleScript Editor どうこうの問題だと思うのだがなあ
891名称未設定:2011/12/27(火) 07:44:45.78 ID:TSrSLEGK0
これらは、文字列定数を無理矢理 Shift-JIS で表示しょうとすることに関して
as string を Shift-JIS 前提で処理していたのが、AppleScript 内部として Unicode に変わってまともに動かないとかいうのは別の話
892名称未設定:2011/12/27(火) 09:46:45.09 ID:xRh5eyk4P
で、どうすりゃいいのか?
自分でも考えるけどよくわからない
使ったことない構文もあるみたいだしw
893名称未設定:2011/12/27(火) 10:17:51.97 ID:TSrSLEGK0
AppleScript Language Guide を斜め読みしたけど、String クラスは日本語はいまだ MacJapanese のよう。文字列定数は Text クラスだったのね。

で、localized string ってあるじゃないの
日本語なんてソースレベルでは邪道なのでw、日本語メッセージなどはリソースで用意してってのが真っ当でしょう
まあ、スクリプトレベルでリソースファイルを扱うのは、スクリプトというお手軽言語にはちょっと邪道な気がするけどw
894名称未設定:2011/12/27(火) 16:05:09.09 ID:xRh5eyk4P
まるでわかりまへん
おてあげ。
マシンごとにやるしかないか。
あーめんどくさ。
895名称未設定:2011/12/27(火) 17:05:40.18 ID:Tlx2qVud0
ものすごく不便ですやらよくわからんやらめんどくさいやら、実際そうだとしてもしつこく書くな、表に出すな
読んでるだけでムカムカする
896名称未設定:2011/12/27(火) 17:33:48.77 ID:Cj7YAp8J0
だから最初からそう書いてるのに
897名称未設定:2011/12/27(火) 18:11:59.57 ID:sfNGmHd70
>>890
違う。その処理をやっているのはScriptEditorではなく、スクリプトエンジン本体の
AppleScript.component。もっとピンポイントに指摘するとOSACompile()というAPI
>>893
10.5以降はtext/string/Unicode textは単なるシノニムで全てUnicode
898名称未設定:2011/12/27(火) 18:41:44.25 ID:TSrSLEGK0
>>897
まあ細かい部分の指摘はおっしゃる通りなんだろう。確かにコンパイル直後に化けるからそんなところだと思ってはいたけど
それを使うのは AppleScript Editor ぐらいなもんで(他にもAutomatorなぞあるだろうけど)、実行時には無関係じゃねと思うのだが、まあ、なんというか、失礼した
いまいち何を指摘または否定していたい/いるのかちょっとわからないなあ

いや、AppleScript Language Guide にそう書いてあるってことなんだけど、そうなの?
899名称未設定:2011/12/27(火) 19:02:34.90 ID:TSrSLEGK0
>>894
display dialog (localized string "Hello")
display dialog (localized string "Good bye")

って、書いてみて、アプリケーションかスクリプトバンドルで書き出す
そのアプリケーションかスクリプトバンドルをFinderでパッケージを開くと、Contents/Resources があるので、そこに テキストエディタ(のテキストモードで)、
以下の内容の Localizable.strings という名前のテキストファイルを書き出す
(Contents/Resources 直下でいいのは、あくまでも日本語だけで多国語対応なんて考えてないという安直モードの場合)

"Hello" = "こんにちは";
"Good bye" = "さようなら";

AppleScript Language Guide の図を見た方がわかりやすいと思うけどw
スクリプトバンドルの場合、なんか AppleScript Editor での実行時はリソースから読んでくれないけど、一時的にアプリケーションにしてまたは in bundle 指定すればテストはできる
まあ、自らの特殊な環境でおてあげならしょうがないな。>>895 の言う通りだと思うし
900名称未設定:2011/12/27(火) 19:24:06.32 ID:TSrSLEGK0
>>897,898
>いや、AppleScript Language Guide にそう書いてあるってことなんだけど、そうなの?
嘘です。そんなこと AppleScript Language Guide には書いてありません。どこをどう読んでそんなこと思ったのか今の俺には理解できません
すみませんでした。ご指摘ありがとう
901875:2011/12/28(水) 21:09:22.62 ID:DPIdH+b20
フォルダにスクリプトを設定するスクリプト、OS付属のスクリプト見て、
なんとか設定することができました。ありがとうございます。
詳細はOS付属のスクリプト見れば分かりますが、makeとかdeleteで
folder action とかscriptを目的のフォルダをInfo forすればOKみたいです。

何言ってるかわからないと思いますが、とりあえず報告終わりますw
ありがとうございます!
902名称未設定:2011/12/29(木) 01:29:11.01 ID:eMEvBdVL0
( ゚д゚)
903名称未設定:2012/01/05(木) 21:27:20.00 ID:jBkJjac00
何を言っているかわからねーと思うが、で本当にわけわからんのも珍しいな
904名称未設定:2012/01/07(土) 10:36:37.58 ID:CNISSNIE0
データCDを差し込んだらドロップレットにドラッグアンドドロップしたのと同じようにするには
どうしたらいいのでしょう。音楽CD、ビデオDVDなどは自動でスクリプト発動できるようですが、
普通のデータCDの場合はできないんでしょうか。
905名称未設定:2012/01/07(土) 15:55:05.40 ID:IlVa89xS0
10.5以上ならlaunchdのStartOnMountが使えそうな感じ
ttp://superuser.com/questions/132084/run-script-when-a-specific-disk-memory-card-is-mounted-under-osx
ttp://hintsforums.macworld.com/archive/index.php/t-89968.html
10.4以下なら監視スクリプト自作だろか
ttp://hintsforums.macworld.com/archive/index.php/t-31086.html
どっちにしてもデータCDの判定は自力で何とか
906名称未設定:2012/01/07(土) 21:17:11.96 ID:CNISSNIE0
>>905
ありがとうございます。やっぱりちょっとはいじらないと駄目みたいですね。
頑張ってみます。
907名称未設定:2012/01/08(日) 21:36:47.17 ID:LDRrs/060
「mi」を語るスレから来ました。

ttp://anago.2ch.net/test/read.cgi/mac/1175523690/892-894

上記の症状で困っています。
OSは10.6.8、AppleScript エディタは2.3です。
解決策はありますでしょうか?
アドバイス頂けたら幸いです。
908名称未設定:2012/01/08(日) 22:03:43.93 ID:k8w6b2Kg0
Safariのバージョン違い(古い)で構文エラー
その行を search だけに(とか the の前に -- (ハイフン二つ)入れるとか)してコンパイル、search の文字色が青(デフォルトでのキーワードの色)にならなかったらそう

というかmiスレ覗いたらマルチ進行になってるイクナイ
909名称未設定:2012/01/08(日) 22:09:45.27 ID:k8w6b2Kg0
勢いで断言しちゃった
そうかな? ぽいけど 程度でオネガイ
910名称未設定:2012/01/08(日) 22:10:32.02 ID:LDRrs/060
>>908
レスありがとうございます。

マルチ進行、ほんとにすみませんでした。

Safariのバージョンが5.0.5でした。

解決策はSafariを最新版にするしかないでしょうか?
911名称未設定:2012/01/08(日) 22:18:26.46 ID:k8w6b2Kg0
ここ ttp://piyocast.com/as/archives/1725 見るとSafari 5.1で追加になった命令らしいから多分
912名称未設定:2012/01/08(日) 22:20:42.93 ID:LDRrs/060
>>911
納得です。ありがとうございました。
913名称未設定:2012/01/08(日) 22:33:17.83 ID:2ZoU7iJW0
>>912
tell application "mi" to set theterm to selection object 1 of document 1
open location "http://www.google.co.jp/search?hl=ja&q=" & theterm
914名称未設定:2012/01/08(日) 22:50:20.37 ID:LDRrs/060
>>908
おおっ!できました。
深謝です。
ほんとうにありがとうございます。
915名称未設定:2012/01/20(金) 21:46:40.74 ID:i09RdKGk0
ファイル名を正規表現でチェックして、データを判定するスクリプトを作ったんだけど、
恐ろしく速度が遅い。スクリプトの速度上げる方法ないかな。
916名称未設定:2012/01/21(土) 00:09:51.51 ID:+iej9qkO0
file コマンドを使うのがいいとおもう。
917名称未設定:2012/01/21(土) 01:11:14.05 ID:jwQV3qlH0
つperlを呼び出す
918名称未設定:2012/01/21(土) 12:45:35.29 ID:1Zo53hRC0
>>917
perl使ってるよ。
それが単体の判定ドロップレットを作って、メインスクリプトからopen file 〜using application
で使うとそれなりなんだけど、その内容をメインスクリプトにハンドラつかって埋め込むと処理が
遅くなるような気がする。なんで同じことやってるだけだろうに速度が違うのかがわからない。
なんかいい方法はないかなあ。
919名称未設定:2012/01/21(土) 12:52:19.80 ID:/LTylsLv0
>>915 を読んで、
AppleScriptで正規表現エンジン作ったのか(驚愕)
と思った。
920名称未設定:2012/01/23(月) 20:35:09.06 ID:R9/UAmBk0
acrobatでpdfからjpgにグレースケールで書き出したいのですが、
save document 1 to file aFile using conversion "com.adobe.acrobat.jpeg"
とすると、前回のjpegの書き出し設定(「JPEGとしての保存の設定」ダイアログのカラースペース)が適用されます。

これをapplescript上でグレーなどに指定することは出来ますか?

ソフトのバージョンは
adobe acrobat 8 pro ver8.1.5
MacOS 10.6.8
です。
921名称未設定:2012/01/23(月) 21:47:08.00 ID:sWQZbutB0
>>920
javascriptで同様の内容を探して見たが無理っぽい。Jpeg保存までみたい。
よくわからないけどGUIスクリプティング頑張ってみるとか。

それはそうと誰か教えてくれ。OS10.4.11でスクリプトエディタでスクリプト書こうと
他のマシンで作ったスクリプトを開くと、do shell script のあとに続く二重の
バックスラッシュがなぜか一重のバックスラッシュになっていてコンパイルできない。
ただ、そのほかで作った二重のバックスラッシュを含むスクリプトを動かすと動く。
こういう場合、どうすればいいんでしょうか?
922名称未設定:2012/01/23(月) 22:28:52.81 ID:R9/UAmBk0
>>921
わざわざjavaまで調べて下さってありがとうございます
無理そうなんですね...残念です

GUIスクリプティングは以下のスクリプトで試してみたのですが、「設定...」ボタンが青く反転するだけで、押したことにならず、「JPEGとして保存の設定」ダイアログにいけないんですよねー...

それ以外のボタンは普通に押せるのですが
...

tell application "System Events"
tell process "Acrobat"
click menu item "JPEG" of menu 1 of menu item "画像" of menu 1 of menu item "書き出し" of menu 1 of menu bar item "ファイル" of menu bar 1
click button "設定..." of group 1 of window "別名で保存"
end tell
end tell
923名称未設定:2012/01/25(水) 07:48:15.79 ID:ZEuq9H9L0
GUIスクリプティングは時々delayを挟まないと
期待通りに動かないことがあるよ
924名称未設定:2012/01/25(水) 13:22:02.31 ID:OuAoKjBcP
>>922
どうでもいいけど、JavascriptとJAVAを一緒くたにしないで・・・
925名称未設定:2012/01/25(水) 21:06:33.95 ID:x96hyp0Z0
Javaな
926名称未設定:2012/01/27(金) 11:46:17.31 ID:KLOiokc60
イラレcsで、下のようなカラー設定だとフィルタリング(whose〜)が効かないんですが、
このような場合の同一色を短時間で検索する手段てありませんか?
{class:CMYK color info, cyan:74.901956319809, magenta:67.843133211136, yellow:67.058819532394, black:89.803916215897}

これみたいに整数値だとフィルタリングで探せます。
{class:CMYK color info, cyan:100, magenta:0, yellow:0, black:0}
927名称未設定:2012/01/27(金) 12:13:10.11 ID:xwvGjffT0
>>926
コンピュータの基本だけど浮動小数点数が一致することは基本的に無いよ。必ず誤差がある。
誤差範囲内にあるか又は大小関係で比較しないといけない。
928名称未設定:2012/01/27(金) 13:05:34.08 ID:KLOiokc60
やっぱり無理なんですかね。
フィルタリングできれば実用範囲の速度だけど、
比較ループすると一気に使い物にならない速度になっちゃうんですよね。
929名称未設定:2012/01/27(金) 15:44:24.23 ID:Go6DR1UGP
>>925
JAVAの表記はJavaでもJAVAでも良い。
Sun(Oracle)のサイトでもJava表記とJAVA表記が混在している。
930名称未設定:2012/01/29(日) 00:14:47.37 ID:z3lGjjue0
>>928
フィルタリングする色はどこから持ってくるの?
既に存在するオブジェクトの色だったり
スウォッチの色なら
一旦変数にでも入れて使えばフィルタリングできるよ
931名称未設定:2012/01/29(日) 11:22:45.37 ID:bSG98L8b0 BE:399840023-2BP(0)

>>918
>それが単体の判定ドロップレットを作って、
以前に,MacOS X Snow Leopardで大量のファイルをチェックして
処理するスクリプトを作った時に,処理速度速度が極端に落ちる問
題が発生しました。

同じスクリプトを,AppleScript Editorでソースコードを
表示した状態から実行すると,劇的に処理速度が上がりました。
932名称未設定:2012/01/30(月) 11:09:55.99 ID:Yn23qSyC0
>>930
本当だ。その方法だとフィルタリングできるんですね。勉強になりました。

ただ、今回はその色そのものが書類上に存在しているかわからない場合の
チェック兼修正用として使いたいんですが、そんな場合にはどうしたら良いでしょう?

具体的にはCADからイラレに変換したデータなんですが、
自分でやった物でもたまに色変換し忘れた物とかが混じっていたりするので。
よく見ると画面上でもK100の色とは異なるんですが気付かない場合もあるので。
933930:2012/01/30(月) 20:24:56.80 ID:FwSM7NKd0
>>932
こんなのどう?
set theFCs to {}
set theSCs to {}
tell application "Adobe Illustrator"
tell document 1
set pItemsCount to count of page items
repeat with i from 1 to pItemsCount
try
set theFC to fill color of page item i
set theSC to stroke color of page item i
if {theFC} is not in theFCs then set the end of theFCs to theFC
if {theSC} is not in theSCs then set the end of theSCs to theSC
end try
end repeat
make new layer
set theGB to geometric bounds
set x to item 1 of page origin
set Y to height + (item 2 of page origin)
repeat with i from 1 to count of theFCs
set theRH to height / (count of theFCs)
make new rectangle with properties {bounds:{x, Y - theRH * (i - 1), x + 10, Y - theRH * i}, fill color:item i of theFCs, stroke color:{class:no color info}}
end repeat
repeat with i from 1 to count of theSCs
set theRH to height / (count of theSCs)
make new path item at beginning with properties {entire path:{{x + 10, Y - theRH * (i - 1)}, {x + 20, Y - theRH * i}}, filled:false, stroke color:item i of theSCs}
end repeat
end tell
end tell
新しいレイヤーに使っている色の一覧が作られるので(グラデは除外)
Illustrator上で自動選択ツールの設定を許容値を0にして一覧の色を選択
934名称未設定:2012/01/31(火) 09:08:11.90 ID:jx873SW70
>>933
なるほど。それならK100じゃない黒があるかどうかもすぐわかりますね。
頭が固くて気付きませんでした。
ありがとうございます。またまた勉強になりました。
935930:2012/01/31(火) 12:29:59.70 ID:Vve0d6YR0
>>934
あ、
set theGB to geometric bounds
は無視して。
同じことするならJavascriptの方が早い気がする。
936名称未設定:2012/01/31(火) 12:50:58.18 ID:jx873SW70
>>935
度々ありがとうございます。
試しに今度JSで作ってみます。
937名称未設定:2012/01/31(火) 13:47:10.20 ID:Vve0d6YR0
需要あるかな?Safariを利用したプログレスバー
--Safariを利用したプログレスバー
global BL
set BL to 300
tell application "Finder" to set selected to selection as list
set work to "Finderで選択されたアイテム名"
my makeprogresswindow(work)
set deno to count of selected
repeat with i from 1 to deno
my progressbar(name of item i of selected & "を処理中", i, deno, work)
delay 0.2 --ここに処理を入れる
end repeat
my breakprogresswindow(work)
on makeprogresswindow(W)
tell application "Safari"
activate
make new document with properties {URL:"about:blank"}
set bounds of window 1 to {30, 30, 50 + BL, 200}
do JavaScript "document.write ('<title>" & W & "</title><body><div id=¥"bar¥" style=¥"background:#eeeeee;width:" & BL & ";height:10;margin: 0 auto;font-size:12px¥"></div></body>');" in document 1
end tell
end makeprogresswindow
on progressbar(WN, NU, DE, W)
tell application "Safari"
set PBL to round NU / DE * BL
do JavaScript "document.getElementById(¥"bar¥").innerHTML='<div style=¥"background:#999999;width:" & PBL & ";height:100%;margin: 0¥"></div>" & WN & "';" in document W
end tell
end progressbar
on breakprogresswindow(W)
tell application "Safari" to close document W
end breakprogresswindow
938937:2012/01/31(火) 14:02:09.88 ID:Vve0d6YR0
とりあえずFinderで選択されたファイル/フォルダの名前を表示するだけ。
入れ子状態とかも作ったけど改行制限オーバーだったのでギリギリまで詰め詰め
repeat回数が多くて処理に時間がかかるときに終わりの目安がなんとなく分かるのでたまに使ってます。
スクリプト起動中にリアルタイムで表示内容を変更することができるので
デバッグやスクリプトのスピードアップを検討するときなどにも使えるかも。
939名称未設定:2012/02/01(水) 12:07:36.49 ID:wzkEfhkC0
>>937
なぜにCocoa 呼ばんの?とは思ったが動かしたらめちゃ楽しい。
ちと書き方が昔風だけど、書き方なんて自由な訳で。
ありがとう、これはぜひ使ってみたい。いじりがいもありそう。
940名称未設定:2012/02/07(火) 18:18:23.58 ID:LX4ul6tR0
Drag & Dropでファイルのサイズをクリップボードにコピーするスクリプトです。複数のファイルを
同時にD&Dするといくつかのファイルのサイズが得られない事があります。
自分なりに調べてみると、Finderの"情報を見る"の詳細情報に入手先が記載されているファイルの
サイズだけが得られません。しかし、ファイルが一つか、このようなファイルだけの時は動きます。
入手先の記載のないファイルと記載のあるファイルが混ざっていると入手先の記載のあるファイルのサイズ
だけが得られません。まるっきり的外れなような気もするのですが、他に原因が見つけられません。
Leopardの時は問題なく動いていたと思うのですが、Lion(10.7.2)にしたことと関係があるのでしょうか。
アドバイスを頂けないでしょうか。

on open drop_item_list
tell application "Finder"
set the clipboard to ""
repeat with obj in drop_item_list
set file_size to size of obj
set the clipboard to (the clipboard) & file_size & return
end repeat
end tell
end open
941名称未設定:2012/02/08(水) 21:58:46.08 ID:qOBgEaho0
ようやくXcodeインストールしてスクリプトにインターフェイスつけようと思ってるんですが、
どなたかヒントをください。

よくある市販のアプリケーションにある「環境設定パネル」的なものってどうやって
作るんでしょう?
後からデータを保存する場所などを設定したいんですが、自分ならスクリプトのproperty
などを書き換えればすむんですが、どうやら他人にはハードルが高いらしく、
そういうものをセッティングして、アプリを再起動してもその値を覚えているようなものに
したいんですが、、、、、、、。ググってみましたが、どうも参考になる情報がないもので、、、、。

しかしXcode楽しいですね。Applescriptだけだと素人感満載ですが、インターフェイス
がつくと、ちょっとくらい処理が遅くても許してもらえそうな感じw
942名称未設定:2012/02/08(水) 22:05:14.24 ID:eAw9iCyS0
943名称未設定:2012/02/08(水) 22:14:02.76 ID:qOBgEaho0
>>942
あうううううううう(涙)
がんばって読んでみます。ありがとうございますorz
944名称未設定:2012/02/08(水) 22:23:01.40 ID:eAw9iCyS0
>>943
あ、ごめん
環境設定パネルそのものをつくりたいわけじゃなくて
設定の読みだし書き込みをしたいのか

一般論はこっち
https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaBindings/Concepts/NSUserDefaultsController.html

AppleScriptでやるには
http://macscripter.net/viewtopic.php?id=20152
http://macscripter.net/viewtopic.php?id=31353
http://www.macosxautomation.com/applescript/features/propertylists.html
あたりが参考になるかなぁ

AppleScriptのみで作るには
アプリ起動時にplist読み込み
変更用UIを作り、変更したらpilstに保存 - その場で再読み込みしてそれにとまない挙動変更
終了
とか?

945名称未設定:2012/02/08(水) 22:24:45.67 ID:eAw9iCyS0
面倒くさい時は
実行用アプリケーションと
設定用アプリケーションを別個に作ると楽です
エラー処理とか入れなくていいから
設定変える時はこっちを使って下さいって渡せばいい
946名称未設定:2012/02/08(水) 22:48:14.06 ID:qOBgEaho0
ああだめだ。英語気持ち悪くなってきたorz

よくわかりませんが、なにやらいろいろ構成して、plistに書き込む
つーことですな。
もうちょっとサンプルスクリプトとかいろいろ眺めてから挑戦します。

それはそうと、今、10.5用のXcodeってダウンロードできるのか?
ぜんぜん見当たらないんだけど。つーかXcode4はAppleScript用の
サンプルスクリプトってごそっと抜けてるし。サンプルスクリプトは
別にダウンロードするのかな? AppleIDで登録しろだのなんだの
意外と面倒っすね。でも面白いからいいやw

>>945
ああなるほど。AppleScriptのときにはrunしたら環境設定的なこと、
ファイルをドラッグアンドドロップしたら処理みたいなことしてたけど、
それを別々のアプリにするみたいなかんじでしょうかね?
いろいろ参考になります。
947名称未設定:2012/02/08(水) 22:49:32.84 ID:qOBgEaho0
しかし
I am very new for apple scripts
には笑った。どこの国も一緒だなw
948名称未設定:2012/02/09(木) 19:36:22.62 ID:ea+OTQBO0
USBメモリを使い終わった後、USBメモリmyusbをアンマウントするappを、USBメモリの「中に」作ってみたんですが、

do shell script "diskutil unmount /Volumes/myusb"

実行すると
Volume myusb on disk2s1 failed to unmout
というエラーメッセージが出てアンマウントできませんでした。
実行したプログラムそのものが存在するドライブをアンマウントするのでエラーは当たり前なのかもしれないですが、それを回避してアンマウントするappを「USBメモリ内に」作る方法はないでしょうか?
949名称未設定:2012/02/09(木) 20:32:55.69 ID:fRKirlsS0
もうAppleScriptの範疇じゃないだろ〜
950名称未設定:2012/02/09(木) 20:55:03.35 ID:4iWTAki/0
>>948
アンマウントを実行するappをリソースに内包して、
アンマウントを実行するappを/tmp または Temporary Items にコピってからコピったappを起動するとともに素早く終了するとか
アンマウントを実行するappはアンマウントを実行する前に、起動元のUSBメモリ中のappが終了するのを待つとより完璧かな
951名称未設定:2012/02/09(木) 22:02:45.49 ID:4iWTAki/0
>>950,948
shell script をコピって実行(後自爆)バージョン

tell application "System Events" to set myPID to the unix id of process the (name of the current application)
do shell script "echo 'while kill -0 " & myPID & " 2> /dev/null; do sleep 1; done; diskutil unmount /Volumes/myusb; rm -f /tmp/realUnmountUSBVol.sh' > /tmp/realUnmountUSBVol.sh"
do shell script "sh /tmp/realUnmountUSBVol.sh > /dev/null 2>&1 &"

do shell script は & だけじゃバックグラウンドプロセスを起動してすぐ帰るってしてくれなくて、> /dev/null 2>&1 を付ければOK。ってことでこのスレらしくない?w >>949
952名称未設定:2012/02/09(木) 22:38:11.79 ID:fRKirlsS0
参ったw
953948:2012/02/09(木) 23:04:43.00 ID:v+H2Ee4R0
>>950-951
おお、ありがとうございます!
やっぱ結構アクロバチックな事が必要なんですね・・・
ちょっと勉強しながらやってみます。
954名称未設定:2012/02/09(木) 23:38:11.74 ID:4iWTAki/0
>>953
ごめんなさい >>951 はダメっぽい
バックグラウンドプロセスの実行環境として、起動元の applet.rsrc が開かれた状態で継承されてアンマウントできません。いらんのに、全くいらんのに

app コピるより shell script はただのファイルだし、考えたら shell script をコピる必要さえないじゃんなのにい、applet.rsrc が邪魔
なーんかないか考えてみよう
955名称未設定:2012/02/10(金) 02:17:34.43 ID:XdmK1XLf0
>>954,953
csh だと親プロセスが開いているファイルなんて継承してないてことで(bash で開いているファイルを継承させないオプションがあるのかどうかわからない)

tell application "System Events" to set myPID to the unix id of process the (name of the current application)
set cshScript to "while( 1 )
/bin/kill -0 " & myPID & " >& /dev/null
if( $? ) break
sleep 1
end
diskutil unmount /Volumes/myusb"

set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set cshScript to text items of cshScript
set AppleScript's text item delimiters to ASCII character 10
set cshScript to cshScript as string
set AppleScript's text item delimiters to savedDelimiters

do shell script "echo '" & cshScript & "' | /bin/csh -s > /dev/null 2>&1 &"


csh よくわからんなあ
スクリプトを1行にできないのかなあ/どうもできなさそうってことで、なんか長くなった。AppleScript's text item delimiters は AppleScript の改行(return/CR) を shell の改行(LF) に変換してるのです
956名称未設定:2012/02/10(金) 02:57:09.05 ID:XdmK1XLf0
あ、csh 間にかますだけでいいんじゃねっ... てことで

tell application "System Events" to set myPID to the unix id of process the (name of the current application)
do shell script "/bin/csh -c " & quote & "/bin/bash -c 'while kill -0 " & myPID & " 2> /dev/null; do sleep 1; done; diskutil unmount /Volumes/Untitled'" & quote & " > /dev/null 2>&1 &"

寝よ...w
957名称未設定:2012/02/10(金) 07:43:37.93 ID:T5Sv7sCh0
ちょっと教えてください。AcrobatProfessionalについているPDFをチェックする
プリフライト機能、というのがあるんですが、これがメニューからドロップレット
が作れます。中を開くとAppleScriptなので、これ幸いと自分のスクリプトに
組み込めないかと苦闘したのですが、実現できません。
on process_item(this_item)ハンドラを他のスクリプトに内蔵することってできない
でしょうか。

on open these_items
try
process_item(these_items)
end try
end open

-- process the file
on process_item(this_item)
try
tell application "Finder"
set myPath to path to me
end tell
with timeout of 1 second
tell application "Adobe Acrobat Professional"
activate
delay 1
≪event PRFLPRFL≫ this_item given ≪class PATH≫:myPath
end tell
end timeout
end try
end process_item
958名称未設定:2012/02/10(金) 07:51:05.35 ID:T5Sv7sCh0
続きです。やったこと

・そのままon process_item(this_item)ハンドラをスクリプトに埋め込む→AEHandlerが云々で×
・逆にドロップレットに自分のスクリプトを埋め込んで再保存→該当部分で同様のエラー
・ドロップレットになっているフォルダの中身を見てみる→重要な情報などはplistの中などにも発見できず。
・海外のサイトを見る
→みんな同じこと考えてて「Acrobatは糞」と質問者が罵るか「そのまま使えアホ」と煽られるかのどちらか。

いつも思うのですが、なんでAcrobatのこのあたりの機能はJavascriptでもapplescriptでも機能提供されない
んでしょうかね。pitstop関連の特許がらみもあるのかも、とも思いますが。
959名称未設定:2012/02/10(金) 18:08:20.22 ID:w9o5mLpj0
Acrobatをサーバー的に使うにはいろいろライセンスを取得する必要があったような気がしないでもない
960名称未設定:2012/02/10(金) 22:52:36.25 ID:T5Sv7sCh0
>>959
ありますよね。なんかめんどくさいのが。でも、上の話はそれとは別の話ですよ。
961名称未設定:2012/02/10(金) 23:04:44.65 ID:T5Sv7sCh0

>≪event PRFLPRFL≫ this_item given ≪class PATH≫:myPath

がよく分からないんです。用語辞書にも載ってないし、検索してもだめだし。
どう考えても、this_itemをそのドロップレットのパスに従ってプリフライトせよ、
ってことだと思うけど、ドロップレット自体はどこに置いておいても動くし、
そもそもプリフライトに使用する設定はどこから読み込むのかと。謎が多すぎて
手も足も出ません。なんなんですか? これ。
962名称未設定:2012/02/15(水) 23:45:22.87 ID:5kjeEa2v0
どうしても分からんorz
applescript studioのイベントハンドラで
on key down theObjectと
on key up theObject
があるかと思うけど、ウインドウにボタンを配置しておき、
シフトかオプション、コマンド、コントロールなどキーは問わないが、
キーを押した時点でボタンの表示がたとえば「印刷」から「用紙を指定して印刷」
とか代わって、そのままクリックするとそれぞれ別のスクリプトが動くようにしたい
のだけど、どうすればいいんでしょうか。on key down の例を探したけど、
見つからなかった。applescript studio のイベントハンドラ 一覧とその例とか
どっかにないかな……。
963937:2012/02/16(木) 00:49:51.43 ID:Rnhe+Zuj0
>>948
GUIスクリプティングでキーボードショートカット使うとか

tell application "Finder"
activate
set theVolume to disk of (path to me)
select theVolume
tell application "System Events"
key code (14) using command down
end tell
end tell
964名称未設定:2012/02/16(木) 02:16:15.36 ID:/kShfPCb0
>>962
Xcode入れてドキュメントも入れてんだろうから見れば良いじゃない
AppleScript Studio Terminology Reference
965名称未設定:2012/02/16(木) 09:29:59.37 ID:zejo708S0
>>962
書いてみた

property NSAlphaShiftKeyMask : {shift:65536}
property NSShiftKeyMask : {shift:131072}
property NSControlKeyMask : {shift:262144}
property NSAlternateKeyMask : {shift:524288}
property NSCommandKeyMask : {shift:1048576}
property NSNumericPadKeyMask : {shift:2097152}
property NSHelpKeyMask : {shift:4194304}
property NSFunctionKeyMask : {shift:8388608}

on IsDown(theKeys, theKeyMask)
return ((theKeys / (shift of theKeyMask)) mod 2) as integer is 1
end IsDown

on idle
set theModifiersKey to call method "modifierFlags" of class "NSEvent"
if not IsDown(theModifiersKey, NSAlternateKeyMask) then
set theButtonTitle to "Print"
else
set theButtonTitle to "Print..."
end if
set title of button "Print" of window "main" to theButtonTitle
return 0.5
end idle


モディファイアキーの押下状態の変更をダイレクトに伝えてくれるのはAppleScriptでは用意されていないようなので、idleで定期的にチェックという無駄と反応が鈍い
ボタンのアクションの変更を変えるのはどうすんだろうね。とりあえずボタンのタイトルで振り分けるとか
966名称未設定:2012/02/16(木) 16:01:58.34 ID:3tECEIY10
> applescript studioのイベントハンドラで
> on key down theObjectと
> on key up theObject

こんなのあったっけ?
on keyboard down theObject event theEvent とon keyboard up theObject event theEvent ならわかる

ただこれもアプリ全体のイベントには設定できないし、
修飾キー単体では反応しないっぽいので、>>962の目的には合わないが
967名称未設定:2012/02/16(木) 18:59:50.03 ID:zejo708S0
>>965
>AppleScriptでは用意されていないよう
って、Cocoa-AppleScriptもかなと勝手に思って書いたが、普通に安易にNSWindowのサブクラス作れて、普通にflagsChangedが呼ばれて、ストレスあんまり無くキーの押下状態を得られた

Cocoa-AppleScript侮れないw
まあCocoa-AppleScriptするならCocoaドキュメント読まねばならず、だったらObjective-Cで書いた方がAppleScriptの文法/制約で悩まないで済むっていう...
968名称未設定:2012/02/23(木) 22:09:40.09 ID:2VZh/UL+0
lionにXcode入れたんだけど、
Xcode4.2.1 applescript全滅
Xcode3.2.6 ゴニョってインストール、コマンドラインでゴニョれば古いソースはビルドできる
Xcode3.1.4 同上で、carbonがないとしかられる。
ぜんぜんうまくいかないんだけどorz
lionで新規プロジェクトでapplescriptでアプリ作れる人いたらどうすればいいか教えてください。
969名称未設定:2012/02/23(木) 23:32:08.29 ID:QdRnNph40
>>968
普通にできているよ。フレームワークが変わっていて、言語仕様が、少し変わっているので、ダメなんじゃないの。リファレンスマニュアル読めばわかると思うよ。
970名称未設定:2012/02/24(金) 07:54:52.64 ID:qTOlXcGs0
>>968
applesriptってAppleScript Studio?
Xcode 3.2.6 で 既存のプロジェクトはビルドできるはできるけど、新規プロジェクトはテンプレートが無いから作成できないってことだよね

Xcode 3.1.4 のインストーラからテンプレートを盗んでくればいいよ
/Volumes/Xcode Tools/Packages/DeveloperTools.pkg
に入っている

pkgutil --expand /Volumes/Xcode¥ Tools/Packages/DeveloperTools.pkg ~/DeveloperTools
ってすれば、デスクトップに DeveloperTools ってフォルダができている
その中に Payload があるから Finder でダブルクリックすると解凍が始まる
Payload ってフォルダができるので、その中に Library/Xcode/Project Templates/Application/AppleScript Application がある
AppleScript Application を ~/Library/Application Support/Developer/Shared/Xcode/Project Templates/AppleScript Studio に(そういうパスが無かったら作って)入れる。最後の AppleScript Studio は好きな名前でいいよ
Xcode 3.2.6 を起動して新規プロジェクト選ぶと、出ているはずだよ。
971名称未設定:2012/02/24(金) 08:33:19.18 ID:1EsaeqC20
>>969-970
ありがとー。昨日いろいろいじっていて
・3.1.4でプロジェクトを作る。
・そのプロジェクトをゴニョった3.2.6で開いて編集
でいまのところうまくいってます、と報告しようと思ったら、それってつまり
>>970と同じことですよね。ああ、これでlionでapplescript studioがいじれます。
感謝感謝です。
972名称未設定:2012/02/24(金) 08:55:52.68 ID:qTOlXcGs0
>>971
ああ、なる。だったら、
/Developer/Library/Xcode/Project Templates/Application/AppleScript Application

$HOME/Library/Application Support/Developer/Shared/Xcode/Project Templates/AppleScript Studio
にコピれば、3.1.4 起動する必要無いくらかな。お好きに :)
973名称未設定:2012/02/24(金) 08:56:46.33 ID:qTOlXcGs0
あ、
/Developer
は、3.1.4 の Developer ね
974名称未設定:2012/02/24(金) 15:07:49.29 ID:CJGFbzwl0
ついでに新規ファイル追加用のテンプレートはこの辺にあるので、ついでに移植しておくとよいね
/Developer/Library/Xcode/File Templates/AppleScript

あとInterface BuilderのAppleScript Inspectorタブが消えているので、Terminalで以下を実行して復帰させる
defaults write com.apple.InterfaceBuilder3 IBEnableAppleScriptStudioSupport -bool yes

これで概ね3.1.4以前と同じ感覚で使えるかと
975名称未設定:2012/02/25(土) 16:55:35.61 ID:RuiGBx4u0
>>974
それら一式まとめて、アプ希望
976名称未設定:2012/02/25(土) 17:16:30.37 ID:hAfl5ygD0
自分で作れ
977名称未設定:2012/02/26(日) 17:00:12.73 ID:cEyk/5Xo0
プロジェクトテンプレとInterface Builderのセットになったやつは3.2.2ぐらいの時にあったよ
ググれば出んでしょ
978名称未設定:2012/02/26(日) 18:06:28.09 ID:SX1S2Szy0
あーもう誰か教えて。
applescript studioで例えばデスクトップからアプリのウインドウにドラッグ&ドロップすると
そのファイルなりフォルダなりの処理を始めるようにするにはどうすればいいんだ?
たとえばウインドウのあるエリアにファイルをドラッグ&ドロップすると所定のフォルダに
コピーしてファイル名を変更するみたいなことがしたいんだけど、、、、、、、

・ハンドラーは on drop theObject drag info dragInfoを使って
・types of pasteboard of dragInfo で処理するに値するかどうか判定して

、、、、とか書いてたらちょっと分かってきたw スマンw
(とかいいつつ、また来ると思うw)
979名称未設定:2012/02/26(日) 18:54:16.65 ID:0yqTcLgI0
せっかく書いた文でも捨てる勇気
980名称未設定:2012/02/26(日) 20:16:21.41 ID:SX1S2Szy0
だ、だめなのか、、、、?
間違ってるのか、、、、、orz
981名称未設定
意訳:ここはおまえの日記帳じゃない