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

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

■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
OSバージョンも忘れずに。

■参考
AppleScript ヘルプ
http://docs.info.apple.com/help/guide.html?path=AppleScript/2.1/jp/
発表まとめ (過去ログなども)
http://members.at.infoseek.co.jp/obto/script/script.html ※消失?
MacWiki - AppleScript
http://macwiki.sourceforge.jp/wiki/index.php/AppleScript
AppleScript PARK
http://www.tonbi.jp/AppleScript/
AppleScript Lab.
http://www.drycarbon.com/applescript/
TN2065: do shell script
http://developer.apple.com/jp/technotes/tn2065.html ※消失?
http://developer.apple.com/technotes/tn2002/tn2065.html
AppleScript: The Language of Automation
http://www.macosxautomation.com/applescript/
AS Hole(AppleScriptの穴)
http://piyocast.com/as/
■過去スレ
1 http://pc11.2ch.net/test/read.cgi/mac/1174045850/
2 http://pc11.2ch.net/test/read.cgi/mac/1197443062/
3 http://pc11.2ch.net/test/read.cgi/mac/1223026902/
4 http://anago.2ch.net/test/read.cgi/mac/1256127156/
2名称未設定:2012/02/29(水) 00:03:05.32 ID:TgazGAu/0
1 Oats
3名称未設定:2012/02/29(水) 21:06:06.09 ID:PTlCiQoP0
1乙

さっそく今日どうしてもできなかったのでだれかヒントをくれるとありがたいのですが。
フォルダを参照するときにPOSIX形式のパスがtextで与えられたとき、それから
普通のalias参照に戻して変数に格納するにはどうすればいいんでしょ?
applescript studioでの話です。ファイルなら 〜 as POSIX fileとかだと思うけど、
フォルダの場合はどうすれば? POSIX path of 〜 として変数に格納しようとしても
エラーが出るなどしてだめのような、、、、、、。
4名称未設定:2012/02/29(水) 21:32:31.77 ID:XhNCZFbz0
1おつ

POSIX file thePOSIXPATH

file だけど thePOSIXPATH の指すのがディレクトリでも大丈夫

POSIX path of ...
はPOSIXパスへ
POSIX file ...
はaliasへ
なんじゃそらっw
5名称未設定:2012/02/29(水) 22:08:55.53 ID:PTlCiQoP0
>>4
なんか俺、ものすごく基本的なことで間違ってる?

tell application "Finder"
set a to "/User/xxxx/Desktop/"
set POSIX file a
open a
end tell

とすると開けないし、そもそもイベントログ見ても get POSIX file〜でエラー出てる。
POSIX fileの文字列は同様にして

tell application "Finder"
set a to selection as alias
set a to POSIX path of a
end tell
で得た文字列なので間違いないと思うんだけど、、、、、、。
6名称未設定:2012/02/29(水) 22:15:05.51 ID:PTlCiQoP0
間違えました。
tell application "Finder"
set a to "/User/xxxx/Desktop/"
set a to POSIX file a ←この行
open a
end tel

でした。l
7名称未設定:2012/02/29(水) 22:25:39.34 ID:PTlCiQoP0
もひとつ。
よくわからないのだけど、フォルダ参照が入った変数をuser defaults で
プロパティリストに書き出すと、
/User/xxxx/Desktop
というように最後の/が記録されてない。サンプルコードとか見ても
そのままdo script shell的なことをするにはOKみたいだけど、applescriptエディタの
出す結果とplistに書かれている形が違うのは気味が悪いんだけど。正しくは
最後に/が入るんだと思うけど、なんでそうなってないんでしょう???
8名称未設定:2012/02/29(水) 22:28:32.77 ID:PTlCiQoP0
すみません。この件で悩みすぎてカゼをこじらせているので寝ます。ズビ。
9名称未設定:2012/02/29(水) 23:25:16.56 ID:XhNCZFbz0
>>5,6
なんかFinderが余計なことをしている
POSIX file ... を tell application "Finder" の外(前)に置けばよろしい

>>7
そういうもんじゃないの
ディレクトリを示すのに最後の'/'が必要というわけじゃなく、また、最後に'/'が付いていないのはいくらでもあるので
10名称未設定:2012/02/29(水) 23:55:48.51 ID:XhNCZFbz0
set a to POSIX file a
を tell application "FInder" 内のままで
tell me to set a to POSIX file a
としてもおけ

他にもっとカッコいい書き方あるかな??
11名称未設定:2012/03/01(木) 00:03:21.15 ID:6DHNj2UF0
set a to a as POSIX file
12名称未設定:2012/03/01(木) 00:06:37.93 ID:FicrMRjq0
それはカッコいいっ!ぐぬぬっw
13名称未設定:2012/03/01(木) 01:05:01.82 ID:n2PDBIu00
fileキーワードの解釈が衝突してるんだろうね。my付けてglobalな定義優先すれば良い。
homeのパスも直書きせずこんな感じで。
tell application "Finder"
set homePath to POSIX path of (home as alias)
set aPath to homePath & "Desktop/"
open my POSIX file aPath
end tell
143:2012/03/01(木) 08:57:43.93 ID:MOdx/D840
いろいろ勉強になります。こちらのことを参考に本日もこじらせて参ります。

とかいいつつ、プロパティリストに登録するときにPOSIX形式でなく、aliasを
テキスト形式で保存することで、回避しちゃったけど、試してみます。
テキスト形式から復元するときは日本語注意だけど。うちだけかな?
15名称未設定:2012/03/01(木) 19:19:35.16 ID:FicrMRjq0
>>13
それはそれでカッコいいねえ。他でも使えるしぃ
一つ賢くなれた気がする。どうもっす
16名称未設定:2012/03/01(木) 20:49:26.42 ID:5MNY7x8k0
昔 POSIX file ... でエラーになるものが ... as POSIX file で上手く動いたのでそれ以来後者の書き方を使うようにしていたけど、
>>13が理由だったのかな

>>7
StandardAdditions の POSIX file クラスの属性である POSIX path は何故か末尾にスラッシュが付くね
一方で System Events の disk item クラスの属性としても POSIX path が存在しているのだけど、こちらは末尾にスラッシュが付かない
スラッシュは区切りであって、フォルダやディレクトリそのものを意味する訳じゃ無いので、本来は要らないものだと思う

ちなみに前者はテキストに対しても実行できる様になってるので、
実際には存在しないパスでも変換できるという利点があったりはする

>>14
コロン区切り式でテキスト保存すると、同名ボリュームが複数ある場合なんかに問題が無い事も無い
とはいえまぁレアケースだとは思う
17名称未設定:2012/03/03(土) 21:55:41.44 ID:8vt0uUpk0
on awake from nib theObject
tell theObject to register drag types {"file names"}
end awake from nib

on drop theObject drag info dragInfo
set dataTypes to types of pasteboard of dragInfo
if "file names" is in dataTypes then
set preferred type of pasteboard of dragInfo to "file names"
set theFiles to contents of pasteboard of dragInfo
set theFiles to POSIX file theFiles
tell application "Finder"
set theFiles to theFiles as alias
duplicate theFiles to desktop
end tell
end if
return true
end drop
あーもうわからん。テーブルやBoxにドラッグアンドドロップしたら
そのオブジェクトをデスクトップにコピーするスクリプトを初歩の初歩
としてサンプルスクリプトを参考にいじっているのだが、うまくいかんorz
上の例でなんとかコピーはされるのだが、なぜかたった数十字のテキスト
ファイルでも20秒くらい時間がかかる。明らかにおかしい。でも
どこが悪いかわからない。duplicateもtell "Finder"しなくてもいいような
気がするけど、こうじゃないとエラーを吐く。なんで???
18名称未設定:2012/03/03(土) 23:08:54.85 ID:YksJnOP40
Drag and Drop及びAppleScriptの処理(tell application) はアプリケーション間通信(AppleEvent)を通じで行なわれている
Finderはアプリケーション間通信は1度には1つしか行なわない

FinderからそのAppleScriptアプリへ通信中(on drop を抜けるまで)に、そのAppleScriptアプリからFinderと通信(tell application "FInder")を行なおうとするので、Drag and Dropの通信中なので止まる
Drag and Dropの通信が時間切れになって、やっとこさduplicateが行なわれる

てとこかなあ

on drop で tell application "Finder" せずに、property に対象をセットし、on idle でそれをチェックして tell application "Finder" するとスムースに行くよ(1秒間隔のチェックなのでちょっと間があるけど)
AppleScriptで遅延ハンドラ呼び出しってなんかあったかなあ
19名称未設定:2012/03/03(土) 23:27:28.64 ID:YksJnOP40
あと、
set theFiles to POSIX file theFiles
って、地道に1個ずつ処理しなければなさげだけど?
こんなんできんのかっ!と思ったけど、複数ドロップだとエラるようだけど
20名称未設定:2012/03/04(日) 06:12:01.77 ID:5SS/udIC0
StandardAdditions のライブラリより
> POSIX file n : A file object specified with a POSIX (slash)-style pathname
そりゃそうだろうね

あとdupulicateはFinderのcommandだから当然tellってないと無理
21名称未設定:2012/03/04(日) 11:04:58.23 ID:ai1mcrLU0
非常にキケンなコードができましたw ほかへの影響はまったく考慮なしw
これ、実装してみようかなw 10ファイルくらいなら問題なさそうw
on awake from nib theObject
tell theObject to register drag types {"file names"}
end awake from nib

on drop theObject drag info dragInfo
set dataTypes to types of pasteboard of dragInfo
ignoring application responses  ←危険な香り
if "file names" is in dataTypes then
set preferred type of pasteboard of dragInfo to "file names"
set theFiles to contents of pasteboard of dragInfo
set FileList to {}  ←適当に複数ファイルも対応してみました
repeat with aFile in theFiles
set aFile to POSIX file aFile
set end of FileList to aFile
end repeat
tell application "Finder"
duplicate FileList to desktop
end tell
end if
end ignoring
return true
end drop

>>20
duplicateはFinderのコマンドというのはなんとなく分かるのですが、
自分が作ったアプリの用語辞書にはduplicateが載ってる。
それってつまり、もともとのテンプレートがduplicateに対応している
のかな、と。
22名称未設定:2012/03/04(日) 11:13:23.94 ID:P7TCrPny0
Finderに、じゃこれらコピっておいてってメモ置いてって、あとは知らんふりってだけなので、それでもいいんじゃないの
Finderでduplicateに失敗しても特になにするわけでもないから ;)
23名称未設定:2012/03/04(日) 11:25:14.52 ID:P7TCrPny0
ちなみに、AppleEvent(をFinder)は一度には一つだけ処理しないけど、キューはあるから、どこどこメモ置いていっても構わないよ
例えば
repeat with theItem in FileList
duplicate theItem to desktop
end repeat
でも構わない(まあ、あんまりキューに貯めるのはよくないし、これだと、エフェクト音が煩いしw)
なので特にそれだけでは危険というわけでもなく、単にエラー処理ができないってだけだね
24名称未設定:2012/03/04(日) 11:48:26.81 ID:ai1mcrLU0
全部
ignoring application responses
するから怖い訳で、tell "Finder"のとこだけignoreすりゃいいかな。
それでも動く模様。これならファイルコピーの部分だけケアすりゃいいから、
大事にはいたらない。うんこれでいこう。ハンドラとハンドラのFinder上の
処理がぶつかってエラーというのはよくあるけど、こんなこともあるんですね。
ありがとうございました〜♪
25名称未設定:2012/03/05(月) 10:43:50.10 ID:QIpUt4g50
>>21
確かにduplicateは載ってるね
だけど比べてみると多少内容は違うみたい

FinderのStandard Suite
>duplicate v : Duplicate one or more object(s)
>duplicate specifier : the object(s) to duplicate
>[to location specifier] : the new location for the object(s)
>[replacing boolean] : Specifies whether or not to replace items in the destination that have the same name as items being duplicated
>[routing suppressed boolean] : Specifies whether or not to autoroute items (default is false). Only applies when copying to the system folder.
>[exact copy boolean] : Specifies whether or not to copy permissions/ownership as is
>→ specifier : to the duplicated object(s)

Finder以外のStandard Suite
>duplicate v : Copy object(s) and put the copies at a new location.
>duplicate specifier : the object for the command
>[to location specifier] : The location for the new object(s).
>[with properties record] : Properties to be set in the new duplicated object(s).

objectをコピーする点は変わりないのだけど、じゃあobject=fileとかの定義があんのかってーと、
自作アプリには無いんじゃね
ちなみにSystem Eventsは後者でしかもfileやらfolderの定義もあるのでじゃあduplicateで複製出来るのか?と思ったら出来ないし
その辺の理屈はよくわからん
26名称未設定:2012/03/14(水) 22:25:37.72 ID:ZBsGZ2R/0
ちょっと環境がないから分かりませんし、スレ違いかもしれませんが、ここで質問。

OS10.5でXcode3を使ってapplescriptでプログラミングしています。
OS10.4をターゲット?にしてコンパイルして10.5と10.4でプログラムを
動かしていました。しかし、10.5のほうは快調に動いていますが、
10.4でよく分からないのですが、特定の条件でエラーを吐きます。
Finder can't get Unknown objectとかなんとか。
実際にはDVDなどのメディアをFinder上から取得する動作で
詰まっているようです。
tell application "Finder"
set DiskDVD to selection as alias
end tell
というようなことをしているのですが、いろんな種類のメディアで
エラーになったりならなかったりします。考えたことは
続きます。
27名称未設定:2012/03/14(水) 22:36:11.39 ID:ZBsGZ2R/0
・特定のメディア(DVDならDVD、MOならMOなど)に起因するのでは
→多種類にわたりエラーが出る。
・マックのデータをウインドウズで焼くなどしてリソースフォーク系が変になっている。
→そうなっていないであろうデータでも発生している。
・メディアのフォーマットが変
→「情報を見る」で見る限りはMacOS拡張で変わりなし。
いずれのディスクも開発環境である自分の10.5のマシンではまるで問題ないのですが、
10,4のマシンだと、たまにエラーが起きます。
自分のマシンで該当箇所をデバッグできればいいんですが、10.4のマシンにXcode3は
入れられませんし、自分のマシンでは快適に動きます。

素人サンデープログラマーなので正直これ、どーすんの? って感じです。
10.4をターゲットにしてコンパイルしてるんだからapplescriptだったら簡単にできることが
なんでできなくなるのか不思議でたまりません。しかも10.5ではすいすい動きます。
こういうときはやはり10.4にXcodeを入れてデバッグするしかないんでしょうか。
28名称未設定:2012/03/14(水) 23:46:35.14 ID:2lVSwSf60
入れられるなら入れちゃえばいいんじゃないの?と思う一方、
エラー箇所が特定できてるなら得るものないかなとも思う

10.5のリリースノート漁るのもいいんじゃないの?とも思うし
applescript-studioやapplescript-usersのML漁るのもいいんじゃないの?とも思う
29名称未設定:2012/03/15(木) 00:03:19.10 ID:m6sLD7490
>>26,27
AppleScriptはFinderにAppleEvent送ってるだけだよ。
問題があるとしたら原因はFinderの方。
データがキャッシュされてないと上手く取れなかったりとかFinderはバギーだった
記憶あるから、おまじないに一回update呼んでみるとか。
30名称未設定:2012/03/17(土) 13:16:49.45 ID:3EXIR1sE0
Finderにイベント投げてるだけならASSでないとダメってわけじゃないんだから、
必ずしもXcodeが必要とは限らんだろう
まずはスクリプトエディタで試せばいいんじゃね
31名称未設定:2012/03/19(月) 22:23:06.06 ID:TnSkqeJ40
今頃遅レスで申し訳ないが、
>>29
updateなんつーコマンドあるんですね。今度ちょっと試してみます。
>>30
それがスクリプトエディタで試すと問題は起きないのにXcodeで組んだものだと
該当部分でエラーがでているような気がします。

しかし、こんなに便利な言語なのにXcodeで切り捨てなんてさびしい限り。
Automatorに合流しろってことだとは思うけど、どうにもあれは好きになれませんorz
32名称未設定:2012/03/19(月) 22:41:26.18 ID:b7FrDaQK0
でも、Cocoa-AppleScriptの方がなんでもできちゃんだよね。慣れればより簡単に
慣れるまでが大変だと思うけど
Automator はあれはあまり使えないw
33名称未設定:2012/03/20(火) 15:29:39.14 ID:eKEdVY6v0
もうプログラム自体もおぼつかない初心者も初心者なんだけど、あらためてAppleScriptってなんでも
できるんだね。うちの会社にも100台くらいはMacありそうだけど、ぜんぜん使われてないよorz
AS使えば、まだまだ省力化、効率化できるなあ、と思った。でも、それを俺がやったって出世するわけ
でもないし、新しいものを導入したらトラブルは必然だし、楽になったらクビ切られる人は怒るだろうしねw

ところで、ASとXcodeを使って、それなりのアプリを作ったんだが、次は何を学べばいいんだろう?

Objective-Cの本とかは買ってきて読み始めようか、というところなんだけど、今まで作ってきたコード資産
をうまく活用したり、うまくASと連携させたり。どういう風にバランスをとればいいか分からないんだけど。
どなたか勉強の指針を教えてください。
34名称未設定:2012/03/21(水) 07:42:22.95 ID:kf+9nV0O0
なんか周りの見えないバカが湧いてる?
35名称未設定:2012/03/25(日) 05:03:01.34 ID:0gxweSEf0
>>31
tell application "アプリの名前かパス"
...
end tell
てな感じで囲んでやれば、Xcodeなしでもテスト出来るよ
イベント呼ばれる部分は無理だけど

Automatorはあんま関係無いよ
切られたAppleScript Studioの代わりはAppleScript Obj-Cであって、
どちらもAppleScriptには違いない
36名称未設定:2012/03/25(日) 08:20:02.25 ID:tRGy4OH/0
>>35
そうだよね、時代はAppleScript Obj-Cだよ、と思ったら手持ちのOSが10.5だったでござる、の巻
37名称未設定:2012/04/04(水) 12:57:53.82 ID:qIBb2iGd0
Mail.appで受信ボックスの未読メールを全て選択して.txtに書き出したいのですが、
「未読メールを全て選択」という所がどうやればいいのか分かりません。

check for new mail for account "accountname"
keystroke "1" using {command down}
こんな感じに、メールを受信して受信ボックスを開いたところまではできたのですが、未読メールを全て選択するにはどうすればいいでしょうか?

.txtで書きだすのは、
System Eventを使って
pick menu bar 1's menu bar item "ファイル"'s menu "ファイル"'s menu item "別名で保存..."
delay 1
keystroke "UnreadMail"
keystroke return
こんな感じに書きました。
38名称未設定:2012/04/04(水) 15:21:23.47 ID:yoh/z0OJ0
tell application "Mail"
set MessageList to (every message of mailbox "INBOX" of account accountname whose read status is false)
set theText to ""
repeat with theMessage in MessageList
set theText to theText & content of theMessage
end repeat
end tell
みたいな感じで
39名称未設定:2012/04/04(水) 20:16:42.47 ID:LBi6wOhy0
>>38
ありがとうございます。完璧です。
40 忍法帖【Lv=4,xxxP】 :2012/04/07(土) 04:01:45.43 ID:8XeUPNco0
Skypeでapplescriptの設定する方法教えてくれるかたいませんか?

ID co-ca-co-la.jp
41名称未設定:2012/04/08(日) 23:51:23.04 ID:inHTcCxb0
美人集め ※ワールド非対応

set BIJIN to "bijin"
display dialog "エリアは" default answer "jp"
set AREA to text returned of result
display dialog "開始時間は" default answer "0000"
set STARTTIME to text -4 thru -1 of ("0000" & text returned of result)
display dialog "終了時間は" default answer "2359"
set ENDTIME to text -4 thru -1 of ("0000" & text returned of result)
set H to text 1 thru 2 of STARTTIME as number
set M to text -2 thru -1 of STARTTIME as number
tell application "Finder"
set picFolder to folder "Pictures" of home
set bijFolder to folder BIJIN of picFolder
if not (exists bijFolder) then make new folder with properties {name:BIJIN} at defFolder
if not (exists folder AREA of bijFolder) then make new folder with properties {name:AREA} at bijFolder
end tell
repeat
set HH to text -2 thru -1 of ("0" & (H as text))
set MM to text -2 thru -1 of ("0" & (M as text))
set CURRENTTIME to HH & MM
do shell script "curl -o ~/Pictures/" & BIJIN & "/" & AREA & "/" & CURRENTTIME & ".jpg -e http://bijint.com/jp/ http://www.bijint.com/" & AREA & "/tokei_images/" & CURRENTTIME & ".jpg"
if CURRENTTIME = ENDTIME then exit repeat
set M to (M + 1) mod 60
if M = 0 then set H to (H + 1) mod 24
end repeat

自分の環境だと1日分で10分ちょい
42名称未設定:2012/04/22(日) 07:50:34.00 ID:wZ5mp3Ah0
すいません、全く畑違いの職種なんで、的を得てないかもしれませんが質問お願いします

PDFファイルやJPGファイルが200〜300くらいあって、その情報をエクセルで管理しているのですが
Finderの「情報を見る」で表示される「詳細情報」をAppleScriptから取得する事は可能でしょうか

名前や一般情報の種類やサイズはitemのpropertiesで取れるのですが…
43名称未設定:2012/04/22(日) 18:19:36.80 ID:xZidiBjP0
>>42
そこの情報はSpotlightが集めたメタデータを表示してるから、mdls使えば
得られるよ。shellからでも良いし、do shell script "mdls うんたら"みたいに
AppleScriptからも得られる。
Terminalでmdlsいじってみると勘所はつかめると思う。
4442:2012/04/27(金) 02:01:59.90 ID:4ErIafXW0
>>43
遅ればせながら情報ありがとうございます

全くの初心者の為、「do shell script "mdls うんたら」など少々ハードルが高くて焦りましたが、
何とか希望の詳細情報を取得できました。

でもこのこの返り値ってレコードじゃなくて文字列なんですね…


あとはAutomatorと繋げて最終的にはテキストに書き出して〜などと妄想は膨らましながらも
なかなかスキルが追いつかなく、もどかしい限りですが、少しずつ習熟していきたいと思います


ありがとうございました
45名称未設定:2012/05/03(木) 01:01:09.50 ID:hBJWumu/0
どなたか御知恵を

info forで得られるファイル情報のlong versionのみを参照したいのですが方法がわかりません。

作成、保存バージョン別に分岐させ、開くアプリケーションを選びたいのです
46名称未設定:2012/05/04(金) 01:18:12.24 ID:T5jiAByJ0
long version of (get info for ~ )
47名称未設定:2012/05/04(金) 23:01:50.30 ID:g9MaWa8D0
>>46
set X to long version of (get info for Y)
set Z to (X) as text

で文字列にまでできました。

ありがとー
48名称未設定:2012/05/05(土) 00:06:43.61 ID:bgIwARbh0
10.6.8で見直してみたが()で括ってさえいればgetも要らなかったな

long version of (info for ~ )

てゆーかハナから文字列なんだけど、
変数に代入した上で更に文字列化する必要なんか無くない?
49名称未設定:2012/05/06(日) 20:58:46.36 ID:UAVvF0j70
>>48
質問前の勘違いを引きずってました。お恥ずかしい。

getは10.5.8でも不要でした。
連休明けに10.4.11でも検証してみます。
50名称未設定:2012/05/18(金) 16:05:10.17 ID:Rs0r9O8X0
携帯から送られたメールがmail.appで文字化けするので
mail.appのルールを使ってテキストエンコーディングを任意のものに変更したいと思いますが
AppleScriptはどのようなのを使えばいいのでしょうか?
どなたか教えていただけませんか?
51名称未設定:2012/05/18(金) 17:18:50.13 ID:7C41OlfS0
最近は例題スクリプト付属してない?
/Applications/AppleScript/Example Scripts/Mail Scripts/Rule Actions 下
同じものになるけど /Library/Scripts/Mail Scripts/Rule Actions 下
52名称未設定:2012/05/18(金) 17:34:01.70 ID:Rs0r9O8X0
>>51
レスどうも。
なんだか難しそうですね。
スクリプトに出てくる用語をぐぐって勉強してみようと思います。
ありがとうございました。
53名称未設定:2012/05/18(金) 22:15:46.03 ID:q561ikus0
あーここのところ冬眠してたけど、また復活しようかな。
つってもやりたいことは大体できるようになった。
すばらしきかなAppleScriptさまさま。
54 ◆.p//////YA :2012/05/20(日) 03:37:45.54 ID:ZNBu2mhM0
すみません、ググっても試行錯誤しても解決出来ないので質問失礼します。

やりたい事は非常に単純で、画面の操作ロックを掛けさせたいのです。
(WindowsでいうWin+Lに近い動作を、デスクトップ上に置いておきたい)

ググると、要はScreenSaverEngine.app叩けば良いですよと言われて
tellなりdo shell scriptなりが出てくるのですが、この方法でやると
ScreenSaverEngine.appが起動している最中(AppleScript起動直後とか)にマウスイベントが発生すると
正しくスクリーンセーバーが起動せず、正しく終了もせず、そのまま操作不能になってしまいます。

OSはLionです。
Lion特有の問題なのかもしれませんが、Terminalから呼ぼうがFinderから直で呼ぼうが同じ状態になるので
ScreenSaverEngineを叩くという方法そのものを変えないといけないかなと思いつつも、代替方法が見つからず。。

長文申し訳ありませんが、どなたか知恵をお貸しください。。。。。。。
55 ◆.p//////YA :2012/05/20(日) 03:44:29.24 ID:ZNBu2mhM0
ちなみに、ホットコーナー等から正規にスクリーンセーバー起動させた場合
起動中にマウス動かすと、起動せずそのまま終了します。
実現したいのはこの動作です。
(説明べたで申し訳ないです)
56 ◆.p//////YA :2012/05/20(日) 03:57:36.06 ID:ZNBu2mhM0
すみません、自己解決しました。
「スクリーンをロック」でもスクリーンセーバー起動するみたいなので
これで問題なく動いてくれました。
スレ汚しすみません(寝ます)

ttp://memogaki.soudesune.net/AppleScript.html
57名称未設定:2012/05/26(土) 16:35:40.43 ID:cmAlfSF60
えらい
58名称未設定:2012/05/28(月) 11:49:15.12 ID:/cX1sQDL0
javascriptでsafariから取得した値をapplescriptに渡すことってできないんでしょうか。
59名称未設定:2012/05/28(月) 13:44:39.24 ID:xfqolZed0
AppleScriptからdo JavaScriptでJavaScriptを実行するとか?
60名称未設定:2012/05/29(火) 15:57:50.81 ID:BAX/ctKd0
どうもありがとうございます。すみません自己解決しました。
61名称未設定:2012/05/31(木) 22:47:38.33 ID:c1R1WUiJ0
>>60
だからすべてとは言わんがほかの人がわかる程度に結果を書けよ。いや書いてください。
62名称未設定:2012/06/04(月) 22:09:57.91 ID:ZqA4kyks0
ものすごく基本的なことなんだけどなにやらわからないので教えてくれ。
Xcodeでインターフェイスつけてデータを加工するのだが、毎回毎回繰り返す。
そのとき、前の変数の値を引きずらないように初期化的な処理をするんだが、
どうするのがいいのかよくわからない。
普通の文字列とかなら
set a to ""
とかすればいいと思うんだけど、ファイルやフォルダなんかを保持する変数の場合
上と同様でいいんでしょうか? 上と同じことをすると変数の型が変わってしまうような。

それから、defaultつーかplistつーかにレコードって保持できるんでしょうか?
いまいちどうすればいいかわからない。

どなたかご回答を。
63名称未設定:2012/06/05(火) 00:44:38.25 ID:sSYeDNmf0
>>62
AppleScript の変数に型は無いよ。型を持っているのは値。 a に何入れても、そのときに入れた値の型がその変数の型

Cocoa-AppleScript なの?
レコードってのは
{ name:"Name", address:"Address", realname:"Real Name" }
のようなこと?
64名称未設定:2012/06/05(火) 08:59:50.54 ID:bQ/xXeu10
テキストファイルの文字コードを変更するAppleScriptってどんなコードになるのかな?
65名称未設定:2012/06/05(火) 09:07:26.93 ID:wX1wKXwrP
>>64
どんな離隔ションを求めているのか?w
てか、まずはググれカス。
66名称未設定:2012/06/05(火) 13:54:57.91 ID:XqXXt9Dj0
do shell scriptでiconv使っとけば
67名称未設定:2012/06/05(火) 15:09:39.48 ID:Fd8SIheo0
>>62
>set a to ""
初期化を明示したいなら
set a to null
>それから、defaultつーかplistつーかにレコードって保持できるんでしょうか?
http://www.latenightsw.com/freeware/PListTools/index.html
68名称未設定:2012/06/05(火) 17:47:47.43 ID:krNSqI8e0
>>67
nullでいいんだ。なんか気持ち悪くて避けてました。
ありがとうございます。
69名称未設定:2012/06/05(火) 20:44:11.98 ID:AGbHBYtc0
あるクラスのオブジェクトを指定するときにindexを使って以下のようなことができますが、
tell application "iTunes"
set aSong to track index 1 of current playlist
逆にある曲の参照番号を知りたいときはどのようにすればいいのでしょうか?
具体的には、以下のようなことがしたいです。
set aTrackNo to |aSongの番号|
set bTrackNo to |aTrackIDを加工|
play track index bTrackNo of current playlist
id of aSong は必ずしも表示順と一致しないので使えませんでした。

またiTunesでは、再生中のものとは異なるプレイリストを表示した状態だとpause中のnext trackが動作しないというバグ?があるようですが、GUIスクリプティング以外にこれをworkaroundする方法はあるでしょうか。
idを使う方法だとシャッフル時はうまくいきません。

長文になってしまいましたがご回答お待ちしております。
70名称未設定:2012/06/05(火) 21:37:15.74 ID:hBVqbp2b0
ちょっとやってみた

tell application "iTunes"
set theID to id of track 1 of current playlist
end tell
--ある曲が持つ固有の"ID"をtheIDに入れておく

tell application "iTunes"
set theList to id of tracks of current playlist
repeat with i from 1 to count of theList
if item i of theList is equal to theID then exit repeat
end repeat
i
end tell
--current playlistに含まれる曲のIDのリストを作り、そのリストの中でtheIDの位置を調べる

current playlistの並び順は、その時のiTunesでの表示順になっているようです。
71名称未設定:2012/06/05(火) 21:59:05.54 ID:sSYeDNmf0
>>69
>またiTunesでは、再生中のものとは異なるプレイリストを表示した状態
iTunes自体がそういうものだからじゃないの。普通に使っていても
current playlist に対してだから、current playlist にするために、play してすぐ pause するとか

tell application "iTunes"
set thePlaylist to playlist "Any playlist of any song"

try
if thePlaylist is not current playlist then
play thePlaylist
pause
end if
on error
play thePlaylist
pause
end try

next track
end tell

try - on error は current playlist が現在存在していない(iTunes起動直後とか)場合のお
72名称未設定:2012/06/05(火) 22:43:16.96 ID:AGbHBYtc0
ありがとうございます。

>>70
なるほど、こんなやり方ができるとは。懸案が解決しました。
ところで、より一般的に、あるオブジェクトがindex 何番で指定できるかを調べる命令は存在するのでしょうか?
命令 second_item for item in aList
-->2
のような感じで。
今回教えていただいた方法を元にハンドラを定義すれば実現できそうではありますが、標準でそういった命令があるのであれば。

>>71
申し訳ありません、言葉が足りませんでした。
通常iTunes起動後 1.曲をplay 2.pause 3.ほかのプレイリストをクリックして表示 するとウィンドウ上部がリンゴマークに戻り停止状態になりますが、1-3-2の順では結果が異なります。
この後(current playlistは変化していません)に次の曲へ移動したいのです。
たとえば、曲を再生中に別プレイリストをブラウジングしながらpause→フェードアウト処理→next track→playといった流れです。
どうもこれは仕様のようなので、現状思いつく策といえばnext track→pauseを連続で行うことくらいでしょうか……。
73名称未設定:2012/06/05(火) 23:03:18.49 ID:sSYeDNmf0
>>72
current playlist が現在見ている/表示している playlist ではないが、その current playlist 内での次の曲ってこと?
play
next track
(必要ならすぐpause)

よくわからないけど、play とすぐに pause を組み合わせればどうにでもなりそうだけど
74名称未設定:2012/06/05(火) 23:12:58.69 ID:D+mFhR+70
>>69
曲を取得した時のプレイリストとインデックスを求めるプレイリストが同じなら
index of aSong
で取得できそうだけど
75名称未設定:2012/06/05(火) 23:16:27.63 ID:AGbHBYtc0
>>73
そうそう、そうなんです。
すぐpauseだとたまに一瞬再生されてしまうのが気になって……。
仕方ないのかもしれませんね。

なんでこんなことをやっているかというと、曲送り時にフェードアウトを伴うような再生用スクリプトを自作して使っているのですが、音量ゼロに→pause→next track→playと処理しているためです。
76名称未設定:2012/06/05(火) 23:20:39.33 ID:AGbHBYtc0
>>74
うわ、本当ですね! いままで
index of aSong of current playlist
とよけいなof current playlistを附けていたためエラーが出てできませんでした。
こういう見落としはやっぱり人に訊くとすぐにわかりますね。
ありがとうございます。
77名称未設定:2012/06/07(木) 09:51:35.88 ID:FxRgFq0C0
ぬるぽ
78名称未設定:2012/06/07(木) 13:47:46.00 ID:9XStq4qti
>>64
AS内部では基本的にUTF-16BEだったかな
ファイルからread/writeする場合はas Unicode textでUTF-16BE、
as <<class utf8>>でUTF-8、何も付けなきゃShiftJIS
do shell script内ではUTF-8からiconvで好きな形に

>>68
missing valueってのもあるよ
79名称未設定:2012/06/08(金) 06:55:33.02 ID:IU2EO0IM0
>>77
say "がっ" using "Kyoko"
80名称未設定:2012/06/08(金) 22:16:19.05 ID:TiL0dD3K0
15組の値のペアがあり、その片方がさまざなま条件で決まる。
そのときのもう一方の値を変数に設定したい。
たとえば{AAA,あああ}でAAAが決まったときに変数にあああを
設定する、みたいな。


けっこう悩むのですが、みなさまならどうされます?
レコード使えば簡単かと思ったけど、意外にスマートでなかった。
ペアのリスト内容は固定の15組です。
81名称未設定:2012/06/08(金) 22:23:12.04 ID:TiL0dD3K0
ひとつずつif文連ねるのはちょっと避けたいです。
82名称未設定:2012/06/09(土) 00:04:10.69 ID:lxwNhAac0
条件をメソッドにしたスクリプトオブジェクトを条件の数だけ作って、
配列に突っ込んで、ループすれば?
スマートかどうか知らんけど。
83名称未設定:2012/06/09(土) 02:04:01.69 ID:1GlpDLd+0
スマートではないんだけど

set xxx to "AAA"
set theVal to "{AAA:¥"あああ¥", BBB:¥"いいい¥", CCC:¥"ううう¥"}"
set theScript to "get " & xxx & " of " & theVal as string
run script theScript
set yyy to result
84名称未設定:2012/06/09(土) 05:27:57.32 ID:d9qZIDQT0
AとBという対のリストならAのリストで一致した時のアイテム番号でBのリストの要素を指定するとか。
85名称未設定:2012/06/09(土) 10:34:54.11 ID:lKJh2sxr0
>>80
-- 対応する値を同じ順番で二つの変数へ入れる
set listA to {"a", "b", "c"}
set listB to {"あ", "い", "う"}

set theVal to "b" -- これが決まった値とする

set theNum to offset in (listA as text) of theVal
set theResult to item theNum of listB
return theResult

スクリプト書いてから84と一緒だということに気付いた
まあ、せっかくなので晒しとく
86名称未設定:2012/06/09(土) 11:08:11.27 ID:XtMAoxn/0
>>83
いや、それが俺はいちばんスマートだと思うんだけど、なぜかできない。
getとかas stringが決め手かな、、、、、と思ったけどtell application Finder内でやってるからかも。
というか、レコードは文字列としてsetせなあかんのかな? theScriptに設定するときにas stringするのと
なにが違うのか、、、、、。
とても勉強になりました。あとで試してみます。

で結局、いまのところ15個のレコードのリスト作ってrepeatで照合してる。
別のところでは>>85も使ってる。>>82は意味がわかりません。もうちょっとヒントを。

15個くらいじゃ速度なんてどれも変わらないかな?
87名称未設定:2012/06/09(土) 15:42:27.87 ID:lKJh2sxr0
83はバックスラッシュが円記号置き換えられているみたいだけど、ちゃんとバックスラッシュに直してる?
8883:2012/06/10(日) 00:34:07.70 ID:XkCDXu2e0
あ、コピペしたときに化けた…
¥は¥に直して

>>86
getやas string部分はなくてもたぶん動くよ。
レコードのキーはソースコードでしか指定できないので
キー部分を変数にしてソースコードとなる文字列を作成。
それをスクリプトとして実行。
なので2行目のレコード部分はただの文字列。
8983:2012/06/10(日) 00:34:59.13 ID:XkCDXu2e0
バックスラッシュ出せないんだ…
90名称未設定:2012/06/10(日) 02:54:27.21 ID:tHYBGSMb0
2chはShiftJISだからな
どうしでも区別したければ実体参照で
91名称未設定:2012/06/10(日) 14:12:43.89 ID:a9kh+tcS0
¥
92名称未設定:2012/06/12(火) 14:53:43.78 ID:0yjwZixYi
>>83の変形版というかrecordを実体で持つ場合

set theKey to "AAA"
set theRecord to {AAA:"あああ", BBB:"いいい", CCC:"ううう"}

run script "on run {theRecord}
|" & theKey & "| of theRecord
end run" with parameters {theRecord}

recordの持ち方が違うだけなので速度的には同等
パイプは念の為に書いてるけどこの例なら無くても動きます
93名称未設定:2012/06/12(火) 15:52:11.78 ID:0yjwZixYi
もいっちょ
殆ど一緒だけどちょっとだけ速い気がする

set theKey to "AAA"
set theRecord to {AAA:"あああ", BBB:"いいい", CCC:"ううう"}

keyOfRecord(theRecord) of (run script "on keyOfRecord(theRecord)
|" & theKey & "| of theRecord
end keyOfRecord
it")

とまぁ書いておいてなんだけど…

recordを使う方法は分量は短くなるけど、初見では何をやってるのか解り辛いかもね
2つのlistを使う方が内容的にはシンプル

でもって速度的な面でも結局listの方が速いんじゃないかなという気が;
いずれにしてもミリ秒以下の話だけども
94名称未設定:2012/06/12(火) 22:27:05.16 ID:7vTPOGrS0
もうレコードのキーを取り出すのはあきらめるというのはどうだろう。

set theRec to {{label1:"AAA",Label2:"あああ"},{label1:"BBB",Label2:"いいい"},{label1:"CCC",Label2:"ううう"}}
set theKey to "AAA"
repeat with i in theRec
if label1 of i = theKey then set theResult to label2 of i
end repeat

速度が早いかどうかは知りません。

ところでどなたかご存知なら。
フォルダtheFolderの中にあるファイルを取得する命令
set allFiles to every file of theFolder

これとほぼ同じことをevery file ofを使わずに実現するにはどうすればいいんでしょう。
do script shell cat POSIX path of theFolder←すんません。知識がなく適当です。
とか
call method 〜
とかそんな方法で。なぜか分からないのですが、特定のネットワーク上のフォルダについて
every file of を使うとなぜか固まり、まったく原因がつかめないため、違う方法を
試してみたいのです。どなたかヒントを。
95名称未設定:2012/06/12(火) 23:15:38.45 ID:t07gBZjG0
処理時間測定してみた。マシンは2GHz Core i7
素直なループ処理使う方が30倍速い。

(1) 0.65秒
set xxx to "CCC"
set theVal to "{AAA:¥"あああ¥", BBB:¥"いいい¥", CCC:¥"ううう¥"}"
repeat 1000 times
set theScript to "get " & xxx & " of " & theVal as string
run script theScript
set yyy to result
end repeat

(2) 0.022秒
on getIndex(aItem, aList)
set idx to 0
repeat with x in aList
set idx to idx + 1
if (contents of x is aItem) then return idx
end repeat
return 0
end getIndex

set listA to {"AAA", "BBB", "CCC"}
set listB to {"あああ", "いいい", "ううう"}
repeat 1000 times
set yyy to item getIndex("CCC", listA) of listB
end repeat
96名称未設定:2012/06/12(火) 23:28:46.48 ID:YtP1AwRH0
>>94
set theFiles to do shell script "cd " & quoted form of POSIX path of theFolder & " && /bin/ls -1 | while read item; do [ -f ¥"$item¥" ] && echo ¥"$item¥";done;exit 0"
set saveDelimitters to text item delimiters of AppleScript
set text item delimiters of AppleScript to return
set theFiles to text items of theFiles
set text item delimiters of AppleScript to saveDelimitters

¥ はバックスラッシュ
97名称未設定:2012/06/13(水) 02:56:43.06 ID:1z4pUs3m0
|はパイプではないと云々

それはそうとAppleScriptはもっと機能拡張してくれないかなあ
特にリスト系をね
98名称未設定:2012/06/13(水) 14:24:10.45 ID:7rJFza94i
>>97
おお、パイプは仕組みの名前であって、記号としては単に縦線でいいのか
素で知らなかったわ…お恥ずかしい限り
99名称未設定:2012/06/13(水) 23:16:39.28 ID:F+0oQic50
>>96
なんとか分かる部分だけ使って残りはapplescriptで書いて、get every file of 〜を置き換え、
同様にget name of 〜も
do shell script "ruby -e \"puts File::basename(" & (POSIX path of theFolder)'s quoted form & ")\""
にすべて置き換えてみたところ、2分15秒かかっていた処理が、1分15秒になりました。

考えて見たら、get every file of とかしたあともいろいろファイル操作しているのですが、
それもUNIXのコマンドのオプションで対応できそう置き換えてみる予定です。
とても勉強になりました。ありがとうございます。
100名称未設定:2012/06/16(土) 09:23:34.03 ID:hI8ntOWj0
この1年ほど我慢して使ってたんですが、教えてください。
GUIスクリプトでAcrobatProfessionalを操作しているのですが、
さる設定のときに設定のサブウインドウを出して、数値を入力します。
手動の場合は「数値」+returnで数値が確定してPDFのプレビューが変わるのですが、
GUIスクリプトでその欄のに数値を入れても変化なし。数値+returnも変化なしで
困ってます。
ウインドウ内で数値を設定して確定させるにはどうすればいいんでしょう。
具体的には出力プレビューのインキ総量をプレビューする際の数値の欄です。
101名称未設定:2012/06/18(月) 10:26:55.49 ID:gtDPOYVd0
AcrobatProfessionalとやらを使った事が無いので何とも言えないけど、l
まずは深呼吸をして>>1を読まれい
102名称未設定:2012/06/18(月) 19:07:01.61 ID:YMwEvm5b0
>>97
こんなのを使ってみてはどうでしょう?AppleScript のリストを機能拡張するスクリプトオブジェクトです。

http://www.script-factory.net/XModules/XList/index.html
10397:2012/06/18(月) 19:51:21.17 ID:6XB7BUHD0
>>102
おお、これはいいものですね。
しかもリファレンスも参照してくれるんだね。
情報感謝です
104名称未設定:2012/06/18(月) 21:26:33.57 ID:YMwEvm5b0
>>95
スクリプトオブジェクトで連想配列を提供するモジュールがあります。
XDict : http://www.script-factory.net/XModules/XDict/index.html

これを使えばさらに高速化するはず。
内部でのリスト処理が工夫されているからね。
105名称未設定:2012/06/23(土) 09:27:03.93 ID:Ye4Ru9zv0
なんかapplescriptのHelp消えてない?

http://docs.info.apple.com/jarticle.html?path=AppleScript/2.1/jp/as182.html
とか。
(applescript Disk でググると出る一番上のもの)

同様にほかの用語ヘルプ消えてるみたいだけど、試合終了?
106名称未設定:2012/06/23(土) 09:52:17.93 ID:kf1quHWF0
>>105
docs.info.apple.com が現在お亡くなり中みたいやね
107名称未設定:2012/06/23(土) 09:55:48.68 ID:kf1quHWF0
あ、いや、亡くなっていなくてなんか混乱中かな
108名称未設定:2012/06/25(月) 23:30:17.87 ID:08WWsjy10
ミラーサイト頼む
109名称未設定:2012/07/01(日) 01:07:00.76 ID:vl0cqZpt0
もうちょっと高速にならんかなぁ
処理に拘束されたくない
110名称未設定:2012/07/04(水) 02:20:26.65 ID:Lyk8Zhbf0
AppleScript自体の処理速度は割と速いと思う
遅いのは他のアプリケーションに処理をさせている時
つまり、ほとんどの処理が遅いだろと言われれば、まあその通りなんだが

俺は特に遅いところはシェルスクリプトとか他の言語で置き換えているよ
111名称未設定:2012/07/04(水) 21:51:29.51 ID:tJ5vyuWy0
Xcodeでapplescriptプログラミングするとき、TableViewで複数の
行を選んで削除すめるにはどうすればいいんだ?
1行だけ消すことはできるけど、複数行はできない。
いろいろググってはみるんだけど、うまく検索できない。
今からびゅんびゅん読んでみる。
112名称未設定:2012/07/05(木) 07:48:20.04 ID:Mk46A7OF0
なんでAutomatorとAppleScriptとVBAが一体にならんの?
113名称未設定:2012/07/05(木) 08:26:37.70 ID:zBQpL1J10
VBAとな?
114名称未設定:2012/07/05(木) 09:14:45.38 ID:Hh6ui2xs0
AutomatorとAppleScriptが一体ってAutomatorでAppleScript使えるから何を言っているのかわからないが、
AutomatorのAppleScriptエンジンっていままでのと別物だよなあ。なんでだろ
115名称未設定:2012/07/05(木) 10:03:09.37 ID:9E/rHgLv0
>>112
AppleがMSを買いたくないんだろうな。
116名称未設定:2012/07/06(金) 18:44:46.00 ID:LoN/GvHC0
>>111
複数行の選び方次第でできるよ

連続してる行なら
delete data rows X thru Y of data source Z

特定のセルの状態で検索するなら
delete (data rows whose content of data cell X is Y) of data source Z

一旦自力でリスト化して〜みたいなのは無理だね
--delete {data row X, data row Y} of data source Z
その場合はループさせて1回ずつ実行するしかない
repeat with aRow in {data row X, data row Y} of data source Z
delete aRow
end repeat
117名称未設定:2012/07/07(土) 13:03:56.47 ID:4JO1/J3+0
>>116
あーありがとー。なんとなく分かりますが、実際にプログラムを
動かしているときにmuitiple selectをオンにした場合、Shift+クリック
などでrowが複数選択できるようになると思うんだけど、それを
set aRows to selected row
delete aRows
などとしても消えるのは1行のみ。なんか違う概念が必要な気がするけど
わかんねーっすorz 全部消すことと1行消すことはできるのだが、、、、、、
118名称未設定:2012/07/08(日) 08:18:30.90 ID:28jLwfFq0
>>117
なるほど、実際に選んでいる行って事ね

今試せないんだけど、
delete selected row でもダメかな?
119名称未設定:2012/07/09(月) 09:44:39.23 ID:gxgsuixy0
do Script系の強化 頼む
120名称未設定:2012/07/09(月) 15:43:42.92 ID:hlo4YXgz0
>>118
出先にてすみませんが
applescript delete tableview multiple rows
でググると一番目の結果に答ありました。
リピート処理するみたいですね。お騒がせしました。
121名称未設定:2012/07/09(月) 17:20:36.61 ID:r7NfULU30
>>119
リスト操作の強化も
122名称未設定:2012/07/10(火) 03:53:49.58 ID:u0/TMXnA0
みんなスクリプト組めるように
国民の教化も必要だな
123名称未設定:2012/07/10(火) 10:23:54.31 ID:JyO7VxaQi
>>120
解決した様だけど折角なのでまとめておく

selected row 選択している中で最後に選んだ行番号
selected rows 選択している行番号のリスト
selected data row 選択している中で最後に選んだ行への参照
selected data rows 選択している行への参照のリスト

deleteに直接selected data rowを渡すと無反応
selected data rowsは選択状態が解除されるだけで削除されない
set selected rows to {}
set selected data rows to {}
実質的にこれらと同じ

なので複数行を削除するなら結局repeat使うしかない
repeat with anOrder in reverse of (get selected rows of tableView)
delete data row anOrder of data source of tableView
end repeat
もしくは
repeat with aRow in (get selected data rows of tableView)
delete aRow
end repeat
124名称未設定:2012/07/17(火) 14:22:45.86 ID:nMJuq4i50
なんかXcode上でコーディングするのがめんどくさくなってきた。
入力支援スクリプトとかないのかな?
探したけどみつかんねー
125名称未設定:2012/07/18(水) 23:46:46.54 ID:pb5VLfAM0
>>124
つくってくださいな
126名称未設定:2012/07/19(木) 22:12:37.87 ID:kBNLf+wHP
すみません。どうにもこうにもわかりません。
Xcode上で複数のスクリプトファイルを作ってプログラミングしているとき、
すべてのスクリプトファイルでグローバル変数を共有するにはどうすればいいんでしょう?
別のファイルにあるscriptなどをload script? できることはわかったんですが、
別のファイルのグローバル変数を持ち込むことができません。どなたかご助言を。
つか単純にグローバル変数にしたい変数を返すハンドラを作って、それを他のファイルで
読み込めばいいのかな。今回は別の方法で乗り切ったので他の方法を試す気がしないけど。
127名称未設定:2012/07/20(金) 06:52:08.63 ID:bjGGU0q30
スクリプトを1つのファイルにまとめた方が早くね?
128名称未設定:2012/07/20(金) 10:14:27.23 ID:dCbm6U/S0
>>127
まとめるとXcodeが不安定になって
頻繁に落ちて使い物にならない。
129名称未設定:2012/07/20(金) 12:21:59.21 ID:RVs/ID9h0
>>126
Studio Applicationの話をしてるのかな?
だったらこの辺を参照
How do I add user preferences to my application?
http://macscripter.net/viewtopic.php?id=24606
Variable Scope in Applescript and Applescript Studio
http://macscripter.net/viewtopic.php?id=24657
130名称未設定:2012/07/20(金) 19:25:40.58 ID:5tvw7fUs0
>>126
load scriptする側をA、される側をBとする

AとBに同じ名前のglobalがあった場合、
Bのハンドラを読んだ時点でAでの値がBにコピーされ、
Bのハンドラから抜けた所でBでの値がAにコピーされる

A側がpropertyの場合にも同じ事が起こるが、逆はなし
run scriptでも同様
131名称未設定:2012/07/22(日) 21:19:24.55 ID:9lpkn479P
ちょっと心配なんだけどさ、これから、applescriptって廃れて使えなくなるの?
applescript対応アプリを連携させながら、ちょこちょことした処理をするには必須
だと思うんだけど、最近はどんどんいろんなページが閉鎖されたりして、
今後、そのような用途はどうすればいいのかとちょっと不安なんだけど。
業務で使ってる自作アプリ、どうすりゃいいのかな、、これから。
132名称未設定:2012/07/22(日) 21:39:47.28 ID:Xzg1sMwx0
133名称未設定:2012/07/22(日) 21:46:06.71 ID:YETyrATc0
>>131
そんなの中の人にもわからんよ
134名称未設定:2012/07/26(木) 05:05:49.60 ID:fajQweQs0
どうせ他のスクリプトに繋げるんだから
Apple Scriptをスクリプトのオープンドックにして欲しいんだが
135名称未設定:2012/07/26(木) 23:03:30.87 ID:IpfeFEhdP
いやーいろいろ面白いね。この前自作のスクリプトで人からもらったメディアを自動コピー
してたらなぜか2個しかファイルは見えないのに、コピーしたらファイルが50個になってた。
いろいろ調べたら、そのメディアを初期化せずに使いまわししているみたいでゴミのような
不可視ファイルがコピーされた模様。POSIX pathで"/."を含むファイルを除外したらうまくいった。

それはそうと、TableViewにファイルのパスのリストを表示させておき、そのリストの1行を表示すると
image viewに表示させているのだが、リストからパスをクリックさせたときの反応が悪い。
ハンドラはselection changing 使ってるんだけど、さくさく反応させるにはとうすればいいのん?
136名称未設定:2012/07/30(月) 19:31:05.15 ID:eixgVwZH0
>>135
selection changedを使う
つか質問するならまず>>1ぐらい読んどけ

selection changedは何か変な動きすんのね
2回目以降の操作が突っかえるみたいな
137名称未設定:2012/07/30(月) 19:32:09.29 ID:eixgVwZH0
あーミスった
2つめはselection changingの間違い
138名称未設定:2012/07/31(火) 20:24:42.61 ID:3FbmcHoO0
>>137
ありがとー。ものすごく快適になったよ。
アップル謹製のサンプルがselection changingなのはものすごく疑問。
139名称未設定:2012/08/12(日) 15:18:56.06 ID:mthuHR8B0
質問です。

applescriptを使って、キーボード操作をシミュレートできるのでしょうか?
140名称未設定:2012/08/12(日) 15:56:32.47 ID:wqOFJUWi0
できるよ
141名称未設定:2012/08/13(月) 11:17:39.91 ID:qshbB8Ux0
クリックした場所を1秒間に16回連続クリックする高橋名人は作れますか?
142名称未設定:2012/08/13(月) 12:16:00.57 ID:qshbB8Ux0
すいません、今のどうでもいい書き込み無しで本気で聞きたいことができました。

環境設定の「フォーマット」で好きなフォントを選んでも、気がついたらリセットされます。
まだ2回目で、リセットされる条件は分かりません。
AppleScript エディタ、Macを再起動してもリセットされませんし、いつの間にかリセットされてます。
みなさんはフォントの設定がリセットされることはありませんか?

Mountain Lionで、AppleScript エディタのバージョンは2.5です。
143139:2012/08/14(火) 09:23:23.66 ID:m205qqOi0
>>140
レスありがとうございます。
144名称未設定:2012/08/14(火) 11:40:29.22 ID:DHd8svKD0
Onyx禁止
145名称未設定:2012/08/14(火) 15:10:54.34 ID:F+avXQbb0
>>142
Snow Leopardだと設定ファイルはこれ
~/Library/Preferences/com.apple.applescript.plist

バックアップを取っておいておかしくなったら元に戻して使ってる。というか未だ直ってないんだ。
146142:2012/08/14(火) 17:24:03.45 ID:w0wQVETJ0
>>144
Onyxは使っていません。
ちなみにMountain Lionはクリーンインストールしたばかりで変なものは入れてないので、AppleScript Editorの問題かと思います。

>>145
前から不具合があるのですね。
なるほど、そのファイルのコピーをとっておいて、設定がリセットされたらそれを置き換えるAppleScriptを書けば楽チンですね。

しかし何が原因なんでしょうね、いつリセットされてるのか全く分かりません。
メニューにあるフォントのとこなど怪しいのですが、全くいじってないですし。
リセットされるのは「環境設定」→「フォーマット」の設定だけのようです。
147142:2012/08/14(火) 17:28:40.93 ID:w0wQVETJ0
ちょっと間違えました。
>>146みたいな処理は常駐させないと出来ませんね。
まぁいいや。
148名称未設定:2012/08/15(水) 12:48:09.48 ID:3W5/+CtD0
しっかしAppleScriptの情報って時代遅れの古いのばっかだな。
誰か今の環境に合わせた新しい情報まとめ作ってくれよ。
149名称未設定:2012/08/15(水) 14:04:06.59 ID:CX0Bq0eD0
言い出しっぺの法則
…は、兎も角としても

Leopard辺りからさほど変わってないしな
150名称未設定:2012/08/15(水) 14:07:32.27 ID:8F+aWjaJ0
古い情報を除外したければ
「AppleScript -掌」
で検索するというのはどうだろう
151名称未設定:2012/08/15(水) 18:53:45.02 ID:3W5/+CtD0
Leopard辺りならまだいいよ
掌田さんの本も古いの多いけどまぁ最後に出たの2003年だしまだいい
ていうか、その、およそ10年前の本がAppleScriptの本としては最新なんだよな...

深く知ろうとするとすぐOSX以前の古文書を読まなきゃいけないのが辛い
そんで書いてあること試して、エラー出ても自分が間違えたのか、環境が変わったせいなのか、そもそもその文自体が間違ってるのか判断つかない

グチっただけなので言い出しっぺの法則は勘弁して
152名称未設定:2012/08/15(水) 20:28:18.60 ID:K5u11JZu0
>エラー出ても自分が間違えたのか、環境が変わったせいなのか、そもそもその文自体が間違ってるのか判断つかない
よくわかってんじゃんw
基本的に机上が通じないトライアンドエラーが一番効率的な言語実装なんだから、その感じでやってけばいんじゃね?
153名称未設定:2012/08/16(木) 00:19:31.29 ID:I7NzCwhJ0
GUI Scriptingで仕事してる身だけど書籍の類の情報は無いに等しいので、
基本1行単位でトライ&エラーの繰り返しだな
154名称未設定:2012/08/16(木) 01:15:13.41 ID:QiaLkPuo0
もうちょっと変数型の処理とかがマシだったらいいんだけどねえ
現状だとどうでもいいところでエラー出してくるからトライアンドエラーの労力も倍増だよ
155名称未設定:2012/08/16(木) 01:25:47.29 ID:OP/uNk+10
ちょっと具体的に言ってくれたらみんなで対応を考えたりもできるのに
愚痴ばっかりじゃどうしようもないんじゃね?

俺的にいやなのは
open location
open file
なんかは処理を待たないとならないんだけど
終わったことを確かめるルーチンをいちいち書くのはめんどくさいし
delay 3とかだと遅すぎたり足りなかったりすること
156名称未設定:2012/08/16(木) 01:52:19.03 ID:dJCkSpLv0
open locationで読み込みが終わったか確認したいなら
do JavaScript "document.readyState" in document 1
で確かめればいいんじゃないかな。Chromeならloadingってのも使えるよ
157名称未設定:2012/08/16(木) 07:45:44.63 ID:djwwnD/g0
>>153
UIをシミュレートする操作は元々その場凌ぎだよ。
AppleScriptに元からあった機能じゃないし、アプリ側のちょっとしたUI変更で
動かなくなる。本来AppleScriptはAEOMに基づいたモデル操作を行うための言語。
>>154
具体的にエラーになる例をどうぞ。
それに対しあーだこーだ言うのがこのスレです。
158名称未設定:2012/08/16(木) 20:05:32.07 ID:GSRej/Fz0
>>149
Leopard時代からほとんど変わってないって・・・。
つまり、全く進化してないの?何年も経ってるのに?
Objective-Cにはいくつも新しい機能が追加されてるのに?

てか、Leopard辺りからってどういうこと?
Leopardのときすごい変わったの?
159名称未設定:2012/08/16(木) 21:07:55.92 ID:wpGkApxT0
変化がわからなければ変化がわからないのだから、どうでもいいんじゃないの
160名称未設定:2012/08/16(木) 21:38:59.74 ID:GSRej/Fz0
変化が分からないも何も、最近始めたばかりなので昔のことは知りません。
161名称未設定:2012/08/17(金) 00:05:07.14 ID:+w+gtIvh0
自分が使うだけなら「動けばいい」で済むけど、頼まれものなんかは色々と面倒くさい。
エラーチェックは真面目にしなきゃいけないし、こっちで再現しない不具合とか頭を抱える。
相手がシステムを無闇にいじってたのが原因だったことも。
162名称未設定:2012/08/17(金) 00:11:12.50 ID:XtvXuCYC0
>>158
Release Notes見れ。
10.5でtextが全てUnicodeになったのが最大の変更で、それに比べれば他の変更は些細な物。
http://developer.apple.com/library/mac/#releasenotes/AppleScript/RN-AppleScript/Introduction/Introduction.html
163名称未設定:2012/08/17(金) 00:56:53.57 ID:L8Pheu760
>>157
アプリ側のちょっとしたUI変更程度には影響を受けない、
または少変更で追随できる様に作っておくんだよ
その場しのぎというのは全くもってその通りだけどね

>>158
13年前の絶版リファレンス本が未だに役立つぐらい変化が少ないんだもの

Leopardでは>>162のリリース通りで大きく変わったとはいえないけど、
Snow Leopard以降の変化にくらべれば若干多いかという程度
164名称未設定:2012/08/17(金) 18:05:59.38 ID:yQhRGYgE0
どんどん更新されると、それはそれで不便なんだけどね。
165名称未設定:2012/08/17(金) 19:05:00.98 ID:sEBNxyjm0
再帰処理を練習してみたYO( ´∀`)
http://pastebin.com/grjBj3iP

UI Elementが含んでいるUI Elementsをchoose from listで再帰的に表示するの
アプリケーションのどこが補助装置で操作可能なのか知りたかったから作ったんだけど、ボタンの名前とか分からないし結局あんまり役に立たないの
166名称未設定:2012/08/18(土) 21:40:21.78 ID:XPMsaQQO0
ぬるぽ
167名称未設定:2012/08/18(土) 22:59:14.40 ID:1Z85bj9s0
ぬるぽ
168名称未設定:2012/08/19(日) 01:51:20.55 ID:J9yEHOOh0
ぬるぽ
169名称未設定:2012/08/19(日) 12:17:06.32 ID:MeMp7MUN0
質問です。
applescriptの勉強をしたいのですが、市販の書籍は古いバージョン対応のものばかりです。
古いバージョン対応の書籍で勉強しても、
最新バージョンでapplescriptを使えるようになるのでしょうか?
170名称未設定:2012/08/19(日) 12:48:49.82 ID:bwiu6g3P0
元の知識がゼロなら、最低限の情報は得られるかもしれないけど、
基本的な文法はネットだけでも勉強できるような…。

AppleScriptって、文法よりは、「どのアプリで何をしたいか」が重要で、
その書籍が自分の動かしたい「今のアプリ」を扱ってなければ、
大して役に立たない気がする。
アプリごとに使える命令が変わってくるから。
(どんな命令が使えるかは、スクリプトエディタのライブラリにアプリを登録すれば見れる)

Finder関係も、OS9→OS Xで結構変わってる部分があるし、
ネット上のサンプルスクリプトを改造しながら覚えていくのが
今は普通なんじゃないかな。
171名称未設定:2012/08/19(日) 13:18:53.21 ID:aTXczDVJ0
勉強というのが仕組みというか基礎的(基本的という意味ではない)なことなのであれば本も選択肢としていいと思う
何かやりたいことがあってそれのためなら上の人も書いてるがネットで十分だ
172名称未設定:2012/08/19(日) 14:31:56.97 ID:J9yEHOOh0
AppleScriptってのはな、古い情報を大量に読んで新しい環境でも使えるものを抽出して
普通の言語より何回も失敗しながら体に刻み込む根性が必要な言語なんだよ
もっといいスクリプト言語はたくさんあるし、Macを操作すること以外に学ぶ意味はないからMacへの愛が試されてるんだよ
173名称未設定:2012/08/19(日) 15:43:01.75 ID:m07moEoI0
ちゃんとしたドキュメントあるんだから、まず読め。
AppleScript Overview
http://developer.apple.com/library/mac/#documentation/applescript/conceptual/AppleScriptX/AppleScriptX.html
AppleScript Language Guide
http://developer.apple.com/library/mac/#documentation/applescript/conceptual/applescriptlangguide/introduction/ASLR_intro.html
AppleScript Release Notes
http://developer.apple.com/library/mac/#releasenotes/AppleScript/RN-AppleScript/Introduction/Introduction.html

>>170
その通り。何ができるかはAppleScript言語側で決まってるんじゃなくて、アプリや
OSAX側の機能で決まる。それを記述してるのが各アプリやOSAXのディクショナリ。
アプリ以外にもshellやAutomatorとも連携取れるから、それらの機能も取り込める。
174名称未設定:2012/08/19(日) 16:17:34.60 ID:J9yEHOOh0
英語読めるなら障壁なんて無いんだけどな...Appleのドキュメント読めばいいだけだし
いかんせん日本語の情報が少なすぎるわけで
情報が古いって嘆いてる日本人に英語のドキュメント読めってのはひどいですね
もっとやれ
175名称未設定:2012/08/19(日) 16:37:11.07 ID:XbANaOhk0
日本語AppleScript超おすすめ

ごめん嘘
176名称未設定:2012/08/19(日) 17:45:05.72 ID:lQHwFJpX0
>>175
一時、日本語OSの標準が日本語AppleScriptになってた事があったが、とにかく面倒で困った。
やはりプログラミングのキーワードは英語の方がわかりやすい。
説明は、日本語のほうがわかりやすいのは言うまでもないけど。
177名称未設定:2012/08/19(日) 20:45:38.55 ID:J9yEHOOh0
やっぱりそんな大昔からAppleScript使ってるベテランばっかりなんだこのスレ
178名称未設定:2012/08/19(日) 22:17:19.37 ID:3oQybz2r0
ぴゅう太の頃から使ってるからな
179169:2012/08/20(月) 10:47:28.44 ID:22RoPjY00
>>170-178
レスありがとうございます。

「辞書」アプリのラッパーアプリを作って、英単語の検索履歴をファイルに記録したいのですが…
180名称未設定:2012/08/20(月) 10:53:48.07 ID:tLONAurQ0
辞書アプリはAppleScript対応ではない(≠操作できない)ようだが、
そのくらいなら不可能ではないと思う、がんばれ
181名称未設定:2012/08/20(月) 14:57:05.05 ID:73KnvJq/0
>>179
AppleScriptは、「スクリプトでアプリを操作する」ためのもので、
元のアプリに無い機能を追加するのに使うのは無理があると思う…。

しかも辞書.appはAppleScript非対応のアプリだから、
操作するにはシステムイベントっていう、UI操作をシミュレートする機能を使って
無理やりやるしかない。

履歴をファイルに記録するのは、できなくはないけど、
そのためにAppleScriptを一から勉強するのは時間の無駄かと…。
検索履歴付きの有料辞書アプリを買った方が早い。

それでもやるなら…。
入力フォームをAppleScriptで出して、入力内容をテキストエディタに
送ると同時に、辞書.appの入力欄にコピペして検索、
みたいな無様な形になるんじゃないかな…。
182名称未設定:2012/08/20(月) 15:33:48.39 ID:ikDz+Hjr0
/Library/Dictionaries/
にある辞書ファイルのパッケージの内容を表示して読み込むってのは・・・無理か
見てみたらテキストが書き込んであるのはバイナリっぽいし

でも初めて見たけど画像がそのまま入ってて楽しいね
183名称未設定:2012/08/20(月) 16:16:51.25 ID:3RIEiArc0
辞書.appでの検索ならopen locationという手もあるよ。
open location "dict://" & URLエンコード済み検索語句
184179=169:2012/08/21(火) 09:09:47.31 ID:KR+jATdS0
>>180-183
レスありがとうございます。
で、applescript全く知らないのですが、どうやって勉強したら良いのでしょうか?
検索履歴の中に検索単語の出現媒体も入れたいので
>>181の「無様な形」しかないかも知れませんが…
185名称未設定:2012/08/21(火) 10:11:11.45 ID:guxgiAji0
>>1
186名称未設定:2012/08/27(月) 15:59:51.21 ID:vKd5wiBw0
Adobe Illustratorの、「Collect for Output」をディレクトリ決め打ちにしたいけど、
デスクトップとかの参照がよくわかりません。

要は書き出し先を ~/Desktop/Collect4outpt に書き換えたいだけなんです..


と、>>13さんの書き込みを見て解決しました。
時空を超えて感謝感謝です
187名称未設定:2012/08/27(月) 22:07:03.37 ID:vKd5wiBw0
誰かの役に立つかもしれないので覚書メモ

「AI付属の「Collect for Output」スクリプトの、
 書き出し先を手動選択でなく~Desktop/Collect4/<filename>+<"_collect">/ にする」
該当箇所を以下のように書き換える:

on collectCurrentDoc()
tell application "Finder"
activate
set homePath to POSIX path of (home as alias)
set aPath to homePath & "Desktop/collect4"
set myFolder to POSIX file aPath as string
end tell
try
tell application "Adobe Illustrator"
set docRef to document 1
set mydocname to name of docRef

copy mydocname to CollectName
set myFolder to myFolder & CollectName & "_Collect:"
set createPath to POSIX path of myFolder
set myCommand to "mkdir -p " & quoted form of createPath
do shell script myCommand

save docRef in file (myFolder & mydocname)
188名称未設定:2012/08/27(月) 22:07:25.48 ID:vKd5wiBw0
タブが全部落ちてしまった...
189名称未設定:2012/08/28(火) 01:19:15.73 ID:i9U75a3F0
>>186-188
タブ落ちは2chの仕様上しょうがない
190名称未設定:2012/08/28(火) 01:31:43.22 ID:a3m7EdIF0
まあタブあるとコピペじゃ動かなかったりするし
これでいいんじゃね?おつかれ
191名称未設定:2012/08/28(火) 07:15:11.07 ID:hMcrulGn0
datにはしっかり残ってるから直読みすればおk
192名称未設定:2012/08/29(水) 01:47:02.38 ID:0eEgW68Y0
>>179
コマンドラインから辞書を引けるコマンド作っている人がいるから、
これ使ってdo shell scriptしたら?
ttps://github.com/false-git/dict
193名称未設定:2012/08/29(水) 06:02:15.93 ID:Ol1nQMoc0
AppleScriptでいろいろやろうとすると結局はシェルスクリプトも覚えなくちゃならないよね
特にネット関連
AppleScriptだけじゃダウンロードすらできない
194名称未設定:2012/08/29(水) 11:55:02.64 ID:MLg5Dajl0
つかAppleScriptってそういうもんだし
195名称未設定:2012/08/29(水) 13:02:23.90 ID:+uYLsanb0
だよねえ
元々必要だったらOSAX作ってだけど、シェルスクリプト呼べるようになってからそれすらほとんど必要無くなってしまったという
196名称未設定:2012/08/29(水) 13:49:28.82 ID:boM1/3nc0
まあ、どう捉えるかだな
結局シェルスクリプトのほうが歴史も汎用性もあるから
勉強になっていいと思うが
197名称未設定:2012/08/29(水) 16:51:59.28 ID:dzmIr9kX0
単なるコマンドをシェルスクリプトと勘違いしてね?
比較対象にする時点でAppleScriptがよくわかってないと思うけど、
多分シェルスクリプトもよくわかってない

シェルスクリプトと比較するならPerlとかだろ
Unix一般のCUI体系をシェルスクリプトとはいわんよ
198名称未設定:2012/08/29(水) 17:56:51.76 ID:+uYLsanb0
do shell script
だから、別に今の話題ではどうでもいいような
199名称未設定:2012/08/29(水) 18:07:56.56 ID:7uZHla1D0
>>186
path toでもお決まりのフォルダ位置は得られる。
POSIX path of (path to "cusr") -- home
POSIX path of (path to "desk") -- Desktop
POSIX path of (path to "down") -- Downloads
POSIX path of (path to "docs") -- Documents
POSIX path of (path to "pdoc") -- Pictures
POSIX path of (path to "mdoc") -- Movies
POSIX path of (path to <<data TEXTB5646F63>>) -- Music
POSIX path of (path to "spot") -- Saved Searches
POSIX path of (path to "trsh") -- Trash
POSIX path of (path to "font" from user domain) -- Fonts
POSIX path of (path to "pref" from user domain) -- Preferences
POSIX path of (path to "asup" from user domain) -- Application Support
200名称未設定:2012/08/29(水) 18:37:41.15 ID:Ol1nQMoc0
>>197
揚げ足とるようだが一つのコマンドでもシェルスクリプトとして書けばシェルスクリプトだし
特に、AppleScriptからコマンド使うならシェルスクリプトしかないでしょう
いちいちAppleScriptからターミナル起動する意味はあんまりない

一応UNIXの基本やシェルスクリプトは知ってるよ。君の書き方は何かカチンと来るね
比較対象がPerlってのもよく分からない
201名称未設定:2012/08/29(水) 18:46:56.17 ID:Fd37oWvl0
197の反論予想
「そもそもdo shell scriptなどというコマンド名が意味不明なのである。
 Appleは何もわかっていない、使う奴もわかっていない、俺は天才だけど。」
202名称未設定:2012/08/29(水) 18:53:26.83 ID:7uZHla1D0
使うのはどうせone-linerでしょ。
調べるのもshellの文法じゃなくて、コマンドのパラメータの方。
on download(aURL, aPath)
do shell script "curl -L " & aURL & " -o " & quoted form of aPath
end download

set aURL to "http://www.nasa.gov/images/content/616888main_pia15280-43_800-600.jpg"
set aPath to (POSIX path of (path to "down")) & "mars_rovers.jpg"
download(aURL, aPath)
tell application "Finder" to reveal my POSIX file aPath
203名称未設定:2012/08/29(水) 18:59:19.12 ID:boM1/3nc0
ネットでハウツー読んだのを披露してみたかったんじゃねえの
こっちに自信があればいちいち相手にする必要はない

一応言っておくと例えばAppleScriptをサービスとして走らせると便利だからその中で自作シェルスクリプト呼んで組み合わせたりするわけだけど
そうやっていろんなツールを組み合わせて使うためのwrapperとして、AppleScriptもシェルスクリプトも同列に語られるわけだよね
204名称未設定:2012/08/29(水) 19:03:04.52 ID:9Xov/X/A0
デバッグは別にして、
シェルスクリプトに
osascript で AppleScript を
here document とかで
埋め込むのもそこそこ
使いやすいと思う。
205名称未設定:2012/08/29(水) 19:15:41.79 ID:dzmIr9kX0
反論ツーかwww
そもそもシェルスクリプトじゃダウンロードすら出来ないんだがw

自信www
お前らこそ変な自信持つなよw
ホントしょうがねー奴の集まりだなw

>>200
>特に、AppleScriptからコマンド使うならシェルスクリプトしかないでしょう
>いちいちAppleScriptからターミナル起動する意味はあんまりない
do shell script "/usr/bin/curl"
これはシェルスクリプトでもなんでもないじゃんw
まあ>202が書いてるけど
揚げ足取る以前に理解してないだろw
206名称未設定:2012/08/29(水) 19:19:32.20 ID:+uYLsanb0
だねえ。それこそ>>199なのをとかちょっとしたのでも使えるしね
207名称未設定:2012/08/29(水) 19:22:03.61 ID:+uYLsanb0
>>206>>204

>>205
うん、お前は人よりも賢い賢い、ID: dzmIr9kX0
賢いお前にはここは場違いだと思うよw
208名称未設定:2012/08/29(水) 19:24:01.20 ID:MLg5Dajl0
間違い指摘したらその扱いかw
お前も立派なカスだったんだな、残念
209名称未設定:2012/08/29(水) 19:27:30.33 ID:+uYLsanb0
ん?んんーー??w
210名称未設定:2012/08/29(水) 19:28:09.06 ID:Ol1nQMoc0
ごめんめんどくさい奴の相手しちゃったね・・・
スルーすれば良かった
211名称未設定:2012/08/29(水) 19:30:00.55 ID:EipBq5mI0
>>209
VPNで仕事してるんでな。IDはころころ変わるんだよ、こんな風に
212名称未設定:2012/08/29(水) 19:32:58.25 ID:+uYLsanb0
>そもそもシェルスクリプトじゃダウンロード
イミフ
>do shell script "/usr/bin/curl"
サンプルにしてもそれは無いだろうw
賢い人の考えることは愚かな俺にはわからんw

そもそも do shell script の "" 内をまた勉強するのがちょっと面倒ねってことだけだろう
do shell script てのだからシェルスクリプトって言っているだけで、その内容が制御文をいろいろ使ったシェルスクリプトかどうかなんてどうでもいい話しなのに、「俺はシェルスクリプトを知っている」ってのを自慢したくてしたくてたまらないとしか愚かな俺にはわからない

>>211
ふーんw
213名称未設定:2012/08/29(水) 19:37:07.92 ID:MLg5Dajl0
ID:boM1/3nc0(2)が
>>196
>歴史も汎用性もある
って書いてるがコマンド呼び出すだけには、たいした歴史も汎用性も無い
俺は歴史と汎用性があるシェルスクリプトの事を語っただけだ
しかしこの程度で自慢とかどんだけ低レベルなんだよ、お前w
214名称未設定:2012/08/29(水) 19:43:04.71 ID:+uYLsanb0
Unixコマンドには歴史も汎用性もあるだろうに。賢い人の狭量さはわからんなあw
また、VPN切り替えたのかw
215名称未設定:2012/08/29(水) 19:46:52.04 ID:MLg5Dajl0
>>214
>Unixコマンドには歴史も汎用性もあるだろうに。賢い人の狭量さはわからんなあw
これは無い。
それぞれ環境が違う中で入ってるコマンドの汎用性なんか信じてたら、まともな仕事出来ないだろw
216名称未設定:2012/08/29(水) 19:48:55.53 ID:+uYLsanb0
なるほど
俺はパイプ使って処理いろいろできるのは汎用性、tailとかsedとかたくさんのもろもろは歴史があると思うんだけど、賢い人はやっぱ使い方が違うんだなw
217名称未設定:2012/08/29(水) 19:52:32.59 ID:MLg5Dajl0
>>216
パイプはシェル。お前はコマンドとシェルの区別がついてないのはわかったw
何故shなのか?歴史と汎用性があるのはbashやその他シェルスクリプトでは無いのかがわからんのだろうな
218名称未設定:2012/08/29(水) 20:01:55.70 ID:+uYLsanb0
パイプから入力できるかどうかはコマンド(のプログラミング)による。まあ入力はstdin、出力はstdoutにしとけばいいんだけど
パイプで繋げられるようにプログラミンされているコマンドが多いのがUnixらしだだと思うけど

>何故shなのか
やっぱり自慢したいだけじゃん。何をいまさらと思っているのは俺だけじゃないとおもうぞw
219名称未設定:2012/08/29(水) 20:03:19.10 ID:MLg5Dajl0
>>218
俺だっていいたくねえよ、それこそ今更
お前がパイプとかアホなこと言い出すからだろが
220名称未設定:2012/08/29(水) 20:06:12.04 ID:+uYLsanb0
パイプを使ってコマンドを繋げていろいろ成形できるのがUnixの世界の汎用性ってことだけど
人を小馬鹿にするために書いた文を、人のせいにするのかあ。やるなw
221名称未設定:2012/08/29(水) 20:09:48.42 ID:MLg5Dajl0
何となくわかって来たような気がする。
シェル自体がわかってないのか?シェルが無い状態とかがわからないのか?
いや小馬鹿じゃなくて大バカだろ。この程度で歴史と汎用性に乗っかるなんて
222名称未設定:2012/08/29(水) 20:11:36.17 ID:H6O0wbKG0
実行権限付けたテキストファイルだろうがワンライナーだろうがヒアドキュメントだろうが、
AppleScriptで文字列をdo shell scriptに渡そうが、シェルで実行できる内容があらかじめ羅列されたものならそれだけでシェルスクリプトだよ
ただの普通名詞

だから>>205の挙げてるよくわからない例も、意味があるかどうかは置いといてシェルスクリプトには違いない
223名称未設定:2012/08/29(水) 20:17:56.74 ID:boM1/3nc0
まさかこうなるとはな……不毛にもほどがある
別にお互い相手が正しく理解してようがいるまいがどーでもいいんだから
相手の知識を量る意味も、諭す意味もないだろ?
224名称未設定:2012/08/29(水) 20:18:40.16 ID:+uYLsanb0
>>221
>シェルが無い状態
この話題で何を話しを膨らませているんだかw

いや大馬鹿でもいいよ。言っているでしょ、お前は賢い、俺は愚かだとw
よいシメになったな。おもろかったよ。ありがとう
225名称未設定:2012/08/29(水) 20:19:26.80 ID:+uYLsanb0
>>223
うん、すまんかった。ちょっとおもろかったから図に乗った。すまん
226名称未設定:2012/08/29(水) 20:21:44.52 ID:MLg5Dajl0
>>223
>203
お前が無意味な煽りでのっかったんだろーが。
ちょっと上から風にいわれると、すぐ逆切れして人を煽る、そのくせ今更だなw
227名称未設定:2012/08/29(水) 20:37:47.15 ID:27IdV/+g0
FreeBSD-users-jpは「レスありがとうございます」と書いただけで3日間フレームの嵐が吹くのでQandAに注意書きがある

http://d.hatena.ne.jp/KoshianX/20091023/1256295713
228名称未設定:2012/08/29(水) 20:40:38.63 ID:boM1/3nc0
>>226
「相手にする必要はない」と煽ったのは正直すまんかった
が「ちょっと上から風に」言うのはヤメテクレ
229名称未設定:2012/09/06(木) 11:36:12.93 ID:3/vBW/W/0
AppleScriptがかなり役に立ったとか、AppleScriptがなければ即死だったってことある?
230名称未設定:2012/09/06(木) 11:40:46.70 ID:uWveQ2vS0
役に立たなければわざわざ使わない。
231名称未設定:2012/09/06(木) 13:24:35.17 ID:S+KDuhbT0
即死だったってことはないかな。なきゃないでなんとかしてたとは思うからね。
でも、あるおかげでその「なんとか」がめちゃくちゃ楽になった。
232名称未設定:2012/09/07(金) 08:26:17.21 ID:A8jc37E50
即死回避って状況がちょっと思いつかないw
日常がちょっとだけ楽になる、って方が大きいかなあ

家帰ったら、Mail・Bathyscaphe立ち上げて新着読み込みさせつつ
巡回してるWebサイト7〜8コをSafariで一気に開く・・・
的なことがアプレット1つ立ち上げただけでおkなのは、ものぐさな
自分にはすんげえ重宝
233名称未設定:2012/09/07(金) 09:29:15.85 ID:mjcdocV40
>>232
よくわかる
複雑なことができてうれしいのはもちろん、
そういうランチャー+α機能付きみたいなのが地味に効く
234名称未設定:2012/09/07(金) 10:05:28.31 ID:Q3AIP0d+0
iTunesのタグ編集機能が貧弱だから、ちょこちょこと編集機能を書いたり集めたりしてたら、
iTunesでタグ編集アプリ並みの編集が出来るようになった。
235名称未設定:2012/09/07(金) 10:32:03.07 ID:mjcdocV40
>>234
公開したらみんな幸せになれるかもよ

おれもタグ編集ではないが、自分用に書いて膨大になった再生関連のスクリプト(フェードさせるとか)をブログでも開設して公開しようかと思ってる
236名称未設定:2012/09/12(水) 21:03:18.86 ID:fbOA0tSA0
Xcode使ってプログラム組んでいるんだが、原因不明のトラブルに悩まされてる。

・データチェック、ファイル名変換、印刷など

・ドロップレットにそのファイルを投げる→ドロップレットが処理→フォルダアクション

終了

という流れで動かしているのだが、ドロップレットの処理が途中でハングしてしまうことがある。
delayをそこかしこに入れて試しているが改善しない。
tell application "Finder"
open theFile using 〜(ドロップレット)
end tell
的な処理ってうまくコントロールできないんでしょうか。
ドロップレットのエラーを疑って某アドビに連絡したら「サポート外です。これ以上は有料です」
とか言われてしまったorz もうアドビのソフトなんて嫌いだ!
237名称未設定:2012/09/12(水) 22:51:11.07 ID:YRJx8AHd0
>これ以上は有料です
出会い系サイトのような巧妙な手口だな。
238名称未設定:2012/09/13(木) 01:16:46.17 ID:mT0PFh6p0
>>236
Adobeがどこに関係してるのか分からないけど
フォルダアクションはファイルのコピーが終わる前に発動したり
フォルダアクション実行中にファイル追加されると処理しなかったりするから
その辺りの可能性もあるんじゃないk?
239名称未設定:2012/09/13(木) 04:24:01.70 ID:3E5NQOyn0
>>236
・delayじゃなくて、UI Elementが存在するかどうかで終了判定
・tell Finder to openの代わりにdo shell script "open -a..."
試してみれ
240名称未設定:2012/09/13(木) 20:43:12.19 ID:VPsgu9QY0
ドロップレットの処理が「途中で」止まるんだとしたら、
呼び出すところにゃ何も関係無いんじゃねーの

どっちの方法でも普通にドロップする場合と違って引数は1つしか処理できないみたいではあるが
241236:2012/09/13(木) 22:16:11.01 ID:mJ0MoTTz0
お返事いただいた方ありがとうございます。
あまり書きすぎると恥ずかしいので詳しくは書けないのですが、
ドロップレットにファイルを投げると処理自体は終了し、
その結果フォルダアクションが働きいろいろ処理される。ここまでは
いいのですが、ドロップレットのウインドウが閉じることもできず
そのアドビのアプリを終了しないと元に戻らなくなってしまうのです。
そのドロップレット、ちょっと設定を変えるともっとひどいエラーに
なり、アメリカのアドビのフォーラムでも問題になっているのに
解決策は出てこないまま。どう考えてもアドビのアプリのバグだと
思うんだけど、「サポートは有料です」なんだって。あほらしいよ。
それから問題に再現性がない。同じデータでもエラーになったり
ならなかったりする。今日は50ファイルくらい処理して1回もなかったが、
なる時はなるらしい。もう本当に訳わからん。
>>238->>239の方のアドバイスを参考に明日も頑張ってみます。
242名称未設定:2012/09/13(木) 22:56:08.19 ID:3E5NQOyn0
>>241
もうちょっと具体的に何やってるか書かないとこれ以上アドバイスのしようがないな
243名称未設定:2012/09/13(木) 23:17:31.20 ID:etFzQyH60
かなりさがってるので上げとく
244名称未設定:2012/09/14(金) 02:59:33.16 ID:A4VRorak0
ドロップレットがAdobe製かつ実行専用なら何もできる事は無いし、
自作或いは編集可能なら内容見ない事には始まらん
245名称未設定:2012/09/14(金) 19:41:53.02 ID:ojEbrDUC0
>>241
そういやこれとは関係ないよな?

お仕事メモ帳 [Illustrator][AppleScript]テキストのアウトライン
http://macneko.blog77.fc2.com/blog-entry-165.html
246sage:2012/09/17(月) 13:37:45.84 ID:svlwv1FR0

AppleScriptを使用して、定期的にDDNS(Dynamic Do!)のIPアドレス更新をやりたいのですが、うまく動いてくれません。。

---- ソース ---------------------------------------------

set str_Domain to [ドメイン名]
set str_Pass to [パスワード]

on idle
do shell script "\"http://free.ddo.jp/dnsupdate.php?dn=" & str_Domain & "&pw= " & str_Pass & "\""
return 3600
end idle

------------------------------------------------------

なにか間違っている個所がございますでしょうか??


247sage:2012/09/17(月) 13:39:14.55 ID:svlwv1FR0
すみません訂正です。 curlコマンドが抜けていました。。

---- ソース ---------------------------------------------

set str_Domain to [ドメイン名]
set str_Pass to [パスワード]

on idle
do shell script "curl \"http://free.ddo.jp/dnsupdate.php?dn=" & str_Domain & "&pw= " & str_Pass & "\""
return 3600
end idle

------------------------------------------------------
248名称未設定:2012/09/17(月) 13:42:47.13 ID:6et2QTZt0
"&pw= "
末尾のスペースはソースそのまんま?
249sage:2012/09/17(月) 13:56:13.68 ID:svlwv1FR0
すみません!! スペースはありません。
250名称未設定:2012/09/17(月) 14:05:04.49 ID:Mc0FQ1sq0
>>247
log Result
で結果くらい見てみたら?
あとメタ文字使わんで、quoted form ofで繋ぐ。
パスワードはhttpで送って大丈夫なのか?
251名称未設定:2012/09/17(月) 14:05:53.99 ID:Mc0FQ1sq0
このバカはコピペすらできんのか。
252名称未設定:2012/09/17(月) 14:08:17.72 ID:6et2QTZt0
ドメイン、IPアドレス、パスワードのセットで登録するみたいだけど?
253sage:2012/09/17(月) 15:36:53.54 ID:svlwv1FR0
>>250
あとメタ文字使わんで、quoted form ofで繋ぐ。
  > 勉強になります。

パスワードはhttpで送って大丈夫なのか?
  > ん?違うんですか??

  -----------------------------------------------------------------------
  4.IPアドレスの自動更新
  定期的に自動で更新するには、 HTTPクライアントから下記URLを読み込んでください。
  http://ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード
  (無料サービスの場合は http://free.ddo.jp/......)
  IPアドレスはページにアクセスした端末に設定されます。 プロキシを中継した場合はプロキシのIPアドレスが設定されてしまう 場合がありますのでご注意下さい。 IPアドレスを指定する場合は
  http://ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード &ip=xx.xx.xx.xx
  (無料サービスの場合は http://free.ddo.jp/......)
  として下さい。 IPv6アドレス(AAAAレコード)を指定する場合は
  http://ddo.jp/dnsupdate.php?dn=ドメイン&pw=パスワード &ipv6=xxx:xxx:xxx:xxx:xxx:xxx:xxx:xxx
  として下さい。
  -----------------------------------------------------------------------
254名称未設定:2012/09/17(月) 16:38:01.08 ID:6MsBVBXW0
>>253
なんつーか、君には早いと思うんだ
素直にWhat's Up!ってフリーウェア使ったら?

ログも出さないしコピペすら合ってるかわからんから上のソースはいちいち確認せんけど
うちの環境では普通にcurlでうまくいってるから100%どこかおかしい

まあ提案としては、きっちりエスケープできてない気がするから
独立したシェルスクリプトをつくって(.shで保存して)それを呼ぶ形にしてみたら〜
255sage:2012/09/17(月) 17:41:17.07 ID:M1yIekyd0
>>254
What's Up!なんて糞アプリ使うやついねぇの分かってるから自作しようとしてんだろ
つーか、AppleScriptのスレでフリーソフト使えとか馬鹿なの?
お前、>>253の質問の意図あんまわかってねーだろ? ド低能。
256名称未設定:2012/09/17(月) 18:13:34.29 ID:8UJQwC7+0
罵倒は良くない
257名称未設定:2012/09/17(月) 18:14:41.53 ID:rpxwERG20
>>255
>AppleScriptのスレでフリーソフト使えとか馬鹿なの?
「使えるものはなんでも使う」って基本姿勢はあるかも
258名称未設定:2012/09/17(月) 18:14:47.66 ID:UjAE4tFl0
>>255
正論すぎてふいたw
259名称未設定:2012/09/17(月) 18:33:49.63 ID:6MsBVBXW0
これはひどいw
つらつら書いてる暇があったら教えてやれよww
実質ワンライナーだろ
260名称未設定:2012/09/17(月) 22:38:23.75 ID:X+ATL1uC0
まずTerminalで試して次にrunハンドラのdo shell scriptで同じ事ができる事を確認する
それをidleハンドラに置き換える

って段階を踏まずにいきなり完成系から書くから原因がわからなくなるのさ
261名称未設定:2012/09/17(月) 22:47:02.43 ID:X+ATL1uC0
あー
>>247は2つの変数がrunハンドラで代入されてるけど、
トップレベルでのglobal宣言またはidleハンドラでのglobal宣言が無いので、
idleハンドラ内では未定義扱いになってるんだな
262名称未設定:2012/09/18(火) 08:20:50.65 ID:JBMoMS/J0
>>261
  247です。

  変数のスコープというか、AppleScriptでの変数の扱いをよく理解出来ていませんでした。。
  下記のソースで、ちゃんと更新が出来ました。
  ありがとうございます!!

-------------------------------------------------
global str_Domain, str_Pass, str_Cmd

set str_Domain to "DOMAIN"
set str_Pass to "PASSWORD"
set str_Cmd to "curl \"http://free.ddo.jp/dnsupdate.php?dn=" & str_Domain & "&pw=" & str_Pass & "\""

on idle

do shell script str_Cmd
return 3600

end idle
-------------------------------------------------
263名称未設定:2012/09/18(火) 10:45:43.53 ID:BPoZ91TC0
bash ← ってどう読むの??

ボーンアゲインシェル?
バッシュ??
264名称未設定:2012/09/18(火) 12:36:47.09 ID:4+Aws5/10
ググれよカス
265名称未設定:2012/09/18(火) 13:27:44.54 ID:QI38jrp00
>>263
>bash
ばっしゅ。
ビーエーシェルって言い方を最近聞かなくなった気がする
266名称未設定:2012/09/18(火) 14:09:11.48 ID:4gAdRKsD0
なんなんだよ最近
コピペもできないわググりもしないわ
クソみたいなのが湧いてくるな
267名称未設定:2012/09/18(火) 17:08:08.61 ID:u9BhGRU8I
まぁまぁ
268名称未設定:2012/09/18(火) 17:16:18.60 ID:u9BhGRU8I
>>263, 265
俺もバッシュていうな
ボーンなんとかは言ったことねぇw
269名称未設定:2012/09/20(木) 19:54:10.05 ID:dI1CCsHc0
scriptオブジェクトを呼び出す時に、任意の文字列でオブジェクト名を指定することはできませんか?
set hoge to script "nini"
のようなことをしたいんですが。
270名称未設定:2012/09/20(木) 20:09:29.07 ID:MNFNxRt00
run script はどうだろう?
271名称未設定:2012/09/20(木) 20:12:14.23 ID:emmz7Dp30
setしてその後どうしたいのかよくわからないが、
Script FactoryさんとこのOSAX使う手もあるよ

ModuleLoader
ttp://www.script-factory.net/software/OSAX/ModuleLoader/
272名称未設定:2012/09/20(木) 21:45:55.29 ID:dI1CCsHc0
>>270
変数を共有しないため、できそうでできなかったっす。

>>280
別ファイルに分割せずにしたいっす。
273名称未設定:2012/09/20(木) 23:57:46.59 ID:MNFNxRt00
script Hoge
property hogeprop : "hogeprop"
property name : "Hoge"
end script
script Manager
property objects : {}
on add(obj)
set my objects to my objects & {obj}
end add
on fetch(str)
repeat with obj in my objects
if str is obj's name then
return obj
end if
end repeat
end fetch
end script

set oldHoge to Hoge
set oldHoge's hogeprop to "hogehoge"
tell Manager to add(Hoge)
set newHoge to Manager's fetch("Hoge")
newHoge's hogeprop

自分には>>270と、これくらいしか思いつかない。
AppleScriptってAppleEventにコンパイルする言語だから、
動的な事をするのが難しいんだよね。
runscriptと文字列処理を幾重にも重ね合わせた事有るけど、
自分で書いてるのに意味不明過ぎてワロタ。
274名称未設定:2012/09/21(金) 00:45:22.60 ID:6hAt0+4m0
>>273
おぉ、擬似連想配列的なやり方ですか。
言語機能上、素直にはできなくて、工夫が必要なんですね。
275名称未設定:2012/09/21(金) 19:09:29.31 ID:s3eoosiO0
任意の文字列とスクリプトオブジェクトとの関連付けをどうするつもりなのかが見えない
各々のスクリプトオブジェクト内で定義する形なら俺も>>273みたいな方法しか思い付かないわ
どうやったって連想配列っぽくなる

単にオブジェクト名と同じ言葉を文字列で指定したいだけなら、
もっと単純にできるけども
276名称未設定:2012/09/21(金) 21:34:23.77 ID:hhCWEBk50
すまん煮詰まってしまった(誤用)ので質問させてくれ

iTunesで曲を右クリックすると出てくる「iTunes DJで次に再生」をスクリプトからやらせたい
前提はiTunesがactivateしててその曲がすでに選択済みかつ再生中

UI Scriptingで現在選択中のelementを右クリする方法がよくわからなかったのでとりあえず
tell front window of process "iTunes"
scroll area 3's outline 1's row whose static text's value begins with "再生中"
と行を絞り込もうとしたんだけどエラーが出る

次の方法ならとりあえずstatic textを全回収できるんだけどそこで詰みました
set labels to value of scroll area 3's outline 1's rows's static text
277名称未設定:2012/09/21(金) 22:44:22.88 ID:hhCWEBk50
あれ、もしかしてSystem Eventsでコンテキストメニュー操作って無理なのか……
278名称未設定:2012/09/22(土) 01:06:41.96 ID:vkvJjimq0
>>277
正解
279名称未設定:2012/09/23(日) 16:41:15.27 ID:L1ayzhIM0
Gmailでメール送信するのをMail.appとか使わずに実現したいんだけど、
もしかして無理? 添付も付けたい。
280名称未設定:2012/09/23(日) 17:54:37.56 ID:f2zG4Rg70
根性次第、諦めたら負け
281名称未設定:2012/09/23(日) 18:06:43.59 ID:L1ayzhIM0
VBだと簡単にできたからapplescriptでも簡単にできないかと思ったが、根性しだいか。
282名称未設定:2012/09/23(日) 18:07:23.71 ID:COMXLM9w0
UIスクリプティングでがんばるかバックグラウンドで自動処理できるクライアントを探す
283名称未設定:2012/09/23(日) 18:08:46.37 ID:COMXLM9w0
VBではどういう手法を使ったの?
284名称未設定:2012/09/23(日) 18:33:52.24 ID:L1ayzhIM0
VB Gmail で検索
これとは違う方法でもスクリプト組めたよ、昔。
285名称未設定:2012/09/23(日) 18:47:02.65 ID:/YbK3wMl0
VBとか、特に最近の.NetFrameworkを使ってる物は、
アプリケーション自体を作成出来るようにして有る、
というかライブラリでフォローしてるので、色々出来る。
AppleScriptは、基本的にアプリケーション間の連携の為に存在しているので、
それ単体で何かしようとするのは割りと難しい。
do shell scriptとかOSAXとかScriptingBridgeとか何らかのアプリを呼ぶとか、
そういう方向で頑張りましょう。
286名称未設定:2012/09/23(日) 18:54:51.93 ID:sIlyJ1Vb0
AppleScriptは話し言葉の文法が逆に障壁になるw
一見初心者に向いてそうに見えるが、ちょっと思い通りのものを作ろうとすると、
結局内部のコンピュータ動作の仕様を意識をせざるを得ない。
今だったらJavaScriptの文法でやってくれた方が、ずっとフレンドリーだね。
287名称未設定:2012/09/23(日) 21:19:16.49 ID:Mq5nRKqe0
ttp://docs.komagata.org/4724
Gmail に sendmail してる記事を発見。
これができれば、あとは簡単かと
288名称未設定:2012/09/23(日) 21:31:55.34 ID:L1ayzhIM0
>>287
そういう情報待ってました! 面白そう! ありがとう!
できそうだね。いやー、すげー嬉しい。
289名称未設定:2012/09/25(火) 22:11:38.53 ID:jFqlnjA50
どなたかファイルの入っているフォルダをゴミ箱を経由することなく完全に消去する方法を
ご存知ないでしょうか。RAMディスク上で作業をしているのですが、しょぼいマシンなので
RAMディスクの容量を稼げません。毎度毎度ゴミ箱を確実に削除するのは面倒です。
なにかいい方法はないでしょうか。
290名称未設定:2012/09/25(火) 22:37:36.04 ID:kI+ZEOgl0
まずどうやってRAMディスクをつくってるのかな?
やりたいのはRAMディスク上の任意フォルダを一発で削除したいってこと?
RAMディスク作り直しでの一括クリアじゃダメってことなんだよね?
291名称未設定:2012/09/25(火) 22:45:37.46 ID:jFqlnjA50
>>290
RAMディスク作り直しがゴミ箱を空にするのと同じくらい面倒なような、、、、。
使っているのは適当に調べたEsperance DV for Macです。
292名称未設定:2012/09/25(火) 23:46:25.12 ID:kI+ZEOgl0
それならターミナルで
$ rm -R hogeFolder
でできるから、あとはAppleScriptからdo shell scriptなりなんなりでどうとでもなるよ
注意としてはrmは強力なコマンドなので変な入力をしないように気をつけること

あとはがんばってね
何かあれば>>1のとおり質問して
293名称未設定:2012/09/26(水) 00:06:58.70 ID:PzOszXZe0
別の階層に消したいフォルダと同じ名前の空フォルダ作って、
それをドラッグしてきて上書きしちゃうとかは?
294名称未設定:2012/09/26(水) 08:46:59.30 ID:XaAyAJlI0
ttp://forums.macrumors.com/showthread.php?t=259323 の下の方に即時削除のスクリプトあるから試せば
295名称未設定:2012/09/26(水) 11:10:22.36 ID:XcMU52VV0
RAMディスク内の.Trashsのアクセス権をどうにかする
296名称未設定:2012/09/26(水) 22:42:58.16 ID:fMb9tbRb0
>>292
あまりグダグタ書いてもあれかと思い書かなかったが、当然それはやった。
でも、「フォルダ」は削除できないことがある。
で、やはり、>>294に近いスクリプトになったが、ただフォルダ(とその中身)を
消すだけにたいそうなスクリプト書くのもどうなのかと。
aFolderがフォルダーと仮定して

tell application "Finder"
set aFolder to selection as alias
do shell script "rm -rf " & quoted form of POSIX path of aFolder
end tell

で消えるフォルダもあれば消えないフォルダもある。
削除できない理由が知りたい、という話なんだけど。
実際にフォルダーを消してみて、百発百中完全削除できてるの?
297名称未設定:2012/09/26(水) 22:49:22.35 ID:fMb9tbRb0
スマン。追加。
たとえば上記のようなスクリプトをスクリプトエディタ上から実行すると削除できる。
上記のスクリプトを含むドロップレットを作成し、ドラッグアンドドロップすると削除できる。
そのドロップレットにドラッグアンドドロップするようなスクリプトを作って実行するとエラーを吐く。
Xcodeで作ったプログラム内に>>296のスクリプトを直接組み込んでも、ドロップレットを
作ってそこにドラッグアンドドロップするように組んでもエラーを吐く。

これ、どういうことなのかと。
298名称未設定:2012/09/26(水) 23:01:56.47 ID:cbaDsA900
とりあえずエラー番号とメッセージくらい貼ろうぜ
そのスクリプトだとselectionが空だったり複数だったりするとエラーになるだろうがそれのことじゃないよな?
あとドロップレットならできてるようだがそれではダメな理由は?
299名称未設定:2012/09/27(木) 00:33:31.32 ID:VMRCu/PO0
>>296
フォルダが消せなかった時に、それをターミナルから rm -r するとどうなりますか?
消せないならどういうエラーが出ますか?

アクセス権的な問題なら sudo を噛ませるってことになりそうだけど、それはやりましたか?
300名称未設定:2012/09/27(木) 13:22:48.25 ID:pTZ8qoWnP
フォルダアクション内でリピート処理をしているのですが、
最初の1ファイルを処理したところで止まってしまいます。
ここでよくわからないのは、適当なところにdisplay dialogを入れてやると問題なく動作することです。
何らかの処理に時間がかかっているためかと思い、delay 1や do shell script "sleep 1"
を挟んでみたのですが、改善せず。時間を増やしてみてもやはり止まります。
他方、display dialog giving up after 1だと動きます。
このようなケースで考えられる原因は何かありますか?
301300:2012/09/27(木) 15:53:24.64 ID:pTZ8qoWnP
補足です。
「最初の1ファイル」とは、
複数ファイルを同時に入力した場合や短時間に複数ファイルを入力した場合に
最初の1ファイルを処理したところで止まってしまうということです。
302名称未設定:2012/09/27(木) 20:49:06.32 ID:1JcDJY+kP
>>301
実際のスクリプトがないし、そのフォルダアクションをどう使ってるのかわからないので
答えようがないけど、可能性としてはなにかの処理をして多数のファイルを一度に
フォルダアクションのついているフォルダに突っ込むことになり処理が追いついていない
んじゃないかなあ。いずれにしてももっと具体的に質問とコードを晒さないと答えられない
と思う。フォルダアクションじゃないとだめなのか? 普通はそういう場合ドロップレットに
ドラッグアンドドロップだと思うのだが。状況がわからん。それからコードは100行くらいは
書いているのか? それとも単純な20行くらいのものなの?
303名称未設定:2012/09/27(木) 21:07:41.17 ID:8Ztx9h270
うん答えようがないな
フォルダアクションは10.6のころに多少改善されたがそれでも単純な通知とか以外の目的で使うのはあんまり勧められない
304名称未設定:2012/09/27(木) 21:21:32.91 ID:8fBA9LyR0
なんかマルチスレッド周りが原因なのかねぇ?
1つずつファイルを投入すれば、普通に処理されるけど、
複数だと、多重に処理が走って、デッドロック的な何かで処理が止まるとか。
でも、DisplayDialogという形でGUIスレッドを挟むと、
多重処理がGUIスレッドでブロックされてDisplayDialogを抜けると、
複数のファイルをリストか何かで纏めて貰えるから、処理が出来る、とか。
フォルダアクション使った事ないから、思いっきり推測だけど。
305名称未設定:2012/09/27(木) 21:49:38.91 ID:1JcDJY+kP
>>300
どういう環境で実行してるの?
アプリにして実行しているのか、
単純にフォルダアクション設定したフォルダにドロップしてるだけなのか
それとも他のアプリを使って処理の一連でフォルダアクションしてるのか
それともXcodeでapplescriptアプリケーション作ってその中でフォルダアクション
をかませてるのか。

その「処理」は何をしてるのか
他の汎用アプリをapplescriptからコントロールしているのか
applescript、もしくはファインダーくらいでコピーとか名前の処理とかするくらいなのか
考えられることがありすぎて答えられんな。
306名称未設定:2012/09/27(木) 22:03:49.35 ID:1JcDJY+kP
もしくは、display dialogしてるアプリケーションがactivateなりtellなりされてないとタメ、とか。
307300:2012/09/28(金) 14:48:26.04 ID:wa2Fn6GzP
みなさんありがとうございます。
Script自体は結構な長文な上、原因の見当がつかないためベタ張りになってしまうので、
抽象的な質問になるのを承知で控えました。
録画ファイルの自動エンコードやフォルダ分け処理をしています。
基本的には完全放置でフォルダを監視したいのでドロップレットではイマイチです。
途中にやや怪しい箇所があったので書き換えたところ最初の1ファイルで止まることはなくなりましたが、
やはり多数のファイルが入力されると途中で止まってしまうようです。
全体をくくったtry on errorにもひっかからないので、
止まった場合、そもそも処理に突入していない感じがします。

そこで
on adding folder items to this_folder after receiving input_items

on open input_items
tell application "Finder"
set this_folder to (parent of (path to me) as text) as alias
end tell
としてドロップレットに書き換え試してみたところ、こちらは問題なし。
display dialogを挟むとなぜ動作するのかという疑問は残りますが、
フォルダアクション自体に問題があるのかもしれません。

もっとも、多数のファイルが実際に入力されることはまずあり得ないので、
とりあえずはこのままでいこうと思います。
308名称未設定:2012/09/28(金) 19:29:23.38 ID:CKaBPbc00
>>307
だから〜スクリプト全体の流れというか概要を書かないと誰にも分からないんだよ。言葉で説明できないからちゃんと動くスクリプトが書けないんじゃないの?
309名称未設定:2012/09/28(金) 20:10:08.98 ID:vDKH28m/0
本人がもういいって言ってるんだからさー
310名称未設定:2012/09/28(金) 20:48:53.01 ID:Rz0yv2bZ0
Safariに表示してるWebページのボタンとかテキストフィールドをいじるのってJavaScript使わないと無理ですよね?
311名称未設定:2012/09/28(金) 21:46:15.54 ID:zYD/SRbg0
>>307
おれも>>308-309に同感だがひとつ
ドロップレットなら動くということであればフォルダアクションでドロップレットを呼び出したら?
フォルダアクションがファイル書き込み終了までちゃんと待ってるって前提だが
フォルダアクション→スクリプトを起動→フォルダアクションとは独立して指定フォルダの内容を取得して処理

>>310
無理じゃない
具体的にはUI Scriptingを使う方法と、Safariから少し離れてもいいならdo shell scriptでcurlを呼び出す方法が使える
何をしたいかにもよるが
312名称未設定:2012/09/29(土) 10:18:37.81 ID:/qWr+BlA0
>>307
なるほど。
taskenc.vbsとか参考になるような気が。
処理が重ならないようロックするファイルでも作って処理待ちすればいいよ。
Applescriptがそれだけわかる人なら
簡単なvbsも仕組みくらいはわかる。
仕組みだけパクればいい。
ちなみに録画システムはどんな感じ?
そっちのほうが興味津々。
よく知らないけどrecpt1とかたたく?
313310:2012/09/29(土) 11:07:52.01 ID:GFCtI0SI0
>>311
あーなるほど。ボタン等の要素を指定するんじゃなくて、キーボードの操作をエミュレートしてtabやenter等を使っていくんですね。
Webページの要素の位置が分かるわけじゃないからマウスを使うのは厳しそうですし。

たしかにとりあえず使えそうです。JavaScriptはまだ勉強していないのでこれで行こうと思うます。
ありがとうございました。
314名称未設定:2012/09/29(土) 18:27:23.59 ID:CVZS/X/I0
>>313
「ボタン等の要素を指定」もできるよ
Accessibility Inspector.appで検索
315名称未設定:2012/09/29(土) 21:59:16.26 ID:FjrT2X960
>>307
フォルダアクションは多重起動しないんじゃないかな?
何か追加された時点で起動するから、
スクリプト起動後input_itemsに入らなかったものは
無視される気がする。
316名称未設定:2012/09/29(土) 22:12:04.60 ID:7g4OoFWr0
>>315
Folder Actionはフォルダ変更検知をトリガーにフォルダ内容から差分アルゴリズムで
パラメータを生成してるから、元々input_itemsに信頼性は無いよ。
数百項目をフォルダにドロップしてみれば判るけど、メッセージが分割されたり、
遅れたり、一部が欠けたりってのがランダムに起こる。
317310:2012/09/30(日) 08:43:07.75 ID:Dfn5Npr10
>>314
うわ、Xcodeにこんなの入ってたんですね!
もっと早く知りたかった・・・。

めちゃくちゃ便利です。ありがとうございます。
もっと早く知りたかった。
318名称未設定:2012/10/01(月) 07:09:05.76 ID:nqp4Hwkn0
プログラマーに必要な資質
それは、根気、意地、捨て身
319名称未設定:2012/10/01(月) 10:16:28.40 ID:4kxHjqYR0
馬力
320名称未設定:2012/10/03(水) 01:41:13.55 ID:ytnFlbFs0
ボタンを叩く力
321名称未設定:2012/10/05(金) 08:51:38.42 ID:UMJg8vzN0
いろいろありファイルをグローバル変数に持つときはかならずPOSIXのテキストで
持つことにした。
使うときだけエイリアスにもどす。
do shell scriptの時はそのまま使う。
1000行超えるスクリプトをいくつも行ったり来たりするそれなりのものを作る人
にはおすすめ。
322名称未設定:2012/10/06(土) 03:34:54.25 ID:YlWOEjJo0
ってそれ普通じゃね?
エイリアスとは簡単に相互変換できるんで、その辺は好みの問題だけども
323名称未設定:2012/10/06(土) 08:20:01.55 ID:/rvC5gYd0
applescriptの変数は自動で適切な形に変換してくれて
便利だけど、きちんとasなどで整えないと
思わぬところでエラーになる。
たとえばファイル関係の変数のリストとかを型を意識しないでrepeat with inで
選別処理したリストから取り出した変数をこれまた適当に扱うとエラーになる。
最初、エラーメッセージを見てもコードを見直してもエラーの理由が
分からず、とても苦労した。
324名称未設定:2012/10/07(日) 06:13:37.05 ID:Cra8Rfm30
ボタンを押す力が足りねぇんだよ
325名称未設定:2012/10/08(月) 02:04:26.10 ID:MLAYOg3s0
>>323
それ変数じゃない
326名称未設定:2012/10/09(火) 07:00:10.46 ID:X72EZmDP0
AppleScriptに詳しい方いますか!?
至急のお願いがあります!
327名称未設定:2012/10/09(火) 09:30:03.79 ID:YOJsW3Hf0
もう10時間pcの前で待っているんだが。
328名称未設定:2012/10/09(火) 09:33:43.15 ID:YOJsW3Hf0
俺からも相談するけどCDイジェクトを強制実行
する方法を教えてくれ。
329名称未設定:2012/10/09(火) 10:05:32.90 ID:VaEbKy970
>>328
つ 事務クリップ
330名称未設定:2012/10/09(火) 16:47:41.83 ID:/t6vPy+c0
強制実行ってどういう意味?

tell application "Finder" to eject (disks whose its ejectable is true)

じゃダメなのかな。
331名称未設定:2012/10/09(火) 21:28:46.98 ID:ZXqNfbYJ0
>>330
そんなようなことしてるんだけど、イジェクトできなかったり、1分とか異常に時間がかかったりするんだよ。
なんでなんだか理由が分からない。

>>329
display dialog "CD出てきません。クリップで突っついてね”

これはかなり使える。メモメモ。
332名称未設定:2012/10/09(火) 22:13:04.89 ID:yf7g5seR0
>>277
確かにSystem Eventsじゃ無理だな。rubyじゃないと。
tell application "Finder" to activate
right_cllick(100, 100)
selectMenu(1)
on right_cllick(x, y)
do shell script "/usr/bin/ruby -e 'require '¥¥''osx/cocoa'¥¥''; event=OSX::CGEventCreateMouseEvent(nil, 3, OSX::CGPointMake(" & x & "," & y & "), 0); OSX::CGEventPost(0,event);'"
do shell script "/usr/bin/ruby -e 'require '¥¥''osx/cocoa'¥¥''; event=OSX::CGEventCreateMouseEvent(nil, 4, OSX::CGPointMake(" & x & "," & y & "), 0); OSX::CGEventPost(0,event);'"
end right_cllick
on selectMenu(n)
tell application "System Events"
repeat n times
keystroke (key code 125)
end repeat
keystroke space
end tell
end selectMenu
333名称未設定:2012/10/09(火) 22:19:52.20 ID:yf7g5seR0
>>332
¥は半角の\に変えてくれさい。
334名称未設定:2012/10/09(火) 23:13:45.08 ID:a3ZLzfRg0
>>333
ruby -r osx/cocoa -e ... とするとバックスラッシュを使わなくて済む
335名称未設定:2012/10/10(水) 03:56:36.54 ID:VVcVJv9E0
後はquoted form ofを使うとか
そもそもrubyだったら囲み表現が色々あるしな
336名称未設定:2012/10/10(水) 14:15:31.30 ID:T1hE9/Av0
>>334-335
ありがとー。参考になる。というか、お前らそこまで詳しいなら>>277に教えてやれよw
あいつコンテキストメニューが出せないって泣いてたぞ。
337名称未設定:2012/10/10(水) 15:09:08.25 ID:t3t1aVNq0
頭のおかしい人がいると聞いて
338名称未設定:2012/10/10(水) 16:23:36.22 ID:/x0l2izR0
>>327=>>331=>>336かなw
339名称未設定:2012/10/10(水) 16:47:04.36 ID:uBPQgQX20
弱体脂肪肝が小手先の理屈こねてもダメダメなんだよ
グランド10周 !
340名称未設定:2012/10/11(木) 00:28:59.32 ID:fqsiK4Hk0
>>336
RubyCocoa使う方法はちょっとググりゃ出て来るからなー
追加質問でもあれば誘導するつもりはあったけど、無かったので流れただけ
341名称未設定:2012/10/11(木) 12:12:32.88 ID:rv1rRGFD0
276だけどなぜいまさら槍玉に挙がったのか理解できん
この程度の質問をしてくる人になんで上から目線で物言われなきゃならんのか……

あのときはSystem Eventsでやる方法や自分の見落としがあれば知りたかったがなさそうだったので277で自己完結してしまった
その後レスしなかったのはすまない。確認させてくれた>>278に感謝
結局代替手法を自分で実装しました
342名称未設定:2012/10/11(木) 12:26:59.70 ID:qzhp0FB40
>>341
>>336はユルいんだよ。>>327-328,331を見れば分かるでしょ。
>>337も何か言ってるじゃん。
でも、ユルい人はそれなりに気を使ってるんだと思うよ?たぶん。
343名称未設定:2012/10/11(木) 20:17:33.32 ID:hkMHF4R80
>>341
問題ってのは目の前のそれが解決してはい終わりじゃないんだよ。

自分が思った疑問なり問題なりを結果報告するなり、コードで示すなりして形に残し、
後に他の誰かが同じような問題にぶつかった時、助けになるようにしておくんだよ。
そして、その誰かは将来、別人となった自分かもしれない。

いくら技術力や知識があっても、そういう意識が欠如していたらプログラマーとして
恥ずかしいと思って欲しい。

俺の書き込みの意図はそういうところにあるんだけど、ここまで反発されるとは思わなんだ。
344名称未設定:2012/10/11(木) 21:10:25.52 ID:asqFgytR0
>>343
あなたの書き込みがどれかは知らんが少なくともそういう意識は持ってるつもり
結局おれ自身はここでSystem Eventsでは右クリやその後の操作ができないということを確認したにすぎないが
>>332なんかが後の人のためになりそうなコードを書いてくれてるし、それでいいんじゃないのか?
自分は使わなかったけれども
あとここでは晒したことはないがAppleScript関係のサイトやってるから情報共有はだいぶやってるよ

取り立てて336を責めたいわけではないのでなんか申し訳ないが、ググればわかる疑問を書かれてもなというのが正直なところ
345名称未設定:2012/10/11(木) 21:13:24.18 ID:fqsiK4Hk0
>>341
質問しといて聞きっぱなしかよって(>>343みたいな)状況がたまにあるのも確かだけど、
>>276-278の流れがそうだとは思わない
問題点は見えてた様なのでシンプルに回答してその後の>>340という感じで、
自力でどうにかしたんだろうなと思っていた
だから気にしなくていいよ

>>332がなんで今更拾ったのかは知らんが、別に槍玉に挙がったってのとは違うんじゃない?
>>336が余計な事言ったというだけの事

>>343
だったら泣いてたぞ、とかわけわからん事書かなきゃいいのに
346名称未設定:2012/10/11(木) 21:18:01.19 ID:asqFgytR0
>>345
あーありがとうなんか救われたわ
泣いてたのはおれだけどw、343も悪気があったわけじゃなかろうし
こんなつまらん話引っ張っても顰蹙買うと思うのでこの話はここまでということでいいかな

そういうわけで次の質問ある方どうぞ……
347名称未設定:2012/10/11(木) 21:21:22.71 ID:asqFgytR0
申し訳ない s/343/336
348名称未設定:2012/10/12(金) 11:42:02.18 ID:eBWPGq9O0
test
349名称未設定:2012/10/12(金) 19:55:59.15 ID:y2s65ODD0
少林寺みたいに、指先を鍛えないとな
350名称未設定:2012/10/18(木) 23:21:51.08 ID:IaXfW8pO0
どうしてもわからないので教えてください。
AppleScriptをXcode3.2でプログラミングしているのですが、
自宅のマシンと会社のマシン両方でコーディングしています。
自宅がライオンで会社が雪豹。AppleScriptで操作するプログラムが
微妙にバージョンや名前が違っていてうまく両方で動かせません。
こういう場合、どうすればいいんでしょう。
使われるアプリケーションのバージョンによってもパネルの配置が
変わっていたりしてGUIスクリプティングとかもバージョンに
よって変えたいんですが……。
351名称未設定:2012/10/18(木) 23:36:00.95 ID:9NoaaAZ80
>>350
両方でコーディングしかつ両方で使うということかな?

アプリのバージョンはpropertyなどで取得できるので、if文で挙動を変えればOK
自動で判定するのが面倒だったり自信がなかったらスクリプトの最初にdialogで分岐させればよい
GUI Scriptingと書いてるのでわかってるとは思うけどある程度はだだ書きせざるをえないけどしょうがないね
この辺のキーワードでググってわからなかったらまたどうぞ〜
352名称未設定:2012/10/19(金) 00:01:20.61 ID:wGn3ji8+0
どのレベルかよくわからんので一応補足しとくと
if (会社の環境) then
--会社での処理
else
--自宅での処理
end
というようなことだからね
この書き方でも共通の部分はユーザ定義ハンドラにしておけば無駄は省ける
全体を丸ごとifで囲むか処理ごとに判定させるかは目的による
あと>>1を読んでくれ
353名称未設定:2012/10/19(金) 07:53:48.93 ID:HE60EVbW0
>>351->>352
ありがとうございます。
>>351
そうです。現在は主に10.4で動かしていて、コーディングは10.5でやってます。
今度、10.8が会社に導入されるので、当然エラーが予測され、それを少しでも
避けるために、自宅にある10.7で動作チェックをしている状態です。
10.7以降でafpの挙動が変わるということだったのでビクビクしていましたが、
自作アプリ自体は10.7でも動き、ほっとしています。

やることはだいたいわかりましたが、コーディングしたあと、
Xcodeならコマンド-Kとか、スクリプトエディタならコンパイルすると
今、コーディングしている環境にないアプリがコード中でtellされていると
「○○○はどこにありますか?」と聞かれたりして困ってしまいます。
あれはどう対処すればいいんでしょうか?
同じアプリなのにライオンバージョンと雪豹バージョンで名前も
GUIも違い、10.8もまたアプリ名が違っている可能性もあり(〜Premiumみたいな)、
困ってます。具体的なアプリ名はご勘弁を。
354名称未設定:2012/10/19(金) 13:28:03.39 ID:LxaM7ETv0
OSのバージョンごとにスクリプトを別ファイルにして、
実行する時にOSのバージョンチェックでスクリプトをロードすればいいじゃん?
355名称未設定:2012/10/19(金) 17:08:03.41 ID:84FiH7oE0
>>353
どんな命令が実装されてるかとかはアプリケーションによって違うので、
実際にインストールされてない環境ではコンパイルも通らないのでそういう表示が出るんだけど、
tell application ~ のところが違うとアプリケーションが特定できないわけだね

構成がまるっきり違うなら>>354みたいに分けた方が早いけど、
アプリケーション名は違うけどパスは一緒みたいな場合はパスで指定したりとかもできるよ
356名称未設定:2012/10/20(土) 01:26:57.84 ID:Ic2DAvUn0
強くボタン押せばいいんだよ
357名称未設定:2012/10/20(土) 01:33:49.97 ID:rIYrm+/Q0
>>356
いいかげんにしろ
358名称未設定:2012/10/22(月) 07:32:23.29 ID:EvJQ8ABw0
画面を殴れ!
359名称未設定:2012/10/22(月) 09:59:13.64 ID:0Emgdlz00
つまらん
360名称未設定:2012/10/23(火) 01:32:49.23 ID:+e0m/KFD0
質問です。ファイルメーカーで投資信託の管理をしていてヤフーのサイトからその時点での基準価額を引っ張ってくるのに
ファイルメーカー内のスクリプトからアップルスクリプトを呼び出して使っていました。そのスクリプトは昔ここで親切な方が教えてくださったものです。
そのアップルスクリプトの参照先のヤフーのアドレスやソースが変わってしまったので参照できなくなり、
書き換えようと思ったのですが私にはできませんでした。もとのスクリプトは

set theCode to the clipboard
set theNumber to count theCode
set theURL to "http://quote.yahoo.co.jp/q?s=" & theCode
set theCurl to "curl -s " & quoted form of theURL
set theIconv to " iconv -c -f euc-jp -t utf-8 "
if "=" is in theCode then
set thePerl to "perl -ne 'if( m{<td nowrap align=center>[0-9]+:[0-9]+</td><td nowrap><b>(.*?)</b>} ){ print qq{$1} } '"
else if theNumber = 8 then
set thePerl to "perl -ne 'if( m{<td nowrap align=center>[0-9]+/[0-9]+</td><td nowrap><b>(.*?)</b>} ){ print qq{$1} } '"
else
set thePerl to "perl -ne 'if( m{<td nowrap align=center>[0-9]+:[0-9]+</td><td nowrap><b>(.*?)</b>} ){ print qq{$1} } '"
end if
set theText to do shell script theCurl & " | " & theIconv & " | " & thePerl
以下略(theTextをファイルメーカーに引き渡す)

でした。現在のヤフーの参照先は、たとえばtheCode=998405.Tのときは http://stocks.finance.yahoo.co.jp/stocks/detail/?code=998405.T
で、そのソース内の <td class="stoksPrice">753.72</td> の部分の数字だけを取ってきたいです(この数字が時間によって変化する)。
このアドレスとソースの変化を元に、書き換えたらよさげなところを書き換えてみましたが、私の能力ではtheTextがからっぽになってしまいます。
どこをどうなおしたらよいか、なにかヒントをいただけたらありがたいです。
361名称未設定:2012/10/23(火) 03:54:13.88 ID:xyY8mmAb0
curl -s url | perl -pe 'm{<td class="stoksPrice">(.*?)</td>};$_=$1'
こんなのでいけるんじゃないかな。あと、iconvは不要でしょ。
362360:2012/10/23(火) 10:15:25.02 ID:jbdjydpf0
>>361
ありがとうございます。perlの部分は全然わからないまま
言われた通りにしてただけなので、不要かどうかとかよくわからないのですが
家に帰ってから調べつつやってみます。
363360:2012/10/23(火) 20:42:43.91 ID:+e0m/KFD0
>>361
家に戻ったのでやってみたらちゃんと動きました。ありがとうございました。
perlの初心者向けサイトを読んでいたら、意味も何となく分かりました。
ちょっとだけperlってプログラム言語というだけでビビっていましたが、
正規表現がある程度分かるならそんなに敷居が高いわけじゃないような気がしました。
スレ違いの質問だったかもしれませんが勉強になりました。ありがとうございました。
364名称未設定:2012/10/25(木) 07:21:43.86 ID:0ZDfVi860
キーボードに熱いコーヒー掛けてみろ
365名称未設定:2012/10/26(金) 21:56:10.58 ID:vb135nHm0
うちのNASが本当に糞でapplescriptのduplicateとかmoveを受け付けない。
しょうがないのでdo shell script "cp 〜"みたいなことしてるんだけど、
そうするとプログレスバーが出ないから、でかいコピーをしていると
コピーできてるんだかどうだかわかりゃしない。なんかいい方法ないかね。
366名称未設定:2012/10/26(金) 22:53:25.02 ID:BP1JI0BK0
ターミナルを開いてそこで cp -v や rsync --progress を実行するようにする
367名称未設定:2012/10/26(金) 23:12:32.68 ID:vb135nHm0
>>366
vオプションなるものを初めて知ったアホです。そんな土素人にヒントをあとひとつ。





キーを叩くように打てとかそういうのはナシで。
368名称未設定:2012/10/27(土) 00:26:59.39 ID:zheXSE0L0


do shell script "cp 〜"
のとこを
tell application "Terminal"
activate
do script "cp 〜"
end tell
に置き換えるくらいでいけるんじゃ?と思って書いたけど...
369名称未設定:2012/10/27(土) 00:28:09.49 ID:zheXSE0L0
なんか動転して -v 入れ忘れたw
370名称未設定:2012/10/27(土) 10:30:36.41 ID:9ZG0syRX0
>>368
はじめてターミナルapplescriptから触ったけど、面白いね。
今後は do shell script と tell application "Terminal" to do script を使い分けるぜ!
感謝!!
しかし、こんな楽しい言語をアップルはなきものにしようとしてるんだもんなー。いけすかない。
この前、ふとエラーメッセージ見てて思ったけど、エラーメッセージも本当に
自然言語に近いよな。きちんと変数とか書いておけば素人でも意味が分かる。
さあWIN8先生と8350でも買いに行くかな。
371名称未設定:2012/10/28(日) 09:31:14.68 ID:XKhBrrhn0
うちはまだ10.8にはしてないが
10.8のスクリプトエディタって未コンパイル状態で保存できる
というのを今日知った
ちょっとうらやましい
372名称未設定:2012/10/29(月) 23:56:52.12 ID:7FD2YGjA0
AppleScript
もっと高速にならない?
373名称未設定:2012/10/30(火) 00:07:45.01 ID:X0+lKgUl0
なりません
ちゃんとアルゴリズムは最適化してるんだろうな
AppleScriptの特徴や特有の手法も踏まえて
374名称未設定:2012/10/30(火) 10:00:42.73 ID:wKE6IXyVP
>>372
あんたのmacが遅いんじゃない?

それはそうと最近whoseフィルターにはまってる。
たとえばwindow内にtab viewがひとつしかないとき
item 1 of (every tab view of window 1)
というような指定ができる。
これのいいところは同じ構造をもっているものについては
名前で指定しているわけではないので
簡単にスクリプトが流用できる。
tab viewの中に同じ構造のtab view item
があるようなときとても便利。
異論はおおいに認める。
375名称未設定:2012/10/30(火) 11:13:33.27 ID:Vo53HExy0
アップルスクリプト
オートメータ
アドビ系のアクション
MS オフィス系のマクロ

全部連動させたい
376名称未設定:2012/10/30(火) 12:46:01.70 ID:qpVuTotY0
>>375
できるやん
377名称未設定:2012/10/31(水) 10:17:52.26 ID:eiKDe4IW0
>>374
whoseでフィルタ参照するのは至極基本的な話だけど、挙げてる例がよくわからん

>item 1 of (every tab view of window 1)
whose使ってないし、これじゃ「tab view 1 of window 1」と同じじゃね?

whoseの使い所は単純な名前または順番による参照ではなく、
その他の属性やそれらを組み合わせた条件で参照を特定できるところでしょ
378名称未設定:2012/11/01(木) 07:44:16.81 ID:MJzSGcKW0
item 1 of ((every tab view of window 1) whose...
と書こうと思って忘れたんだろ
379名称未設定:2012/11/02(金) 05:56:43.96 ID:P/h0onbd0
>>376
簡単にできるのない?
380名称未設定:2012/11/02(金) 15:17:34.04 ID:zJ9dhKE40
>>379
ググれカスおよび>>1
381名称未設定:2012/11/03(土) 04:36:12.74 ID:jkc2LB270
あるよ
382名称未設定:2012/11/11(日) 17:53:35.42 ID:H3xGExQV0
あー最近は他の環境でプログラミングしてて来てなかったけど、過疎ってるなあ。
ところで、今度、部内でちょっとしたデータベースを作りたいと思ってる。
データベースに収めるデータは画像とテキストを1案件にまとめてデータを作成する予定
どういう風に作ればいいかな。
素人考えでは画像フォルダを作成し、そこに画像をストアしていき、それとは別にXML的な
テキストデータを作り、画像のパスもそこに埋め込んで、XMLを検索する。みたいな。
Databaseイベントなるものもあるみたいだけど、よくわからんっす。
383名称未設定:2012/11/11(日) 18:17:50.35 ID:H3xGExQV0
つーか、使えるな。Databaseイベント。他のところでも使ってみようか。ぜんぜんファイルメーカーいらないな。俺の用途だと。
384名称未設定:2012/11/14(水) 09:59:30.37 ID:RG3loiUm0
どうせ、グラマーはいつでもカキコできるんだから
もっとあげといてくれっ
ちゅーの
(・))((・)/
385名称未設定:2012/11/17(土) 14:19:30.47 ID:56tHsMXq0
プロ グラマー
あげ
386名称未設定:2012/11/17(土) 17:49:34.13 ID:/EJnEATA0
すいません、結構基本的なことでしょうが^^;

tell application "iTunes"
...
repeat with i in x
...
set fp to open for access POSIX file "/a/b/c.jpg"
...
end repeat
...
end tell

のopenがコンパイルエラーしてしまいます。
多分iTunesのopen勘違いされているのだと思うのですが、
repeat文の中にあるので。tell applicationを分割することが出来ません。
このように基本命令みたいなのを指すときにはどうしたらよいのでしょうか?
OSはMt. Lionです。
387名称未設定:2012/11/17(土) 18:35:01.23 ID:/EJnEATA0
自己解決。
数日前にみてた >>4 が答えになっていました。
tell me to set fp to open for access POSIX file "/a/b/c.jpg"
あるいは
set fp to open for access POSIX file "/a/b/c.jpg" of me
とすれば動きました。
388名称未設定:2012/11/17(土) 18:35:41.31 ID:/EJnEATA0
あ、4じゃなくて >>5 の間違え。
389名称未設定:2012/11/18(日) 06:49:57.21 ID:it5k1wx20
うん、つまずきやすいところだよな
解決したようで何より
390名称未設定:2012/11/18(日) 06:59:33.49 ID:xy1QmypI0
スクリプト作成依頼も兼ねてないと人が集まらん
>>1
これもっと門戸を広げるべき
391名称未設定:2012/11/18(日) 07:04:19.58 ID:it5k1wx20
人を増やす必要なんかないだろ、ニワカが増えても困る
これ作って下さいお願いしますーばっかりになったらそれこそ人が減るぞ
>>1にこう書いてあってもたまにそういう安易な書き込みをするアホだっているのに……
392名称未設定:2012/11/18(日) 08:37:15.82 ID:HBz84+P10
>> 390
「アプリ探し」のスレで頼めば新設な人がコード教えてくれるよ(ただしフォーマット遵守)
ここは391のような人が他人と自分のスキルを比べて騙り合いたい場所だから初心者はお断りなスレ
そもそも>>1を読まない人はどのスレでも嫌われる
393名称未設定:2012/11/18(日) 08:52:26.04 ID:47aBhE6p0
>>392
IP変わった
ニワカが増えると困るとは書いたが別に初心者お断りではないと思う
ニワカと呼ばれて嫌われるのは、別にAppleScriptに興味があるわけじゃなくて、自分の抱えてる糞みたいな問題を解決できると小耳に挟んでググりもせずここでそれを人任せにするようなやつだし
要はその「>>1を読まない人」だよね
394名称未設定:2012/11/18(日) 17:19:59.67 ID:b5muE1wM0
かといって>>1を読め、というだけで飽き足らず過剰に煽る輩がたまに居るのもどーかとは思う
自戒も込めつつ

>>392
騙り合うってなんだか意味深な誤記だね、とか言ってみたり
395名称未設定:2012/11/21(水) 21:59:31.42 ID:TmmXeHc+0
Terminal.appですが、以下のようにしたいのですが、"window"はとれないのでしょうか?

tell application "Terminal"
set myTab to do script ""
set myWin to the container of myTab -- <--こいいうことがやりたい
...
...
...
close myWin
end tell
396名称未設定:2012/11/22(木) 01:19:10.02 ID:LHOarl6b0
>>395
ここは読んでみた?
お望みのことができる気がする
AS Hole(AppleScriptの穴) By Piyomaru Software &#xBB; Terminal.app
ttp://piyocast.com/as/archives/category/application_control/terminalapp/

しかし自分も訊きたい
395みたいな、用語辞書でcontainされてると書いてあるclassを得るにはどううればいいんだろうか
この場合だと既知のtabからそれを包含してるwindowを得るには……?
tab&#x2002;n : A tab.
elements
contained by windows.
397名称未設定:2012/11/22(木) 20:32:23.34 ID:g497wntJ0
>>396
ありがとうございます。読んでありました。
書こうとしている内容は >>395 に書いたようなことですが、
お考えと全く同じで、なぜ親のwindowはとれないのか?ということを聞きたかったのでした。
logコマンドに食わせたりするとちゃんと item 1 tab of window id xxxx なんていうふうに知ってるのに。
少し脱線していきますが、
そのASの穴のようにログというか「処理の経過」を出したいのでした。
少し処理が長い(一個が重いand/or多数ファイルを食わせたら)ので、scriptが黙ってしまうのがどうも…と。
ASの穴でのloggerとconsoleを使う案は読みましたが、Terminalでできないのか?と考えてみたのです。

tell application "Terminal"
 set myTab to do script ""
 activate
 --delay
set myTTY to (tty of myTab) as string
...
...
close myTab
-- do script "\nexit 0" in myTab -- ASの穴案。exitの前に一度改行を打ち込んでおいたほうが確実。

ここで、
do shell script "echo 'abc\nxyz\n' >>" & myTTY
とやると、ログっぽいことはできます。
欠点はあって、Terminalなので何かキー、特にreturnキーを叩くとログに文字やshellのpromptが割り込んでしまいますし、
偶然 rm * みたいなことを打ち込まれたりするとshellが処理してしまうので問題があると思います。
本当はshell無しでTerminalのウインドウを開きたいのですが(その場合は >> /dev/tty ではだめですが)。
398名称未設定:2012/11/22(木) 20:58:24.59 ID:g497wntJ0
前の書き込み、close myTabは間違いですね^^; windowオブジェクトが必要(それで、 >>395 の疑問が出たのをすっかり忘れていました…)
連投で、チラ裏になっていきますが…

各shellは必ず別のttyが割り当てられるので、
set myWin to windows whose tty is (tty of myTab) -- becase all tty is unique
で親のwindowオブジェクトが取れます。
do shell scriptとして作れば必ずtab一個の新規windowが開くと思うので(あってますか?)、この用途が終わったらclose myWinしてしまっても迷惑をかけないはずです。
この文のwhoseの部分、ttyはwindowのtab elementのpropertyなのに動いてしまうのは、文法的にあっているんでしょうか?
399名称未設定:2012/11/22(木) 21:04:20.34 ID:g497wntJ0
ところで、windowは一意のid propertyがあるのですがtabにはないので、tabを特定するのにttyを使う(B参照)
A:
tell application "Terminal"
set myTab to do script ""
activate
set idWin to -1 -- not found flag
repeat with myWin in windows -- activateとここの一瞬の隙間にterminalの他のウインドウを前面にされたり、
-- terminal自身が前面でなくなると意図通りに動かない。
if (frontmost of myWin) then
set idWin to id of myWin
exit repeat
end if
end repeat
..
close window id myWin
end tell

B: tabオブジェクトそのものを比較出来ない
set myWin to -1 -- not found flag
repeat with aWin in windows
repeat with aTab in every tab of aWin
if (tty of aTab = tty of myTab) then -- (aTab = myTab) では絶対 true にならない
set myWin to aWin
end if
end repeat
if myWin >= 0 then
exit repeat
end if
end repeat
連投、長文失礼しました。
400名称未設定:2012/11/22(木) 22:32:41.76 ID:PzL+6Nfx0
>>395
set myWin to item 1 of (windows whose tabs contains myTab)
これでいけると思う
401名称未設定:2012/11/22(木) 23:58:37.76 ID:Po9v8C9d0
>>399
> if (tty of aTab = tty of myTab) then -- (aTab = myTab) では絶対 true にならない
これは aTab が repeat with X in Y の変数だから、
tab 1〜n of window x ではなく a reference to item 1〜n of every tab of window x になってる
故に contents of aTab = myTab としておけば true にもなる

>>400
わざわざ item 1 of (windows whose 〜 ) なんてやらんでも、
window 1 whose 〜 で済むよ
402名称未設定:2012/11/23(金) 00:07:56.08 ID:tHqN0wTE0
例えば System Events だとフォルダ用に container、
GUI Scripting用に attribute "AXParent" なんてのがあったりするけれど、
AS汎用でこうすれば親が辿れる、みたいな仕組みは無いんだよね

でまぁtabの親のwindow取るだけならこんなんとか
tell application "Terminal"
set myTab to do script ""
set myWin to window 1 whose tab of it contains myTab

close myWin
end tell

必要ないと思うけど敢えてttyとやらを使うなら
tell application "Terminal"
set myTty to tty of (do script "")
set myWin to window 1 whose tty of tab of it contains myTty

close myWin
end tell
403名称未設定:2012/11/23(金) 00:09:29.32 ID:tHqN0wTE0
あ、日跨いだのでid変わったけど401=402です
ってどーでもいいか
404名称未設定:2012/11/23(金) 07:07:31.27 ID:etE2QBcE0
>>402
>AS汎用でこうすれば親が辿れる、みたいな仕組みは無いんだよね
あるよ。
Object specifierのkeyAEContainer parameterが包含するobjectのobject specifier
tell application "Terminal"
set myTab to do script ""
delay 2
close <<class from>> of (myTab as record)
end tell
405名称未設定:2012/11/23(金) 07:40:37.70 ID:tHqN0wTE0
>>404
あんのかい!…これは恥ずかしい////
…ってかびっくりしたわ

でもなんかこれ、<<class from>> がコンパイルで from になるんだけど、
from の状態でもっかい再解釈入るとエラーになっちまうのね
はじめから from of と書いてても勿論エラー

なんだか微妙な扱いだな…
run scriptの中に収めるとか、テキストで保存するとか工夫しないと使い辛い
406名称未設定:2012/11/23(金) 07:51:04.33 ID:SW6KhzJy0
そんな小難しいことしないで、なんで素直に、全てのObjectはCore classみたいののsub classとかにして…みたいに
綺麗にやらんのかいな、…
 曖昧な書き方がたくさんできて、実行時エラーみたいのでわけがさっぱりわからない、で躓いて無駄に敷居高くしてる言語だと思ってる。
407名称未設定:2012/11/23(金) 10:21:34.40 ID:g8EOygGs0
>>402
>>404
超参考になった! さんくす
テンプレ入りさせてもいいんじゃないかと思うわ
408名称未設定:2012/11/24(土) 05:00:32.71 ID:8I9MQ7kh0
アクティブなアプリケーションのキャレットがあるテキストエリアのテキストを取得したいんだけどなんかやり方あるかいな?

やりたいのはMS WordとかCotEditorとかから、ショートカット一発でキャレットのある場所の単語を切り出して辞書.appで検索したいんだけど。

テキストを選択するのが面倒なんだよね…
409名称未設定:2012/11/28(水) 00:07:58.69 ID:gz60CrHV0
perl使って文字列置換すると改行コードがLF→CRになってしまいます。
デリミタ使うのを避けたくてperl使ったんですけど、
改行コードも変換されてしまって困りました。
最終的に改行コード変換するためにデリミタ使わないと無理ですか?

set LF to ASCII character (10)
set CR to ASCII character (13)
set str to "test000" & LF & "test111"
display dialog "Original text" & return & str & return & ">LF exists=" & (LF is in str) & " CR exists=" & (CR is in str)
set str to do shell script "perl -e '$_=$ARGV[0]; utf8::decode($_);s/test/テスト/g; print $_;' '" & str & "'"
display dialog "Replaced text=" & return & str & return & ">LF exists=" & (LF is in str) & " CR exists=" & (CR is in str)
410名称未設定:2012/11/28(水) 01:01:52.97 ID:dnd8pjKl0
そのスクリプトちゃんと読んでないけど without altering line endings ってのが
用語説明、TN2065
411409:2012/11/28(水) 01:22:53.17 ID:gz60CrHV0
>>410
おぉ!できた!
ありがとー!!
412名称未設定:2012/11/28(水) 04:04:02.90 ID:6LaTOnEP0
バイナリファイルの末尾についたゴミを取ろうと考えているのですが
そういう処理はアップルスクリプト(のドロップレット)で可能でしょうか?
内容をチェックする必要はなく、機械的に一定の長さだけ切り取りたいのです
413名称未設定:2012/11/28(水) 05:50:24.01 ID:lj8+a0840
>>412
簡単簡単
シェルスクリプトをくるめばOK
414名称未設定:2012/11/28(水) 06:31:54.57 ID:RTCWmfTQ0
>>412
普通にStandardAdditions.osaxでできるよ。
例えば末尾10byte削りたいなら。
set f to POSIX file "/path/to/file"
set fileLength to get eof of f
set eof of f to (fileLength - 10)
415名称未設定:2012/11/28(水) 08:17:25.52 ID:6LaTOnEP0
>>414
ありがとうございます
そのget eofあたりの操作が調べても判らなかったので大げさですが目ウロコです
(調べ方が下手なだけとも言えますが)
1つ1つバイナリエディタで削除したっていいよな?と考えているところでした、
本当に助かりました

最終的に下記の形のドロップレットになりました

on open of target_files
  repeat with thefiles in target_files
   set f to thefiles
   set fileLength to get eof of f
   set eof of f to (fileLength - 10)
  end repeat
end open
416名称未設定:2012/11/29(木) 00:24:32.19 ID:/AkfsLsG0
>>409
あ…automatorのrun shell scriptでperlで文字処理書いてたけど、
s/ / /で $ で行末とマッチしない気がして、うまくかけなくて(よって行頭の^も効かない)、
ごく自然に\Rでマッチさせるしかないか…って\R使ってたんだけど、Macのperlって改行がLFなのか?
ってかautomatorから渡される時は\rなのか。
417名称未設定:2012/11/29(木) 02:24:23.23 ID:N1yLLD1r0
でもVBAでやったほうがよくね?
418名称未設定:2012/11/29(木) 14:44:28.40 ID:2BZ31B8d0
スクリーンショットの動画版の作り方教えてください
419名称未設定:2012/11/29(木) 18:51:49.59 ID:PPJkuvqm0
tell application "QuickTime Player"
new screen recording
end tell
420名称未設定:2012/11/30(金) 21:42:51.31 ID:eaBnQrOk0
ABC順の用語辞書でもあったらいいのにな
AppleScriptLanguageGuideは探すのが大変だね
421名称未設定:2012/12/01(土) 15:30:38.40 ID:uWAXhzjEP
ねーねー
OSX10.8ってAppleScriptユーティリティー使えない?
422名称未設定:2012/12/01(土) 15:41:30.67 ID:uWAXhzjEP
つーかguiスクリプト10.8でイチからやろうとするとOSギャーギャー騒ぐ。
休み潰して会社にきたのにマジムカつく。
423名称未設定:2012/12/01(土) 15:43:24.81 ID:uWAXhzjEP
ある意味平日にこんなトラブルに巻き込まれなくて良かったが。
424名称未設定:2012/12/01(土) 19:58:35.15 ID:uWAXhzjEP
どなたか、、、。
Xcodeアプリで使うプロパティリストは10.8ではデフォルトでどこに格納されるのでしょうか?
アプリは動きますが設定ファイルがみつからないorz
425名称未設定:2012/12/01(土) 20:07:26.25 ID:+4U8OzLk0
>>424
>Xcodeアプリで使うプロパティリスト
とはなんじゃらほい。NSUserDefaultsなPreferencesとか?
~/Library/Containers/(Application identfier)/Data/Library/Preferences
にあったりなかったり
426名称未設定:2012/12/01(土) 20:22:24.05 ID:uWAXhzjEP
>>425
そこってFinderからいくところのライブラリだよね?
ターミナルからいってみたけどみあたらないよorz
10.5までの場合、ユーザーフォルダのライブラリフォルダのPreferenceにBundlefire名.plistであったんだけどユーザーフォルダ内のライブラリフォルダがなくなってしまった
勘弁してくれよアップル。
427名称未設定:2012/12/01(土) 20:25:28.25 ID:uWAXhzjEP
○bundle identifier名
428名称未設定:2012/12/01(土) 21:16:49.70 ID:+4U8OzLk0
>>426
>ユーザーフォルダ内のライブラリフォルダがなくなってしまった

>ターミナルからいってみた
はイコールではない。LibraryはFinderで単に不可視になっただけだから
find . -name (bundle identifier名.plist)で探してみたら。あるいは更新日でとか
429名称未設定:2012/12/01(土) 22:09:26.84 ID:uWAXhzjEP
>>428
そうですね。なんでまたそんな面倒なことをするのか。
外だったのでスマホからの書き込みで適当だったけど、applescriptユーティリティって
10.8でメニューバーに表示できないのかな。メニューからapplescriptが
実行できて、とても重宝していたんだけど。とりあえずFastScript入れたら
メニュー表示はできた。自作スクリプトが組み込めるのかはまだ試してない。
フォルダアクション設定もなんか変。AppleTalkもなんか変。もうやめてほしいよ本当に。
430名称未設定:2012/12/01(土) 22:24:10.24 ID:+4U8OzLk0
まあ... いろいろと勉強不足としか言いようが無いな。仕事なら転職をおすすめ
431名称未設定:2012/12/02(日) 00:10:10.20 ID:2E5V3Es40
>>429
/Users/hogehoge/Library/Preferences の事なら、
10.6からLibraryフォルダが不可視になってる

Finderの移動メニューでoptionキー押したら出てくる
openコマンドで直接開いてもいいし、或いはchflagsでnohiddenに設定しておけば普通に辿れる

AppleScriptユーティリティは10.5だか6だかでえでぃたと統合された
エディタの環境設定見てみろ
432名称未設定:2012/12/02(日) 00:11:43.75 ID:2E5V3Es40
Libraryが不可視になった方は10.7からの間違いだた
訂正>>431
433名称未設定:2012/12/02(日) 15:06:46.69 ID:tEh+OJ/qP
>>431
ありがとー。なんとかなりそうな気配。感謝です。
434名称未設定:2012/12/03(月) 22:51:08.29 ID:PQF5LI6z0
とりあえず10.8でも自作アプリが動くようになった。
最後は謎の動作不良があり、
該当のnibファイル内のオブジェクトが壊れていたようで、
削除し、再度同じ名前で作ってやったら動いた。
他のバージョンのOSでは動いているのでとても不思議。
結局、アドビのアプリなどの細かい挙動は修正したけど、
applescriptの基本的な部分では修正の必要はなかった。
435名称未設定:2012/12/18(火) 08:22:34.91 ID:aMEAKCTe0
>>430
Applescriptが仕事の人っているの?
というか、ここ意外に日本語のコミュニティでApplescriptをよく扱ってるところあるのかな。
孤立していて情報がない。
436名称未設定:2012/12/18(火) 11:44:06.08 ID:Mi368MBW0
DTP系の連中がJavaScriptに移行したからS/N比は向上した
437名称未設定:2012/12/18(火) 15:55:05.84 ID:NHLE95Ns0
>>435
仕事の一部で使う人は少なくないんじゃないか?
その質問はExcelのマクロが仕事の人っているの?と訊くのと似ている
438名称未設定:2012/12/18(火) 16:46:51.25 ID:R34AUsGU0
AppleScriptが仕事云々じゃなくて、IT系全般に適性なさそうだから転職しろってことだろ
439名称未設定:2012/12/19(水) 02:07:33.59 ID:PiR0qvwP0
>>435
ノシ

まぁ珍しいだろうね
今の仕事クビになったら、他でありつけそうな気がしない
440名称未設定:2012/12/19(水) 02:20:33.15 ID:Psu6+Zcs0
>>439
おーどんなことやってんの?
441名称未設定:2012/12/19(水) 09:00:11.79 ID:10/Vbi2o0
>>436
DTP系だけど、自動化しようとしたら結局アドビだけでなく総合的にデータを扱わないといけないから
AppleScriptの素養はないといけない。一方で、AppleScriptさえあれば、ほとんどJavaScriptはいらない。
Automatorは、、、、、、、糞以外のなにものでもない、ということにしておく。
442名称未設定:2012/12/19(水) 12:55:20.49 ID:eit8wmUz0
他と連携するためにAppleScriptからAdobe JavaScriptを扱うかたち。
AdobeのはAppleScriptだけでやれないことが色々と。
443名称未設定:2012/12/19(水) 22:35:13.32 ID:PiR0qvwP0
>>440
あんま詳しく書くと身内バレするんで…

GUI Scripting主体だから、
ASとしては傍流なんじゃないかな
444名称未設定:2012/12/21(金) 01:44:47.92 ID:40VQD6fR0
でもね、95年頃からアップルが昔抱えてた野望にオープンドックというのがあってだな
書類中心で全てのソフトを自動で動かすって寸法だったんだが
金がなくて頓挫したんだよなぁ
たしか98年くらいにそんなんなってた
445名称未設定:2012/12/21(金) 06:55:14.89 ID:MDrG+8Cz0
>>444
なんかあったね。そういうの。でもここにいるようなかなりハイレベルな
使い方するような人たちには向かない技術だったし、そうでない人には
意味が分からない技術だったような気がする。
でも、ああいう発想力こそ大切なのかなあとも思うけど。

ところで、Xcodeで作ったAppl;eScriptアプリケーションで一連の処理をしている場合、
処理を途中でキャンセルするにはどうすればいいんだ?Guiスクリプティングで操作に
失敗したときにストップしたいんだけど。今はアプリをFinderから強制終了してる。
446名称未設定:2012/12/21(金) 17:28:16.50 ID:jB8xcf4Y0
iTunesで再生中のものを、一定時間スキップするようなスクリプトはありますか?
再生中のものを10秒進める、60秒進めるとかをAppleScriptで制御したいです。
447名称未設定:2012/12/21(金) 17:29:29.32 ID:jB8xcf4Y0
と思ったらググったら見つかったわ
30秒進める
tell application "iTunes" to set player position to (player position + 30)
30秒戻す
tell application "iTunes" to set player position to (player position - 30)
448名称未設定:2012/12/21(金) 17:31:13.31 ID:l6efCI570
>>446
10秒進める。

tell application "iTunes"
if ((player position + 10) > 0) then
set player position to (player position + 10)
else
set player position to 0
end if
end tell
449名称未設定:2012/12/24(月) 21:10:46.58 ID:6Da0D6Cy0
ドラッグアンドドロップでファイルパスをtable viewに表示し、設定したり、コピーしたりすることは
できるようになったけど、シフトなどの修飾キーを押してドロップしたときだけコピーをするようにし、
その際、ドロップするまでカーソルアイコンをプラスマークとかにしたい。どうすりゃいいの?
450名称未設定:2012/12/28(金) 16:40:45.18 ID:YnIQUVEX0
フォルダー名をTextEditに書き出したいのですがやり方を教えて下さい
これで、結果蘭にフォルダー名が表示されてます
set FolderPath to (choose folder with prompt "フォルダを選択")
set NameList to (list folder FolderPath)
set AppleScript's text item delimiters to return
set NameList to every item of NameList as string

最終的には、下のように、2階層のフォルダー名を全てTextEditに保存したいのです
AAA(一階層目のフォルダー名)
001(二階層目のフォルダー名)
002(二階層目のフォルダー名)
003(二階層目のフォルダー名)
004(二階層目のフォルダー名)
BBB(一階層目のフォルダー名)
011(二階層目のフォルダー名)
012(二階層目のフォルダー名)
013(二階層目のフォルダー名)
014(二階層目のフォルダー名)
451名称未設定:2012/12/28(金) 19:36:21.33 ID:OCwEuSnu0
>>450
再帰的にフォルダ内のフォルダを探るハンドラ作って、あとはリストにして、
それを書き込むな。私の場合は。
AppleScript's text item delimiters とかいらんでしょ。
452名称未設定:2012/12/28(金) 21:40:28.02 ID:VrNgnc+A0
>>450
2階層目までファイルが存在しないのであれば
Applescript使わずにFinderウィンドウをリスト表示にして全てを選択後→キー
もう一度全てを選択してコピー&TextEditにペーストとかでもいいかもね。
(choose folder使うくらいなら)

Applescript使うならロップレットにした方が使い勝手がよさそう
453名称未設定:2012/12/28(金) 22:18:38.16 ID:OpiwtW740
find コマンド使って結果をお好みに編集した方が早いんじゃないの?

って最後まで作ってなくて書くけど
set FolderPath to (choose folder with prompt "フォルダを選択")
set NameList to do shell script "find " &amp; quoted form of POSIX path of FolderPath &amp; " -type d -mindepth 1 -maxdepth 2"
454名称未設定:2012/12/28(金) 22:21:29.29 ID:OpiwtW740
アンパサンドが化けたw
&amp; はただの & への読み替えお願い
455449:2012/12/28(金) 22:57:54.87 ID:nq3zdvSRP
みなさんいらっしゃるじゃないですか。
こちらもぜひとも、、、、、、。
456名称未設定:2012/12/29(土) 00:10:45.73 ID:gRqeapAt0
checkModifierKeysをインストールするのがいやでなければ、それを使えば、
shell からModifierKeysの状況を調べられる。

http://lists.apple.com/archives/applescript-users/2011/Aug/msg00027.html
など参照。
457名称未設定:2012/12/29(土) 04:02:11.30 ID:LVZ5n6Rg0
>>455
あっちと違って君の質問はほぼAS以外の領分なんで難しーのよ
マウスカーソルの状態判別は昔やってみた記憶があるけど、変更するのはやった事無いなあ
458名称未設定:2012/12/29(土) 09:42:04.77 ID:NbW6oHqCP
>>457
あー、そうですかこちらもかなり調べたんですが、マウスカーソルの件は
call method でカーソルのオブジェクト?をいじる方法があるみたいかな、と踏んではいます。
で、調べが進まないのは、ドラッグアンドドロップのルーチンの中でさらに
キーを押す/押さないで動作を変化させる、というのをどう組み合わせたらいいか分からんのです。
この際マウスカーソルの変化は置いとくとしても。
459名称未設定:2012/12/29(土) 16:19:20.97 ID:JkR2QImY0
450です
>>451
再帰的、ハンドラ、
目にした事があるだけで、使い方はさっぱりです
--set AppleScript's text item delimiters to return
改行して表示したいので削除すると見にくいのですが…
>>452
3階層目までありました
→キー でこんな事できるのですね知りませんでした
Dropletにするつもりです
>>453
これがシェルスクリプトですか?
UNIXコマンド?
検索すると-type b c l f とありました
-type d -mindepth 1 -maxdepth 2
-mindepth 1 1階層目
-maxdepth 3 3階層目までありましたので3に変更しました
460名称未設定:2012/12/29(土) 16:20:12.22 ID:JkR2QImY0
"/Users/xxxx/Desktop/選んだフォルダー名//1階層目フォルダー名/2階層目フォルダーA
/Users/xxxx/Desktop/選んだフォルダー名//1階層目フォルダー名/2階層目フォルダーA/3階層目フォルダー001
/Users/xxxx/Desktop/選んだフォルダー名//1階層目フォルダー名/2階層目フォルダーA/3階層目フォルダー002
/Users/xxxx/Desktop/選んだフォルダー名//1階層目フォルダー名/2階層目フォルダーB
/Users/xxxx/Desktop/選んだフォルダー名//1階層目フォルダー名/2階層目フォルダーB/3階層目フォルダー101
/Users/xxxx/Desktop/選んだフォルダー名//1階層目フォルダー名/2階層目フォルダーB/3階層目フォルダー102"
こんな感じに結果が表示されました
ここから
2階層目フォルダーA
3階層目フォルダー001
3階層目フォルダー002
2階層目フォルダーB
3階層目フォルダー101
3階層目フォルダー102
このように取り出すにはどうすればいいですか?
461名称未設定:2012/12/29(土) 16:21:31.88 ID:JkR2QImY0
最初のは検索して
set FolderPath to (choose folder with prompt "フォルダを選択")
set NameList to (list folder FolderPath)
set AppleScript's text item delimiters to return
set NameList to every item of NameList as string
tell application "Finder"
set aText to (NameList & return)
set aTextFile to open for access ((desktop as text) & "test.txt") with write permission
set aEOF to get eof of aTextFile
try
write aText starting at (aEOF + 1) to aTextFile
on error aErrorText
display dialog aErrorText
end try
close access aTextFile
end tell
これで保存はできましたが、1階層目しか書き出せません
検索するにも用語すら解ってないので、ヒントだけでもお願いします
462名称未設定:2012/12/29(土) 17:36:11.30 ID:r4qn/1ea0
3階層目まで、と決まっているなら、
選択したフォルダの中にあるフォルダのフォルダ名をすべて取得
を3回繰り返せばいいだけだよ。
そして、その文字列変数を結合、構成して書き込むデータを作り、
ファイルに書き込むだけ。
delimitersとかまだ難しそうだから使わないほうがいい。
set EveryFile to every folder of 〜
set FileName to name of 〜
repeat with i 〜
if exists then 〜
それからデータ型のリストとエイリアス。基本中の基本だよ。
AppleScriptって普通に書くと本当に自然言語みたいだからまずは
なにがしたいのか図にまとめて、それから素直にやるのが吉。
463名称未設定:2012/12/29(土) 22:28:48.89 ID:r4qn/1ea0
tell application "Finder"
set theFolder1 to every folder of (choose folder)
if (count of theFolder1) is not 0 then
set theFolderList to ""
repeat with i in theFolder1
set theFolderList to theFolderList & name of i & return
set theFolder2 to every folder of i
if (count of theFolder2) is not 0 then
set theFolderList2 to {}
repeat with k in theFolder2
set theFolder3 to every folder of k
set theFolder3NameList to ""
repeat with m in theFolder3 --3階層目のフォルダリストをテキスト化
set theFolder3NameList to (theFolder3NameList & " " & name of m) & return
end repeat
set end of theFolderList2 to " " & name of k & return & theFolder3NameList as Unicode text
end repeat
repeat with h in theFolderList2
set theFolderList to theFolderList & h
end repeat
else
set theFolderList to theFolderList & name of i as alias as Unicode text
end if
end repeat
else
display dialog "フォルダはありません"
end if
end tell
theFolderList
464名称未設定:2012/12/29(土) 22:35:33.02 ID:r4qn/1ea0
あら、階層表現すんのにスペース加えたけどなくなっちゃうのね。
まるで汎用性はないが、これの繰り返しが習得の早道だと思うわ。
465名称未設定:2012/12/30(日) 09:00:53.96 ID:n/6izRPVP
なんか気になってチェックしたら、大言壮語した割に間違えてたorz 直ったけど。どう直すかは頑張ってね〜
冬休みですもんね〜w
466名称未設定:2012/12/30(日) 11:48:16.91 ID:G42MaeDa0
>>462
ありがとうございます
set EveryFile to every folder of 〜
set FileName to name of 〜
repeat with i 〜
if exists then 〜
これらから検索して参考になりそうなページを見つけ
なんとかできそうかなと思っておりましたら
その後、一からスクリプトを書いていただき、ありがとうございます
今確認しましたところ結果には希望の形で表示されておりますので
どこが間違っているのか、今の私では解りませんが
返された値をみると細かく表示されておりますのでひとつひとつ理解して行きたいとおもいます
repeat with i 〜
i以外でもいいのですね
今更ですが、スノレパのアイコン整頓のバグをなんとか改善したく検索すると
AppleScriptで出来ると知り、こんな便利なものがあるならもっと他にもできるかなと
調べだしたのが、2週間前です
色んなページのScriptをくっつけて、サイドバー非表示&緑のボタンクリックするScriptを
Sparkに登録して便利に使ってます
10年前に発売されたAppleScriptの本でも買って読んだ方がいいのでしょうか?

親切すぎる>>462様 有難うございました。
467名称未設定:2013/01/01(火) 08:55:53.98 ID:Nsxzz12j0
tell application "Finder" to if year of (current date) is 2013 then display dialog "あけおめ!"
468名称未設定:2013/01/01(火) 11:07:03.15 ID:JnHYt4Co0
>>467
内蔵電池が切れています><
469名称未設定:2013/01/02(水) 12:26:37.04 ID:I5eDNZA10
>>467
こんなワンライナー書けるんだな。本年もよろしく。
470名称未設定:2013/01/09(水) 23:39:39.74 ID:u1cifhbo0
Adobe イラストレーターで、「非表示のレイヤーを削除する」スクリプトを組もうとしています。

tell application "Adobe Illustrator"
set countLayers to count every layer of document 1
repeat with i from 1 to countLayers
if visible of layer i of document 1 is false then
set visible of layer i of document 1 to true
set locked of layer i of document 1 to false
delete layer i of document 1
end if
end repeat
end tell


このようなリピートループだと、レイヤーを削除すると
変数iの上限値が(実際のレイヤー数 - 削除されたレイヤー数)を上回ってしまい、
エラー終了してしまします。

ループの中で、iを-1してみたり countLayersを-1してみたのですが、
変数のスコープの外なのか上手く行かず...

どなたかお知恵を貸して下さい
スマートで無いですが、エラーを無視させる方法や、「iとcountLayersが等しくなったらループを終了する」処理もありがたいです
471名称未設定:2013/01/09(水) 23:57:42.02 ID:IG3dGmiM0
repeat with i from countLayers to 1 by -1
472名称未設定:2013/01/10(木) 02:27:40.83 ID:eY4pPo4o0
これだとrepeatもifも不要

tell application "Adobe Illustrator"
tell document 1
set delLayers to layers that visible is false
set visible of layers to true
set locked of layers to false
delete delLayers
end tell
end tell

全レイヤーのロック外れちゃうけど
set visible of delLayers to true
set locked of delLayers to false
だとエラーになる
473名称未設定:2013/01/10(木) 02:51:22.54 ID:eY4pPo4o0
tell application "Adobe Illustrator"
tell document 1
set delLayers to layers whose visible is false
repeat with i in delLayers
set visible of i to true
set locked of i to false
end repeat
delete delLayers
end tell
end tell

repeat使っちゃったけどこれならいいんじゃないかな?
474名称未設定:2013/01/10(木) 16:25:24.92 ID:RZ3tSK1F0
>>471
なるほど過ぎて目からウロコでしたw
ありがとうございました!

>>472-473
この場合、delLayersに代入されるのは数列なのでしょうか?
こんな使い方が有ったとは初めて知りました。
#プログラムは素人な物で、言い方が間違ってたらゴメンナサイ

条件にマッチするレイヤー等の情報を集めて、後で処理するのは
様々な場面で便利そうですね。勉強になりました。ありがとうございます!!
475名称未設定:2013/01/10(木) 21:14:56.38 ID:7hrBfvPP0
>>474
寡聞にしてイラレのapplescriptは知らないが、オブジェクトの複数形だから、
every layer of document 1 と同じじゃないかな。つまり、レイヤーのリスト。
レイヤーのリストがどんなものかはapplescriptエディタで実行してみればわかる。

とか? 
476472=473:2013/01/11(金) 00:38:28.94 ID:FZGsbcH70
>>474
delLayersに代入されるのは>>475の言うとおりレイヤーそのもののリスト。
例えばその後に
set hiddenLayer1 to item 1 of delLayers
とやると変数hiddenLayer1に不可視レイヤーの1つめが代入される。(不可視レイヤーが存在するのが前提)

whose 〜(that 〜も全く同じ機能)はフィルタ参照と言って
アプリケーション側のオブジェクトを変数に代入するときに抽出条件を付けられる。
(アプリケーション側がフィルタ参照に対応してないとダメなようだけど)
受け渡す物を絞り込んだ分動作が高速になる。
477名称未設定:2013/01/11(金) 22:45:31.33 ID:4i5qZx0A0
さて、プログラムの中にある頻用するサブルーチンのハンドラを別ファイルにまとめて、
使用時にload scriptすることにした。

だが、ここで問題が。
いつもは思いつきで適当に my〜、〜of meを混ぜて書いてしまったり、ハンドラの引数に
またハンドラが書かれていたりするので簡単な検索置換では修正できない。
スクリプトは行数にして全体で8000行くらいあります。移動する予定のハンドラは40個くらいです。
A.1行1行まじめに確認しながら修正する。
B.AppleScriptでなんらかのスクリプトを作り、処理する。
C.○○という高機能エディタでああしてこうして〜以下略
D.そんなのはRubyかPrerlのワンライナーでイチコロ

どうするのが一番「面白い」でしょうねえ。
478名称未設定:2013/01/12(土) 22:40:21.46 ID:k0ZRk5ZA0
○○という高機能エディタをAppleScriptで操作してああしてこうして〜
って感じになるだろうから、B+Cになるんじゃないかな。

もしくは、AppleScriptの「do shell script」でRubyかPerlのコードを実行して〜
みたいな、B+Dか。

AppleScript的には、B+Cが面白いんじゃないかと。
479名称未設定:2013/01/13(日) 08:25:16.10 ID:7LdiV9tH0
>>478
ご回答ありがとうございます。考えてみたら、けっこう簡単だな。できた。頭の中では。
掃除して、風呂入ってビールでも飲みながら遊んでみますw ありがとうございます。
検索置換系の高機能エディタのおすすめあります?
480名称未設定:2013/01/13(日) 10:33:50.32 ID:SHeo2WQa0
>>479
sed
481名称未設定:2013/01/13(日) 12:59:48.21 ID:7LdiV9tH0
>>480
おお勉強意欲が湧いてきた! 素人ですまんw 午後から本気だす。
482477:2013/01/15(火) 21:40:44.59 ID:iST9yCGl0
お騒がせしました。
mi.appで手動て30分くらいでだいたいできました。
スレチだけど、正規表現でキャプチャーグループで検索置換できるのは
試した中ではこれしかなかった。KEditorがAppleScriptに対応しているが、
キャプチャーグループに対応してない。

D案も少しやってみたけど、 ' のエスケープがよくわからないのとともに、
対象テキストをどうエスケープすればいいか検討がつかない。1字ずつ
チェックしてエスケープすんの?
483名称未設定:2013/01/16(水) 17:24:29.91 ID:ooBe6HwC0
デジカメデータを外付HDから何度か移動しているうちに
なぜかファイルの"作成日"と"変更日"が移動した日になってしましました
作成日はDeveloper Toolsでないと書き換えできない様なので
変更日をExifの撮影日に書き換えようと下記スクリプトを書きましたが
上手くいきません

on open DropObj
tell application "Finder"
repeat with ObjFiles in DropObj
do shell script "/usr/bin/exiftool " & DropObj's POSIX path
set modification date of file DropObj to do shell script "/usr/bin/exiftool -DateTimeOriginal" & DropObj's POSIX path
end repeat
end tell
end open

宜しくお願い致します。
484名称未設定:2013/01/16(水) 23:52:44.51 ID:w+VSnjpv0
>>483
とりあえず四行目は
do shell script "/usr/bin/exiftool " & (quoted form of ObjFiles's POSIX path)
だろうな
すまんがexiftoolもってないから実験はできない
なんとなく基本がわかってない気がするから>>1にあるサイトなんかを読むことを勧める
485名称未設定:2013/01/17(木) 01:51:32.67 ID:UcgaLRBb0
すげぇ丸投げ
486名称未設定:2013/01/17(木) 02:03:49.92 ID:1tO5VDmT0
せめてエラーの内容くらい書けよと
487名称未設定:2013/01/17(木) 09:44:37.32 ID:3FM6QhFc0
>>484
on open DropObj
tell application "Finder"
repeat with ObjFiles in DropObj
do shell script "/usr/bin/exiftool " & (quoted form of ObjFiles's POSIX path)
set modification date of file DropObj to do shell script "/usr/bin/exiftool -DateTimeOriginal" & DropObj's POSIX path
end repeat
end tell
end open

教えて頂いたように書き換えましたが同様に
No file specified とダイアログが表示されました
488名称未設定:2013/01/17(木) 09:45:16.69 ID:3FM6QhFc0
複数の写真ファイルが入ったフォルダをドロップすると
No file specified とダイアログが表示されます

on open DropObj
tell application "Finder"
repeat with ObjFiles in DropObj
set modification date of file DropObj to current date
end repeat
end tell
end open

これなら正しく変換されましたので
current date の部分をexiftool に置き換えればいいのかな?と単純に考えたのですが
基本が解ってないと無理みたいですね
ありがとうございました。
489名称未設定:2013/01/17(木) 09:51:36.22 ID:Sx8t85RLP
>>487
そういうときは各行のあいだに
display dialog"ここまで"
とか書いてどこがエラーの箇所か特定
特定できたら服を脱いで小一時間考えろ。
デバッグの初歩の初歩。
490名称未設定:2013/01/17(木) 10:14:15.87 ID:9065cqBP0
>>488
実行するshell scriptを先にテキストにしてlogで確認してみては。
set script_text to "実行したいシェルスクリプト" as text
log "script_text : " & script_text
--do shell script script_text
実行できそうならコメントアウトを取る。
491名称未設定:2013/01/17(木) 10:58:17.93 ID:E2BizyGU0
とりえあずrepeat中のDropObjは全部ObjFilesの間違いだろ
何故かs付けちゃってるから混乱してんのか?
内容考えたらDropObjsとObjFileの方がまだしっくり来る

>>484がそれを修正してるのに内容読まずにコピペしてるだけだから、
以降の類似箇所は手つかずのままになってる
quoted form ofの件も同様

そもそもいきなりopenハンドラで作り始めるのが無謀すぎる
runハンドラで1行ずつ結果を確認しながら作れよ
492名称未設定:2013/01/17(木) 11:00:23.43 ID:E2BizyGU0
頭に血が昇って"あ"と"え"が入れ替わっちゃったじゃないか…///
493名称未設定:2013/01/17(木) 11:16:11.66 ID:15XLmRcC0
AppleScriptの学習も兼ねてるんだろうけど
EXIFの撮影日をFinder作成日に移すだけならGUIのソフト使えばいいのでは
494名称未設定:2013/01/17(木) 11:42:17.83 ID:1tO5VDmT0
>>491
484だけどどうせ返事するなら丁寧に書けばよかったかも
いや、>>1読めとだけ書いた方が親切だったかw

>>487
やる気があるなら>>1にあるAppleScript PARKさんの初心者向けページなんかはとても参考になるし、
applescript覚えればいろいろな機会に使えるだろうから諦めずにがんばってみて!
ちなみにあなたのやろうとしていることは、do shell scriptがちょっと特殊だが、
基礎レベルといえるので基本がわかればすぐにできるよ
またエラーが出たらここの住人はなんだかんだ親切なので具体的に書けば助けがもらえると思う
495名称未設定:2013/01/17(木) 13:29:18.24 ID:E2BizyGU0
> set modification date of file ObjFiles to do shell script "/usr/bin/exiftool -DateTimeOriginal" & DropObj's POSIX path
変数間違いとかfile別にいらねーとかは置いとくとしても、これも根本的におかしい

まず"No file specified"になるのは、-DateTimeOriginalの後にスペースが無いから、
パスがexiftoolのオプションにくっ付いた形になって、ファイルを指定してない事になってる

更に左辺はdateオブジェクトだけど、右辺の正しい結果は"Date/Time Original : 2012:01:17 12:34:56"みたいな文字列だから、
AppleScriptが多少のデータ型の違いは勝手に変換処理してくれるとはいっても、
こんなのまで自動認識して代入できるわけがない

個別に実行してりゃすぐわかる話なのに、
拾いもん?のスクリプトを適当に並び立てただけだから、
何がおかしいのかもわからなくなる

>>494
おっしゃる通りだねー
でもまだ>>1すら読んでない気がするわ…
496名称未設定:2013/01/17(木) 13:48:35.74 ID:E2BizyGU0
ってそもそも
> do shell script "/usr/bin/exiftool " & (quoted form of ObjFiles's POSIX path)
これもやる意味ねーなー
俺もまるで読んでねーというオチか…
497名称未設定:2013/01/17(木) 14:47:59.06 ID:E2BizyGU0
うーんdateオブジェクトって作るのめんどくせーな
set OrgDate to current date
repeat with ObjFiles in DropObj
do shell script "/usr/bin/exiftool -DateTimeOriginal " & quoted form of ObjFiles's POSIX path
set {year of OrgDate, month of OrgDate, day of OrgDate, hours of OrgDate, minutes of OrgDate, seconds of OrgDate} to words -6 thru -1 of result
tell application "Finder"
set modification date of ObjFiles to OrgDate
end tell
end repeat

若干重いみたいだけど、書き換えもexiftoolでやった方がシンプルではある
repeat with ObjFiles in DropObj
do shell script "/usr/bin/exiftool '-DateTimeOriginal>FileModifyDate' " & quoted form of ObjFiles's POSIX path
end repeat
498名称未設定:2013/01/17(木) 15:42:52.45 ID:3FM6QhFc0
>>489
display dialog"ここまで"

そういう方法があるんですね
ありがとうございます

>>490
logで確認してみては

まだ意味が理解できませんので
>>1で勉強します
ありがとうございます。

>>491
とりえあずrepeat中のDropObjは全部ObjFilesの間違い
ttp://force4u.cocolog-nifty.com/skywalker/2010/05/applescriptillu.html
このサイトからコピペしましたので、理解はできてません

openハンドラで作り始めるのが無謀すぎる
同様の理由でrunハンドラも知りませんでした

>>493
GUIのソフト使えばいいのでは
それも探してみます
ありがとうございます。
499名称未設定:2013/01/17(木) 15:44:32.23 ID:3FM6QhFc0
>>494
AppleScript PARKさんの初心者向けページ
ゆっくり拝見したいと思います
ありがとうございます。
本当にみなさん親切で助かりました

>>495
-DateTimeOriginalの後にスペースが無い
ファイルを指定してない事になってる
分かり易い説明ありがとうございます。

2012:01:17 12:34:56"みたいな文字列
確かにFinderでは 変更日 : 2012年1月17日木曜日12:34 と表示されてるので
年、月、日などに置き換えないとだめかな?と考えてましたが
やはりそうでしたか

拾いもん?のスクリプトを適当に並び立てた
すいません 今まで貼り合わせたスクリプトで動いてましたので
基本は理解しておりませんでした

>>497
すみません スクリプト書いて頂きましてありがとうございます。
解らないところだらけですが、1のサイトを参考に勉強していきます
皆様ありがとうございました
500名称未設定:2013/01/17(木) 19:19:20.79 ID:Sx8t85RLP
ごろごろ〜ごろごろ
あ〜あ
Applescriptって他の言語とアプリケーションと連携させると
想像以上になんでもできるんだよね。
1人でもいいから使う人が増えるといいなあ。
ごろごろ〜ごろごろ
501名称未設定:2013/01/17(木) 21:00:42.43 ID:fLAEcXTA0
Xcode で作るアプリケーションでリストからアイテムを取り出したときどうすればいいか分からないことがある。

on ScriptA(theList)
repeat with i in {"text1",button "button1"of window "main",0,current date}
set end of theList to i
end repeat
end ScriptA

on ScriptB(theButton)
display dialog title of theButton as Unicode text
end ScriptB
とあるとき、

set testList to {}
my ScriptA(testList)
my ScriptB(item 2 of testList)

などとするとエラーが出ます。原因はitem 2 of testListがオブジェクトだからで、
ScriptB内で title of item 2 of {"text1",button "button1"of window "main",0,current date}みたいな
ことになり、うまくいかない、ということらしい。これがテキストだとか、integerとかなら asを使って

on ScriptB(theButton)
set theButton to theButton as Unicode text
display dialog theButton
end ScriptB

などと型を明示してやることでうまくいくが、オブジェクトだと上手くいかない(気がする)
as class as button as item
とかいろいろやったがうまく行かない。なにがだめなんでしょう?
502名称未設定:2013/01/18(金) 00:36:14.83 ID:VqVwgazC0
>>499
>>488
>複数の写真ファイルが入ったフォルダをドロップすると
複数のファイルをドロップして一つずつ処理するスクリプトに
フォルダをドロップしてもダメじゃね?
フォルダをドロップしてその中のファイルに対して処理をするなら
repeat文の前に
set theFiles to files of DropObj
として
repeat with objFile in theFiles
でやらないと

>>501
button "button1"of window "main"
にtitleプロパティはあるの?
503名称未設定:2013/01/18(金) 04:28:02.07 ID:Q7fumKL60
>>500
cもrubyもシェルスクリプトも使えて自家製アプリケーション化できる
常駐させるのも簡単、いいことづくめだなあ〜
504名称未設定:2013/01/18(金) 09:23:57.25 ID:+yiOIg7e0
>>501
特に問題なく動いたよ?原因は別にある様に思うけど
てゆーかコンソール開いておいて、display dialogじゃなくlog使え

そんでもダメなら、文字列なら問題ないというのだから、
一旦変数に入れれば良かろう
タイトルだって取り出しちまえばただの文字列だ

後半の話は?
型の違うデータをasで変換するのは意味あるけど、
同じ型にかけ直しても意味なんかない
505名称未設定:2013/01/28(月) 20:32:49.41 ID:DLPYOqYcP
昔、ここにディスクイジェクトが遅くて
なんとかならないかと質問した者だけど
GUIスクリプティングでスムーズにできる
ことがわかった。
が、前段階で最初にディスクを選択するときFinderでselectするとウィンドウが開いてしまってそこでディスクが選択された
状態になる。
ウィンドウを開かないでFinder上で
ディスク選択する方法ってある?
506名称未設定:2013/01/28(月) 20:47:42.04 ID:i0BWFh+m0
>>505
要は何がしたいの?
ディスクのイジェクトならシェルスクリプトで一発じゃん
507名称未設定:2013/01/28(月) 21:15:52.24 ID:x9o9VNIh0
>>506
Googleさまにあげる祝詞を教えてくれ。
508名称未設定:2013/01/28(月) 21:22:50.32 ID:x9o9VNIh0
>>506
あーわかんね。光学ドライブがMOとDVDが2台とか接続されてたらどうすりゃいいのよ。
509名称未設定:2013/01/28(月) 22:22:48.54 ID:i0BWFh+m0
Finderの用語辞書にある disk, eject あたりとコマンド diskutil, drutil の組み合わせでとうとでもなる
具体的な質問ができたらまた書いてな
510名称未設定:2013/01/28(月) 23:17:54.07 ID:x9o9VNIh0
>>509
実際にはマウントされてるMOとDVDがある場合、選択的にdrutil ejectするにはどうするんよ?
OSは10.5です。
511名称未設定:2013/01/28(月) 23:43:30.67 ID:vQrnvvpn0
例えばDVDのルートパスが /Volumes/DVD、
デバイスIDが disk3 な場合

diskutil eject /Volumes/DVD
または
diskutil eject disk3

こーゆーこっちゃねーの?
512名称未設定:2013/01/28(月) 23:53:34.37 ID:i0BWFh+m0
>>510
祝詞はもうわかったろう? ちゃんとググったの?
513名称未設定:2013/01/29(火) 00:57:43.09 ID:YxQSvOTO0
tell application "Finder"
open file "Eject.menu" of folder "Menu Extras" of folder "CoreServices" of folder "Library" of folder "System" of startup disk
end tell
tell application "System Events"
tell process "SystemUIServer"
tell menu bar 1
set ejectItems to menu bar items whose description is "eject"
set ejectMenu to item 1 of ejectItems
click ejectMenu
set ejectButtons to menu items of menu 1 of ejectMenu whose name starts with "メニューに出るドライブ名"
click item 1 of ejectButtons
end tell
end tell
end tell
514名称未設定:2013/01/29(火) 03:11:13.39 ID:C+njOnVI0
>>507
面白い言い回しだぬ
いつか使ってみるわ
515名称未設定:2013/01/29(火) 06:36:21.50 ID:rjgxVpyE0
サムいからやめときなはれ
516名称未設定:2013/01/29(火) 07:39:24.35 ID:RhpTqy0B0
>>511
ネットで見ると上のやり方うまくいかないみたいなこと書いてあるので、下のデバイスIDを切り出すのが
異常に面倒かと思ったけど、やってみます。

>>513
そっちから行く方法もありますね。

しかし、前に質問したときはまるで反応がなかったのにいろいろ解決方法はあるもんですね。
517名称未設定:2013/01/29(火) 08:14:45.47 ID:rjgxVpyE0
>>516
質問者の分際で、しかもいくつも答えをもらっているのに、スレを侮辱するような物言いはどうなのよ
知ってるがお前の態度が気に入らない、とか言われるぞ
518名称未設定:2013/01/29(火) 08:43:34.51 ID:NQU6v1c80
ここまで感謝の言葉なし
519505:2013/01/29(火) 11:28:25.10 ID:GW7CAjsrP
いろいろありがとうございます。
diskutilとdrutil試してみましたが普通に
ejectするのと変わりませんでした。
目がチラチラするんでオススメしませんが
一応貼っておきます。

tell application "Finder"
set EjectDisk to selection as alias
select EjectDisk activate
tell process "Finder" of application "System Events"
pick (menu item (("“" & name of EjectDisk as string) & "”を取り出す") of menu "ファイル" of menu bar item "ファイル" of menu bar 1)
end tell
close Finder window 1
end tell
520名称未設定:2013/01/29(火) 13:03:12.88 ID:gk4JjfuF0
>>513
がせっかくAppleScriptらしいやり方でウインドウを出さない方法を示してくれているのに……
自分ならイジェクトメニューを表示したくないのでこうはしないが、いいアドバイスだと思います

で「普通にejectするのと変わらない」とかどういうことだw
コマンドラインで何かが実現できない理由としては
コマンドが存在しない場合もあるが九割方は単に使えてないだけ
この場合は明らかに後者、なぜならおれはdrutilでできてるもんねw
521名称未設定:2013/01/29(火) 13:05:28.61 ID:gk4JjfuF0
煽っといてすまんdiskutilのマチガイ
522505:2013/01/29(火) 15:47:24.61 ID:GW7CAjsrP
>>520
いやいや、ディスクイジェクトするだけなら、普通に、eject disk とかやればいいんだけど、
なぜか手持ちのマックで、10.5だけ、イジェクトが異常に遅いの。他のマックでは
3秒くらいで排出されるのに、10.5だけ、15秒くらいかかる。
教えてもらった方法も同様の症状。
メニューにイジェクトメニューを出すgui
スクリプトも悪くないんだけど、
いろんな人が使うスクリプトで、表面的に
特殊なことをすると、気持ち悪がってダメも使わないんです。
それよりは一瞬ウインドウがちらつくけれど、自分のスクリプトがマシかな。
自分みたいな用途の人もいるかな、と
さらしただけ。鯛はないので、許してほしい。
523名称未設定:2013/01/29(火) 18:01:04.67 ID:gk4JjfuF0
なんだこのテンプレ乙は……

■「エスパーきぼんぬ」「氏ね」「(゚Д゚)ハァ?」等のレスをもらえる十六ヶ条。
1. ハードウェア、OSのバージョン等には一字一句触れない。
2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。
3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。
  目の前で生じている現象をそのまま具体的に書くなどもっての外。
  事実より俺様の脳内解釈を優先すべし。
4. 独り言文体で必勝。
  「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」
5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。
6. もう試したことを得意げに指摘してくる奴には、厳しく対応。
  「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」
  "どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。
7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。
  「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」
  示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので絶対に避ける。
8. 情報は小出しに。
9. あくまで慇懃無礼な態度で。
  表面上は、丁寧な言葉遣いで、自分の考えに沿わないものは回答として認めない。
10. 始めから回答を制限したりする。
  「○○は無しの方向で」とか「○○は却下です」とか。
11. 「フリーで」とソフトウェアを探させる。
12. 勝手に用語を省略する。
  「フォトショ」、「イラレ」、「ブーキャン」、「レパ」、「レオ」とかを多用する。
13. 亀レスな上にKY。
14. クリーンインストールを嫌がる。
  状況を書かないのでクリーンインストールしか解決策が見当たらない状態でも、
  「なんとかなりませんか?><」と粘る。
15. 「今手元にインストールディスクがないのですが」
16. 自分の常識がすべてだと公言する。
  「誰だってそうだろう」
524名称未設定:2013/01/29(火) 18:17:03.48 ID:cS+vdfN10
なんかウザいw
525名称未設定:2013/01/29(火) 21:26:39.19 ID:YxQSvOTO0
>>519,522
後出しジャンケンもホドホドに
ディスク選択した状態で実行とか、いろんな人が使うなんてシランわ

tell application "Finder"
activate
set EjectDisk to selection as alias
set diskName to name of EjectDisk
end tell
tell application "System Events"
tell process "Finder"
tell group 1 of item 1 of scroll area 1
select image diskName
keystroke "e" using command down
end tell
end tell
end tell
526名称未設定:2013/01/29(火) 21:59:53.66 ID:YxQSvOTO0
あと
>>519のスクリプト
FInderでselectionで選択してるのにわざわざ再選択してるってことは
実際に使ってるスクリプトと違うよね?
>>509で複数のイジェクト可能なディスクがあった場合とか言ってるけど、
結局人が選んでるの?
ディスクの選択部分が解決しているなら>>509の発言が腑に落ちないなぁ。
527名称未設定:2013/01/29(火) 22:01:15.08 ID:YxQSvOTO0
アンカーミス
×>>509
>>510
528名称未設定:2013/01/29(火) 23:50:50.35 ID:myaN9UkF0
こんなクズにいつまでも付き合うなんてお前らなんて優しいんだ

チェーン店での親切心からの過剰サービスが災いを呼ぶのと同じで
新たな勘違いクズを呼ぶかもしれないというのに……
529名称未設定:2013/01/30(水) 01:34:20.80 ID:C46VBLcG0
>>522
それってゴミ箱に入れようがメニューとかディスクユーティリティで取り出すしよーが変わらんのと違う?
だとしたらスクリプトでどーこーできる話じゃねーと思うんだけど、
>>519だと幾らか速いってのか?
530名称未設定:2013/01/30(水) 09:28:53.95 ID:vR5sS3Y/0
ほんと優しすぎ
俺はこういう輩には叩きが始まった時にしか参加しない
531名称未設定:2013/01/30(水) 20:43:09.25 ID:PBmGu0CJ0
>>529
身バレするといやなのであまり書かないけど、データをディスクからコピーして、そのファイルを一定の規則にしたがって名前変えたり
いろいろしてメールするようにしたんだけど、普通にやるとなぜかそこで15秒くらい固まる。
原因は今も分からずじまいだが、同じスクリプトを実行させても

○10.4  ×10.5  ○10.7  ○10.8

という状態。複数マシンで確かめている。10.5は3台試したが、ぜんぶ同じ。いろいろ考えて、delay入れたり、
イジェクトする場所をスクリプトのなかで変えたりしてもだめだった。それでもうあきらめていたんだが、
他人が手動でどうディスク取り出してるか見てたら、Finderのメニューに「取り出す」あるじゃん、ということになり、
やってみたところ上手くいったというわけ。
(×というのはイジェクトに15秒くらいかかる。○はキーボードのイジェクトキーを押すのと同じくらいの時間。
イジェクトキー使うのと、シェルスクリプトでコマンド叩くのは同じくらいのイメージです)
まあ、そんなこともあるということで。
532名称未設定:2013/01/30(水) 22:12:16.08 ID:LnU38RFT0
長文書く前にまずは感謝の気持ちを表すのを忘れない
そういう人間に私はなりたい
533名称未設定:2013/01/30(水) 22:15:52.38 ID:c/2OydIS0
身wバwレwがwwいwやww
534名称未設定:2013/01/30(水) 22:30:16.24 ID:yEV3YPpq0
>>531
常識だと思うけど、スクリプトで弄り回すファイルが入るフォルダは
当然名前に.noindex追加してるよな?
535名称未設定:2013/01/30(水) 23:32:42.02 ID:C46VBLcG0
>>531
>身バレするといやなのであまり書かないけど、データをディスクからコピーして、そのファイルを一定の規則にしたがって名前変えたり
>いろいろしてメールするようにしたんだけど、普通にやるとなぜかそこで15秒くらい固まる。

この2行の時点で既に意味がわからないんだけど、そこでってどこよ?
てゆーかイジェクトの話はどこ行った?
536525-527:2013/01/31(木) 00:24:59.90 ID:talRDh2s0
ガン無視かぁ

手動選択して取り出すだけならコマンド+Eキーでいいじゃん。
メニューの「ファイル」部分が一瞬反転するからメニューから選んでるのと同じ挙動になると思うんだけど。
537名称未設定:2013/02/23(土) 09:13:08.15 ID:xspTI0v30
↑スレストッパー
538名称未設定:2013/03/08(金) 22:05:35.46 ID:t+JSit8C0
提案とかツッコミが沢山集まるんだけど、
肝心の質問者はいつの間にか来なくなって有耶無耶になる…
ってのがこのスレのいつものパターンだからねぇ

発表する様なネタも特に無いし
539名称未設定:2013/03/14(木) 01:07:18.18 ID:csLLH1rg0
AppleScriptでChrome内のDOMに特定のelementが存在するかどうか知りたいです

tell application "Google Chrome"
tell window 1
tell active tab
execute javascript "document.title = '判定成功'"
end tell
end tell
get properties of tab 2 of window 1
end tell
みたいにページタイトルの変更をチェックする方法を思いついたのですが
あまりにもローテクなのでもっと賢い方法を教えてほしいです
540名称未設定:2013/03/25(月) 01:23:06.08 ID:S1RHJmM10
10.8.3のCalendarでeventを作ってstart dateなどを指定したいのですが、日付を指定するために
date "2013年3月25日月曜日 1:00:00"
と書いてコンパイルか実行すると
date "1999年12月27日月曜日 1:00:00"
と書き換えられてしまいます。
Snow Leopardでは再現しないのでバグだと思うのですが、
この問題を回避して正しい日時でeventを作ることはできないでしょうか?
541名称未設定:2013/03/25(月) 03:22:48.90 ID:hLczoXEu0
>>540
これでいいんかな?
date "2013/3/25 1:00:00 JST"
↓コンパイル後
date "2013年3月25日月曜日 3月25日1:00:00 月"
コンパイル後の文字列ペーストするとやっぱり1999年になるね。
542名称未設定:2013/03/25(月) 03:25:51.15 ID:hLczoXEu0
あ、コンパイル後の表記は
言語とテキスト環境に寄るかも
543名称未設定:2013/03/25(月) 03:36:12.65 ID:ti4pOP3i0
>>540
定番だけど、任意のdateをつくるにはまず変数にcurrent dateを入れてから、
その年月日および時刻を望む数値に変更すればよい
copy (current date) to theDate
set year of theDate to 2012
...
といった具合

dateの文字列での表記が環境によって変わってしまうのはAppleScriptの弱点のひとつだね
544名称未設定:2013/03/25(月) 07:14:34.71 ID:LQ5wTuLy0
>>540
それはあなたのスクリプトのバグ。
dateオブジェクトを文字列表記から作ってはいけない。
dateフォーマットはプリファレンスの設定に従うから、違うマシン上や設定を
変えると動かなくなる。正しくはこんな風に作る。
on makeDate(y, m, d, hh, mm, ss)
set x to (current date)
set day of x to 1
set year of x to y
set month of x to m
set day of x to d
set time of x to (hh * 3600) + (mm * 60) + ss
return x
end makeDate

makeDate(2013, 3, 25, 1, 0, 0)

>>543
デフォールトで現在のlocaleに従った表記が使われるのは構わないけど、
ISO8601形式でのset/getも必要だね。
545540:2013/03/26(火) 02:01:49.21 ID:NEeraS4U0
>>541
コンパイルは上手くいくんですが何度か実行やコンパイルをすると変換されてしまいますね…

>>543
なるほどそんな方法があるんですね。定番の方法ということですが、勉強不足でした。
この方法で上手くいきそうです。

>>544
あー、文字列から作ってはいけないんですか。そもそも環境に依存しすぎるスクリプトは書くべきじゃないですよね。
わざわざ関数を作っていただいて参考になります。

みなさん質問に答えていただいてありがとうございました。これでスクリプトが作れそうです。
546名称未設定:2013/03/26(火) 12:28:09.05 ID:ZYzM1DlG0
>>545
そんな厳密にやる気ない場合は、ダメって事も無い
いきなりdateクラスを作らずに一旦文字列を変数に入れてやればおk

…と思ってこうしたらアウトだった
スノレパとLionでは問題なし
set x to "2013年3月25日月曜日 1:00:00"
date x

こっちはいけたので、山Lionで曜日がうまく処理できないバグなんだろうな
set x to "2013年3月25日 1:00:00"
date x

ちなみにデフォの日本語設定ならこんなんでも通るよん
set x to "2013/3/25 1:00:00"
date x
547540:2013/03/27(水) 00:58:37.94 ID:ex5JVIQ30
>>546
了解です。そちらの方法も覚えておきます。
548名称未設定:2013/03/27(水) 03:09:54.02 ID:DdGpccBn0
>>546
後半の方、時間が0:00:00になっちゃうね。
時間まで指示するならJSTとか必要ぽい
549名称未設定:2013/03/27(水) 07:34:33.94 ID:dVZ0juM80
>>546
そういうのはlocaleの設定によって通らないからダメだって。
どの書き方してもエラーは避けられない。
550名称未設定:2013/03/28(木) 14:31:34.29 ID:uTKGrfA90
>>548
システム環境設定→言語とテキスト→書式→地域→日本のデフォルトだと問題無いと思うんだけどな
時刻のカスタマイズで中に午前/午後が入っていれば秒が0秒になって、
中と短に午前/午後が入っていれば0:00:00になったんで、
多分この違いじゃねーかなと

>>549
だから厳密にやる気なければって断ってんじゃん
上で書いたのは飽くまでも日本語デフォ設定での例だよ

あらゆる環境で正常に動作するようにしようとかではなく、
今使っている環境で動作すればいいって程度なら、
環境に合わせた文字列を用意する方法もあるって事
その上で10.8の日本語にゃ曜日のバグがあんだねー、
だからdateクラスの実行結果そのままは使えないねーっていう

仮に地域が英語のアメリカ合衆国だったりする場合は、
"3/28/2013 1:23:45 PM"とか
こっちはデフォで午前/午後が表記AM/PMで入ってるわけだな
551名称未設定:2013/03/28(木) 18:23:43.09 ID:tcdx19cg0
>>550
localeの設定で動かない様な物は「全く」使い物にならない。
環境関係無く簡単に動く方法があるのに、なんで面倒で動かない方法に固執するの?
552名称未設定:2013/03/28(木) 18:30:47.88 ID:dKkd0F8k0
自説も正しい部分もあると主張したいんでしょw
553名称未設定:2013/03/28(木) 19:30:29.60 ID:xhWUhAjN0
自分のこと考えると、書いてるAppleScriptの半分以上は、ちょこちょこと書いて
一回動かして保存もしないで捨てるようなものだ。
そういうレベルだとlocaleのことはあんまり考えない。
>>550のはその程度のことなんじゃないの?
554名称未設定:2013/03/28(木) 19:31:45.36 ID:XSqglhc60
次は
日付と時刻の書式を変更してる奴の頭がおかしいんだよ
と言い出すと予想
555名称未設定:2013/03/29(金) 16:38:42.25 ID:6hXT2xgO0
>>551
固執してないよ
素人相手にいきなり全否定するのはどーかと思ったので、可能性を検討しただけ
自分で書くなら>>542-543の様にする

>>552-553
おっしゃるとーり

>>554
わざわざ設定変更してそれぞれの設定に合った書き方をすれば良いって説明してんのに、
それはねーわ

まぁ無駄にグダグダやるほどの事でもなかったね
ごめん

…当事者が居なくなった後で荒れるのはいつもの事&スレスト
556名称未設定:2013/03/30(土) 00:32:00.05 ID:nwGNPcp+0
>>546
その仕様絡みで、iTunesに対してこんな処理をした場合にも困ったことになる。
iTunesで、再生日時をいじるスクリプトを前に書いた人は、確認した方がいいかも。
set play_date to (current date) as string
set played date of current track to date play_date
557名称未設定:2013/03/30(土) 08:42:41.67 ID:2tMFJOGB0
>>556
dateオブジェクト要求してる所に強引にstringセットしてるから、何が入るかは
型変換の動作次第で、元々バグ含みのスクリプトですな。
初心者は「dateオブジェクトの実体は8バイト整数の秒数で、スクリプト表示時の
テキストはlocaleに従ってフォーマットしたもの」っていう認識が無いんだろうね。
だから目前に見えてる文字列表現での処理に異常に拘る。
558556:2013/03/30(土) 21:30:00.18 ID:nwGNPcp+0
>>557
今なら、文字列で処理すること自体に問題があると理解出来るけど、AppleScriptを
触り始めの頃に、参考にさせてもらったスクリプトが文字列として処理していたため、
当時はそう言うものだと思ってた。

何より10.7までは動作していたこともあって、10.8になって表面化しているケースが
今回のこと以外でもありそうな気はする。他にもdo shell scriptを使って、コマンドが
吐くテキストのフォーマットが変更されてしまい、修正が必要なものもあったけれど、
大抵のものは問題なさそう<10.8。
559名称未設定:2013/03/31(日) 05:59:06.26 ID:2FGtT3Uk0
>>557
誰も拘ってないぞ
あーたの認識では date 文字列 を実行できる事は、
Appleの想定していないバグだって事なのかい?
だったらこんな所で初心者disってないで、
バグレポでもなんでも出して潰せばいいじゃん
560名称未設定:2013/03/31(日) 08:08:31.00 ID:NaPuu51z0
>>558
「localeに影響される物を文字列ベースで処理してはいけない」というのは
プログラミングの基礎だから別に最近の問題でもない。
AppleScriptはHyperTalkの文法を元に作られてるけど、HyperCardの時代から同じ様な
原因で動かない例があった。
これは1992年の記事だけど、これくらい昔からある定番のハマリパターン
http://support.apple.com/kb/TA31066?viewlocale=en_US
HyperTalkの場合はsecondsで得られる秒数とdateitems(2013,4,1,12,0,0形式)で
扱えば問題無くて、相互変換にはconvertっていう明確なコマンドがある。
AppleScriptのdateクラスはこれらの機能をまとめた物になってるってのも判る。
561名称未設定:2013/04/02(火) 15:49:10.55 ID:mi7/SafWi
某穴の人もネタにしてるね
ここ見てるんだろうな

文字列処理する事自体は問題視してないみたいだから、
彼の人も基礎ができていないって事かw
562名称未設定:2013/04/03(水) 23:17:28.64 ID:4mlyyl8p0
高尚なお話しているところすみません、、、、、、、
ここ最近今まで書いてきたスクリプトをAppleScriptObjCに移植すべく勉強始めたところ
なんですが、どうにもアプリ自身のパスを取得する方法がわかりません。
今までだとpath to meとかやってればできたと思いますが、AppleScriptObjCでは同じように
しても、同じコードをtell application "Finder"でくくってやってもできません。
どうすれば、アプリ自身のパスを取得することができるでしょうか?
563名称未設定:2013/04/04(木) 00:02:49.88 ID:KnN+rjXQ0
>>562
set theNSBundleClass to current application's class "NSBundle"
set theMainBundle to theNSBundleClass's mainBundle()
set pathToMe to (theMainBundle's bundlePath()) as string
一行にすると
set pathToMe to ((current application's class "NSBundle"'s mainBundle())'s bundlePath()) as string
NSBundle の mainBundle と bundlePath を呼ぶだけ
564名称未設定:2013/04/04(木) 00:04:43.98 ID:KnN+rjXQ0
出来ないこと/違いは
http://ashplanning.blogspot.jp/2010/12/applescriptobjc.html
に小粋にまとめられていると思う。me もそゆことらしい
565名称未設定:2013/04/04(木) 07:57:42.44 ID:c5rf9xAx0
>>563
ありがとうございます。ちょっといじってみます。
というか、そもそもスクリプトが大きくなったときのために
複数のファイルからload script したくて始めたのですが
思わぬところでハマってました。

>>564
とても参考になります。|とか意味がわかんなかった。
手探りでやるだけでも初歩の初歩はなんとかクリアできたんだけど
そのあと手も足もでないのです。

頑張ってみます。
566名称未設定:2013/04/09(火) 12:41:21.01 ID:iHF2CeM50
済みません、困っています。

app形式にしたスクリプトを、zip圧縮してgmailで送りました。
受け取ったzipを解凍してappを起動すると、最初に
「…はアプリケーションで、インターネットからダウンロードされました。開いてもよろしいですか?」
とダイアログが出るので、OKしました。
その後、1回だけは問題なく動作しました。
しかし、このappを再度起動すると、
「アプリケーション…は、破損しているか不完全である可能性があるため開けません。」
とエラーが出てしまい、実行出来ません。
初回は使えたのに、何故か2回目以降は全く使えなくなってしまいます。

一旦このappを捨てて、gmailからダウンロードし直すと、同様に「開いてもよろしいですか」の後
最初の1回だけ正常に実行出来るものの、2回目以降は駄目です。

gmailで送信する前のappは、同じマシンで何度実行しても、ちゃんと動いてくれます。
appは、OS X 10.8.3のAppleScriptエディタで、実行専用にチェックしてアプリケーション書き出ししました。
問題が起きている環境も、OS X 10.8.3です。

何が原因でしょうか?
567名称未設定:2013/04/09(火) 13:20:10.05 ID:Ix6peJF+0
単にzipを解凍しただけの物は問題ないの?
568名称未設定:2013/04/09(火) 13:25:01.25 ID:2lsBj4c30
何が原因かは知らないけど、スクリプトのまま(テキストのまま)
メールで使用先に送って、そこでapp形式にすれば
569名称未設定:2013/04/09(火) 13:31:32.34 ID:yhK8XFFQ0
codesign
property

使ってたり?
570566:2013/04/09(火) 14:06:59.03 ID:iHF2CeM50
>>567
はい、それは問題ありません。
gmailを介したときだけおかしくなります。

>>568
それであれば、もちろん問題はないです。
また、app形式にしたものやそれをzip圧縮したものをUSBメモリで渡しても、問題ありません。
しかし、やはりメールで送りたいこともあるので、出来れば原因を探りたいです。

>>569
どちらも使っていません。
globalは使っています。
571名称未設定:2013/04/09(火) 18:56:54.15 ID:2PZQtGBa0
zipの圧縮/解凍には何を使ったのか?
解凍で別のを使ってみるとか。
572566:2013/04/09(火) 23:24:58.22 ID:kHB5syDC0
>>571
OS X標準の圧縮とketaと両方やってみましたが、同じでした。
573名称未設定:2013/04/10(水) 00:42:27.97 ID:SdJHuJ9p0
ほとんど何もしないようなテストアプリ作ってみてもそうなの?
574名称未設定:2013/04/10(水) 02:56:58.03 ID:YM+GCo2L0
2回目の起動からおかしくなるということは、一回目の起動で
パッケージ内を破壊していると想定。
しかし、usbメモリから持って来た場合は問題ないとのこと。
gmailから持ってきた場合は、リソースフォークに入手先の
拡張属性が入るがappの中で挙動が変わるのだろうか。
575名称未設定:2013/04/10(水) 14:57:02.73 ID:RnU1ho580
まずそれぞれハッシュとってみて、違いがある瞬間を特定しろよ
576566:2013/04/10(水) 16:06:25.48 ID:VCHx0fw80
>>573
試しに
display dialog ("テスト")
一行だけでappにしてzip→gmail→解凍してみましたが、何度起動しても問題ありませんでした。

>>574
>>575
これからテストして、原因を探ります。
577566:2013/04/10(水) 16:30:12.01 ID:Io9fbSFT0
>>574
>>575
パッケージ内のファイルのハッシュ値(MD5)を調べました。

/Contents/Resources/Scripts/main.scpt
の値が、app化直後と、zip→gmail→解凍直後で変わりました。
しかし、解凍直後と、起動二回目以降にエラーで実行出来なくなってからでは、
変わりませんでした。
578566:2013/04/10(水) 16:46:30.75 ID:Io9fbSFT0
結局、スクリプトエディタで新規作成し、問題のあったスクリプトのソースを変更なくそのままコピペして保存し直したら、こちらでは異常なしでした。
元の方は、何かが壊れていたんでしょうね。
お騒がせしました。
579名称未設定:2013/04/11(木) 23:35:33.91 ID:1W/E/EFT0
AppleScript エディタ.appの環境設定で「メニューバーにスクリプトメニューを表示」をオンにすれば
Fineder以外のアプリケーションがアクティブであったとしても
そのまま2クリックでスクリプトが実行できるようになりますが、さらに操作手数を減らしたりできないでしょうか?
たとえばキーボードショートカットが割り当てできたりしたら嬉しいです。
580名称未設定:2013/04/12(金) 00:33:03.15 ID:C5Lqj7mx0
>>579
Automatorでサービスにすれば。Automatorのサービスは起動遅いけど
581名称未設定:2013/04/12(金) 00:53:52.79 ID:9oyHSVFp0
ホットキーにスクリプトアサインするユーティリティ沢山あるでしょ。
582名称未設定:2013/04/12(金) 02:27:18.41 ID:z1Y1R52k0
テキストベースで検索して実行するQuicksilver、Alfred、ジェスチャーで実行できるBetterTouchToolなんかもあるよ
583名称未設定:2013/04/12(金) 10:50:03.50 ID:tJ3hl7X60
常駐でグローバルなキーボードショートカットが使いたいならSparkおすすめ
あと、>>582のもいいと思うがおれはLaunchBar派
584579:2013/04/12(金) 19:26:24.20 ID:OOhg8Ril0
>>580-583
おすすめされたものを見て回った結果、Sparkが自分には合っているようです。
みなさんありがとうございました!
585名称未設定:2013/04/12(金) 22:03:26.51 ID:SbET7gua0
Sparkはなんか挙動がおかしくなってしまって、Proxi使ってる。Proxiもディスコンだけど
586名称未設定:2013/04/13(土) 11:25:39.45 ID:v2g6Mxdi0
スクリプトエディタから単独で実行すると問題ないのに
アプリケーションにしたり他のスクリプトからrun scriptしたりすると虹色カーソルになるのがあったんだけど
>>578と同様にしたら直った
587名称未設定:2013/04/16(火) 21:47:22.61 ID:/11rNbrS0
お知恵を拝借したく。
PDFにバーコードを貼るにはどうしたらいいんでしょう。
Windowsでバーコード作成アプリとiTextSharpとVB.NETで
既存のPDFにバーコード貼ってたのですが、Macでやることになり、
どうしたものかと悩んでいるところです。
588名称未設定:2013/04/17(水) 00:09:04.94 ID:1GsdY3co0
バーコードはどんなデータからどんなデータにしたいの?
589名称未設定:2013/04/17(水) 02:01:16.07 ID:1m3obWGn0
スレ違いだろ
590名称未設定:2013/04/17(水) 09:57:43.14 ID:kz/uCTq80
>>588
数字からです。JAN8でチェックデジットは
自分で計算できます。ASでバーコードps
作成している猛者の方がいらっしゃいますが
なかなかカスタマイズも進まず書き込んで
みた次第です。
591名称未設定:2013/04/17(水) 10:46:18.47 ID:g3ozOeDY0
iTextSharpにこだわらなければ、
何かしらで作成しておいて、Acrobatのアクションを実行するとか
Filemakerで大量に作ってもいいし、イラレで作成する方法もあるし
それらのプラグインも出てるわけだし
無理にAS絡ませる必要もなさそうだし

http://www.rolan.co.jp/
http://www.flashbackj.com/barcode/
592名称未設定:2013/04/18(木) 18:41:48.51 ID:N66PAf280
iPhone板にMac勧誘スレ立てるな馬鹿

■■■ iPhone に な れ な か っ た M a c ■■■
Macはパソコンでのシェアが約5%なのはご存知でしょうか?
Appleがメディアや量販店の協力のもとに長年かけて
宣伝しているにも関わらず常に数%程度なのです。
一方、iPhone、iPad、iPod等は発売後クチコミで
瞬く間に大人気商品となり相当なシェアがあります。
なぜ同じApple製品でMacだけは事情が違うのでしょう?
理由は誰にでもわかる簡単な事です。
MacにiPhoneやiPadのような特別な価値が無い事と、
致命的で重大な足かせがあるからです。
パソコンにとってプラットフォームは一番の要素であり、
そのシェアによってメーカーの対応・非対応が決まります。
あちこちで見かける「Mac非対応」ご存知ですよね?
Windowsが世界標準の世の中でMacだけ違う道を進んでいるのです。
パソコンを色々な用途で活用しようと思ってる方は、
信者による都合の良いMacintosh勧誘に惑わされず、
これらの事実を知った上で冷静な判断をしてください。
      ハ,,ハ
      ( ゚ω゚ )
     /   ヽ   Macintoshには対応しておりません
    | |シェア| | 
    | | 5% | |
    ||   ||  
    し|  i |J 
      .|  ||
     | ノ ノ
     .| .| (
     / |\.\
     し'   ̄
593名称未設定:2013/04/18(木) 23:12:34.54 ID:ymmpAZut0
PDFにバーコード貼り付けの件ですが、ASでバーコードのPS生成し
イラレで貼り付けることでできそうですが、PDFにMacに搭載されていない
フォントがあると、警告が出てスクリプトが止まってしまいます。
open aFile without dialogsとしても同じです。
user interaction levelをnever interactにすればいいんでしょうか。できなさそうな気がする。
うまい方法あったら教えてくださいまし。
594名称未設定:2013/04/19(金) 01:53:01.79 ID:NgGL1LyP0
>>593
PDF開かずに配置にしてみては?
make new placed item with properties {file path:PDFのPath}
595名称未設定:2013/04/19(金) 09:41:45.24 ID:POsf+Qxb0
最初意味がわからんかったが、
PDFを開くのではなくバーコードにPDFを配置するって考え方もあるんだね。
596名称未設定:2013/04/21(日) 10:52:37.48 ID:jcJO8Wxf0
ドキュメントファイルから、規定のファイルアイコンを
取得する方法はないですか?

pdfとか、docxとかだけじゃなくて、
pyとかrbなんかも含め、Finder上で表示されるのと同じ
アイコン(のパス)を知りたいんだけど。
597名称未設定:2013/04/21(日) 18:25:20.39 ID:ZS2Qj5Vh0
Macってビデオカメラ付属のソフト使えないのって地味に痛いな
598593:2013/04/23(火) 08:28:07.40 ID:kROQ/mb30
>>594>>595
ありがとうございます。
埋め込みを逆にする発想はありませんでしたが
新規書類を作りそこにフォントなしpdf書類とpsバーコードを埋め込みしようとしたのですが
やはりフォントなしpdfが埋め込みできませんでした。
フォントはゴシック体なのですがプレビューやImageEventで画像化すると明朝体になっちゃって
見た目が許容レベルじゃなくなっちゃうんですよね。かといって
acrobatで画像化してイラレで貼り込んでとかacrobatのバッチ処理で
無理やりguiスクリプトというのも躊躇します。難しいですね。
599名称未設定:2013/04/23(火) 09:20:16.75 ID:TJqiuZGQ0
>>598
Acrobat Proがあればだけど、文字をアウトライン化しちゃ駄目なの?
画像化してもいいなら問題ないよね?
600名称未設定:2013/04/23(火) 09:35:06.10 ID:3fcO1jDS0
画像化はPDFを作成したWin側でやればいいだろう。(元々埋め込まれてないことがそもそも)
Acrobatで画像化するとアンチエイリアスが効かないのでいやなら探せばPDF to 何々とか変換系のがいくらでもあると思う。
Mac側でフォントがそれなりに表示されれば標準のプレビューでもいいし。
それか一度PDFから再度PDFを作成してフォントを埋め込む。
あとAcrobatのアクションでフォントをアウトライン化するとか裏技があるけどサイズがそこそこ増える。
601名称未設定:2013/04/23(火) 09:47:00.29 ID:3fcO1jDS0
だいぶスレチで脱線するけど、
いまちょっと検索したらGiveaway系サイトで、3herosoft PDF to Image Converterてのが今だけ無料だね
Win版だけど、めずらしくMac版のにもこのGiveaway keyが使えるみたい。
ttp://dailysoftwaregiveaway.com/2013/04/19/giveaway-19-april-2013-pdf-to-image/
こういう系のはひどいバグやAdwareに気をつけなきゃいけないけど。
602名称未設定:2013/04/23(火) 13:30:06.54 ID:Pkdqt1Cm0
iPhone板にMac勧誘スレ立てるな馬鹿

■■■ ハ ー ド ウ ェ ア 殺 し の 現 実 ■■■
皆さんはハードウェアの最適化についてご存知でしょうか?
各社ハードは基本的にWindowsでの動作を前提に設計されています。
GPU等もWindowsのDirectX向けの仕様がメインストリームです。
MacintoshはDOSV機と同じハードを流用していますが、
MacOS上ではそれらの素晴らしい機能達は死んだまま。
QSVは2年遅れて実装されましたが全く使い物にならない状態です。
Windowsであれば最新ハードのフル機能を引き出せますが、
Macでは一部非対応のままかろうじて動かしてる状態となります。
シェア差による弊害はハード主機能や性能にまで及ぶのです。
MacはAppleによる独断でマシンスペックが決められているので、
USB3.0は一年半遅れ、未だにブルーレイドライブも搭載がありません。
パソコンを色々な用途で活用しようと思ってる方は、
信者による都合の良いMacintosh勧誘に惑わされず、
これらの事実を知った上で冷静な判断をしてください。
      ハ,,ハ
      ( ゚ω゚ )
     /   ヽ   Macintoshには対応しておりません
    | |シェア| | 
    | | 5% | |
    ||   ||  
    し|  i |J 
      .|  ||
     | ノ ノ
     .| .| (
     / |\.\
     し'   ̄
603名称未設定:2013/04/25(木) 20:33:53.39 ID:faytM2mh0
Adobe Illustratorの文字組みの"なし"と"行末約物半角"のパラメータを探しています。
自分で作成した文字組みの名前だと、1バイトでも2バイトでも認識しますが、
“なし”や“行末約物半角”はエラーを起こしました。
また、英文の文字組みの資料のように"None"や"GyoumatsuYakumonoHankaku"を試してみたのですがだめでした。
604名称未設定:2013/04/26(金) 06:46:35.19 ID:Fo/XCaXH0
get properties of paragraph 1 of text frame 1 of document 1

Mojikumi:"GyomatsuYakumonoHankaku"
Mojikumi:missing value
とか出てくるけど、
set Mojikumi of paragraph 1 of text frame 1 to "GyomatsuYakumonoHankaku"
とかやっても適用されないね。
何でだろ?
605名称未設定:2013/04/26(金) 09:31:14.97 ID:YEqdjXaj0
Adobe系のASはもう新しいとこはサポートしないとかなんとか
わからんけどASからだと読むことしか出来ない値だったり
Adobe Java Scriptからだとどうだろ
606名称未設定:2013/04/26(金) 23:50:03.40 ID:hvZ6GmuO0
>>604
ありがとうございます。
GyoumatsuをGyomatsuに変えたらエラーがなくなりました。
あとは、“なし”を探すのみとなりましたが、
missing valueは他の"YakumonoZenkaku"などとは扱いが違いますよね?
607名称未設定:2013/04/27(土) 06:49:58.88 ID:eOoPOPXx0
>>606
missing value
none
null
と試したけど全てダメだった。
608593:2013/05/16(木) 23:11:11.90 ID:EHzlnUgn0
PDFにバーコード貼りこみの件ですが、ImageMagickとGhostscriptを使うことにしました。
印刷も画像変換してdo shell script "lpr -P ~"で済ませてしまおうかなと思ってます。
意外と画像を合成するアプリってないんですね。イラレやフォトショは別として。
Acrobatも意外とASやjavascriptでコントロール難しいし、Xからいろいろ変わっちゃって
様子見。Xで画像がスタンプとしてもコピペできなかったときには愕然としました。
ImageEventsはトリミングできないし、画像配置ができませんでした。
609名称未設定:2013/05/17(金) 22:25:47.09 ID:jSXP1A9e0
>>608
もう解決したみたいだから無駄なコメントだが、
TeXに慣れていれば、Postscript/PDFの重ね合わせが自由に出来る。
バーコード用のTeX (というかPSTricksだけど)もあるし。
「TeX barcode」で検索すればたくさん情報が出てくる。

あと、pdftkもPDFの重ね合わせが出来るよ。
細かい座標指定が出来たかどうかは覚えていないが。
610609:2013/05/17(金) 22:37:17.22 ID:jSXP1A9e0
>>609の追記

>>593のやりたいことは、
ttp://d.hatena.ne.jp/aki-yam/20100121/1264099509
これのバーコード版じゃないの?

pdftkのstampコマンドでpdfを重ねるわけだけど、すなおに座標指定が出来ないから、元のPDFと同じサイズの余白を持ったバーコードのPDFを作成して、
それを元PDFの上に重ねるシェルスクリプトを書けばよいと思う。
611名称未設定:2013/06/06(木) 21:49:29.42 ID:bNx8qt/e0
Database Eventsいじって、すげーとか思ってフィールドが10ぐらいあるデータを1万件くらい読み込んで
使おうとしたらウンともスンとも言わなくなった。どうしたもんだかといろいろいじった結果
do script shellでsqliteを操作することに決定。データの取り込みにも苦労していたのが夢のように
一瞬で終わる。Database Eventsもsqlite使ってるのになぜこんなに速度が違うと不思議に思ったんだけど、
Database Eventsは変なデータ構造してるよね。なんであんな構造なのか不思議。sqliteマジ使える。
レコードのラベルをトリッキーに取り出したり、スクリプト内で設定するような処理でもsqliteつかったほうが
とてもスマート。すばらしすぎ。
612名称未設定:2013/06/07(金) 00:43:34.19 ID:p/SpB89P0
>>611
もう今では無理にapplescriptの変な定義使わず何でもdo shell scriptするのが当然になってきたよね
GUIとshell scriptとのいいとこ取りが非常に簡単にできるすばらしい環境だ
613名称未設定:2013/06/07(金) 01:46:37.69 ID:Kb01i1zh0
>GUIとshell scriptとのいいとこ取りが非常に簡単にできるすばらしい環境だ

なんかうそくせー
614593:2013/06/07(金) 08:53:24.66 ID:uQlYcIcT0
>>613
rubyとかjavascriptとかやってるって言った方が周りの受けはいいけどapplescriptで
充分だし、いざとなればrubyもjavascriptも取り込めちゃう。
615名称未設定:2013/06/07(金) 15:13:59.92 ID:p/SpB89P0
>>614
>いざとなれば
そこだよねそこが大きい
OSの制約はあるがwrapperとして優秀
616611:2013/06/13(木) 22:18:26.73 ID:lWgvudQ70
macのsqliteって正規表現使えない? イマイチlikeの使い方がわからない。
like '%hoge%' とすればhogeが含まれるデータが取得できるけど、*とか使えない。
どーすりゃいいんだろ、、、、、、、、? 数字が8桁のJAN8データを取り出したいんだけど。
617名称未設定:2013/06/13(木) 23:02:29.46 ID:RNArCXCo0
独り言じゃないなら
「教えてください」
をつけないと誰も相手にしないような気がするが
618名称未設定:2013/06/13(木) 23:48:37.61 ID:Ipz4loR10
ググれば直ぐに出てくるようなことだからなんじゃね
619名称未設定:2013/06/14(金) 00:29:40.39 ID:r5ysopQD0
sqliteでlikeの正規表現がわかりません!
機種はAPPLEのMACです!
620名称未設定:2013/06/14(金) 00:38:59.58 ID:VZASBqlc0
いやいや、正規表現なんて使おうとする者がそれはないだろ。偽物か
621名称未設定:2013/06/14(金) 01:01:05.04 ID:qQB1xPpm0
皮肉だろつまらんけど
622名称未設定:2013/06/14(金) 02:34:53.69 ID:3dUo3S7E0
そもそもSQLに正規表現はない。
623611:2013/06/14(金) 07:19:52.69 ID:terU3pOf0
昨日調べたときには見つからなかったんだが、言われてもう一度ググってみたら
普通にいろいろありました。お騒がせしました。しかしなんで昨日は見つからなかったのか。
これでいいのかな?
http://msdn.microsoft.com/ja-jp/library/ms187489%28v=sql.105%29.aspx
624名称未設定:2013/06/14(金) 07:47:01.06 ID:yQHM9Ust0
わざわざMSDNから引っ張ってくるなんて、恐ろしい子…
625名称未設定:2013/06/14(金) 08:21:02.68 ID:vpR2reX20
>>623
http://www.google.co.jp/search?client=safari&rls=en&q=%22sqlite%22+%22%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE%22&ie=UTF-8&oe=UTF-8&redir_esc=&ei=9lK6UZvaM4TklAWdnYDgBQ

これで目的のがいっぱい出てくるでしょうが。正規表現は方言でDBMSによって違う
sqliteは自分で関数用意するって変態仕様みたいだけど
626名称未設定:2013/06/17(月) 20:55:24.46 ID:opEaqap80
いつもはフォルダー選んではevery file of folderとやってたけど、
files of folders of folders of folders of choose folder
とかできるんですね。でもできるときとできないときがある。なんで?
627名称未設定:2013/06/21(金) 19:47:43.97 ID:2scctxi60
automatorのworkflowファイルをrunさせるscriptを書いていて少しわからないことがあります。
以下のscriptで動いているのですが…
using terms from application "Automator"
tell application "Automator"
set doc to open theWorkfile
execute doc
close doc saving no --なくてもいい感じ
quit
end tell
end using terms from

automatorのdictionaryをみると、executeはworkflow型のオブジェクトを取ります。
一方openはdocument型のオブジェクトを返します。
 ・このdocumentとworkflowをつなぐ(coerce)するものが見当たりませんが、どこにありますか?
  つまり、なぜ上記 execute はうまくいってしまうのでしょう?
 ・using terms をつけないと、このスクリプトファイルを開いた時にautomatorが勝手に起動します。
  なぜですか?(起動すること自体は辞書を得ようとしているのでしょうが、なんでそんなことをしたがるの?)

AppleScriptの穴をみていたら、shell scriptで/usr/bin/automatorに投げちゃっていますが、
http://piyocast.com/as/archives/1584
 ・そのやり方とこのスクリプトの得失はなんですか?一行になるということだけですか?何かもっと本質的なことがありますか?
628名称未設定:2013/06/21(金) 22:47:54.87 ID:1NHcaT7D0
>>627
あんまりよく分かんないけど自分の環境にコピペ&コンパイル
してみたけど、Using termついてなくてもAutomator起動しない
みたいだよ。10.8でほかにも編集中のスクリプトを開いた状態で。
なにを言っているかわからなかったので1回Automatorの辞書開いた
あとの話だけど。
うちは10.4から10.8までの混在環境でAutomatorは違いがありすぎて
使ってないけど使えたら便利だろうなあとは思う。
ぴよまるさんのところは本当に面白いよねえ。自分は並列処理のところ
見てたけど、読み解いたらなるほどと分かった。しかしMavericksで
追加されるかもしれない新機能ってなにかね??気になる。
リストのバグには笑った。
629名称未設定:2013/06/21(金) 23:16:13.92 ID:frqd2iVK0
>>627
>・このdocumentとworkflowをつなぐ(coerce)するものが見当たりませんが、どこにありますか?
>  つまり、なぜ上記 execute はうまくいってしまうのでしょう?
開く対象がワークフローとして開けるファイルだから。
開いた時点でAutomatorがそのドキュメントはワークフローだと認識する。

> ・using terms をつけないと、このスクリプトファイルを開いた時にautomatorが勝手に起動します。
>  なぜですか?(起動すること自体は辞書を得ようとしているのでしょうが、なんでそんなことをしたがるの?)
アプリケーションのバージョンによって使える用語や仕様が変わることもあるし、
自分の環境で作ったスクリプトとは限らないから
実際に指示があるアプリケーションを起動してみて辞書を取得してる。
1回起動してそのMacにインストールしてあるアプリケーションの辞書が読み込めれば、
スクリプトエディタが起動している間は対象アプリケーションを終了しても辞書は残る。

3番目はワカラン。
630名称未設定:2013/06/21(金) 23:57:45.29 ID:2scctxi60
>>629
まあその答えが出るのはわかるんですが、ちょっと答えじゃないですよねえ。
問を言い換えるとなぜopenは workflowオブジェクトを返さないのでしょう?
あるいは、documentオブジェクトを返すopenは何の使い道があるんでしょう?

 そういうことです。
631名称未設定:2013/06/22(土) 00:03:34.67 ID:K/y/cqAp0
openはStandard Suiteだからだろ。Automatorだけに限らず/よりも前に規定されているからだろ
632名称未設定:2013/06/22(土) 00:44:36.13 ID:kRJ5Reij0
>>628
>リストのバグには笑った。
何かと思って探したら
set aList to {1, 2}
set the end of aList to aList
でクラッシュするってことか。
setだと参照の操作になるから、実行自体は問題無いけど結果表示時にpretty printerが
自己参照の無限再帰にハマってますな。
copy aList to the end of aList
set the end of aList to contents of aList
みたいに値の移動を強制すれば大丈夫。
repeat with inの時もループ変数にセットされるのは参照だからcontents of付けないと
動かない場面あった様な気がするんだが忘れちゃったな。
633名称未設定:2013/06/22(土) 02:07:16.51 ID:N47ubW+10
>>630
workflow n [inh. document > item] : A series of actions stored in a file
workflowの継承元がdocumentですね。

executeで指示したものがたまたまclassがworkflowのdocumentだったってことかな。
634名称未設定:2013/06/22(土) 16:46:01.33 ID:0NhVrY+t0
>>632
それは言語仕様やランタイムの不良じゃなく、プログラマーの
バグだろう。
転送の元先が重なれば動作は保証されないと思うが。
635名称未設定:2013/06/22(土) 18:04:59.66 ID:kRJ5Reij0
>>634
それとshallow copyとdeep copyの違いを理解してればピンと来る話だね。
AppleScriptではset/copy/contents ofの使い分けになる。
636名称未設定:2013/06/25(火) 22:00:02.32 ID:+vN1WV3Y0
どうするのが普通なんだろう。
sqliteを10.4でいじってたんだけど、10.4のsqliteって古すぎて108とかで作ったデータが
うまく開かなかったりする。それじゃあとMacportsでsqliteインストールしたんだけど、
do shell scriptだとちゃんと動かない。
do shell script "echo $PATH"とかしてみると、ぜんぜんパスが通ってなかった。
ターミナル上でecho $PATHすればパスは通ってる。
10.4から10.8までちゃんとsqliteが普通に使えるようにするにはどうするのが常識なんでしょう。
・10.4のプレインストールのsqliteを自分でビルドしなおす
・全部のマシンにMacportsからsqliteをインストールしてそっちのフルパスでdo shell scriptする
・なんらかの方法ですべてのマシンでdo shell script上でパスが通る設定をする。
637名称未設定:2013/06/25(火) 22:05:21.97 ID:2J/kXoAD0
PATHについてはTN2065読めよ
638名称未設定:2013/06/25(火) 22:17:20.83 ID:LdzExgOF0
知らない間にテックノートの日本語やめちゃったんだな
639名称未設定:2013/06/25(火) 22:31:43.52 ID:+vN1WV3Y0
>>637
読んだよ。読んだうえで10.4から10.8まででsqliteがちゃんと動くようにするには
どうするのが普通なんでしょう?
640名称未設定:2013/06/25(火) 22:34:35.02 ID:LdzExgOF0
常識というか、バージョンごとに動く方法で分岐させたら
だいたい、10.4ってPPC時代でしょ
641名称未設定:2013/06/26(水) 07:10:26.66 ID:Ns8FDDSa0
>>636
Macportsで入れたsqlite3を使うには次の中から好きなのを選んで
・sqlite3をフルパスで指定する
・do shell scriptの中でPATHを指定する
・パスの通っているディレクトリにsqlite3のシンボリックリンクを作る
642593:2013/06/27(木) 09:15:24.22 ID:Y0h9Ymmt0
>>641
ありがとうございます。
他の環境への影響とスクリプトのシンプルさ
から考えて、毎回do shell scriptの中でパスを通そうかなと思います。
643名称未設定:2013/06/27(木) 11:57:23.41 ID:U+WJ9xTU0
フルパスきってあるかどうか順次調べる。
644名称未設定:2013/06/28(金) 21:01:29.24 ID:Jo6jPw3hP
AppleScriptObjCでiPhoneアプリって作れる?
645593:2013/07/01(月) 18:52:52.85 ID:eox/LOp8P
applescriptエディタで用語辞書開こうとすると全然使っていないアプリがリストに沢山あって大変。
消す方法ないかな?
646名称未設定:2013/07/02(火) 00:00:41.10 ID:o+JLQH9j0
エディタから開くのではなくFinderなりSpotlightなりランチャなりから
用語辞書がほしいアプリをエディタにドラッグして開きましょう
647名称未設定:2013/07/02(火) 01:03:24.44 ID:JJmIMLwH0
deleteを押す、windowの上にある-ボタンを押す、コンテクストメニューの削除をクリックする
648名称未設定:2013/07/02(火) 07:56:45.89 ID:JxuVgzxpP
>>646
コンパイルしたプログラムから「〜はどこですか」とアプリ要求されるので無理です。
649648:2013/07/04(木) 22:07:18.77 ID:uyVWehX+P
やっと分かりました。というかアプリ削除とか圧縮とかするしかないんですかね????
650名称未設定:2013/07/09(火) 00:01:20.01 ID:6fsZg81E0
やっとアク禁解除
>>649
ウインドウ>ライブラリ
そこに必要なアプリケーションをドラッグ&ドロップで登録
ダブルクリックで用語辞書が開くよ。
いらないものは>>647の方法
651名称未設定:2013/07/26(金) 22:19:50.39 ID:X8gvKEpd0
やっほー祝ってくれ。とうとうAppleScriptObjCに移行できそうだ。こんにちはXcode4。
ぴよ大先生のところで知った「AppleScriptObjC Explored」の第4訂版買ってちょこちょこ
いじった感じでは大部分は簡単にAppleScriptStudioから流用できそう。
基本は変わらないみたいだからね。
652名称未設定:2013/07/26(金) 23:45:36.98 ID:jf5EmCbX0
その本を買えばいろいろわかるのか!?
プログラム歴は長いのにAppleScriptはよくわからなくて、挑戦するたびに諦める

10.3時代にCocoaの情報調べてアプリ作るのより辛い気がする
653名称未設定:2013/08/18(日) 11:15:25.12 ID:UcusVp7s0
選択中のテキストをGoogleで検索するスプリクト
教えてくれ。
半日格闘したが、どうもうまく行かなくて。
654名称未設定:2013/08/18(日) 12:21:41.31 ID:aXYfVso+0
>>653
まずは半日格闘の成果を貼れ
655名称未設定:2013/08/18(日) 13:43:58.02 ID:UcusVp7s0
マカロンの選択部を検索したいのだけど

property baseURL : "http://www.google.co.jp/search?hl=ja&ie=Shift_JIS&q="
tell application "System Events"
tell application process "マカロン"
tell application "Macaron" to activate
delay 0.5
keystroke "c" using command down
delay 0.5
set surl to the clipboard
end tell
end tell
open location baseURL & surl & "&lr="
656名称未設定:2013/08/18(日) 14:24:53.65 ID:lGVq6b29P
>>655
右クリックじゃだめなのか?
657名称未設定:2013/08/18(日) 14:46:12.65 ID:UcusVp7s0
マカロンでは右クリックしても
レスと引用レスのメニューしか表示されない
658名称未設定:2013/08/18(日) 15:26:31.02 ID:wuRQ4ov70
コンテクストメニューに「サービス」ってない?
659名称未設定:2013/08/18(日) 16:02:33.49 ID:UcusVp7s0
メニューのところ
「サービスは適用できません」
660名称未設定:2013/08/18(日) 19:20:25.62 ID:qnHPz5UWP
>>657
10.8.4なら右クリックでもメニューのサービスでもGoogleで検索の項目がある

マカロンだけでいいならAutomatorでサービス作成して、キーボードショートカットを割り当てる
run applescriptを追加して
on run {input, parameters}
open location "http://www.google.co.jp/search?q=" & (input as string)
end run
でいけんじゃね?

アプリ限定しないならこれでいけるかな?
実行専用で保存
エディタの環境設定から、メニューバーにスクリプトを表示にして、メニュバーから実行
たまにキーストロークの前に検索されることがあるのが気になる
tell application "System Events"
keystroke "c" using command down
end tell
delay 0.1
set search to the clipboard
#say search
open location "http://www.google.co.jp/search?q=" & search
661名称未設定:2013/08/18(日) 19:24:17.58 ID:qnHPz5UWP
>>660
as stringは必要ないかも
662名称未設定:2013/08/19(月) 00:05:12.56 ID:lBHC0GXI0
色々やったけど安定動作は厳しい
意外にむずかしいだなぁ
663名称未設定:2013/08/19(月) 00:08:58.06 ID:vSphWLNR0
AppleScriptで選択文字列の操作は鬼門
664名称未設定:2013/08/19(月) 00:17:26.73 ID:maUl1V4x0
>>662
このスレ的にはあれだが、
サービスが動かない問題の方を解決した方がいいんじゃないの?
665名称未設定:2013/08/19(月) 07:52:01.48 ID:a7Iykp0S0
>>655
>ie=Shift_JIS
これじゃね
666名称未設定:2013/08/19(月) 20:28:33.08 ID:PBasiwB00
アップルスクリプトじゃなくなるけど、Automator使っていいなら

シェルスクリプトを実行
open "http://www.google.co.jp/search?q=$*"

でサービス作るのが一番簡単かと
667名称未設定:2013/08/19(月) 21:48:21.45 ID:jNzesQ7IP
おまえらいるんじゃねーかよw
いるならくだらないと思いつつもネタを提供しろよ。
俺は書きすぎたと反省して自重してたが。
668名称未設定:2013/08/20(火) 16:53:36.24 ID:ms+TTlLX0
当初のを改善してなんとか動くようにはなりました。
SafariはいけますがFireFoxは指定しても立ち上がるだけですね。

で、これをコンテキストに入れるユーティリティで、つーところで
ユーティリティが不安定。道は遠い。

>>666
作ってはみましたが、
えと、どうやったらそこの選択中のテキストが入るのかわかりませんでした。
669名称未設定:2013/08/20(火) 16:55:16.39 ID:ms+TTlLX0
あぁQuickeysが欲しい、なんてね
670名称未設定:2013/08/21(水) 00:06:27.53 ID:tvFXbQAc0
>>668
Automator起動
サービスのテンプレートで新規作成
“サービス"は次の項目を受け取ります:[テキスト][ 検索対象:[全てのアプリケーション]
選択されたテキストを置き換えるはチェックしない。
シェルスクリプトを実行を追加
入力の引き渡し方法「引数として」
>>666
open "http://www.google.co.jp/search?q=$*"
でいけない?
671名称未設定:2013/08/21(水) 13:43:33.72 ID:HC/3ycj30
まさかとは思うけど、
サービスを環境設定で設定してから選択したテキストを右クリック

のあたりでひっかかっていたりはしないよな
672名称未設定:2013/08/23(金) 00:16:37.16 ID:QJ+u+VOR0
サンクス
アクセス権を修正したら右クリックで使えるようになった、完璧
こんな機能があったとは知らなかった
673名称未設定:2013/08/23(金) 00:24:10.46 ID:QJ+u+VOR0
アクセス件補修したら右クリックで使えるようになった、完璧
サンクス
674名称未設定:2013/08/23(金) 00:27:57.64 ID:QJ+u+VOR0
今度はブラウザエラーだ、連投スマソ、なんてこったい
675名称未設定:2013/08/27(火) 11:09:19.42 ID:FuO9639aP
ああ、わかんね〜!!
画像データベースを作りたいんだが、
テキストベース部分まではできたけど
サムネイル画像一覧とそのリンクを表示させるにはどうすればいいんだろう?
XCODE使ってるけどCollectionViewつかうのかとさがしたのだけど
ぜんぜんわからない。ヒントくれ!
676名称未設定:2013/08/27(火) 12:08:38.82 ID:Wu5440A00
それはアップルスクリプトでやることではないのでは
677名称未設定:2013/08/27(火) 16:20:42.77 ID:/GLAeoqb0
AppleScriptで出来ないのか、AppleScript出来るけどわざわざっていうのかどっちやねん
Cocoa-AppleScriptならできそうな気もするが限界がわからんなあ
678名称未設定:2013/08/27(火) 16:41:01.62 ID:/GLAeoqb0
>>675
SourceViewつうサンプルでの、IconViewController.m/IconView.xibを読めばAppleScriptでもなんとかなりそうな気もしないでもない
679名称未設定:2013/08/27(火) 18:24:21.76 ID:FuO9639aP
>>678
それどのバージョンのサンプル?
ぜひ詳しく。
表示用HTMLを書き出してブラウザで
表示してもいいかなと思ったがCSSもHTMLも書いたことがない。
680名称未設定:2013/08/27(火) 19:57:08.93 ID:OFkBnYm50
>>679
XcodeのDocumentationで検索すれば出てくる

バージョンは、
Xcode 4 だと Xcode 4.6, OS X 10.8 とかになってる
Xcode 3 だと Xcode 3.2 or later, Mac OS X 10.6.x or later だね
バージョンは気にしなくてもいいような
681名称未設定:2013/08/28(水) 04:09:25.43 ID:dvbX7Ysw0
つかデータベース作るのはAppleScriptむかんだろ
文字列操作が致命的に遅いんだから、データベース部は外部に持って操作するのが懸命
出来ない訳でもなくわざわざでもなく、純粋に向かない
682名称未設定:2013/08/28(水) 09:34:05.94 ID:dG2QqdB20
このスレでなにを偉そうにのたまっているのだか
683名称未設定:2013/08/28(水) 12:58:10.98 ID:dvbX7Ysw0
いつから馬鹿が適材適所を考えないで、盲目的に苦労するスレに変わったんだw?
684593:2013/08/28(水) 13:34:54.69 ID:fSKyDa77P
>>681
もちろんデータベース部分はdatabaseEventかなにか外部のデータベース
エンジン使うよ。海外みるとポスグレとか
MySql使いこなしているみたい。
685名称未設定:2013/08/29(木) 16:24:17.21 ID:XHpyJStI0
箇条書きにしたテキストファイルの中の、
改行する部分すべてに句点(。←ですね、念のため)を与えるスクリプトを書きたいので
勉強を始めようかと思ってるんですけど・・・

ここをざっと読んでもしやと思ったんですが、
ひょっとしてこれって
スクリプト組まなくてもAutomatorでできますか?
686名称未設定:2013/08/29(木) 16:26:22.93 ID:XHpyJStI0
ageてしまいましたorz
申し訳ない
687名称未設定:2013/08/29(木) 17:29:35.78 ID:WOdwW5JS0
>>685
普通にテキストエディタでできるだろ。
688名称未設定:2013/08/29(木) 18:43:40.27 ID:L+6xi4ga0
>>685
正規表現でググれ
以上
689名称未設定:2013/08/30(金) 00:51:53.27 ID:y6iO533Z0
>>685
Automatorにはそんなのは無い(ようだ)
Automator使うにしても、そういうのは shell script なり AppleScript なりでだろうな
shell script なら1行だな
690名称未設定:2013/09/01(日) 11:43:28.08 ID:8p//HOTB0
https://discussions.apple.com/thread/3178845
これはDelicious Library 2というアプリでアイテムのurl欄にファイルのパスを入力しておくとスクリプト実行時に選択したファイルをVLCで開くというスクリプトだと思うのですが、

set movieFile to (choose file with prompt "Find the file for " & name of selectedMedium & ":")

の部分がよくわかりません。"Find the file for" や ":" にはなにをいれるんでしょうか。
691名称未設定:2013/09/01(日) 11:54:12.80 ID:f6X17d/F0
>>690
なにをいれるんでしょう
という質問の部分がよくわかりません

URLがローカルなファイルパスじゃなかったら、
Find the file for (Delicious Library 2 上での名前):
というプロンプトのファイル選択ダイアログを出して、ローカルなファイルを選択させているだけのように見えるけど
692名称未設定:2013/09/01(日) 12:12:39.33 ID:8p//HOTB0
>>691
これはそういう意味だったのですね、すみません。スクリプトを作る能力もなく、既存のものをいじって使おうと思ったのですがうまくいかず、わからなかった部分を質問したのですが勘違いしていたようです。ありがとうございました。
693名称未設定:2013/09/04(水) 17:20:40.69 ID:4GaYvDaG0
数字1行だけのテキストファイルの数字にプラス1して書き出したいんですが、文字化け?します
書き出し部を削って動かすと結果はうまくいくのですが、書き出すとうまくいきません
読み込ませず書き出しだけ"2"とか文字列を入れるとちゃんと書き出されます。なにが原因でしょうか

set fPath to "HDD:num.txt"
--読み込み
set txt to ""
try
set fn to open for access file fPath
set txt to read fn
end try
close access fn
--プラス1
set volNum to txt try+ 1
--書き出し
set fPath to "HDD:num.txt"
try
set fn to open for access file fPath with write permission
set eof of fn to 0 -- ファイルの内容をクリア
write volNum to fn
end try
close access fn
694名称未設定:2013/09/04(水) 18:03:11.14 ID:4GaYvDaG0
訂正
set fPath to "HDD:num.txt"
--読み込み
set txt to ""
try
set fn to open for access file fPath
set txt to read fn
end try
close access fn
--プラス1
set volNum to txt + 1
--書き出し
set fPath to "HDD:num.txt"
try
set fn to open for access file fPath with write permission
set eof of fn to 0 -- ファイルの内容をクリア
write volNum to fn
end try
close access fn
695名称未設定:2013/09/04(水) 18:05:56.27 ID:/Uzf0qPD0
>>694
set txt to (read fn as text)

write (volNum as text) to fn
696名称未設定:2013/09/04(水) 18:10:15.05 ID:/Uzf0qPD0
Apple Script 言語内だけならオブジェクトの型がどうなってるのかはあんま気にしなくてもいいが、
ファイルとか Apple Script 外とのとはちゃんと意識しなきゃならんのではないかな
697名称未設定:2013/09/04(水) 18:42:55.73 ID:4GaYvDaG0
この速さで的確な答えだけではなく
アドバイスまでありがとうございます
仰るとおりファイル操作系苦手なんです
698名称未設定:2013/09/16(月) 21:38:58.16 ID:hDaXUnYs0
ひたすらクッキークリッカーのクッキーをクリックするスクリプトって作れますか?
699名称未設定:2013/09/16(月) 22:06:55.20 ID:tQdPVxBQ0
うん。あっさりと
700名称未設定:2013/09/16(月) 22:09:27.75 ID:IOiC0upg0
メニューバーやドッグじゃなくブックマークバーに、
作成したAppleScriptを登録できないでしょうか?
任意の場所にウィンドウを移動させるスクリプト作ったんですが
ポインタを右上(メニューバー)か下(ドッグ)に移動させる無駄な動きをしなくてはいけません
ウィンドウを手動で動かすのと余り変わりなく思います
分かる方お願いします
701名称未設定:2013/09/17(火) 00:26:14.28 ID:XXf3/cDh0
ブックマークバー?
ショートカット当てた方がよっぽど便利だと思うがマウス縛りなのか?
702名称未設定:2013/09/17(火) 00:51:50.74 ID:u8Oc+/5y0
>>701
ブックマークバーにショートカットが割り当てられてる

>>700
AppleScriptじゃ無理だろう

Webブラウザのウィンドウリサイズ用ブックマークレット
http://kjx130.blog19.fc2.com/blog-entry-1318.html

Mac Tips X/ブックマークで JavaScript を使う
http://www33.ocn.ne.jp/~xinoue/mactipsx/JSInBm.html

ウィンドウをリサイズするブックマークレット - K'conf
http://kenz0.s201.xrea.com/weblog/2008/02/post_110.html

いいのが出来たらここに書いといてw
703名称未設定:2013/09/17(火) 18:37:52.21 ID:De7WCUl80
>>698
「Uncanny clicker」のAchievementをもらっちゃうよ^^
704名称未設定:2013/09/18(水) 00:34:01.65 ID:IRplpWQd0
>>703
手クリックでもふつーに貰える。
705名称未設定:2013/09/18(水) 02:28:22.60 ID:zscwpV0u0
>>698
うちではcliclickをusr/local/bin/にインストールしてるので、こんな感じ。
100x100=10000回のクリック

repeat with i from 1 to 100
display dialog i giving up after 3
repeat 100 times
do shell script "/usr/local/bin/cliclick m m"
end repeat
activate me
end repeat

cliclick
http://www.bluem.net/de/mac/cliclick/

最初のダイアログが出てる間にクッキーの上にマウスポインタをもっていく。
そのあとも100回クリックごとにダイアログが3秒表示されるけど、これは
回線詰まり?を防ぐのと、途中で止めたくなったときの用心とのためにあります。
706名称未設定:2013/09/18(水) 03:40:48.46 ID:retWGdcA0
click は System Events にあるよ
707名称未設定:2013/09/18(水) 12:52:11.04 ID:GqFBGcmp0
>>700
>>701の言うようにサービスにしてショートカット割り当てれば一発だよ
708名称未設定:2013/09/18(水) 19:28:51.08 ID:4IDLZJX10
ショートカットどうやってあてるの
709名称未設定:2013/09/18(水) 21:13:15.61 ID:bbXSwz3q0
>>708
システム環境設定>キーボード>キーボードショートカットのタブ
リストからサービスを選択
710 【22.5m】 :2013/09/19(木) 19:36:06.14 ID:IiEDJdX90
長年やってるけどはじめてPHOTOSHOP 触った。
画像回転修正して保存するスクリプト作ったけど
1回はdocument のfile pathにwith copyingで保存できるが
2回目やるとこける。
修正画像をダイアログなしに上書き保存するにはどうすればいい?
711名称未設定:2013/09/19(木) 21:07:37.33 ID:5MbQtDmb0
これはその場しのぎにしかならないかもしれないが
sips コマンドを紹介しておく

>MacOSX固有コマンド『sips』を使って画像のリサイズをする - ONILOQ NOTE
>ttp://d.hatena.ne.jp/oniloq/20121111/1352625190
712名称未設定:2013/09/20(金) 11:07:43.40 ID:50lvIhJ00
>>710
試しにやってみたが、むしろそのままで何もダイアログが出ないんだが。
OS 10.4,CS2

tell application "Adobe Photoshop CS2"
set doc to "ファイルパス"
tell document 1
save in doc
end tell
end tell
713名称未設定:2013/09/21(土) 06:20:00.49 ID:JEyVPX8J0
>>712
そーなの?!!
手動で操作してるときの挙動でもcommand+Sしても
やはり保存のオプション画面出てくるので素直にいくはずがないと
思っていたけど。あ、こちらはJpeg画像でオプションも指定しています。
昨日再度ちょっと動かしたけど、document 1とかひどい指定の仕方したので
ちゃんと動きゃしないw しばらくは楽しめそうですわ。
忙しくてAppleScript2ヶ月くらい触ってなかったのでリハビリ中です。
714名称未設定:2013/09/21(土) 07:39:25.51 ID:x+F6UrlQ0
>>712
Lion以降の話しだろ
715名称未設定:2013/09/21(土) 08:18:27.74 ID:DW6yn4kO0
×Lion以降の話しだろ
○Lion以降の話しだよ
716名称未設定:2013/09/22(日) 04:47:11.99 ID:byWw+aca0
最初の書き込み>>710の時点で
OSのバージョンもPSのバージョンも書いてない奴につきあうとは
717名称未設定:2013/09/22(日) 14:49:47.71 ID:G1DtRbzJ0
automatorで右クリックにAppleScriptで作ったもの表示させるのどうやるんですか?
なにをどうしても右クリックにメニューに表示できないんですけど
718名称未設定:2013/09/22(日) 15:03:44.34 ID:blxbPNum0
サービスのフォルダに入れてから
システム環境設定からサービスの設定
ググれば見つかるよ簡単に
719名称未設定:2013/09/22(日) 16:02:40.77 ID:G1DtRbzJ0
やってるんだけどね、ショートカットなら当てれるんだけど
右クリックメニューにでてこないんだよね・・
コンピューター再起動しろとかアクセス権修復しろとか ぐぐったらでてくるんだけどね
720名称未設定:2013/09/22(日) 16:22:25.22 ID:LhlZ5w9z0
>>719
Finder 再起動してみたらどうやろね?
721名称未設定:2013/09/22(日) 17:38:44.00 ID:yyoGdHHM0
>>719
サービスを作るときの「サービスは次の選択項目を受け取ります:〜」は適切なものになってる?
722名称未設定:2013/09/23(月) 08:10:59.38 ID:agB6PgS90
サービスは次の選択項目を受け取ります
ってなんだろ・・
723名称未設定:2013/09/23(月) 12:42:17.94 ID:YzPMoQGZ0
サービス対応してないアプリに適応してるとか
724名称未設定:2013/09/24(火) 10:19:56.16 ID:FE2+iU2Ri
英語だと"Service receives selected [INPUT] in [APPLICATION]"と一つの文章になってる
言わんとする所はわからんでもないが、翻訳としてはイマイチなんだろう
725名称未設定:2013/09/24(火) 15:32:48.52 ID:QzrntGaK0
いまいちどころか誤訳レベル
726名称未設定:2013/09/24(火) 16:10:56.62 ID:/McohhEA0
Context Menuの動きを知っていれば別に不思議でもなんでもない
727名称未設定:2013/09/28(土) 05:09:33.91 ID:04YosWSY0
右クリックに追加したいんですが、
アクション、クリップボードに必要なデータがありません。
となって右クリックメニューに作成したAppleScriptが追加されません
見直す部分ありますか?
指定されたテキストを取得、AppleScriptを実行、クリップボードにコピー
の順番に置いてます
728名称未設定:2013/09/28(土) 11:34:12.71 ID:OWL5nTbg0
もう見てるのも面倒くせーからどこかにうpしろよ
誰か好き者が直してくれるだろ
729名称未設定:2013/09/28(土) 13:55:55.40 ID:Sf92w6Li0
× もう見てるのも面倒くせーからどこかにうpしろよ
○ 見るの面倒なのでコードかファイルをアップしてね

× 誰か好き者が直してくれるだろ
○ 誰かが手直ししてくれると思うから
730名称未設定:2013/09/29(日) 16:14:44.94 ID:aR+FFyg70
おっしゃ! ちょっとPHPかじってみた。AppleScriptもPHPも
似たようなもんだな。仮想マシンでいろいろ遊んでみよう!
731名称未設定:2013/10/01(火) 23:30:33.44 ID:JgK+BCWF0
いや、PHPは似てない。
732名称未設定:2013/10/02(水) 09:14:07.79 ID:AzYLRIpM0
>>731
一緒だよ。Applescriptはすぐにファイル操作とかができて、
phpはいろいろ最初に設定とか他のアプリとの調整しないと
ウンともすんとも言わないだけ。ただよく分からないのは
セキュリティ的な話。Applescript は自分のデスクトップでしか
使わなかったからあまり気にしたことがないけど。
733名称未設定:2013/10/02(水) 11:52:20.02 ID:dD33YI3S0
書いて直ぐ実行ってだけだな。一緒ってのは
なんでPHPを選んだのか知らんけど
734名称未設定:2013/10/02(水) 12:13:13.56 ID:FKk2JVO80
文法が似とるかといえば似とらんな
735名称未設定:2013/10/02(水) 13:03:12.75 ID:F94qLn9a0
あれで似てるとか言われたら
俺とチンパンジーは瓜二つ
736名称未設定:2013/10/02(水) 13:07:27.98 ID:DTutC9TW0
それは正しいんじゃないか?97%までいっしょなんだし。
737名称未設定:2013/10/03(木) 08:36:52.76 ID:27MBnyT/0
プログラミング言語なんてどれもおんなじということだな。
738名称未設定:2013/10/03(木) 18:05:59.86 ID:qNaMyfsd0
UNIX系が全部同じに見える俺から見ても、AppleScriptとPHPは違う
けどそういう奴もいるだろうな
739名称未設定:2013/10/04(金) 10:14:39.95 ID:mhUvJkhW0
みんなASObjC使ってる? もっと話しようよ!(美少女)
740名称未設定:2013/10/05(土) 05:42:11.39 ID:zjekreRIP
普通にObjCメインの方が、情報も多いし使いやすい
ObjCからAppleScriptも呼べるし
741名称未設定:2013/10/05(土) 09:40:17.95 ID:mMGtK6kd0
ObjCからAppleScript呼ぶ意味がわからない。どんな用途?
742名称未設定:2013/10/05(土) 11:54:09.44 ID:sEireLZL0
アプリケーション間通信だろ。iTunesの再生曲に対してとかよくある
743名称未設定:2013/10/05(土) 12:30:30.91 ID:zjekreRIP
効果的かどうかはしらんけど、
アプリをAppleScript対応して、スクリプト内でアプリをマクロっぽく制御してた
メインスレッドでスクリプトを呼び出せってドキュメントにあったので、
結局 起動元アプリ -> Script起動アプリ -> Script -> 起動元アプリ制御になったな
744名称未設定:2013/10/05(土) 13:55:39.20 ID:y0LYMy130
× アプリケーション間通信だろ。
○ アプリケーション間通信だね。
745名称未設定:2013/10/06(日) 13:47:15.30 ID:KeQS70qE0
×○ アプリケーション間通信だね。
○× アプリケーション間通信だろ。
746名称未設定:2013/10/06(日) 14:21:52.67 ID:KUff9I730
0点
747名称未設定:2013/10/06(日) 14:21:54.79 ID:o9KdZ2zy0
(笑)いや、どっちでもいいよ。>>742書いた本人としては
748名称未設定:2013/10/06(日) 14:23:24.05 ID:o9KdZ2zy0
ね。しょーもないのにレスするとしょーもないのがすぐ喰い付くでしょ
749名称未設定:2013/10/06(日) 14:25:33.92 ID:KUff9I730
だね。
750名称未設定:2013/10/06(日) 16:14:07.72 ID:KeQS70qE0
海外の面白いサイトみたいなAppleScriptのサイト、日本にないかなあ。
751名称未設定:2013/10/06(日) 16:29:22.36 ID:KeQS70qE0
今日もApache-Apple Event Bridgeとかみつけて小躍りしたけど、
そっちに行ってはあかんのよね、と思った。
752名称未設定:2013/10/06(日) 18:19:44.48 ID:pIvqHCuG0
おもろいもん見つけるねえ
Buyか...オープンソースだったらAppleの気まぐれで無くなるような無くなり方はしないだろけどねえ
753名称未設定:2013/10/09(水) 20:03:14.78 ID:2SJz91360
AppleScriptは簡単でいいよなとか思っていたけど
使うのが信頼できる身内だけだからなんだよな。

SqlインジェクションとかMD5とかSHA1?
クロスサイトスクリプトの脆弱性とか聞いたら
自分のスクリプトが恥ずかしくなったよ。
プログラムの大部分ってセキュリティとか安全性
でできてるんだな。
754名称未設定:2013/10/09(水) 20:58:55.60 ID:IG+KsWOT0
次の高度セキュリティでも受けんのか?
セキュリティはやれる手法が限られるから極一部分。
安全性というかエラーの例外処理なんかはプロとアマで天と地程も違うよな
AppleScriptは「エイヤー」ってな力技の現場で使う事が多いから、本家のサンプルスクリプトみたいには書かないな、俺は
そもそもロール的な物も無い程度の物だし
755名称未設定:2013/10/09(水) 21:28:56.24 ID:k164ePJf0
オレなんてコード見られたらパスワード直書きwwwwwww
756名称未設定:2013/10/10(木) 02:17:58.63 ID:ZgfJLQoI0
あるあるw
でも、プログラムは目的を達するための道具にすぎないからね
ごく私的に使う小道具に過剰なセキュリティは愚かとも言える>>753
757名称未設定:2013/10/10(木) 10:18:24.96 ID:qBF0aQn50
以前あるサイトで配ってたスクリプトが
その手の脆弱性を指摘された時に

「直す技術も時間もないので配布を中止します」
(翻訳:面倒くさいからしない)

という対応をしてて、そりゃそうなるよなと思った
758名称未設定:2013/10/10(木) 10:58:41.14 ID:j1KxSqTq0
そもそもてめぇのマシンを自由に使われる状態にした時点でセキュリティもクソもない
759名称未設定:2013/10/11(金) 01:35:13.13 ID:6reHH4vy0
おうよ
だからこそのエロ動画満載ディスクイメージをマウントするスクリプト、パスワード直書きよ
760名称未設定:2013/10/11(金) 23:16:18.84 ID:179KVTLc0
アプリ形式のASを動かしてる状態でURLから別のASを起動しようすると
先に動いてた方がアクティブになるだけで起動しないんだけど俺だけかな?
OSは10.6と7

URLから〜ってのはこんな感じのやつ
http://d.hatena.ne.jp/aki77/20091207/1260124186
両方ともダイアログ出すだけとかでも発生する
761名称未設定:2013/10/11(金) 23:33:37.10 ID:1PQGOMZ50
>>760
独自のスキーム(プロトコル)のURLをSafariなりTerminalでのopenでなりでするとどうなんの?

先に動いてた方が起動している状態と起動していない状態ではとか。まさか同じ名前じゃなかろうし
762名称未設定:2013/10/11(金) 23:47:54.00 ID:BCHjv9zV0
>>761
ごめん、前者が指してるのがどういうことかよくわからん
そのASをopenコマンドで動かそうとすると同様に他のASが前面に出るだけ、という答えでいいのかな

何もASアプリが動いてない状態でなら普通に起動するし動作する
名前は違うしスキーム被りとかもない
763名称未設定:2013/10/12(土) 00:12:53.94 ID:v8wNWu/c0
>>762
うん、それが聞きたかった
OSが起動しているアプリを本来スキームを実装しているアプリと見なしている/別物と判断できないみたいだねえ
アプリの名前が違っていたらいちおうCFBundleIdentifierが違うから、んなこと無さそうだが、AppleScriptアプリの実行ファイル名はどれも同じ(applet)なとこがかなあ
764名称未設定:2013/10/12(土) 08:30:25.23 ID:G7TQpAXN0
みんなもっとXcodeでAppleScriptやろうぜ! GUIできるといろんなことできるよ!
>>760がなにしたいのか分からないけど、意外とXcodeでやれば解決するばす。
ちゅーかXcode5ってAppleScriptのサポートあんのかね? バージョンが上がる
たびにビクビクしちゃう。
765名称未設定:2013/10/12(土) 11:38:17.31 ID:OpXwcQyK0
お前は引っ込んでろ
766名称未設定:2013/10/19(土) 22:31:57.85 ID:vNc6ecMe0
モニターの解像度が、起動する度にワイド画面にならないので、
メニューバーの「ディスプレイを検出」を選ぶ必要があるのですが、

これを起動する時に自動的に処理するスクリプトは出来ますか?
767名称未設定:2013/10/20(日) 00:34:36.37 ID:nTZguloti
>>766
tell application "System Events"
tell application process "SystemUIServer"
tell (menu bar item 1 whose description is "displays") of menu bar 1
click
click menu item "ディスプレイを検出" of menu 1
end tell
end tell
end tell

こんな感じか
起動時実行の方法はいろいろあるわな
768名称未設定:2013/10/20(日) 03:50:54.78 ID:/ToFx7oo0
>>767
おおおおお
ありがとうございます!!
769名称未設定:2013/10/21(月) 12:16:35.47 ID:/aO9SLPn0
どなたかご教授を。
duplicate alias "×××××" to "△△△△"で
同じ名前の項目がすでにこの場所に存在します。"とerrorがでます。
上書き保存するにはどうしするのか教えてほしいのですが、どなたかよろしくお願いします。
770名称未設定:2013/10/21(月) 13:38:23.19 ID:aemeTsR10
>>769
duplicate alias "×××××" to "△△△△" replacing true
あるいは
duplicate alias "×××××" to "△△△△" with replacing
(前者の形で書くと、コンパイル時に後者の形に変換される)

>>769氏は「用語説明」の見方を覚えるといいと思う。
771名称未設定:2013/10/21(月) 14:01:07.27 ID:/aO9SLPn0
>>770さん
ありがとうございました。m(_ _)m
用語説明の見方のコツを教えていただけませんでしょうか。
以下はduplicateに関するものですが
duplicate v : Copy object(s) and put the copies at a new location.
duplicate specifier : the object for the command
[to location specifier] : The location for the new object(s).
[with properties record] : Properties to be set in the new duplicated object(s).
replacing true とかwith replacing とかは載っていません
それでどのような単語を綴ればよいかがさっぱりわかりません。ご教授お願い致します。
772名称未設定:2013/10/21(月) 14:06:51.86 ID:aemeTsR10
>>769は、Finderについての話だから、Finderの用語説明のduplicateを
見ないとダメです。

duplicate v : Duplicate one or more object(s)
duplicate specifier : the object(s) to duplicate
[to location specifier] : the new location for the object(s)
[replacing boolean] : Specifies whether or not to replace items in the destination that have the same name as items being duplicated
[routing suppressed boolean] : Specifies whether or not to autoroute items (default is false). Only applies when copying to the system folder.
→ specifier : to the duplicated object(s)
773名称未設定:2013/10/21(月) 23:33:06.58 ID:/aO9SLPn0
>>769は、Finderについての話だから、Finderの用語説明のduplicateを 見ないとダメです。
なるほどね。tell application "finder" だからか。それでfinderのを見るんですね。m(_ _)m  いままでどう見たらいいのかさっぱりわからなかった。
ちなみにQuickTimeの場合は
duplicate v : Copy an object.
duplicate specifier : The object(s) to copy.
[to location specifier] : The location for the new copy or copies.
[with properties record] : Properties to set in the new copy or copies right away.
これをみるのですね。
774名称未設定:2013/10/22(火) 04:39:45.52 ID:2oCeeuSn0
うわきたコレ、こんなスレがあるなんて涙!昨日からAppleScript始めました。
次のところまででできたんですけど、ちょっとした改善に手間取っています。

1. Eye-Fiメモリカードの写真をでNASに自動アップロードする(AppleScript関係なく)
2. フォルダアクションでアップロード先のフォルダにファイルが追加されたことを検知する
3. iPhotoにインポートするかどうか尋ねるようダイアログを表示してインポートする

でも、Eye-Fiってその性質上、ファイルを1枚ずつフォルダに追加するんですよ、
だから、手順2でスクリプトが実行され始めたときのファイル数と、手順3で
実際にインポートするときのファイル数が異なる場合があるわけです。
最悪の場合、インポートが終わってからすぐファイルが追加されることもあるかも。

(つづく)
775名称未設定:2013/10/22(火) 05:50:07.93 ID:2oCeeuSn0
(つづき)

そこで、特定のフォルダに「ある程度の」ファイルが追加された後にインポート処理したいと思っています。
たとえば、動画でなければ1枚アップロードするのに30秒はかからないので、次のようにしました。

repeat
set the total_item_count to count every file
delay 30
set the new_total_item_count to count every file
if total_item_count = new_item_count then exit repeat
end repeat

これはこれでうまく動作しているかに見えたのですが・・・
連続でファイルを追加していると、そもそもこのスクリプトが連続で起動するハメに><
このスクリプトが重複して起動しないようにすることってできるでしょうか?
776名称未設定:2013/10/22(火) 06:53:29.06 ID:2oCeeuSn0
失礼、バージョンを書き忘れた
Mountain LionでAppleScript 2.24
バージョン2.3.1 (138.1)

lockという名前のファイルを生成して制御する方法も考えてみました。
・・・頑張って書いてます
777名称未設定:2013/10/22(火) 08:51:11.59 ID:N7EWj3tX0
>>774
こんな感じでどうだろ

set file_path to "/Users/hage/status"
try
tell application "Finder"
if exists file (file_path as POSIX file as text) then
set status to do shell script "/bin/cat " & quoted form of file_path
if status = "running" then
return -- 既に実行中なので終了する。
end if
end if
end tell
do shell script "echo 'running' >" & quoted form of file_path

-- メインの処理

on error
display dialog "error" buttons {"OK"} default button 1
end try
do shell script "echo 'stopped' >" & quoted form of file_path
778名称未設定:2013/10/22(火) 09:58:09.26 ID:2oCeeuSn0
>>777
ぞろ目おめでとうございます!
そしてサンプルスクリプトありがとうございます。

最初はlockというファイルを生成して処理が終わったら削除しようと思ったんですが、
タイムスタンプがずれててなかなかうまくいきませんでした。
shellスクリプトでファイルの中身を見るのがスマートですね。
AppleScriptはパスの書き方やら POSIX とか alias とはいろいろ難しいですががんばります。

おかげさまで、デジカメで撮った写真がNAS経由で自動的にインポートされるようになりました。
あとはエラー処理や status が running のまま終了してしまった場合の回避策など作ってみます。
779名称未設定:2013/10/22(火) 10:13:04.05 ID:sdCIUb2D0
目的を達成しても改良の余地があるから楽しいよね

そしてユーザー名ハゲになっとるw
780名称未設定:2013/10/22(火) 10:45:57.90 ID:MO/6nTlG0
すっかり丸投げ嫌々スレでなくなってる
ねちっこく >1 読めって言われるよりはいいんだけどね
781名称未設定:2013/10/22(火) 13:20:58.44 ID:P6refKct0
本人が試行錯誤してるのが見て取れるから、これは丸投げじゃないと思う
782名称未設定:2013/10/22(火) 13:41:33.17 ID:MO/6nTlG0
直近のレスを指してるわけじゃなく全体を通して昔と比べればの話
783名称未設定:2013/10/22(火) 13:45:59.53 ID:1wOOX1ppi
やりたい事が明確でそんなに難しい話でもなく、
たまたま暇だったのもあってさらっと書いてしまったんだよな>>767

ちゃんとお礼もしてくれたし悪い気はしてない
784名称未設定:2013/10/22(火) 13:53:06.55 ID:MO/6nTlG0
いい人も多いんだが上から目線の人の口が汚い人もいるじゃない?
あれが嫌なんだよね、AppleScriptの上級者が皆そうだとは思いたくない
785名称未設定:2013/10/22(火) 15:05:42.03 ID:sdCIUb2D0
君みたいなのの方が嫌だわ
786名称未設定:2013/10/22(火) 16:26:53.33 ID:3guAVH9F0
俺もID:MO/6nTlG0のほうがイヤ
というかこのスレに私怨がありそうだなw
787名称未設定:2013/10/22(火) 18:29:57.49 ID:Vosl5Iw90
tell application "Adobe Illustrator"
activate
convert to paths of document 1
end tell

テキストをアウトラインにしようとするとエラーが返ってきました。
どなたかご教授ねがいませんか。
788名称未設定:2013/10/22(火) 19:30:15.07 ID:nemJ+Vj90
789名称未設定:2013/10/22(火) 22:12:32.82 ID:Vosl5Iw90
>>788
ご丁寧にありがとうございました。無事アウトラインをとる事が出来ました。m(_ _)m
...tell document 1 とof text frame 1で解決できました。
790名称未設定:2013/10/22(火) 23:30:46.28 ID:kjmDimoi0
>>778
補足すると777のスクリプトではtryブロックの中でエラーが起きてもstatusファイルにstoppedを書き込んで終了するようになっている。
むしろreturnするかどうかの判定前にエラーが起きて、stoppedが書き込まれるとよろしくない場合があるかもしれないので、
その判定を行う部分はtryブロックより前に持ってきた方が良いかも。

>>779
俺はハゲじゃないぞ!ハゲじゃないんだ……
791名称未設定:2013/10/22(火) 23:38:53.53 ID:GIczDO680
>>790
   ∧_∧     フッサフサにしてやんよ
   ( ・ω・)=つ≡つ
   (っ ≡つ=つ
   ./   ) ババババ
   ( / ̄∪







   /ヽ /ヽ
  ':' ゙''"  `':,
  ミ   ・ω・ ;,
 :; . っ     ,つ
  `:;      ,;' フサッ
   `( /'"`∪
792名称未設定:2013/10/23(水) 00:04:30.61 ID:RZsUQzoy0
イラストレターで「すべてを選択」し「アウトライン作成」をapplescriptで行おうとしていますがセレクトが出来なくて困っています。
一つのテキストにはアウトライン化は出来るのですがdocument上の複数ある(全ての)テキストにはアウトライン化ができません。
下記のようなscriptでは「error "{} のタイプを integer に変換できません。」となります。
どなたかご教授お願い致します。
tell application "Adobe Illustrator"
tell document 1
set myselection to selection
repeat with i from 1 to myselection
convert to paths of text frame 1
end repeat
end tell
end tell
793名称未設定:2013/10/23(水) 02:17:52.46 ID:3LCFIa/60
>>792
まず「全てを選択」部分がないね。
この場合、あえてスクリプトで選択する必要はないと思う。

myselectionは選択されたオブジェクトのみが入るだけなので
ドキュメント内のテキストオブジェクト限定にして代入
set myselection to text frames
myselectionはテキストオブジェクトのリストそのものが入っているのでそこから「いくつあるか」を取得する(count of)
repeat with i from 1 to count of myselection
とすればOKか
convert to paths of text frame 1
が一見間違ってそうだけど
アウトライン化されるとtext frameではなくなるので常にtext frame 1でOK

個人的にはこの方が一発でアウトライン化してる感があってよい
tell application "Adobe Illustrator"
tell document 1
set locked of layers to false--ロックされたレイヤーがあった場合ロック解除
set textFrameList to text frames
set reTextFrameList to reverse of textFrameList--アウトライン化でtext frameのインデックスがずれるので逆順に
convert to paths reTextFrameList
end tell
end tell

テキストオブジェクトがロックされてる場合も強制的にアウトライン化されるよ。
不可視レイヤーにテキストオブジェクトがあるとエラーになるので
もしそんな状況があり得るなら不可視レイヤー削除するか無視するような処理を追加する必要があるよ。
794名称未設定:2013/10/23(水) 09:03:41.57 ID:RZsUQzoy0
>> 793さん ありがとうございました。m(_ _ )m
Adobe Illustrator CS3にはアウトライン化ができましたがAdobe Illustrator CCには機能しなかったのです。
tell application "Adobe Illustrator"
set locked of every layer of document 1 to false
get every text frame of document 1
--> {}
convert to paths {}
--> {}
end tell
結果:
{}

こういう時のscript方法はあるのでしょうか。
795名称未設定:2013/10/23(水) 10:30:03.36 ID:ZGSy8jS60
Mavericks無料じゃ入れるしかないな
またスクリプトがちゃんと動くかチェックする作業が始まるお…
796名称未設定:2013/10/23(水) 14:33:04.52 ID:vMKFMvbF0
10.6のままここまで耐えたおれは勝ち組


10.7以降の全ての変更点をチェックする作業が始まるお……
797名称未設定:2013/10/23(水) 15:32:56.02 ID:C3Griflei
補助装置の設定がユニバーサルアクセス/アクセシビリティからセキュリティに移動して、
一括設定からアプリ単位になったので、GUI Scriptingの説明すんのが若干めんどくさい
798名称未設定:2013/10/23(水) 20:33:29.19 ID:RZsUQzoy0
>>794
Adobe Illustrator CCには機能しなかったのです。 ←機能しなかったのが出来るようになりました。
お騒がせいたしました。m(_ _)m
799名称未設定:2013/10/24(木) 20:54:47.27 ID:Xzhuo3PH0
選択したaiファイルをPDFに保存したいのだが
以下のスクリプトではエラーがでますどなたかご教授ください。
set aFile to choose file
set fileRef to aFile as text
tell application "Adobe Illustrator"
tell document 1
save document 1 in file fileRef as pdf with options {class:PDF save options, compatibility:Acrobat 4, preserve editability:true}
end tell
end tell
800名称未設定:2013/10/24(木) 21:04:45.30 ID:E+3rTbRD0
ファイルの扱いはたしか日本語からむと出来ないのでそこだけAdobeJavaScriptを組込んでたような
最近Adobeやってないから忘れた
801名称未設定:2013/10/25(金) 02:14:02.08 ID:NkU6XIV50
>>799
まず、選択したファイルを開いていない。
fileRefが選択したファイル(aiファイル)のaliasパスで、それを保存時も使ってるので拡張子がaiのまま
Adobeアプリで扱うファイルパスはPOSIX pathが良いよ。
tell document 1内でsave使うならsave document 1in〜ではなくsave inでOK
逆にsave document 1in〜を使うのであればtell document 1のくくりは不要

set aFile to choose file
set filePath to POSIX path of aFile
set PDFfilePath to do shell script "perl -e '$_=$ARGV[0];s/.ai$/.pdf/; print $_;' '" & filePath & "'" --拡張子変更したバス
tell application "Adobe Illustrator"
open filePath
save document 1 in PDFfilePath as pdf with options {class:PDF save options, compatibility:Acrobat 4, preserve editability:true}
close document 1 saving no
end tell

perlはあまり知らないので正規表現の置換は>>409のコピペ改。いらない記述が含まれてるかも。
802名称未設定:2013/10/25(金) 05:14:52.99 ID:MnijVoJE0
失礼します

Mailでメールボックスを指定する場合はどういう表記をするのでしょうか?
結局、やりたいことはごり押しで解決できたのですが、今後のために教えてください。
Mavericksアップデートで既存のメッセージが認識されなくなってしまいました。
Finderから実際のメールデータを見つけて一端デスクトップに移動しました。
そこからメールを読み込んだのはいいのですが、「読み込み」という項目ができて
その下にいくつも階層になってメッセージが置かれてしまいました。
これを元のアカウントの場所に戻したかったのですができず、結局変なやりかたをしました。
参考になるかもしれないので次の投稿でアップします。
803名称未設定:2013/10/25(金) 05:17:49.03 ID:MnijVoJE0
tell application "Mail"

set mBoxes to mailboxes of mailbox "読み込み/[email protected]"

repeat with a from 1 to length of mBoxes
set currentMailbox to item a of mBoxes
moveMsgs(currentMailbox) of me
end repeat
end tell

on moveMsgs(theMailbox)
tell application "Mail"
set subMailboxes to every mailbox of theMailbox
repeat with a from 1 to length of subMailboxes
set currentSubMailboxes to item a of subMailboxes
moveMsgs(currentSubMailboxes) of me
move every message of theMailbox to mailbox "読み込み"
end repeat
end tell
end moveMsgs
804名称未設定:2013/10/25(金) 05:20:10.68 ID:MnijVoJE0
このスクリプトで「読み込み」直下にメッセージが移動できたので、そこから手動でコピペしました。
直接メールボックスを指定したいのですが、どうがんばっても指定できないみたいでした。

set mBox to mailbox "" ← ここにはどう描けば良いのですか?
Inboxとか受信とかMAILBOXESとかかいてもダメです。

あ、上のスクリプトはタイムアウトを指定しないとだめですね
805名称未設定:2013/10/25(金) 06:21:58.13 ID:NkU6XIV50
受信ボックスだったらアカウント指定しないとダメ
tell application "Mail"
tell account "アカウント名" --環境設定>アカウント>アカウント情報タブ>説明部分
set theMailBoxes to mailboxes
tell mailbox "INBOX" --大文字(確認方法は下記スクリプト)
set theMessages to messages
end tell
end tell
end tell

アカウント内のメールボックス名を表示するスクリプト
tell application "Mail"
tell account "アカウント名" --環境設定>アカウント>アカウント情報タブ>説明部分
set theMailBoxList to mailboxes
repeat with theMailBox in theMailBoxList
display dialog name of theMailBox as string
end repeat
end tell
end tell
806名称未設定:2013/10/25(金) 12:05:36.75 ID:iysLFsgk0
>>801
ご教授ありがとうございました。m(_ _ )m
CS3ではファイルは開かなくCCでは開ききました。
ちなみにosx10.8.5 AppleScript2.2.4(バージョン2.5.1(138.1)です。

Illustrator CS3:
open filePath→
error "Adobe Illustrator でエラーが起きました:いくつかのデータを期待されるタイプに変換できません。"となりました。

Illustrator CC:
save document 1 in PDFfilePath as pdf with options {class:PDF save options, compatibility:Acrobat 4, preserve editability:true}→
error "Adobe Illustrator でエラーが起きました:フォルダ 不特定のオブジェクト が見つかりませんでした。"
となりました。
807名称未設定:2013/10/25(金) 23:42:15.74 ID:NkU6XIV50
>>806
set aFile to choose file
set filePath to POSIX path of aFile
set PDFfilePath to do shell script "perl -e '$_=$ARGV[0];s/¥¥.ai$/.pdf/; print $_;' '" & filePath & "'"
tell application "Adobe Illustrator"
open aFile
tell document 1
save in PDFfilePath as pdf with options {class:PDF save options, compatibility:Acrobat 4, preserve editability:true}
close saving no
end tell
end tell

open filePathではなくopen aFileにすればCS3でも開く。
あと拡張子置換部分の正規表現間違ってた…間違ったままでも動いたけど
OSX10.4+Illustrator CS3
OSX10.9+Illustrator CS3
OSX10.9+Illustrator CS5
で確認。CCは使ってないので確認できない。
808名称未設定:2013/10/26(土) 02:03:02.80 ID:z4SmQUNL0
>>807 無事できました。ありがとうございました。m(_ _ )m
OSX10.9+Illustrator CS3
OSX10.9+Illustrator CC
両方できました。今回OSのバージョンアップも致しました。
おかげさまで思っている事が出来そうです。
809名称未設定:2013/10/27(日) 13:08:16.67 ID:QmzSJ/nH0
>>805
ありがとうございます!
これでトライしてみます!
810名称未設定:2013/10/27(日) 17:15:14.26 ID:n3yymCBe0
なんか少し活気があってうれしいぜ!
ASはもうなんでもできるんだから、どんどんやってこうぜ!
ASサイコー!!
811名称未設定:2013/10/28(月) 07:56:25.82 ID:95lWR6+g0
このスレには助けられています。
ぶっちゃけ、AppleScriptはリファレンスはあるものの実例が圧倒的に少なくて困ります。
超基本的な操作に関しては入門しやすいのに、ちょっと深いことやろうと思うとすぐに躓きます。
まぁ何が言いたいかというと、皆さんありがとうございます。
812名称未設定:2013/10/28(月) 09:19:05.51 ID:EfdAYmT/0
実例けっこうあると思うぞ
昔に比べてだけど、パソコン系ブログによくコード載ってるじゃん
813名称未設定:2013/10/28(月) 16:59:45.92 ID:95lWR6+g0
>>812
ま、たしかにそうですけど
ほかの言語に比べると圧倒的に少ないかな・・と
ASの基礎がないからサンプル見てもすぐにいろいろ発展させられないっていうのもあるかもしれない
814名称未設定:2013/10/28(月) 20:57:59.27 ID:dg/rPuU40
>>813
だよね。他の言語はじめるといかにAppleScriptのサンプルが少ないかわかる。
特にAppleScriptObjCのサンプル少ないからなあ。
AppleScriptは単純な処理しかできないと思ってる人多いけど、実はめちゃくちゃ
いろいろできる変態言語なんだけどね。いい意味で。
815名称未設定:2013/10/28(月) 21:04:57.08 ID:V35LSEuY0
アプリ間や他のスクリプト言語と行き来させたり色々と橋渡しが便利かな
816名称未設定:2013/10/28(月) 22:11:06.80 ID:Rs1AL7Im0
AppleScriptの全盛期は10年以上前でしょ。
その頃に比べると今は枯れた存在で、OSX絡みの情報は出尽くしたし、
それ以前の膨大な情報は忘れ去られてる状況。
817名称未設定:2013/10/29(火) 01:51:33.33 ID:jfevyGwQ0
アプリケーションによって用語が違うからサンプル欲しいけど、マイナーなアプリケーションだとサンプルが少ないというのはある。
818名称未設定:2013/10/29(火) 06:13:18.83 ID:5augkK1G0
>>1のリンク先、見直した方がいいと思うよ

http://docs.info.apple.com/help/guide.html?path=AppleScript/2.1/jp/
Appleサポートのトップページっぽいところに飛ぶ

http://members.at.infoseek.co.jp/obto/script/script.html ※消失?
消失、とあるけどやっぱり消失

http://www.drycarbon.com/applescript/
古すぎ・・・

http://www.drycarbon.com/applescript/
これは俺も読んだ
バージョンは、Mac OS X10.2に付属するAppleScript 1.9

http://developer.apple.com/jp/technotes/tn2065.html ※消失?
消失っぽい、/jp/ を採った英語ページならアクセスできるけど

AppleScriptはこまごまとしたバージョンがあるみたいだし、古い記事も多いし
819名称未設定:2013/10/29(火) 06:18:32.23 ID:5augkK1G0
枯れた言語の割にはバージョンアップがマメで
それでネット上のサンプルが古くなってる気がするんだけど

http://homepage2.nifty.com/medamacafe/J/applescript1.html
このリンク集のリンク先の404っぷりをご覧よ
820名称未設定:2013/10/29(火) 23:27:01.10 ID:lXB2VArf0
Illustratorのレイヤーカラーを名前で指定することは可能でしょうか?
Adobeスクリプティング入門では色の名前を定数として指定していますが
スクリプトの書き方がIndesignのようになっています

tell application "Adobe Illustrator CS5"
 set myDoc to make document
 set myLayer to make layer in myDoc
 set layer color of myLayer to dark green
end tell
注意:dark green が定数ではなく文字列値の場合は、この値を引用符で囲みます
set layer color of myLayer to "dark green"
821名称未設定:2013/10/30(水) 11:10:58.25 ID:rbFWAdns0
822名称未設定:2013/10/30(水) 11:30:26.98 ID:Jd6UYOAu0
>>821
移転して数回書き込んで止まってるよwww
823名称未設定:2013/10/30(水) 13:30:48.35 ID:rbFWAdns0
>>822
右側にまとめがある
824名称未設定:2013/10/31(木) 21:28:00.24 ID:2+tz5VK/0
AppleScriptでHTMLをDOM?としてうまく扱ってWebスクレイピングするいい方法ある?
825名称未設定:2013/10/31(木) 21:32:08.33 ID:g8tNn6Up0
なんかそういうライブラリあった気もするが
いまならPythonかRuby呼んでやるのが早道なんじゃね?
826名称未設定:2013/11/02(土) 11:29:20.92 ID:SuDfU60E0
>>825
実際、初手はどーすんの?safariで結構いけるのかな?4000個くらいのページがあって、
その中の情報をほぼすべて取りたいと思ってる。そのURLは機械的にできてるので
なにでどうアクセスしてそのライブラリに流せる形にするか、だけど。
がんばりすぎるとハッカーで逮捕とか言われちゃうのかな。
時間おいて10個くらいずつやるとして、何注意すればいいのかな?
827名称未設定:2013/11/02(土) 14:55:28.49 ID:A9N+YOZE0
>>826
どーしてもSafari使いたいなら使えないこともないだろうけど
普通は do shell script 経由で curl (wget) 使うんじゃないかな
あとは sed なりなんなりで煮るなり焼くなり
828名称未設定:2013/11/04(月) 08:26:01.26 ID:Gu4dKFh00
すいません、教えてください。
sudo purgeでパスワードを含めたスクリプトはどう書けばいいのでしょうか?
do shell script "sudo purge"
password:ほにゃらら
じゃダメでした...
829名称未設定:2013/11/04(月) 09:30:19.04 ID:TiIDB7QM0
>>828
-S オプションを使えば標準入力からパスワードを渡せるよ。
echo password | sudo -S purge
830名称未設定:2013/11/04(月) 09:35:38.64 ID:Gu4dKFh00
>>829
ありがとうございました。出来ました。
831名称未設定:2013/11/04(月) 16:43:31.29 ID:xwPphayDi
do shell scriptならsudoなしでwith administrator privilegesでもいけそう
ってかこっちしか知らんかったけど、>>829のが応用効きそうだな
参考になります
832sage:2013/11/04(月) 18:10:23.22 ID:qcBMNMUv0
Safariで空白の新規ウィンドウを作成して、
そのウィンドウだけ最前面に表示するということをやろうとしています。

tell application "Safari"
make new document
end tell

ここまではできたのですが、
activateとしてしまうと全てのSafariで開いているウィンドウが前面にでてきてしまいます。
特定のウィンドウだけを前面に出す方法を教えていただけないでしょうか。
833名称未設定:2013/11/04(月) 19:53:50.34 ID:EvIRsJ0j0
tell application "Safari"
set aNEWdoc to make new document
activate aNEWdoc
end tell
とかするのでは。まったく適当だから動かないと思うけど。
834名称未設定:2013/11/04(月) 20:44:47.28 ID:xTYcKgvY0
tell application "Finder"
set _b to bounds of window of desktop
set scrW to item 3 of _b
set scrH to item 4 of _b
end tell

tell application "Safari"
make new document
set (bounds of window 1) to {scrW * 0.1, scrH * 0.1, scrW * 0.9, scrH * 0.9}
end tell

tell application "System Events"
perform action "AXRaise" of window 1 of process "Safari"
end tell
こんなんでどう?
835名称未設定:2013/11/04(月) 22:18:00.53 ID:xTYcKgvY0
iTunesの「スマートプレイリスト」とやらがインターネットラジオに全然対応していないっぽいので組んでみた
めっちゃ動作遅いけど一応自分の目的は果たせた。速度重視の人は 途中で ruby や perl にでも食わせた方がいいかもしれない。

-- 使い方: ミュージック>インターネットラジオを開いた状態で実行 (一度だけ全ツリーを手動で開いてリストを記憶させる必要あり?)
-- 要スクリプト拡張: Satimage osax (正規表現マッチ用)
set aPattern to ".*fr[ae]n[cç][aeho].*" -- このパターンで 名前 か コメント にマッチするアイテムを
set aPlaylist to "France" -- この名前のプレイリストに追加する
tell application "iTunes"
repeat with aTrack in tracks of view of browser window 1
set aText to (name of aTrack as text) & " " & (comment of aTrack as text)
find text aPattern in aText with regexp and all occurrences without case sensitive
if result is not {} then
duplicate aTrack to playlist aPlaylist
end if
end repeat
end tell
836832:2013/11/08(金) 21:17:39.80 ID:JjMU1tHl0
>>833
>>834

試すのが遅くなってすみません。
希望の動作にはならなかったのですが、ありがとうございました!

どうもSafariの全ウィンドウが手前に来るか、裏で開くかしかできないんですよね。
参考にして自分で調べてみます。
837名称未設定:2013/11/10(日) 01:31:21.84 ID:fC2Ja2S40
力技

tell application "Safari"
make new document
delay 0.5
set windowName to name of window 1
end tell
tell application "System Events" to tell UI element "Safari" of list 1 of process "Dock"
perform action "AXShowMenu"
click menu item windowName of menu 1
end tell
838名称未設定:2013/11/10(日) 02:34:08.00 ID:qCoJa8Dzi
>>837
こんな書き方ありなのか
初めて見た

ウインドウ名だと重複する可能性あるんでこんなんとかな
(menu item 1 whose value of attribute "AXMenuItemMarkChar" is "✓") of menu 1

マベはwhose関係の処理がビミョーなとこあるし、
上のattributeが全部のOSで同じよーに定義されてるかは知らんけどね
下から数えた順番のがシンプルかつ確実かもしれん
839名称未設定:2013/11/10(日) 11:44:02.86 ID:doOzBfbN0
items beginning through end of {1, 2, 3}
items the beginning through end of {1, 2, 3}
items beginning through the end of {1, 2, 3}
-- 英語ムツカシイ
840名称未設定:2013/11/10(日) 12:25:14.08 ID:dWdasORY0
そこで日本語AppleScriptですよ
841名称未設定:2013/11/10(日) 16:48:47.52 ID:qnB6plTT0
今でも変数名などに日本語を使えたりするよな

property |顔面偏差値| : 41
if |顔面偏差値| > 70 then
return true
else
return false
end if
842名称未設定:2013/11/10(日) 18:44:57.16 ID:0wBN115Di
>>839
the end ofと書くことでA thru B ofより優先されるわけだな
endとbeginning入れ替えても同じ事が起こる
843名称未設定:2013/11/14(木) 21:33:34.73 ID:BBUl5uMA0
OSX 10.9です
単純にPDFファイルを開く部分でつまずいています。

tell application "Preview"
activate
open "/Users/aaa/Downloads/bbb.pdf"
end tell

を実行しても"アクセス権が無いため開けませんでした"とのメッセージが出ます。
普通にダブルクリックでは開くことができ、一度開くと上のスクリプトでも開けるようになります。
どのpdfでも同じ状況で、アクセス権修復や再起動をしても変わりませんでした。

解決法など有りましたらご教示ください。
844名称未設定:2013/11/14(木) 22:00:26.32 ID:91Dtgv630
open POSIX file "/Users/aaa/Downloads/bbb.pdf"
845名称未設定:2013/11/14(木) 22:13:26.96 ID:BBUl5uMA0
おおおおお!開けました!
すごく嬉しいです!

本当にありがとうございました!
846名称未設定:2013/11/14(木) 22:27:11.02 ID:Xs/K6aEq0
>>845
AppleScriptの(というかMac OSの)標準はパス区切りが":"で表されるやつ。
open ナントカ の場合は、その方式の指定。

UNIX流儀の"/"区切りはAppleScriptではわりと新しい。open POSIX ナントカはこれ。

参考
AppleScriptで扱う「パス」について(1)〜(5)
http://piyocast.com/as/archives/1046
847名称未設定:2013/11/14(木) 22:41:04.95 ID:6E6Z1i1c0
as POSIX file とか変換しなくてもそんなスマートな書き方があったのか
848845:2013/11/14(木) 23:25:13.79 ID:RrINNYp10
ありがとうございます。
昨日から悩んだり調べたりしていましたが、
根本的なところからわかっていませんでした…
ご紹介いただいたページで勉強します。
849名称未設定:2013/11/14(木) 23:41:37.10 ID:WmUn4CCU0
わからなかったらとりあえずApplescriptエディタで記録してみるのもいいよ
open document file "bbb.pdf" of folder "Downloads" of folder "aaa" of folder "Users" of startup disk
みたいになっちゃうけど
850845:2013/11/15(金) 00:10:21.71 ID:uUFVnWov0
やってみました。こういう使い方も出来るんですね!
勉強になりました。
重ね重ねありがとうございます。
851名称未設定:2013/11/15(金) 00:55:14.57 ID:dXcaA1Pq0
スクリプトエディタで
choose file
って1行だけ書いて実行させると、ファイル選択ダイアログが出る。
適当なファイルを選ぶと、結果の欄に alias 「":" 区切りパス名」が表示される。

Finderから適当なファイルをスクリプトエディタの編集欄にドラッグ&ドロップすると
そのファイルの"/"区切りパス文字列が入力される。
852845:2013/11/15(金) 01:48:12.91 ID:uUFVnWov0
ありがとうございます。
いろいろな小技があるんですね。
すごく嬉しかったので、お礼の書き込みを沢山してしまいましたが、
そろそろご迷惑なのでROMに戻ります。
また困ったときにはよろしくお願いいたします。
853名称未設定:2013/11/15(金) 16:25:48.12 ID:H6s1nEXBi
>>847
>>3からの流れで同じよーな話をしてる
854名称未設定:2013/11/15(金) 16:38:53.32 ID:YmoxZmGl0
あはは、そこのところ付け焼き刃のまま放っておいたと反省しとります
855名称未設定:2013/11/15(金) 23:17:50.76 ID:+gLlpCUk0
>>277
非常に今更だけど
>>837
perform action "AXShowMenu"
がコンテキストメニュー表示だね。
856名称未設定:2013/11/16(土) 11:07:12.00 ID:8eIJoj0v0
いろいろ勉強させていただいています。
今年でAppleScriptって20執念なんですね。
Marvericksでひとつステップアップできるといいのかな、と。
昨日よりAppleScriptStudioのスクリプトをASOCに移植しようとがんばってますが、
ASOCってGUIまわりはほとんどObjective-Cなんですね。
英文でサンプルコードを読めばなんとなく分かるけど、ひとつひとつ
それやると結構しんどいけどがんばってみる!!
857名称未設定:2013/11/16(土) 15:08:30.64 ID:KRY+TPRS0
858名称未設定:2013/11/16(土) 21:01:24.12 ID:a+gBUKUb0
>>832
do shell script "open -a Safari"
で最前面のウインドウだけフロントへ出るよ。
859名称未設定:2013/11/16(土) 21:44:33.54 ID:Z3dnXqtk0
>>858
眼から鱗
860名称未設定:2013/11/16(土) 23:41:43.62 ID:vECTAPM90
>>858
>open -a Safari"
ほんとだ!
861名称未設定:2013/11/17(日) 01:08:12.26 ID:BirzMRahi
>>855
表示は出来てもその先のメニュー選択操作はできない事が多いし、
そもそもAXShowMenuで表示すらできない場合もあるから万能ではないよ

>>276の言うiTunesの例だと前者になる
862名称未設定:2013/11/17(日) 04:35:54.39 ID:xGzaJ+rz0
改行のあるテキストから
同じ単語の、全角アルファベットと半角アルファベットのどちらかがある行を連番をつけて
順番通りに抽出したいのですが、何か方法がありますでしょうか?

do shell scriptでgrepを使ったら、andはパイプでつなぐと、いけたのですが、
orはバックスラッシュとパイプなので、バックスラッシュが一つ入るとエラーになってしまいます。

do shell script "grep -in 'test&amp;yen;|test' /xx.text"のようなバックスラッシュを使ったor検索は出来ないのでしょうか?
ターミナルでは出来たのでバックスラッシュがapplescriptのあれなのが原因なのは、なんとなくわかるのですが
作法的な物があるのでしょうか?
なにかスマートな方法がありましたら教えてください。
863名称未設定:2013/11/17(日) 07:57:42.69 ID:4ufupS+s0
文字列リテラル中の最初のバックスラッシュは(AppleScriptの)エスケープ文字なので、
バックスラッシュを文字として使いたい場合は、バックスラッシュバックスラッシュにというんじゃないの?
その場合は バックスラッシュバックスラッシュ| て
864名称未設定:2013/11/17(日) 08:51:06.85 ID:xGzaJ+rz0
>>863
それだー!
ありがとうございます。
いままで複数回、連番grepしてからsort -n
っていう回りくどい事してたのが解消されました!
865名称未設定:2013/11/17(日) 08:52:24.87 ID:5fheZFI70
do shell script使うなら>>1にあるTN2065読んどいた方が良いぞ
866名称未設定:2013/11/17(日) 23:39:52.86 ID:/kXtyWNQ0
>>862
メニュー操作はやろうと思えば
repeat x times
key code 125
end repeat
とかで可能な気はするけど(ラテン文字環境だとkeystoroke "メニュー名")
表示できないのもあるのね。知らなかったありがとう。
867名称未設定:2013/11/20(水) 11:10:31.71 ID:DMGXJSHd0
アップルスクリプトに関してはコピペして変更するくらいの知識しかありませんが、お知恵をお貸しください。
「フォルダA」に以下のどこからかコピペしたスクリプトをフォルダアクションとして設定し、
フォルダ内にファイルが追加されたらフォルダが開くようにしていたんですが、

on adding folder items to this_folder after receiving these_items
tell application "Finder"
-- activate
open folder this_folder
end tell
end adding folder items to

Bitcasaというクラウドドライブアプリをインストールしたところ
「フォルダA」を開くとBitcasaフォルダまで一緒に開いてしまいます。
スクリプトの変更で該当フォルダのみ開くようにできますか?
それともBitcasaの仕様なので仕方ないですか?
868867:2013/11/20(水) 11:22:08.08 ID:DMGXJSHd0
すみません。勘違いでした。
フォルダアクションを設定するとスクリプト内容関係なく、
その設定したフォルダを開いても閉じてもBitcasaフォルダが一緒に開いてしまいます。
スクリプト関係無かったです。
スレ汚しすみませんでした。
869名称未設定:2013/11/20(水) 16:56:30.98 ID:5w86g5t70
Mavericksにしてから
Spotlightでスクリプトファイル(拡張子が.scpt)が「その他」に分類されて選びにくい
かといってアプリケーション形式で保存するとGUIスクリプティングが許可されていないというエラーになる
システム環境設定で個別に許可してもいつの間にか外れてしまう
という問題に悩まされています。

定型的なメニュー操作や入力などを多数の短いスクリプトにしているのですが
何かうまくやる方法がないですか
870名称未設定:2013/11/20(水) 21:59:10.88 ID:8OQAx+3w0
ちょっと大量のファイル処理をするにあたって前から気になっていたもの少し試したんだけど
871名称未設定:2013/11/20(水) 22:03:05.49 ID:8OQAx+3w0
あら、すみません。

自分はよくめんどくさくてwhoseフィルター使ってたんだけど、
デリミターとかプロパティとか使うと劇的に早くなるんだな。恐ろしすぎる。
2分くらいかかってた処理が2秒くらいで終わって、一瞬なにが起きたか分からなかった。
すごいねこれは。早速メインプログラムに組み込むことにする。
872名称未設定:2013/11/20(水) 23:22:01.65 ID:EV/LH3Yb0
簡単な例を挙げてくれると、後続のものの参考になります。
おねがいします
873名称未設定:2013/11/21(木) 07:18:54.44 ID:0H7gbSve0
>>872
AppleScript 高速化
とかググればすぐ出てくるよ。
874名称未設定:2013/11/21(木) 13:26:23.45 ID:zMGCM68L0
通じなかったか………
875名称未設定:2013/11/21(木) 15:03:00.70 ID:wx+C1S+10
リスト処理はwhose使うよりまじめにrepeatでreferenceを参照して処理した方が速いって言いたいのか
国語力の問題だと思う
876名称未設定:2013/11/21(木) 16:37:43.22 ID:C2FbSYLy0
リスト処理はそもそも早くない。
処理能力が問題になるような状況では使うべきではない
それこそ2秒で終って喜べるような状況で使うべき
877名称未設定:2013/11/22(金) 00:26:17.48 ID:zl5XoYzRi
いやwhoseで済む話ならrepeatでぶん回すより速いんじゃないかな

Mountain Lionまでは使えてたwhoseの条件指定がMavericksではエラーになる事があって、
やむなくrepeatに置き換えたりしてるけども
878名称未設定:2013/11/22(金) 09:26:31.86 ID:/5z81Jez0
ここあたりみたまんを「少し試したんだけど」と言ってるだけじゃないかと
言ってることのぐちゃぐちゃかげんが理解出来るw
ttp://www.script-factory.net/monologue/FastDataOperation/index.xhtml

私も10.9でwhose行がエラー吐くカ所があったけど、今やったら吐かなくなってた
よくわかりませんが
879名称未設定:2013/11/22(金) 09:38:33.52 ID:vr7wsZaL0
書くのがらくなんだよね。
set htmlfile to name of every file of desktop whose (name of it contains "test") and ( name of it is in theCheckList)
とか。AppleScriptの変態だけどとっつきやすいところ。普通に英語みたいだもの。
880名称未設定:2013/11/22(金) 09:43:02.64 ID:vr7wsZaL0
それもいいんだけどa reference toが使えなくなったとか聞いたけど本当かな?
881名称未設定:2013/11/22(金) 09:44:51.30 ID:/5z81Jez0
以前はあまりにも遅い処理は、JeditやAdobeのイラレとかでのスクリプトメニューから実行してたりしたな
イラレの大量のパスの属性とかをwhoseで選別するのはAppleScriptエディタ上でデバッグするとアホほど時間かかる
882 忍法帖【Lv=2,xxxP】(1+0:5) :2013/11/26(火) 06:10:51.23 ID:aGVBqJyE0
NSURLの扱いがいまいち分かんないから
試しにAppleScriptで2chに書き込むスクリプト作ってみた
今のところ半角チルダ他opt記号がうまく行かなくて事前に消去or変換してるんだけど
記号とかも完璧なURLエンコードってワンラインじゃ出来ないのかな?
てかiconvでjisに変換した物をAppleScriptの変数にしても、
その変数使って新たにdo shellするとutf8での処理になっちゃうのね/\
883名称未設定:2013/11/26(火) 06:17:27.90 ID:+LHLJt7R0
do shell script使うなら>>1にあるTN2065読んどいた方が良いぞ
884名称未設定:2013/11/26(火) 06:52:14.75 ID:aGVBqJyE0
>>883
ありがと一応読んだよ
ちなみに、バックスラッシュが使えるみたい
test[\\\\]
jisコードを代入するとASでutf8になるっぽいから、エンコードはワンラインでどうにかしてるんだけど
rubyのCGI.escapeをパイプでつなぐ方法が分からなくて
perlのURI::Escapeでエンコードしてるんだけど特殊記号が入ると全文エスケープされちゃうんだよね
885名称未設定:2013/11/26(火) 08:05:39.40 ID:FhYNLT6W0
>>882
シングロニシティこわすぎ。自分も今NSURLのことやってて書き込もうかと思ってたんだけど、Webkitとの
連携とか仕組みが本当にわからない。とりあえずいろんなサンプル見て簡易ブラウザになってるけど、
webkitで高解像度画像を表示すると画面はみ出して表示されちゃうんで思いっきり途中でNSURL乗っ取って?
動的にHTML作成してそれを表示させたりとかしてる。普通にメソッドありそうだけと分からない。

たぶん同じところ見たんだと思うけど(先人に感謝)エスケープしないでいい文字を戻すのにsedとか使うのでは?
sed -e 's/%26/\\&/g sed -e 's/%2F/\\//g
(\はバックスラッシュ)'とかバックスラッシュを2回いかないとダメのような。自分は途中までやって、自分のローカル
な用途ではURLエンコードが今のところ必要がないのでコードが捨てられちゃってるけどw
的外れ? Macscripterとかだと例文が間違い正解両方書いてあるから分かりやすいけど、URLエンコードの
話とかなかなか見ないからね、、、、ブラウザとかNSURL関係は本当にわからない。
886名称未設定:2013/11/26(火) 08:11:25.40 ID:FhYNLT6W0
あ、それからあんま関係ないけど、Xcodeで作るapp内の標準的な構造って少し変わった?
Scriptファイル用のフォルダがないみたい。app内のファイルとか参照するときに
path to me とかしてたところを current application's pathとかしたら昔のコードが動いた。
参考にしてるコードのせいかもしれないけど。
887名称未設定:2013/11/26(火) 09:07:34.55 ID:aGVBqJyE0
>>885
全文jisにしてURLエンコードしたいだけなんだよね
CGI.escapeだと、記号もそれなりにエンコードしてくれたんだけど
上記の通り事前にjisに出来なくて 詰み
URI::Escapeだと事前にiconvの刺し方が分かったから、使ってるんだけど
iconvでチルダをjisに変換するとエラー これは事前に全角に変換で逃げ
URI::Escapeに特定の記号入れると文章が全部なくなる  これが大問題 しかも対象記号が結構多い
sedで原因になる記号を事前に消去してるけど
取りきれてる自信ないし、もし対処してない記号が入ってて予期せず文章全部消えたら
困っちゃう、そもそも記号がエンコードできないのも問題、
んでこんなちまちました対処じゃなくて、根本的な改善法無いかなと思って
文字コード関連は英語圏だとさほど問題にならないのかな、話題ないね
そえばURI::Escapeは改行コードを変換しないで、そのまま維持してくれるから
後でreturnを適宜好きなエンコード済み改行コードに差し替えられるから楽ね
>>886
Scriptファイル用のフォルダとかは分からないけど
asocならpathToMeするときは
propertyで適当な名前 : "NSString"にして
applicationWillFinishLaunchingで
NSBundle呼んで上記名前にresourcePath()をsetすると
そのproperty名で自身のresource呼び出せるよ
888名称未設定:2013/11/27(水) 22:57:44.52 ID:RyIcMfm/0
AppleScriptを勉強しだしたばかりの初心者ですが
ご相談させていただけませんでしょうか?
現在、AppleScriptでシステムイベントを呼び出してキー入力することで
WEBフォームへのデータ定形登録作業を半自動化しています。
スクリプトはappにしてランチャーソフトで呼び出して起動してます。
質問ですが、間違えてスクリプトを起動した場合、途中で止めるすべが
わかりません。なにかショートカット等で強制停止する方法はあるのでしょうか?
889名称未設定:2013/11/27(水) 23:16:07.10 ID:ZVXVYvik0
ターミナル上で, killall アプリ名(.app抜き) でどう?
AppleScriptの do shell script に包んでアプリ化してもいけるんじゃないかな
890名称未設定:2013/11/27(水) 23:17:48.49 ID:3zqHmdwX0
>>888
app形式ならコマンド+opt+escで強制終了できるでしょ
システムイベントでエンター押しまくりで大変な事になるのかな?
それだったらreopenでアプリアイコンクリックされたら動作を止めるようにするとか?
てかwebformだったらcurlつかってポストすればいいんじゃない

ランチャーソフト?はなんで使ってるんだろ
891名称未設定:2013/11/27(水) 23:18:10.49 ID:g6uZs0lj0
>>888
Command+Option+Escape
で、Appleメニューでのアプリの強制終了ダイアログを表示しての

AppleScript での app が Dock に表示され、アクティブになる普通のアプリなら、アクティブ(メニューバーがそのアプリにして、Command+. (ピリオド)
Command+.(ピリオド)は一般的なControl-c の Mac版

ショートカットではないが、Activity Monitor で殺す
マニアはTerminalで殺すw

他になんかあったけ
892名称未設定:2013/11/27(水) 23:20:21.80 ID:3VSZTuzf0
スレあげんじゃねぇよ!クソが!
893名称未設定:2013/11/27(水) 23:24:17.97 ID:g6uZs0lj0
>>889
あ、マニア扱いしてごめんw
なるほどアプリ化するのはよさげね
894名称未設定:2013/11/30(土) 08:59:32.59 ID:Fba0TZ6y0
>>888
自分ならそのWEBのソース読んでそれを真似てフォームに記入済みのHTMLを動的に生成させてそこからsubmitするかな。
キー入力を多用するのはアプリ暴走のもと。
895名称未設定:2013/11/30(土) 09:50:00.18 ID:7EIMa2bJ0
Safariのdo JavaScriptでできそうな気もしないでもない
896名称未設定:2013/12/04(水) 11:14:46.22 ID:s2kUbk6G0
放り込んだJPEGの天地左右を-8pxクロップするスクリプトです。
ここにクロップしたのち、縦・横ともに任意のサイズに拡大する行を追加したいのですが、
アドバイスお願いします! to size 800とかなのかな。。と。

set imageHeight to item 2 of theDimensionsList
set imageWidth to item 1 of theDimensionsList
set padImageHeight to imageHeight - 8
set padImageWidth to imageWidth - 8
897名称未設定:2013/12/04(水) 14:06:35.71 ID:p33oaL/P0
898名称未設定:2013/12/04(水) 14:27:36.31 ID:luLSb2h0i
>>896
すっげえな
変数の代入してるばっかで何も為し得てねーんだが
899名称未設定:2013/12/04(水) 20:02:12.69 ID:Myk+Z8Lr0
任意のサイズの変数を作って
リサイズコマンドに代入すれば

代入した数値にリサイズされるよ
変換前のサイズから任意の数値拡大したいなら
まず解像度をシップスとかで取得して
それを基準に拡大したい数値を足した変数を代入すればいいよ
900名称未設定:2013/12/04(水) 21:55:19.32 ID:fvYTFJ9q0
ImageEventとかなんとかの話か。何の話してるのか分からなかった。
それより誰かsipで面白いこと教えてよ。それかPhotoShopでオーバースペックなやつw
901名称未設定:2013/12/05(木) 13:17:11.39 ID:Uk6G5sSf0
例えば、以下のように記述されたテキストファイル「filename.txt」を読み込んで、
A
B
A
C
B

同一フォルダ内に置いた3つの画像ファイル「A.jpg」「B.jpg」「C.jpg」を
001_A.jpg
002_B.jpg
003_A.jpg
004_C.jpg
005_B.jpg
というような5つのファイルにコピー及びリネームをすることはAppleScriptで可能でしょうか?
実際は元のファイルもコピーファイルも何百枚にかなります。
そのような都合のいいアプリを探しましたがなかったようなのでスクリプトを組んでみたらどうかと思いました。
ただスクリプトなど組んだことがなく、先ほどネットでサンプルをコピペして試してみた程度の理解力です。

1.「基本的な処理なので勉強して試しながらでもできる」
2.「トリッキーな処理が必要だができる」
3.「無理」
上記のいづれにあたるか、ご意見ください。お願いします。
902名称未設定:2013/12/05(木) 13:32:56.41 ID:LAaKC2CK0
1.

しかし、シェルスクリプトとかの方が時間も手間も掛からん気がするよ
903名称未設定:2013/12/05(木) 13:35:08.57 ID:6VrzzDQP0
可能
904名称未設定:2013/12/05(木) 13:49:51.15 ID:YyxKp0Me0
>>901 可能。
でもメイン処理は do shell script 節で、シェルスクリプトに任せる方式が楽でしょう。
例.
awk '{ if ($1!=""){ str=sprintf("cp %s.jpg %03d_%s.jpg",$1,NR,$1); system(str)} }' filename.txt
905901:2013/12/05(木) 15:21:34.91 ID:Uk6G5sSf0
>>902-904
ありがとうございます!シェルスクリプトですね。
>>904さんの例文の意味調べながら頑張ってみます。
906名称未設定:2013/12/05(木) 15:51:59.99 ID:kwL4aRHs0
Snow LeopardからMavericksにしたらこのスクリプトが動かなくなってた

try
tell application "Finder" to update items of front window
end try

デフォルトアプリケーションの変更がアイコンに反映されない時とか便利に使ってたんだけど
Mavericksではどう書けばいいの?
907名称未設定:2013/12/05(木) 22:24:46.35 ID:lBWqaTXbi
まずはtryの外に出すことから始めましょう
908名称未設定:2013/12/06(金) 01:54:44.41 ID:lsoAGF4F0
単純にtryを外してみたんだけどそういうことかしら?

tell application "Finder" to update items of front window



tell application "Finder"
update every item of window 1
end tell

「情報を見る」の情報が前面にある時エラーが出るようになったくらいで
やっぱり動かないですね…
909名称未設定:2013/12/06(金) 08:59:02.64 ID:7oEVtipv0
だから、まずエラーを見えるようにして、そのエラーの内容を見てどう直すか考えろってことでしょ?
910906:2013/12/06(金) 10:27:11.33 ID:Zc9XvCGb0
どう書けばいいのと聞いたんですけど?
911名称未設定:2013/12/06(金) 12:04:04.29 ID:0RuCBVMF0
どう書けばいいの?って気楽に聞くぐらいなら自力でどうぞってことでしょ
お前のお友達じゃねーっっていうか襟を正すとこは正そうな
912名称未設定:2013/12/06(金) 12:23:52.26 ID:7oEVtipv0
実際に動かしてる本人がわからないのに、エラーメッセージひとつ書き写さずに
ネット越しの相手がわかると思うほうがどうかしてる

まあ、たまにエスパーはいるもんだけど
913名称未設定:2013/12/06(金) 12:26:12.90 ID:lsoAGF4F0
>>910
あんた誰?

>>909
error "Finder でエラーが起きました:AppleEvent のハンドラで誤りが起きました。" number -10000

「情報を見る」の情報が前面になければこのエラーは出ない

っていうかupdate自体がdeprecatedぽい気がするのだけどみんなはちゃんと動いてるの?
もしそうなら代替手段が無いもんかなと
一々再起動せずアイコンがすぐに変わってくれるだけでokなんだが
914名称未設定:2013/12/06(金) 14:52:24.61 ID:CzVqeHVp0
>>913
そもそもアイコンはすぐ変わるのだけど
変わらない状態にならないから、テストできない

最悪変わらないときは、アプリケーションの強制終了からFinderを再度開くで
なおるんじゃない?
915名称未設定:2013/12/06(金) 17:42:53.37 ID:8dlDduR00
すみませんちょっとお知恵を拝借させてください
変数名を規則的に生成し、それを利用することはできますか?

現在、
set totalList to {list1, list2, list3, ... list2000}
と強引なリストになっているのを(すごく長い上にエディタで開くことすら重い!)

set listHead to "list"
set totalList to {}
repeat with i from 1 to 2000
 set li to (listHead & i)
 set the end of totalList to li
end repeat

のように省力化したいのですが、これだと結果が{"list1", "list2", "list3", ... "list2000"}
になってしまいます。
冒頭に
set list1 to "foo"
と代入しておき、それを
display alert item 1 of totalList
で『list1』ではなく『foo』を出せるようにするにはどうやればいいでしょうか。

ざっとググった限りではRuby?eval?を用いるなどの回答を見つけたのですが、
AppleScriptのみで実現することはできないのでしょうか。
OSは10.6.8です。宜しくお願いします。
916名称未設定:2013/12/06(金) 18:21:10.69 ID:0RuCBVMF0
>>915
AppleScript eval でぐぐってみて、
http://macscripter.net/viewtopic.php?id=10445
ほほうと思ったので

set listItem1 to "1"
set listItem2 to "2"
set listItem3 to "3"
set listItem4 to "4"
set listItem5 to "5"
set listItem6 to "6"
set listItem7 to "7"
set listItem8 to "8"
set listItem9 to "9"
set listItem10 to "10"

set theList to {}

repeat with itemNumber from 1 to 10
set scriptObj to run script "
script
on doSomething(mainScript)
set the end of mainScript's theList to mainScript's listItem" & itemNumber & "
end doSomething
end script"
scriptObj's doSomething(me)
end repeat

get theList
917名称未設定:2013/12/06(金) 18:39:52.13 ID:lyu/6pj/0
>>916
おおーできました! ありがとうございます!
途中見慣れない命令のようですが、これはオブジェクト指向?という類いのものなのでしょうか
918名称未設定:2013/12/06(金) 18:43:06.62 ID:d3CiX4sb0
なるほど技巧派ですね
set item1 to "foo"
set item2 to "bar"
set item3 to "snow"
set item4 to "leopard"
set totalList to {}
repeat with idx from 1 to 4
set varLabel to "item" & idx
set end of totalList to run script "on run{obj}
obj's " & varLabel & "
end" with parameters {me}
end repeat
get totalList

こんなんでもOKですよ。
run script 構文を 他言語の eval みたいに使おうとする際にまごつくのは、
変数文字列をそのまま渡せない点なんですよね
919名称未設定:2013/12/06(金) 19:16:21.08 ID:0RuCBVMF0
>>917
単なる文字列なAppleScriptスクリプト(変なのw)を実行可能にしてくれるのが run script
scriptObj's doSomething(me)
で、
on doSomething(mainScript)
を呼び出しているだけという理解。mainScript=me

>>918
ほほほう。シンプルでいいなあ
920名称未設定:2013/12/06(金) 19:24:03.64 ID:/WB73Ix20
IDコロコロ変わっていますが915です。
ありがとうございます、なるほど、色々なやり方があるのですねえ…

set list1 to "foo"
set list2 to "bar"
set list3 to "hoge"
set list4 to "sage"

set theList to {1, 3} (*実際はここは乱数です*)

set listHead to "list"
set totalList to {}
repeat with i from 1 to 4
set li to (listHead & i)
set the end of totalList to li
end repeat

repeat with x in theList
set x to item x of totalList
set result to run script result
display dialog result
end repeat

実は上記のように試していたんですが、コンパイル時に後ろから三行目の部分で
「list1変数は定義されていません」と出て頭が混乱しておった次第です。(当方プログラマではなく…)
処理の中に別の処理が入れ子になるというのは、なかなかどうして理解が難しいものです。
お二方ありがとうございました。
921名称未設定:2013/12/06(金) 19:47:40.97 ID:lsoAGF4F0
>>914
Snow Leopardの時はすぐ変わったんだけど
MavericksにしてからまるでTigerの頃に逆戻りしたみたいで…
killall finderでも頑に変わろうとしないw

クリーンインストール環境ではあるんだけどキャッシュか何かが悪さしてるのかな
とにかくMavericksでもすぐ変わるものだということが知れて良かった
どうもありがとう!
922名称未設定:2013/12/06(金) 20:46:39.78 ID:in6wkYBN0
>>920
冒頭の変数定義があまり意味無いような気がする

set theData to "foo
bar
hoge
sage
…"
set totalList to paragraphs of theData
set theList to {1, 3}
repeat with x in theList
display dialog item x of totalList
end repeat

この方が楽じゃないかな?
何番目には何が入るってのが重要だとすると
行数を数えないとだけど
923名称未設定:2013/12/06(金) 21:04:17.65 ID:cq1x9drO0
every paragraphはparagraphsでいいのか
今まで何千回もeveryってタイプしてきたのに
924915:2013/12/06(金) 21:56:20.65 ID:6uJi+H6O0
>>922
!?!?
変数にこんな入れ方と取り出し方ができるんですか…目から鱗です。
てっきり、リストやレコード以外の変数はひとつひとつを
別個に分けて格納しないといけないものだと思っていました。
正直、{list1, list2, ...}のリストのみならず、冒頭のset list1 to " "の羅列だけでも
かなりコンパイルが重くなっていたのですが、これだとそれが嘘のように軽くなりました…
自分の考えていたアプローチ方法そのものが無駄ばかりだったということですね。

皆様のお知恵に感謝いたします。
925名称未設定:2013/12/06(金) 22:09:22.98 ID:H4qIe+WT0
>>923
同義語だね
見やすさという点でeveryを書くのもいいと思う
ちなみにEditorはコンパイル時自動修正してこないようだ
926918:2013/12/06(金) 22:37:06.79 ID:d3CiX4sb0
オジサン、Tips的な書き方にばかりとらわれて質問者が実際何を必要としてたのか見落としてましたわ。
何事も簡単に書ける方のがいいですね。
927名称未設定:2013/12/06(金) 22:54:53.33 ID:/nnuMy5+0
わかんね、、、、ぷっちゃけ変数をリストにする? とかいうのってどんな使い方するの?
使い道が思いつかない。runscriptでレコードのラベルを操作するとかいうのはまだ分かるけど、
それも使ったことないなあ。そんな1000も2000も連想配列とか使わないといけない理由がわからない。
928名称未設定:2013/12/06(金) 22:55:02.35 ID:+fHACK0z0
初心者というか部外者みたいなものなんですがお伺いいたします。
現在ある担当者がexcelのデータを業務用アプリにコピペしてレコードを作成しています。(10項目程度)
これをAppleScriptで半自動化できないものかと考えております。
コピー元のテキストは如何様にもできるのですがそれを得体のしれない業務用アプリの特定フィールドに
ペーストするなんていうことがAppleScriptで可能なのでしょうか。
可否だけでも教えていただければ幸いです、よろしくお願いいたします。
929名称未設定:2013/12/06(金) 23:11:43.58 ID:o0h9jNpt0
>>927
テキスト行を表示するなら行を変数にしたりテキストをリスト変数に変換したりせず
直接、行を指定して表示すればいいんだけどね
{(123,"a"),(246,"b"),(393,"c")}とかをソートや抽出したりするにはDBとか使わずにたまにやるよ
930名称未設定:2013/12/07(土) 05:17:26.49 ID:dLZfoNTr0
>>928
やってみないとわからない、んじゃない

その業務用アプリがわざわざAppleScriptに対応してるとは思えず、
それならUI Scriptingは? といってもうまくいかないのもあるし
931名称未設定:2013/12/07(土) 06:36:18.44 ID:ce8g0A4u0
AppleScriptにろくに対応してないアプリでデータを入力したことがあるよ。

値1をクリップボードにコピー → command + v を入力 → tabを入力(フィールドを移動) → 値2をクリップボードにコピー → comma(ry

みたいな感じで
932名称未設定:2013/12/07(土) 06:41:18.98 ID:9NsExsKt0
>>931
それが>>930の言ってるUI Scriptingだよ
933名称未設定:2013/12/07(土) 08:01:17.20 ID:2gwMgFxy0
>>927
データベースから出力したCSVなどで
項目の順番が流動的なときには使えそう

set tempDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to ","

set csvText to "商品名,価格,色,サイズ
Tシャツ,3000,白,L
ポロシャツ,4000,青,M
ジャンパー,8000,赤,XL"

set csvList to paragraphs of csvText
set labelLine to item 1 of csvList
set labelList to text items of labelLine
set theScript to "{"
repeat with i from 1 to count of labelList
set theScript to theScript & "|" & item i of labelList & "|:" & i & ","
end repeat
set theScript to text 1 thru -2 of theScript & "}"
set labelRecord to run script theScript as Unicode text

repeat with i from 2 to count of csvList
set csvData to text items of item i of csvList
display dialog item (|商品名| of labelRecord) of csvData & "の価格は" & item (|価格| of labelRecord) of csvData & "円です"
end repeat

set AppleScript's text item delimiters to tempDelim

run script内で内容処理までやれば|変数名|に直接インデックス番号入れて
item |価格| of csvData
とかでも良いか
934名称未設定:2013/12/07(土) 09:13:31.41 ID:RMihlApL0
DTPやってたころは、AdobeのソフトでオブジェクトをXY座標でソートしたりする
ためによく入れ子のリストをつかったよ
935名称未設定:2013/12/07(土) 10:06:36.46 ID:+6EVbL4G0
set tempDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to ","

set csvText to "商品名,価格,色,サイズ
Tシャツ,3000,白,L
ポロシャツ,4000,青,M
ジャンパー,8000,赤,XL"

set csvList to paragraphs of csvText
set labelLine to item 1 of csvList

repeat with i from 2 to count of csvList
set item_i to item i of csvList
display dialog text item 1 of item_i & "の価格は" & text item 2 of item_i & "円です"
end repeat

set AppleScript's text item delimiters to tempDelim

でいいのではないかと。
936名称未設定:2013/12/07(土) 10:14:52.07 ID:+6EVbL4G0
ああ、なるほどやっと分かった。
個別のデータがリストのリストであって、その中のリスト1項目に要素数が20とか30とかあって、
その内容を解析して出力結果を算定する方法を変数によって操作したいような場合に
使えるテクニックだね。ちとえば上の例で、もし、季節が夏で買い物する人がポロシャツを選んだら
4000円で売ります、でも、夏が終わりかけてるときにはバーゲン価格でポロシャツを売りつつ
ジャンパーも勧めてみるみたいな複雑な処理だな。

まあでも、判断のステージごとに処理を分けたほうがプログラムの可読性は上がるとおもうけど。
美しさで言えば複雑なコードなんだろうね。
937名称未設定:2013/12/07(土) 13:04:07.52 ID:M/8/GMaH0
>930
>931
>932
レスありがとうございます

何らかの方法でテキストをコピーして対象アプリをアクティブにして
tab移動してペーストするようなスクリプトを書けばいいんですね。
ちなみにファイルメーカーとの連動を考えております。
938名称未設定:2013/12/07(土) 22:59:02.90 ID:2gwMgFxy0
>>937
得体のしれない業務用アプリがファイルメーカーのこと?
ファイルメーカー社自体Appleの子会社でもあるし
バッチリApplescript対応してるよ。
939名称未設定:2013/12/07(土) 23:15:01.06 ID:o4ByNoQi0
>>937
ちなみに、じゃねえよ!
940名称未設定:2013/12/08(日) 00:09:03.78 ID:ZNXMaQdm0
>>937
あと>>928の目的でレコード(Excelの行)が大量にあるなら
ExcelからCSVで保存して、テキストエディットか何かで文字エンコードをUnicode(UTF-8)にして保存。
それをファイルメーカーでインポートするのが良いよ。
(Excelから保存したCSVをそのままインポートすると文字化けしたと思う)
Applescript関係なくなっちゃた!
941名称未設定:2013/12/08(日) 00:18:10.86 ID:nc0VYZQZ0
出せる情報は最初から出しとけっていう
942名称未設定:2013/12/08(日) 10:28:27.47 ID:jZEzwWQj0
なんかへんな感じがする、と思ってレスしなかった俺が正解。
943928:2013/12/08(日) 10:57:30.80 ID:4Dr+dAfd0
必要な情報を出さないで申し訳ございません

実は自分はwindowsを使っていてApplescriptは名前を知っている程度でした
その業務用アプリはmac版しかありません

昔Go Go!! Sevenという郵便番号から住所を検索してそのテキストを
ワープロソフトなどに貼り付けるユーティリティがあったのでそのようなソフトを
探しているうちにApplescriptに辿り着いた次第であります

ファイルメーカーからApplescriptが実行できるというのも
最初のレスのあとに知りました
参考になるレスを頂きましたので試行錯誤してみようと思います

皆様ありがとうございました
944名称未設定:2013/12/08(日) 11:05:12.66 ID:EDLCFgCs0
それならファイルメーカーだけでできるし、
ver6あたりまでは郵便番号DBが付いてたと思ったけど
945名称未設定:2013/12/08(日) 12:11:14.91 ID:c1Q2WmFu0
>>943
>昔Go Go!! Sevenという郵便番号から住所を検索してそのテキストを
>ワープロソフトなどに貼り付けるユーティリティがあったのでそのようなソフトを
>探しているうちにApplescriptに辿り着いた次第であります

かわせみだけでできるんじゃないかな。

Mail.appで受信したメールをFileMakerに取り込むのにアップルスクリプト使ってるけど
まだ必要だったらレスしてね。
946名称未設定:2013/12/15(日) 17:23:05.52 ID:jYghxl0j0
AppleScriptをショートカットキーから起動するのに何使ってます?
スクリプトにテキスト整形&コピペのショートカット付けたいけど
QuickSilverでうまいこといかない。レベル低すぎ>俺orz
947名称未設定:2013/12/15(日) 17:40:32.87 ID:KX9oufR80
うちはBetter Touch Tool使ってます
Keybord Shotrcut の Execute Terminal Command で任意のコマンドを指定できます
948名称未設定:2013/12/16(月) 01:11:38.91 ID:ywJSfZ860
>>580-583 あたりを参照したらどうか
949名称未設定:2013/12/16(月) 19:45:20.12 ID:RU3NRiKO0
>>948
いやそういうことじゃなくて、それらのソフトの使い心地が知りたいんです。
どれか使ってます? 使い心地は?
950名称未設定:2013/12/16(月) 20:03:05.62 ID:qZUrqEwu0
>>949
583だけど書いたとおりSparkとLaunchBarを使い分けてるわ
使い心地といわれても……ショートカット登録したらあとはひたすら呼ぶだけだしな

LaunchBarは、QuickSilver使ってみたならわかると思うがそんな感じ
スクリプトを.appで保存してSpotlightで呼び出せば標準機能だけで同じような使い勝手を実現できるけどね
ネーミングを工夫すると楽しくなってくる
951名称未設定:2013/12/16(月) 21:08:19.00 ID:Rh3Jmt870
スクリプトメニューにシステム環境設定からショートカット振るだけじゃいかんのか
952名称未設定:2013/12/16(月) 22:49:53.55 ID:9giIfwHUi
>>951
そんなこと出来なくね?
953名称未設定:2013/12/16(月) 23:09:16.49 ID:RU3NRiKO0
>>952
あなたは私か。小一時間悩んだけどできるのかな? できたらFastScriptsとかなんで有料なんだろう???
Sparkは今のところ悪くないけど、アイコンがどうもうさんくさく感じて危険な香りがしてたけど、アイコン大きく
してみたらただアイコンのデザインが悪いだけと判明。もうSparkでいいかな。
954948:2013/12/17(火) 01:04:10.04 ID:Y4vrlE1u0
>>949
Alfredを使っているよ。ショートカットから起動するソフトではないけどね
スクリプト名を打っていって絞り込めたらcontrol + n (p) で選択してreturnで実行という使い方が
スクリプトが増えたときでも使い勝手が良いと思う。検索速度も速いし、ファイル種類や検索するフォルダを制限できるのも好きだな。
955名称未設定:2013/12/17(火) 15:56:43.59 ID:HylQnpjI0
Automatorでサービスにしておけば、システム環境設定からショートカットを
設定できるね。
956名称未設定:2013/12/18(水) 01:14:00.44 ID:LXclIx5v0
>>955
>>948でループ
957名称未設定:2013/12/18(水) 02:20:04.27 ID:Ac2scPxf0
10.6の頃、AppleScriptをAutomatorの中に書いたら起動が遅い上に
不安定で原因不明のエラーが起きるのでやめたんだけど、最近はよくなった?
958名称未設定:2013/12/18(水) 03:29:02.92 ID:9233etBh0
そえばAutomatorの中でAppleScript書くと
display dialogのwith iconが使えないとか微妙に互換無くて、
頭を悩ませた時期があったな
今じゃ普通にアプリケーション作る方が気が楽だわ
959名称未設定:2013/12/18(水) 06:30:04.44 ID:HFGV7rOe0
>>957
おれも未だにここで止まってるが、最近どうですか
960名称未設定:2013/12/18(水) 11:41:13.11 ID:gvraJxnx0
使ってみればわかる。知らないかもしれないけど、インストールとかしなくても入っているよ
961名称未設定:2013/12/18(水) 12:19:45.77 ID:HFGV7rOe0
え……いや、そもそも10.6から上げてないもんで……
962名称未設定:2013/12/18(水) 19:08:59.93 ID:S340nQIs0
二つのリストのANDを簡単にとる方法はないでしょうか。

つまり
set list1 to {"A","B","C","D","E"}
set list2 to {"D","E","F","G","H"}
のとき、
list1 ナンタラ list2 → {D","E"}
を得たいのです。
963名称未設定:2013/12/18(水) 19:20:29.98 ID:GD5RsNwP0
set list1and2 to {item 4 of list1, item 2 of list2}
964名称未設定:2013/12/18(水) 20:08:53.12 ID:HxRZ0yRQ0
なんにも考えてないけど
set answerlist to {}
repeat with i in list1
if list2 contains i then set end of answerlist to i
end repeat
return answerlist
そのまんまじゃ1000単位のリストだとパンクするだろうな。
965名称未設定:2013/12/18(水) 20:27:54.33 ID:hzzt1nJd0
set list1 to {"A", "B", "C", "D", "E"}
set list2 to {"D", "E", "F", "G", "H"}

set LF to ASCII character 10 -- UNIX Style
set CR to ASCII character 13 -- Mac Style

set oriDelims to AppleScript's text item delimiters -- save
set AppleScript's text item delimiters to {LF}
set txtCmd to "sort <<EndOfText | sort | uniq -d" & LF & list1 & LF & list2 & LF & "EndOfText"
set AppleScript's text item delimiters to {CR}
set listAND to every text item of (do shell script txtCmd)
set AppleScript's text item delimiters to {LF}
set txtCmd to "sort <<EndOfText | sort | uniq -u" & LF & list1 & LF & listAND & LF & "EndOfText"
set AppleScript's text item delimiters to {CR}
set listMINUS to every text item of (do shell script txtCmd)
set AppleScript's text item delimiters to oriDelims -- load

get listAND
get listMINUS
うちはちょっと迷ったらUNIXコマンドに丸投げしてる。
それで大抵いけちゃうから AppleはAppleScriptの機能強化に興味ないんだろうなって・・・
966名称未設定:2013/12/18(水) 20:31:52.31 ID:hzzt1nJd0
sort <<EndOfText | sort | uniq ....
sort <<EndOfText | uniq ....
途中の sort は余計だった
967名称未設定:2013/12/18(水) 21:08:12.33 ID:HxRZ0yRQ0
あ、repeatでまわすほうはユニーク化せんとだめか。簡単なことになのに面倒だなー。
968名称未設定:2013/12/18(水) 21:27:05.11 ID:3YmXwJzr0
こういうのも
ttp://www.latenightsw.com/freeware/list-record-tools/
List & Record Tools Scripting Addition > List Processing > Set Intersection (return all items that are common to two lists)
969962:2013/12/18(水) 22:39:13.48 ID:S340nQIs0
ありがとうございます。

>>967
そうなんです。ひたすら面倒なんです。
>>965
なるほど。uniqコマンドに引き渡しちゃうというのは考えませんでした。
これならデバックも楽ですね。

>>968のはこれからちょっと見てみます。
970名称未設定:2013/12/18(水) 22:39:14.17 ID:dqMV7Hywi
>>965
わざわざ変数にしなくてもCRはreturn、LFはline feedで定義されてたりする
971名称未設定:2013/12/18(水) 22:48:07.35 ID:dqMV7Hywi
>>967
if list2 contains i then set end of answerlist to i

if list2 contains i and answerlist does not contain i then set end of answerlist to contents of i
てな感じかね
972名称未設定:2013/12/18(水) 22:49:44.92 ID:dqMV7Hywi
ああ間違えた
line feedじゃなくてlinefeedですわ
973名称未設定:2013/12/19(木) 12:08:20.60 ID:vx6gUVcb0
>>971
横からすまん
これ二つの点を変更してるようにみえるけど、それぞれどんな効果があるの?
「ユニーク化」って言葉を初めて聞いたもんで
前者はlist2にダブりがあった場合の対策だとおもうけど
974名称未設定:2013/12/19(木) 19:48:09.20 ID:AsATqAcv0
>>973
もうひとつは参照の問題をきちんと対策してる。
975名称未設定:2013/12/20(金) 08:22:27.80 ID:naXDXZSi0
MavericksのQT Xが全滅なんで、こんなん書いてみたんですが、大丈夫ですかね?
ターミナルで
/usr/local/bin/ffmpeg -i "ファイルパス" -vcodec copy -acodec copy "ファイルパス(拡張子外したもの).mp4"
を実行したいです。
976名称未設定:2013/12/20(金) 08:23:24.71 ID:naXDXZSi0
----ここからFFmpeg設定
set ComPath to "/usr/local/bin/ffmpeg" as Unicode text
set Option to " -i" as Unicode text
set OptionA to " -acodec copy" as Unicode text
set OptionV to " -vcodec copy" as Unicode text
set FileExet to ".mp4" as Unicode text
----ここまでFFmpeg設定
property aFileF : missing value

repeat
if aFileF = missing value then
---ファイルを選択
set FileAlias to choose file with prompt FileExet & "にしたい.flvファイルを選んでください" of type "flv"
set aFileF to FileAlias
else
try
set FileAlias to choose file with prompt FileExet & "にしたい.flvファイルを選んでください" default location aFileF ---of type "flv"
set aFileF to FileAlias
on error
set FileAlias to choose file with prompt FileExet & "にしたい.flvファイルを選んでください" of type "flv"
set aFileF to FileAlias
end try
end if

つづく
977名称未設定:2013/12/20(金) 08:26:15.29 ID:naXDXZSi0
つづき

---選んだファイルをUNIX式のパスに変換
set OpenFiles to (POSIX path of FileAlias)

---拡張子を除去
set fLen to length of OpenFiles
set revText to (reverse of (characters of OpenFiles)) as string
set anOffset to offset of "." in revText
set SaveFiles to text 1 thru (fLen - anOffset) of OpenFiles


---コマンドを整形
set ComFFmpeg to ComPath & Option & " ¥"" & OpenFiles & "¥"" & OptionV & OptionA & " ¥"" & SaveFiles & FileExet & "¥""
---テスト用ダイアログ表示
---display dialog ComFFmpeg
---コマンド実行
do shell script ComFFmpeg

display dialog "続けて変換しますか?" buttons {"はい", "いいえ"} default button 1
if the button returned of the result is "はい" then
---はいのとき何もせずリピート
else
---いいえのときループ終わり
exit repeat
end if

end repeat
978名称未設定:2013/12/20(金) 08:28:32.95 ID:naXDXZSi0
グダグダかも知れませんがよろしくお願いします。
979名称未設定:2013/12/20(金) 16:24:47.46 ID:g3aQdc2F0
>>975
>大丈夫ですかね?
要求事項がわからんが、動いていればいいんじゃない。
980名称未設定:2013/12/20(金) 21:41:45.70 ID:Me0U8uSr0
グダグダっていうか可読性がない。
あと考え方がコードにでてる感じ。
実際に話したら「思ったことそのまましゃべんな。思いつきで行動するな」
とか言いたくなりそう。
まずはその変なifを絡めたrepeatと
変数をこねくりまわすのをやめろ。
半分になるのでは?
981名称未設定:2013/12/20(金) 22:35:50.85 ID:txnaY/YZ0
適当に書いたので動かないと思う。適宜デバッグしてください。
元ファイルの拡張子なんて2文字でしょ。決め撃ちで十分では?
ドラッグアンドドロップでいいのでは? いやならXcodeでGUI作ったほうがいい。
on open myMovies
tell application "Finder"
set EncFileList to myMovies as alias list
repeat with iFile in EncFileList
my EncodeFlv(iFile)
end repeat
end tell
end open

on EncodeFlv(aFile)
set Head to "/usr/local/bin/ffmpeg -i" as Unicode text
set EncOption to " -vcodec copy -acodec copy" as Unicode text
tell application "Finder"
set aFile to POSIX path of aFile as Unicode text
set EncFile to (text 1 thru -3 of aFile) &amp; "mp4" as Unicode text
end tell
do shell script Head &amp; quoted form of aFile &amp; EncOption &amp; quoted form of EncFile
end EncodeFlv
982名称未設定:2013/12/20(金) 22:42:01.50 ID:txnaY/YZ0
タイムアウトしちゃうか。
with timeout of 3600 seconds
my EncodeFlv(iFile)
end timeout
だな
983名称未設定:2013/12/21(土) 00:43:34.78 ID:1PJJFexL0
>>980
変数こねくり回すのはどうにかしてシンプルにして行きたいのですが、頭の中で整理しやすいように&間にダイアログ表示はさんで確認しやすいように一個づつやってます。
ファイル選択はif消して最初からエラー頼みでこうすれば良いですか?
try
set FileAlias to choose file with prompt FileExet & "にしたい.flvファイルを選んでください" default location aFileF of type "flv"
set aFileF to FileAlias
on error
set FileAlias to choose file with prompt FileExet & "にしたい.flvファイルを選んでください" of type "flv"
set aFileF to FileAlias
end try
984名称未設定:2013/12/21(土) 00:46:39.63 ID:1PJJFexL0
>>981
すいません。ドロップ&ドラッグ仕様を作りたかったのですが、今の所まだどうやったら良いのかわからずファイル選択で作ってました。
参考にさせていただきます。というか、ほぼ答えですね。

勉強したいのでファイル選択と、ドロップ両方のバージョンで作りたいと思います。
985名称未設定:2013/12/21(土) 07:54:46.91 ID:q+UMI9Jg0
>>981
致命的なのがあるかと思ったが簡単に動いた。いいねこれ。
986名称未設定:2013/12/21(土) 08:42:23.78 ID:tQXdLu450
目的が達成できればいいんだよ
そうは言いつつも他人の汚ぇコードは絶対に読まねぇけどなw
987名称未設定:2013/12/21(土) 10:10:08.61 ID:i1UynUPf0
誰か次スレ頼む、スレ立て規制orz
テンプレ案(リンクを幾つか更新、削除したっす cf. >>818
=====
AppleScript アップルスクリプト 質問、発表 6

質問、発表どっちでもスレ。

■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
OSバージョンも忘れずに。

■参考
AppleScript Language Guide
https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/
TN2065: do shell script
https://developer.apple.com/library/mac/technotes/tn2065/
AppleScript: The Language of Automation
http://www.macosxautomation.com/applescript/
MacWiki - AppleScript
http://macwiki.sourceforge.jp/wiki/index.php/AppleScript
鳶嶋工房 / AppleScript
http://tonbi.jp/AppleScript/
AS Hole(AppleScriptの穴)
http://piyocast.com/as/
■過去スレ
1 http://pc11.2ch.net/test/read.cgi/mac/1174045850/
2 http://pc11.2ch.net/test/read.cgi/mac/1197443062/
3 http://pc11.2ch.net/test/read.cgi/mac/1223026902/
4 http://anago.2ch.net/test/read.cgi/mac/1256127156/
5 http://anago.2ch.net/test/read.cgi/mac/1330350325/
988名称未設定
>>987
AppleScript アップルスクリプト 質問、発表 6
http://anago.2ch.net/test/read.cgi/mac/1387630245/

建てたが、このスレ来たの最近だから流れがわからん
2レス目以降に必要なテンプレ等が有れば追加よろしく。