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

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

【注意】
安直なスクリプト作成依頼、丸投げはやっちゃダメ! わからない点、エラーが解決できない点について、スクリプト片を添えて質問しよう。

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

・参考リンク
AppleScript ヘルプ
help:///Library/Documentation/Help/AppleScript.help
発表まとめ
http://members.at.infoseek.co.jp/obto/script/script.html
MacWiki - AppleScript
http://macwiki.sourceforge.jp/cgi-bin/wiki.cgi?AppleScript
AppleScript PARK
http://www.tonbi.jp/AppleScript/
TN2065: do shell script
http://developer.apple.com/jp/technotes/tn2065.html
http://developer.apple.com/technotes/tn2002/tn2065.html
2名称未設定:2008/10/04(土) 00:31:28 ID:t3kkMEtL0
こういうの作ってください!は無しで
3名称未設定:2008/10/05(日) 17:59:06 ID:jL0aulsu0
前スレ落ちた
4名称未設定:2008/10/05(日) 18:02:53 ID:N1ohX2350
こっちを立てるのが早すぎたな。
5名称未設定:2008/10/06(月) 03:06:39 ID:L5eEHjv20
980超えたら落ちるのは仕様です
6名称未設定:2008/10/07(火) 02:14:48 ID:lCUqUn5J0
2chのレスを自動更新してgrowlというappで表示していくAppleScript
を実況用にgrowlスレ
ttp://pc11.2ch.net/test/read.cgi/mac/1178220147/298
で作っていただいたのですが、PowerPC用のようで
自分の環境ではレスの取得などはうまくいっているようなのですが
その表示がうまくいかないようです。
テスト用のscriptを作っていただき試したところ、AppleScriptからgrowlへの動作は問題なく、growl自身の問題でもないようです。
レスを表示させる動作に問題があるようです。
環境はGrowl 1.1.4 OSX10.4.11/Intelです。

Applescriptはこちらのものです。
ttp://memogaki.soudesune.net/zip/2chResView.app.zip

これをIntelMacでも使いたいのですがどのようにしたら良いのでしょうか。
このような動作をするものはIntelでは無理なのでしょうか。
作った方もなぜ動作しないか分からないそうなので
IntelでのAppleScriptについて詳しい方いらっしゃいましたら教えてください。
よろしくお願いいたします。
7名称未設定:2008/10/07(火) 03:42:29 ID:Y47w/it70
自分の環境では動いている。
このスレを選択したら通知もGrowlで表示された。
なぜかPowerPCバイナリだけど。

でLeopard+Intelな環境で色々試して分かったこと。

・配布されたものをそのまま起動→動作、PowerPCバイナリ
・動作終了後に配布アプリのEdit→Edit Scriptでスクリプトファイルを開いて
・アプリケーションとして保存したもの→URL選択画面以降動作せず、PowerPCバイナリ
 ・アプリケーションバンドルとして保存したもの→URL選択画面以降動作せず、Universalバイナリ
・Automatorを使ってアプリケーションとして保存したもの→URL選択画面以降動作せず、Intelバイナリ
・そのまま実行→URL選択画面以降動作せず
・debugModeをtrueにして実行→動作
・debugModeをtrueにしてアプリケーションバンドルとして保存したもの→動作、Universalバイナリ
ということは配布されているバイナリからスクリプトを取ってきてdebugModeをtrueに変更して独自に作り直せばいい。

作者さんが転載、改造、再配布を許可しているのでそれに甘えて完成品はこちらから。
http://dl.getdropbox.com/u/10395/2chResView.zip
propertyのheaderFileNameをtest2にして本家とも共存できるようにしました(少なくとも自分の環境では)。

本家との違い(というか一部不具合)
・メニューUIが日本語
・実行プロセス名が2chResView.appではなく2chResView
・Universalバイナリ
・メニューからもDockからも終了できずActivitiy Monitorから強制終了する必要がある
8名称未設定:2008/10/07(火) 03:46:09 ID:Y47w/it70
前半の2つ目より後の箇条書きは2つ目の下にぶら下げたつもりだったのだが投稿してみたらそうなってなかった orz
9名称未設定:2008/10/07(火) 03:55:53 ID:Y47w/it70
追記になりますが結局メニューもDockも使い物にならないなら(スクリプトの編集はアプリケーションバンドルをこじ開ければ出来ます)そんなものいらないという場合は
バンドルの中のContents/Info.plistを以下のファイルで置き換えてください。
http://dl.getdropbox.com/u/10395/Info.plist
ただしその場合はメニューもDockのアイコンも出なくなるので起動後別のソフトを前面に出してしまうと2chResViewに戻る方法が無くなって終了する以外の選択肢が無くなります。
挙動を元に戻したい場合はバンドル内のInfo.plistをSmultronのようなテキストエディタで開いて
<key>NSUIElement</key>
<string>1</string>
の2行を削除してください。
10名称未設定:2008/10/07(火) 04:32:52 ID:lCUqUn5J0
>>7-9
検証、改造ありがとうございます
今試してみたのですが、Growlの最初の通知はうまくいくのですが
実況刷れなどでの自動更新されたのレスはやはりGrowlでの表示はできないようです。
イベントログではレスの内容を取得できているようなのですが・・・
取得したレスのGrowlでの表示がうまくいかないようです。

レス取得もそちらの環境では可能でしょうか?
11名称未設定:2008/10/07(火) 04:47:48 ID:lCUqUn5J0
追記
動作としてはurl入力後
〜レススキップしました
という通知がきた後、何の通知もなくなってしまいます。
イベントログではレスの取得はされているのですが、それがGrowlに通知されない状態です。
板のアドレスを入力した後もレス表示するまではうまくいっている様子です。(スレを選んだりは問題ない。)
12名称未設定:2008/10/07(火) 07:25:52 ID:Y47w/it70
>>11
自分の環境では~レスをスキップしましたという表示の後そのより後のレスの通知が表示されます。
さっきまでもう少し実況板に適した仕様にしようと色々いじっていたのですが
やはり他人の書いたスクリプトを編集するというのは難しいので現状では中途半端な状況ですが一応上げておきます(本家や先ほどのものとは共存可能です)。
http://dl.getdropbox.com/u/10395/2chResViewLive.zip

オリジナルからの変更点
・headerFileNameをtest3に設定して本家と共存可能にした
・Universalバイナリとして動作(オリジナルはPowerPCバイナリ)
・実況板用にチェック間隔(checkInterval)を5秒に設定した
・同じくレス表示間隔(showResInterval)を1秒に設定した
・maxShowResNumbyReadOnceを1001に設定し全てのレスが通知されるようにした
・本家との区別をつけるためにプロセス名を2chResView Liveに変更した

現状での問題点
・オリジナルと違ってメニューやDockからの終了が出来ないのでActivity Monitorから強制終了する必要がある
・解決策とはとうてい言えないがInfo.plistでNSUIElementを1に設定し実質役立たずなメニューとDockアイコンを無効にした(スクリプトの編集はバンドルを開くことにより可能です。)
・そのため起動後別アプリを前面に出してしまうと終了以外出来なくなる仕様
・基本的には最初に更新確認元のURLを指定したらその後は放置を推奨します
・新着レスが無いとまた最初からレスを表示するが2周目以降において
n周目のレス番号表示=本来のレス番号+1周目での板のレス最大値+2周目でのレス最大値+.............+(n-1)周目でのレス最大値
のような状況になってしまっていたのでレス番号をGrowlに通知しないという荒技(というかその場しのぎ)により対応。
(本当はここは本来のレス番号が表示されるようにしたかったのですが自分の技量不足で出来ませんでした。また後日時間があるときにトライします。)
(一応オリジナルのレス番号も表示されるほうもコメントアウトして残してあります。)
13名称未設定:2008/10/07(火) 08:11:16 ID:lCUqUn5J0
>>12
そうでしたか。。新版でもやはり変わらずレスは表示されない・・・
うーん、何がいけないんだろう。

>・解決策とはとうてい言えないがInfo.plistでNSUIElementを1に設定し実質役立たずなメニューとDockアイコンを無効にした
拡張子を.scptに変更してscriptediterから実行し、editerはDockに収納というのがスマートかなーと思ってました。それなら終了できるので。


いろいろと朝早くに面倒を見ていただきありがとうございます。
14名称未設定:2008/10/07(火) 19:12:05 ID:v8Kp0RHoP
>>13
Growlの通知のスタイルをBubblesにしても駄目ですか?
CSS形式だと連続表示した時に駄目なときがあるのでそれの可能性もちょっとあるかも
15名称未設定:2008/10/07(火) 20:10:43 ID:lCUqUn5J0
>>14
Growlはいろいろなパターンで(通知スタイル、出てくる場所)試してみましたがやはりでてきません。
新規アカウント作って試しましたがやはりダメでした。


実行中アクティビティモニタを見ているとcurlというプロセスが着いたり消えたりします。
2chResview Liveを最前面にしているとカーソルが白黒の風車が着いたり消えたりします。

CPU使用率もメモリも十分に余裕があります。
ちなみに2GHzCore2Duo メモリ1GBです。

なにか自分の環境が悪いのでしょうか??
16名称未設定:2008/10/07(火) 21:09:31 ID:v8Kp0RHoP
>>15
もう一個思い当たるのがas Unicode textをGrowlHelperAppで
通知するテキストに対して行うってのがあります。
昔DragThingなどでうまく動かない時にas Unicode textを適当に付けたら
動くようになった記憶があります。
http://memogaki.soudesune.net/2chResView.html
にそうしたのを置いておきました。

>>7さんの報告によると自分と同じ10.5でも動かないようなので違う可能性は高いです。
でもAppleScriptにPPCとintelの違いなんてあるんでしょうか?
17名称未設定:2008/10/07(火) 21:23:10 ID:kwz1vCP70
>>15
http://mtlab.ecn.fpu.ac.jp/xnote/070209160623.html

とりあえず2chでログとか関係なしに
AppleScriptからGrowlに通知を送るだけのスクリプトでも作ってみたら?
18名称未設定:2008/10/07(火) 21:48:43 ID:lCUqUn5J0
>>16
作者の方でしたか。ありがとうございます。
試してみたのですが、やはり表示されませんでした。。

>>17
作者様に作っていただいた
http://memogaki.soudesune.net/2chResView.html
http://memogaki.soudesune.net/zip/2chResViewtest.scpt.zip
でAppleScriptからGrowlに通知を送るテストはしたのですが、それはおkでした。>>6にkwsk書かず申し訳ない。助言ありがとうございます。
19名称未設定:2008/10/07(火) 22:00:13 ID:kwz1vCP70
>>18
じゃぁ今度はログとるところを分解してテストしてみりゃいんじゃない
なんでも人任せにすんな
20名称未設定:2008/10/07(火) 22:06:35 ID:lCUqUn5J0
>>19
かしこまりました。
お邪魔なようなのでもう書き込みはしません。
いろいろとしていただいたお二人ありがとうございました。
21名称未設定:2008/10/07(火) 22:29:25 ID:KlERJHmd0
「なんでも人任せにすんな」への返答が「お邪魔なようなのでもう〜」

こういう奴見るとほんと腹立つわ
22名称未設定:2008/10/07(火) 22:36:57 ID:kwz1vCP70
俺としてはsmalltestを行えってまじめにアドバイスしてんだけどな
2312:2008/10/07(火) 22:52:07 ID:Y47w/it70
いまさらだけど自分としてはそう不愉快に感じなかったな。
寧ろイベントログとかもう少し詳しく書いてくれれば力になれたかもしれないのにという感じ。

というか中途半端に動作するものをアップした自分が悪い?
24名称未設定:2008/10/07(火) 22:55:18 ID:yqsxH7SN0
前スレラストのお客さんもこの手合いだったからな。
流石にちょっと、という感はある。
25名称未設定:2008/10/07(火) 23:10:09 ID:AJUayXJ10
またしばらく寂れそうだw
26名称未設定:2008/10/09(木) 14:41:14 ID:EnaYP1mJ0
Script Debugger4で自作テンプレをクリッピングメニューから呼び出したいのですが,
登録方法がよくわからず困っています.もしわかる方いたら教えていただけませんか.
27名称未設定:2008/10/09(木) 18:18:36 ID:EnaYP1mJ0
>>26 の件ですが,Clippingsフォルダに入れるだけでした.おさわがせしました.

これだけじゃなんなので,Script Debugger4の話題を一つ.

うちのintel Leopard環境では特定のスクリプトでApple Event logを表示させたり,
sourceボタンを押すと強制終了したり操作不能になる不具合が出てます.もしこれから
買おうと思っている人は,動作確認をしっかりやった方がいいかもしれません.
28名称未設定:2008/10/11(土) 00:58:27 ID:YGVRabN70
Security Update 2008-007当てると、Script Editorで辞書開いた時にできる一時sdefファイルの作成場所が
/tmpから/var/tmp/folders.uid/TemporaryItemsに変わる。
なもんでログインし直すとゴミ箱にRecovered filesが出来ちゃう。ちょっと邪魔臭い。
29名称未設定:2008/10/12(日) 23:12:57 ID:UYsjvl6V0
前スレのSnapz Pro Xの小物に続き,今回もまた小物発表します.
YouTube動画を高解像度版で表示させるアプレット.フリーウェア.

YouTube HRV with Firefox β
www.gcug.net/test/ythrvfb.zip
YouTube HRV with Safari β
www.gcug.net/test/ythrvsb.zip

今開いているYouTube動画の高解像度版を新しいウインドウで開いて表示させます.
ただし,全ての動画が高解像度版で観られるわけではありません.特に公開時期が古い
動画は高解像度では観られないようです.予めご了承下さい.

比較画像
www.gcug.net/test/ythrv.png
30名称未設定:2008/10/12(日) 23:39:29 ID:Rk15pzzC0
Firefoxスレで見て、Safariスレでも見て、ここでも見るのか orz
31名称未設定:2008/10/12(日) 23:42:57 ID:UYsjvl6V0
ごめんね.
32名称未設定:2008/10/13(月) 01:17:47 ID:4W8DvxVS0
>>29
踏む気にもならんが、&fmt=18足してるだけじゃないんか?
せめて開いてるページの高解像のソースをmp4で別名保存するってのとか位したら?
って、書くなよ。それくらいもうみんな書いてるから。
33名称未設定:2008/10/13(月) 01:26:14 ID:JL5lkbOm0
>>29
はい,ただ足してるだけです.別名保存もしてません.皆さんが書いてる通りです.
予想どおり,ほとんど踏まれてません.でも,なんだかわかんないけど,楽しい.
34名称未設定:2008/10/13(月) 01:26:57 ID:JL5lkbOm0
失礼しました,>>29ではなく>>32へのレスです.
35名称未設定:2008/10/13(月) 01:32:01 ID:8CRBv2qs0
>>29
10.4.11/Safari3.1.2で動かなかったです
36名称未設定:2008/10/13(月) 01:48:58 ID:JL5lkbOm0
>>35
10.4.11では動かなかったですか.すみませんです.
10.5の環境しかもってないので,原因突き止めるのは時間かかりそうです.
いずれにしてもこの話題長くひっぱるのはあれなので,なんかわかったら
サイトの方に書いておきます.どうもでした.
37名称未設定:2008/10/13(月) 02:31:47 ID:YwtPc7by0
38名称未設定:2008/10/13(月) 02:36:00 ID:dBXY5jcQ0
実は、以前から同じ用途のスクリプトつくって自分で使ってた。
単純にurlに&fmt=18付けるだけだから、俺みたいなスクリプト初心者でも出来るよ。
39名称未設定:2008/10/13(月) 03:45:44 ID:4W8DvxVS0
>>29 楽しむなバカ!!!
しね、しんでお詫びしろ真面目に勉強してAS書いてるやつに。
ASからsafari開かんでもシェルスクでcurlってのもあるぞ。
べ、べつにお前に教えてるわけじゃないんだからな!!勘違いするなよな!!
40名称未設定:2008/10/13(月) 09:55:40 ID:8JYSbZ9o0
俺ならbookmarkletでやるかな。
41名称未設定:2008/10/13(月) 09:55:58 ID:YwtPc7by0
&fmt=18足すだけで編集不可で「フリーウエア」とかわざわざ謳ってなんかあれな人っぽいな。
過去スレで質問しまくって「できましたー」って編集不可で公開した人に似ててなんか変。

編集不可のスクリプトの発表はスレ違いとテンプレに追加してほしい。
42名称未設定:2008/10/13(月) 10:07:55 ID:S2bmhJwE0
俺の所も動かないから中を見ようとしたら編集不可だって。
馬鹿にしてるのか。
43名称未設定:2008/10/13(月) 10:36:11 ID:dU9oInNnP
よほどの遅い回線でなければ、わざわざ&fmt=18付けて再読み込みさせなくても
動画の再生画質
http://jp.youtube.com/video_quality_settings
で設定しておけば高画質で再生されますよ。
44名称未設定:2008/10/13(月) 12:32:22 ID:P4LigQDi0
なんでこの程度のことでわざわざ煽り入れるんだか
45名称未設定:2008/10/13(月) 12:32:45 ID:WM63qh/30
>>35
サイトよりスレの方が早いので,あらためてこちらに.
Safariで動かなかったとのことですので,スクリプト書いておきます.
たぶん,これなら動作すると思います.

tell application "Safari"
activate
set theURL to get URL of document 1
open location theURL & "&fmt=6&fmt=18"
end tell

29のアプレットは,これにいくつかのエラー処理を加えたんですが,
それがきっと動作的にまずかったんだと思います.
46名称未設定:2008/10/13(月) 12:41:12 ID:WM63qh/30
誤解されそうなので訂正します.エラー対応処理です.
47名称未設定:2008/10/13(月) 15:38:07 ID:vHCZlgpZ0
set URL of tab -1 of window 1 to URL of tab -1 of window 1 & "&fmt=18"
なんてやっておくと裏のタブで開いておいたのを裏のままfmt=18で再読み込み。
全タブを取得しといてcurrent tabだけ除外すれば複数の裏タブもいっぺんに。
48名称未設定:2008/10/23(木) 21:18:44 ID:JnvvdQR80
Growlがとかいってた人
http://memogaki.soudesune.net/2chResView.html
こんなんでてたぞ
49名称未設定:2008/10/23(木) 21:55:34 ID:E3n5TJ5f0
10.5 Intelだとうまく動かない、元スクリプト作者は環境ないから何ともしがたい、
って話だったと思ったけど
それが解決してなければどうしようもないんじゃないかい
5012:2008/10/23(木) 22:00:25 ID:lUXKK1hP0
>>7とか見ると中身のスクリプトを取り出してもう一度.app化すればUniversalで動くらしいよ。
>>7のリンク先はもうないっぽいが。
51名称未設定:2008/10/23(木) 22:01:06 ID:lUXKK1hP0
ってよく考えたら>>7作ったのは自分だったんだ。
かなり前のことだったので忘れてたぜ。
52名称未設定:2008/10/24(金) 10:04:11 ID:gyloSjgq0
www.gcug.net/test/ascal.png
do shell script "cal"でdisplay dialogの表示をそろえたい場合,どうしたらいいでしょうか?
53名称未設定:2008/10/24(金) 11:36:24 ID:Jf97pub80
>>52
ヒラギノ?の標準半角スペースは333emだから500emのと置き換える。
でも、使えない環境もおおい。例えばこことかね。
これは力技てか、手抜き。本当はHTMLとかで真面目に書いた方がよいね。

set hoge to do shell script "cal"
set myStrings to hoge as Unicode text
set findStr to " "
set replaceStr to string id 8199

set myStrings to replaceString(myStrings, findStr, replaceStr) of me
display dialog myStrings
return
on replaceString(myStrings, findStr, replaceStr)
set tmp to AppleScript's text item delimiters
set AppleScript's text item delimiters to findStr
set theList to every text item of myStrings
set AppleScript's text item delimiters to replaceStr
set myStrings to theList as string
set AppleScript's text item delimiters to tmp
return myStrings
end replaceString
54名称未設定:2008/10/24(金) 12:13:07 ID:YLgb7goj0
初めてまともにAppleScript使ってるんですが、つまづいてます。

Safariで複数のウィンドウ、複数のタブを開いている時、
アクティブなウィンドウを切り替えたいんですが、何か方法ないでしょうか?

set current tab in targetWindow to targetTab

でタブは切り替わってるんですが、ウィンドウが背面にある場合は背面のまま切り替わってます。
System Eventで clickしても同様です。10.5.5です。

要するに目的のタブとウィンドウをアクティブにしたいんですが、どうやれば良いでしょう?
ヒント下さい
55名称未設定:2008/10/24(金) 12:45:14 ID:Jf97pub80
>>54
set index of targetWindow to 1

昼食後は眠い。
56名称未設定:2008/10/24(金) 13:29:40 ID:YLgb7goj0
>>55
thx!

ウィンドウは切り替わった...けど非アクティブのまま切り替わってる?
全面にあるウィンドウが非アクティブ、背面にあるウィンドウがアクティブの色

こーゆーもんですか?
57名称未設定:2008/10/24(金) 14:58:36 ID:Jf97pub80
>>56
そのままじゃんか。答え自分で書いてるし。
次の行に activate とでも打ってみるんだ。
ひまだー(嘘だ!!!)仕事する気ならねー
58名称未設定:2008/10/24(金) 15:18:19 ID:YLgb7goj0
>>57
答え...? よくわからんです。
Safari自体はactiveなんですが、

SafariのウィンドウをA(前面)B(背面)として、
通常はAがアクティブ、Bが非アクティブのウィンドウ色で並び順もその通りなんですが、

set index of B to 1

とすると、Bが非アクティブ、Aがアクティブ(つまり変更前のまんま)
の色のまま、Bが前面にくる(並び順だけ変わる)んです。

次の行にactivate書いてみましたが、これはアプリを前面に出すんですよね?
何か勘違いしてるのかな(´・ω・`)

やっと文法がわかってきたけど、これ難しいなぁ
59名称未設定:2008/10/24(金) 15:59:35 ID:ykVyKfvr0
初めて触るのにそうポンポン思い通りのスクリプト書かれちゃたまらんw
60名称未設定:2008/10/24(金) 20:17:48 ID:YLgb7goj0
あぁダメだ

tell application "Safari"
 --activate
 set (index of window 2) to 1
end tell

こいつの動作が納得いかない
とりあえず今はこういうモンだと思うことにしよう
61名称未設定:2008/10/24(金) 20:46:43 ID:MjFKpi3E0
たぶんそれバグだ
AppleScriptではよくあること
62名称未設定:2008/10/24(金) 21:05:51 ID:D8NGnyy50
ほんとだ。うしろウインドウをcommand+optionクリックしたときと
同じ動作になっちゃうんだ。
6355:2008/10/24(金) 21:22:57 ID:Kw8HwHQ60
Script Editor でも一緒だな。アプリケーションレベルのカレントにならない。
2つしか見てないけど、仕様かな?かな?
index 忘れて素直に System Events で書いた方がよいね。
64名称未設定:2008/10/24(金) 21:31:39 ID:D8NGnyy50
Finderは期待通りの動作をするようだ
65名称未設定:2008/10/24(金) 22:21:32 ID:frwVBtf10
AppleScriptじゃなくてCocoa自体のバグですな。
だからCocoaアプリは全滅
tell application "Finder"
select window 2
end tell
で動くのが正しい実装

tell application "System Events"
tell process "Safari"
set value of attribute "AXMain" of window 2 to true
end tell
end tell
とすれば動くが、こんなの判る人いない。
66名称未設定:2008/10/24(金) 22:47:16 ID:PrT8+w6N0
おお、そういう指定ができるのか。知らなかった。

ちなみにAppleScript的ルールからいうとバグではあるが、Cocoaな
世界ではActive Windowという単一の概念は無くて、
MainWindowとKeyWindow, Inactive Windowってのがある。

ちなみに、NSWindowクラスではKeyになるのを拒否したり出来るみたい
なのでセットしたプロパティが反映されているかその後チェックが必要。

Classic OSユライのASと考え方が違うのはある程度しゃーない。
67名称未設定:2008/10/24(金) 23:10:52 ID:Kod93loi0
>>53
display dialogでHTML(CSS?)のフォント指定ができるのかよくわかりませんが,
とりあえずは自分で使うだけなので,デリミタ置換で十分かなと思います.
ありがとうございました.
68名称未設定:2008/10/24(金) 23:20:07 ID:frwVBtf10
>>66
AppleEventの命令を内部的にどうマップするかは別にCocoaに限った問題じゃない。
アプリやクラス毎に意味付けは変わって来る。
だからこそStandard Suiteに総称的なselectがあるわけで、代わりに意味不明な
命令を繰り出す理由にはならんよ。OOP的な方向とも相反する。
6955:2008/10/24(金) 23:48:15 ID:Kw8HwHQ60
色々奥が深いんね。勉強になるし楽しい。
>>67
display dialog でよいのか。最終エディタとかに持って行くんかとおもった。
70名称未設定:2008/10/25(土) 00:02:39 ID:/nRWm3zs0
2chResView.app

MBP intel 10.5.5でお試ししてみましたが,これはいいですね.
ワンセグを使っているんですが,まさに実況スレの自動更新とあいまって,
スレの流れがよくわかるわかる.

2chResViewのみですが,今のところこれといった問題もありません.
実況は2chブラウザでなく,2chResViewのみでいいかなって思うぐらい.
GrowlとAppleScriptの可能性を感じさせるアプレットですね.素晴らしい.
71名称未設定:2008/10/25(土) 00:55:28 ID:/nRWm3zs0
>>69
display dialogなんですよ.もしJedit Xとかに持っていくのなら
フォント変更ができると思うので,大丈夫じゃないかと思います.
72名称未設定:2008/10/25(土) 03:02:01 ID:F4pUJc+e0
tell application "Safari"
activate
set visible of window 2 to false
set visible of window 2 to true
end tell
少し遅くなるがこれもありか?
73名称未設定:2008/10/25(土) 07:19:58 ID:/nRWm3zs0
読み飛ばしてもらっていいんですが,
うちのLeopardでは,>>72 が希望にそった動作をしてます.
>>65 はドックからの起動だと大丈夫なんですが,アプリ単体で
起動した時はウインドウがアクティブにならないみたいです.
74名称未設定:2008/10/25(土) 16:44:23 ID:/nRWm3zs0
www.gcug.net/test/gmc.png

レス >>53 で教えて頂いたスクリプトと2chResViewのソースをあわせて,
display dialogではなくGrowlでカレンダー表示させるようにしたスクリプト.
75名称未設定:2008/10/25(土) 17:18:51 ID:zRBX1lq80
2chResView導入テスト中。

モタスポ実況板のスレURLを入れると、
「&amp;1(←本当は半角)を取り出すことはできません。」と言われて、
動作が止まってしまいます。下記スレで起こりました。

ttp://live-racing.net/livebbs/test/read.cgi/live/1224694330/

どこをいじればいいかアドバイスいただけますと大変助かります。
Intel iMac、10.5.5です。よろしくお願いします。
76名称未設定:2008/10/25(土) 18:05:23 ID:VbXcGaBh0
Growlスレに作者がいるって訳じゃないの?
77名称未設定:2008/10/25(土) 23:42:03 ID:x2JBMzcV0
string id 8199ってなんじゃ?
78名称未設定:2008/10/26(日) 01:08:20 ID:e+jOjkx/P
>>75
対応したと思う
79名称未設定:2008/10/26(日) 02:14:27 ID:QJLbb3aC0
>>78
2chはここしかみてないから使わないけどソース見てて。おしえてくれろ。
set AppleScript's text item delimiters to {hoge as Unicode text}
どしてリストにして渡してるの?どっかで何か変わったの?これやらないとだめ?
80名称未設定:2008/10/26(日) 02:15:30 ID:4cxLaD6K0
>>79
日本語でおk
81名称未設定:2008/10/26(日) 02:19:56 ID:QJLbb3aC0
>>77
あ、私かいな。ちゃんと引用しろよ。
Unicode ID のことだよ。前スレで盛り上がったじゃん?data<>とかで書かなくてもよいんだ。
そいえばちゃんとお礼してない。教えてくれた人ありがとう。
82名称未設定:2008/10/26(日) 02:23:45 ID:QJLbb3aC0
>>80
78さん? >>53 で私の使ってるハンドラ string を渡してる。
delimiters に関してなにか変更あったのかな?と。あまりAppleのdocument読まないから。
83名称未設定:2008/10/26(日) 02:25:13 ID:4cxLaD6K0
どうやら日本人じゃないらしい
84名称未設定:2008/10/26(日) 10:17:39 ID:lUfGSYy60
>>81
ありがと。
Tigerだとコンパイルできるけど動かんぞ。
Leopard以降なのか?
なんかUnicode対応以来,あちこちぐちゃぐちゃしてわからんことが大杉。
85名称未設定:2008/10/26(日) 11:04:50 ID:hQeVnxlp0
君ら、もうちょっと脳に汗かこうや
ググらず、Language GuideやRelease Notes読まず、じゃわか(ry
8675:2008/10/26(日) 13:32:52 ID:zHn/rlQA0
>>78
ご対応ありがとうございました。
ただ、残念ながら動きませんでした。エラーも同じです。
Growlからは「スレが見つからないので新しいスレを選択しろ」と言われます。

87名称未設定:2008/10/26(日) 16:51:07 ID:TVo/dLc60
AppleScriptのdo shell scriptからPerlを扱えるようカジりはじめたのですが,
最初からつまずいてます.

set textMess to " Leopard."
do shell script "perl -e 'print \"Hello,\n\";'"

do shell script文の後にAppleScript変数textMessをつけて,"Hello, Leopard."
という結果にしたいのですが,"echo " & textMessをこれにどうつなげていいのか
わかりません.教えていただけませんか.
88名称未設定:2008/10/26(日) 17:18:51 ID:1fRNd1I/0
>>87
コマンドラインを変数にして文字列とつなげればインジャネ?
つかここら辺基本だから、どっかのサイトでみっちりやっといた方がいいと思うけど。

まあ適当にサンプルおいとくからがんばれ

on open theFileList

repeat with theFile in theFileList
set commandLine to "openssl sha1 " & {quoted form of (POSIX path of theFile)}

set xxx to do shell script commandLine

set pushTemp to AppleScript's text item delimiters
set AppleScript's text item delimiters to "= "

set xxx to last text item of xxx

set AppleScript's text item delimiters to pushTemp

display dialog xxx
end repeat

end open

89名称未設定:2008/10/26(日) 17:33:51 ID:TVo/dLc60
>>88
do shell scriptを変数に書き出して,それをもう一つの変数につなげるのではなくて,
do shell script 内のPerl内でつなげて完結させるということを聞きたかったわけです.

上のサンプルは別な部分で参考にさせていただきます.
90名称未設定:2008/10/26(日) 17:40:30 ID:TVo/dLc60
わかりにくかったかもしれません.自分でいろいろ試してみます.
91名称未設定:2008/10/26(日) 17:52:57 ID:1fRNd1I/0
>>89
do shell script で発行されたコマンドに対して対話的に何かしたいといいうことか?無理。
92名称未設定:2008/10/26(日) 18:28:28 ID:TVo/dLc60
>>91
言われている通り無理っぽいので,テクニカルノートのサンプルを参考にして
一度AppleScript変数に読み込ませてからつなげる方法にしました.

set textMess1 to "Hello,"
set textMess2 to " Leopard."
do shell script "echo " & textMess1 & textMess2
-- "Hello, Leopard."

ありがとうございました.
93名称未設定:2008/10/26(日) 20:07:32 ID:VTGefaxq0
set textMess to " Leopard."
do shell script "perl -e 'print "Hello," & textMess & "\n";'"

これとは違うって事?
解決したみたいだからいいけど
94名称未設定:2008/10/26(日) 20:30:36 ID:TVo/dLc60
>>93
そうかそれでいいんですね.
何度やってもエラーになってたので,ダブルクォーテーションが抜けてたか,
増えすぎたバックスラッシュでこんがらがってたのかも.ありがとうございます.

ちょっとでもわかると,Perlが楽しくなってきました.
95名称未設定:2008/10/26(日) 21:29:52 ID:e+jOjkx/P
>>79
どっかからのコピペなんで詳しいことはわかりません

>>86
試したら自分もエラーが出たのでもっかい直しました

96名称未設定:2008/10/26(日) 21:57:07 ID:c5rHVkSN0
このつぶやき見飽きた。もう勘弁してくれ。

>>33 でも,なんだかわかんないけど,楽しい.
>>94 ちょっとでもわかると,Perlが楽しくなってきました.
97名称未設定:2008/10/26(日) 22:02:11 ID:leFDhUAz0
>>96
それがプログラミングだからしょうがない。
楽しくないプログラミングなんて誰もやる気しないだろ?
あの試行錯誤感がいいんだよ。
98名称未設定:2008/10/26(日) 22:11:01 ID:VTGefaxq0
>>94
"ワンセットを即座に普通の文字として認識出来るように鍛えるか

set DQ to """
do shell script "perl -e 'print " & DQ & "Hello," & textMess & "\n" & DQ & ";'"

とかやればApplescriptでのダブルクォーテーションとの違いがなんとなくつかみやすいかも。
文字の並びが長くなっちゃうけど

>>96
そんなら無視しれ。
オレ覚えはじめのころにそんなこと言われたら相当凹むわ。
99名称未設定:2008/10/26(日) 22:21:26 ID:PmjoJ6HJ0
環境変数の展開とかしない限りは「¥"」じゃなくてシングルクオート「'」でいいんじゃないのか?
100名称未設定:2008/10/26(日) 22:31:05 ID:tzBda6Gc0
楽しいのは全くもって結構だが、いちいちここに書く必要はない。
101名称未設定:2008/10/27(月) 01:05:49 ID:xTSmnSN80
>>96 >>100 そういうお前がry
102名称未設定:2008/10/27(月) 07:43:15 ID:0eZUsEsb0
>>98
わかりやすくていいですね,慣れるまではそれを使ってみます.

>>99
自分が書き方知らないだけだと思いますが,シングルクォートで書けなかった…….
103名称未設定:2008/10/27(月) 16:35:43 ID:SCa34hkm0
せめて句読点をちゃんと使って欲しい。
104名称未設定:2008/10/27(月) 20:57:21 ID:rwh9I1Ct0
わかり難い物はquoted form of 使うべきだろ。
105名称未設定:2008/10/28(火) 22:28:26 ID:uR63MieC0
>>84
PARKにまだ書かれていないみたいだから、まとめ的に昔と今の違いをここに書いとく。
めちゃくちゃ便利になったってのが解ると思う。Unicodeつかう人にとってだけかもだけど。
とりあえず2万字回すべし、面白いぞ。"25991 23383 12497 12524 12483 12488 35211 12390 12429 12399 28961 12375 12394"
set hoge to 9891 as real
set leopardString to string id hoge
set tigerString to (《data utxt26A3》 as Unicode text) --《》は半角ね。
log leopardString & space & tigerString
106名称未設定:2008/10/28(火) 22:31:24 ID:uR63MieC0
ついで、クォートの使い方私風。参考になれば。
上の10進出すのに使った。ちょうど良いかも。

set hexNum to quoted form of "26A3"
set decNum to do shell script "ruby -e " & quote & "p " & hexNum & ".hex" & quote
return decNum
107名称未設定:2008/10/28(火) 22:47:04 ID:Kb/uGXgy0
>>106
これを参考にして,これから作るScriptに利用してみます.
ありがとうございます.
108名称未設定:2008/10/29(水) 00:30:23 ID:S4POVvan0
見直さずに送信は悪い癖だな。治す気はないが。補足もしくは蛇足をば。
勉強し始めの人にはちょっとしたことでもわけ解んなくなるから。←通ってきた道。いや今でも。

>105 1行目の as real
エラーメッセとNo.が欲しくていろいろ遊んでたのを消すの忘れてた。
なんも書かんでよいぞ。 as integer でもよいか?宣言した方が読み返しやすいかな?

>106 で16進から10進変換かいてるが10進取るだけなら >105 の tigerString つまりキャラクタを id of したら10進とれる。
set hoge to id of "腐" とかで結果みてくれ。ASCII number と character のUnicode 用みたいな物だ。

で >106 はPearl のハンドラ書き直したときのをデバッグついでに1行使いしてみただけ。quote の流れの役に立つかな?と。
とにかく文字処理する人間に取ってはAS2.0と ruby には感謝感激雨霰だな。

ちなにみこいつどんだけ暇なんだ?と思うだろうが確かにそうだ。
仕事する気がおきんのでここで遊んでる。仕様書なんてこの世からなくなればよいのに。
10986:2008/10/30(木) 21:07:17 ID:uO0uvF/a0
>>95
今度は動きました。
どうもありがとうございました。
便利に使わせていただきます。

110名称未設定:2008/11/06(木) 01:32:52 ID:ZibL1xWP0
広義の意味でのApplescriptの質問なのですが、
これまで自分で使うためとフリーウェア(1本だけですが)としてスクリプトを組んだことはあるのですが
はじめて、お客さんに頼まれてスクリプトを組みました。
スクリプトはだいたい200ライン程度、スクリプトエディタを使用しユーザーインターフェイスは最低限のものです。
いちいちtellで階層を呼び出すのは嫌いなので、割と短めのライン数になっていると思います。
内容を言わないでの質問で申し訳ないのですが、一般的にはどのくらいの額を請求できるものなのでしょうか?

最終的にはお客さんと相談して決めようと思っているのですが、
あまりにも常識はずれになってしまうといけないし、自分が安く提供したのか、高く貰ったのかくらいわかっておきたいので
111名称未設定:2008/11/06(木) 01:54:35 ID:6C3sgi7U0
普通は開発にかかった時間で請求するものだと思うけど。
個人的には,AppleScriptで稼ぐのはあきらめました。

112名称未設定:2008/11/06(木) 02:23:52 ID:ZibL1xWP0
>>111
ありがとう。
最初うまく動かなくて2日位かかってしまった。
最初からあることに気づいてれば数時間で出来ちゃったと思う

>個人的には,AppleScriptで稼ぐのはあきらめました。
やっぱり仕事として発生しないということかしら...
113名称未設定:2008/11/06(木) 02:42:27 ID:xe1A6rEs0
会社員なので参考になりそうな答えは提示できないけど、
別にAppleScriptに限定して考える事は無いんじゃないかな

あと今更言ってもアレなんだが、
先に決めとくべきだったんじゃないかとは思う
114名称未設定:2008/11/06(木) 12:53:50 ID:ZibL1xWP0
>>113
アプリケーション制御とファイル管理をするような内容だったので
開発の容易さからApplescriptになりました。
私自身使える言語がApplescriptとjavascriptしかないというのもあります。

私はプログラマーではなく、自身のためにスクリプトを組んだり
レイアウトフォームに付随して(業種がばれますね)スクリプトを組むことはあったのですが
スクリプト単体で発注されたのははじめてで、うれしくて予算は二の次にしちゃいました。

やっぱり、まずはお客さんに満足していただくよう努力して、評価を得ようとおもいます。
有り難うございました。
115名称未設定:2008/11/06(木) 14:51:35 ID:SrjMOGQVP
「報酬は?」「あなたが…満たされた分だけ…」
116名称未設定:2008/11/06(木) 19:47:28 ID:5FgNhhrY0
3万円〜30万円ってところかなあ。
117名称未設定:2008/11/07(金) 00:13:21 ID:KE7FU1C70
日給いくらで申請するかだよね。

118名称未設定:2008/11/07(金) 00:25:54 ID:e1eBJROM0
スクリプト単体じゃなくて別に主たるコンテンツの依頼があったのなら
「また次も宜しくお願いしますね」的なおまけとして差し上げても良かったのにな。
119名称未設定:2008/11/07(金) 01:51:01 ID:U7X/qCx20
>>114
いや、「何故わざわざAppleScriptで作ったの?」とかそんな話じゃなくてさ

対価の見積もり基準としてAppleScriptだと幾ら?って限定する必要はないわけで、
マ板かム板あたりで一般的な話として相談する手もあったんじゃねーのって事です

AppleScriptで書こうがObjective-Cで書こうが、
中身に詳しくないお客にしてみれば同じ事じゃね?
120名称未設定:2008/11/07(金) 13:15:50 ID:QwQjnn/H0
>>119
ありがとう。>>108の方の書き込みをみて、ここで聞いてみようかなと思った次第です。
>>111,117
時間計算してしまうと私の能力が低いと高い請求になってしまう。それもちょっと...
>>116
私はその低い方の金額でもOKな感じです。
>>118
それなりに頂ければ、やる気も出てくるので...やっぱり頂きたい

みなさん本当にありがとう。
121名称未設定:2008/11/07(金) 21:09:06 ID:KE7FU1C70
>>120
能力と時間給の問題は,そのとおりなのだけれども,世間はそれで動いているんだよね。
能力がありすぎると損をするような...
122名称未設定:2008/11/08(土) 12:46:11 ID:n/AS+2ei0
>>121
FP
123名称未設定:2008/11/08(土) 21:23:48 ID:ijpwYJEF0
能力があればそれを理由に時間単価を上げられるじゃない
124名称未設定:2008/11/08(土) 22:45:01 ID:dQzZVq1f0
能力がある→単位時間当たりの料金が高い→でも開発時間が短い ←こっちの方がクライアントのメリットは多いはず
能力がない→単位時間当たりの料金は低い→でも開発時間が長い

ってことでまず自分の時給を決めなさい。750円/hからスタートです。
125名称未設定:2008/11/09(日) 18:45:13 ID:75hQjtnT0
次のような処理を一気にしてくれるスクリプトを書きたいと思っています。

1) ~/Desktop にあるすべてのzipファイルを解凍
2) ~/Desktop にあるすべてのhtmlファイルをゴミ箱に移動 or 削除

1)はStuffIt ExpanderやUnarchiver、2)はFinderに、それぞれやらせればいいのだと思いますが、
具体的にどういう命令にすればいいか分かりませんでした。

初歩的な質問で恐縮ですが、アドバイスお願いします。
126名称未設定:2008/11/09(日) 18:51:37 ID:10dOh0aU0
Automatorなら分からなくても出来るが
それでは駄目なのかい
127名称未設定:2008/11/09(日) 20:02:29 ID:J1ADMCxr0
>>125
簡単に作りたいんだったら
1)はzipファイルをFinderでopen
2)はhtmlファイルをFinderでdelete

両方とも拡張子で選びだせばいい

128名称未設定:2008/11/09(日) 21:40:44 ID:J1ADMCxr0
>>125
>>127の説明だけだとわかんないだろうから具体的なものを書いとく
2)の方だけだよ。あとは調べるなり応用するなりしてみて

tell application "Finder"
delete (every file of (path to desktop folder) whose name extension is in {"html", "htm"})
end tell


129名称未設定:2008/11/10(月) 00:13:25 ID:G+bZelPo0
>>125
こんなんでもいいのかと
tryは該当項目がない時の対応

try
do shell script "open ~/Desktop/*.zip"
end try
try
do shell script "rm ~/Desktop/*.html"
end try
130名称未設定:2008/11/10(月) 03:47:18 ID:HbJJ7IMM0
>>129
シェルスクリプトでやれってことですね、わかりますw
131名称未設定:2008/11/10(月) 11:39:44 ID:jKYev5ya0
最初からシェルスクリプト使った方が効率的だしw
132名称未設定:2008/11/10(月) 14:09:55 ID:E18X5wfz0
なんか雰囲気からして、一日一回定期的に動かしますみたいなものに見えるんだよね。
それだとシェルスクリプトとcronだわなあ。
133名称未設定:2008/11/10(月) 14:32:28 ID:/YsdEu920
>>132
それは古典的なunixの場合、OSXではlaunchdを使う。
http://developer.apple.com/macosx/launchd.html
134名称未設定:2008/11/10(月) 19:56:01 ID:5VAvNdNM0
へー
135名称未設定:2008/11/11(火) 03:07:18 ID:6TGtup5L0
思いっきりcron使ってた。
launchdってそういうこともできるのか。
136名称未設定:2008/11/11(火) 15:47:06 ID:eOj/IPUD0
>>133
iCal のイベントで呼出してたw


ところでファイル名やフォルダ名に全角パーレンが入ってると
アプリでopenした時にエラーになってしまうのですが
対処はどうすればいいんでしょう?
137名称未設定:2008/11/11(火) 23:59:13 ID:2Z6c/c/30
>>120
今更だけどクライアントと先に話すべき事だよね。
考え方によっては、今後の事も考えて次の仕事とセットで値段を決める方法もあるよ。
例えば「今回は普通5万もらうんですが、これだと高くなるので次の○○とセットで7万でどうですか?」とか。
ついでに、photoshopCS3で楕円形の選択範囲ってつくれる?

普通の長方形とかなら
tell app "photoshopCS3"
select current document region {{500, 520}, {501, 2020}, {501,2020}, {500, 2021}}
end tell
で作れるけど、楕円形が作れない・・・・
教えて下さい。
138名称未設定:2008/11/12(水) 07:22:19 ID:rk8/vzcM0
>>137
CS3 の AppleScriptReferenceGuide は読めるという前提で。
標準楕円なら楕円方程式に放り込んで、必要とする平滑度でポイントの座標をだす。
メモ。((x*2)*(a*2))+((y*2)*(b*2)=1 -->第1象限、abは長短半径。bが0ならxはaね。

円を扁平させたのを3次ベジェで書くなら path item で作って create selection 。これなら12個の座標で行けるね。
ググって方程式あるかな?Illstratoer で楕円書いて direction みてみたら55%くらい引っ張ってあるね。

って遊んでたらお弁当作る時間無くなった;;
139名称未設定:2008/11/12(水) 07:32:18 ID:JWYw+knL0
>>135
launchdを使えば周期動作やフォルダ監視スクリプトも待機負荷無しで作れる。
cronと違いLaunchAgentsはloginしていることが保証されるから、AppleScriptや
GUIアプリを使う物はここに置けば良い。OSXの多くのAPIはloginwindowや
WindowServerとMach IPCでやり取りして動くからlogin状態が必要になる。
140名称未設定:2008/11/12(水) 12:22:33 ID:RLAaAYsU0
>>138
楕円方程式が間違ってるぞ
((x^2)/(a^2))+((y^2)/(b^2))=1

でもなんかカッコいい...惚れた
141名称未設定:2008/11/12(水) 17:26:14 ID:LaYCdK41P
円を扁平させたのも楕円もまったく同じだよ。

>>140の式
142137:2008/11/12(水) 20:54:38 ID:rk8/vzcM0
恥ずかしい。。。。鬱だ死のう。。。っていうんだっけ?2ちゃんねるでは。
ぐはー、いいんだ寝起きは駄目なんだ。
円を扁平させても焦点1つじゃないん?暇なときに書いて比べてみる。

近日点、遠日点、重心の共有、ケプラーの法則。同一時間で起動が描く焦点からの面積は同一だっけ?
なつかしいな。あの頃は HyperTalk で書いてた。←天文部兼写真部。Macで回る赤道儀がほしかった。
143138:2008/11/12(水) 20:57:29 ID:rk8/vzcM0
↑自分の番号間違えた;;こりゃほんとにだめだ。
144名称未設定:2008/11/12(水) 22:40:12 ID:RLAaAYsU0
>>137
結構いいヒントが出てるからもう出来るんじゃないの?
あと、もう一つの手段として
javascriptを使って三角関数で楕円を作る方法あるぞ

145138:2008/11/12(水) 23:59:05 ID:rk8/vzcM0
>>144
もう寝る。眠い。
でもってあんたわたしになにいってんの?書けない????
かけるにきまってるじゃないの。なにがJava?Rubyでもなんでも。shellでも。
三角計算1行で呼べるのがASじゃん。なめたこといってんじゃねーよーーーー

あーーーー。うわ、、、、ごめん、私相手じゃなかった。だからーーーー、番号間違えてただけだよ。
ごめん。うわ。はずかし。えとーーーーー。にゃ?
消すべきだよね、送信したらだめだよね。でも、押すんだろーな。せっかく書いたからってだけで。
146名称未設定:2008/11/13(木) 00:04:24 ID:Xd/R6mGT0
あんた雑談スレでも見るけど、正直、その口調ウザい。
続けるならコテなりトリップなり付けてくれない?
147名称未設定:2008/11/13(木) 00:05:05 ID:O8lIbEpR0
>>145
もうネロだワン
148137:2008/11/13(木) 01:06:16 ID:C6jPTMrr0
みなさんありがとうございます。
AppleScriptReferenceGuideは一応読むんですが、いつも良く分からず考えられる組み合わせ全部やってる状態です・・・
せっかく教えてもらったのにさっぱり理解できません。わからない言葉全部ググってもどうすれば楕円ができるやら。
たとえば、
select current document region {{0, 0}, {0, 100}, {200, 100}, {200, 0}}
で200*100の横長の選択範囲が作れるますよね?
その時に、Photshopの楕円選択範囲ツールで{0, 0}から{200, 100}ドラッグした時とおなじ楕円を作るにはどうしたらいいんでしょうか?

create selectionのパラメーターにはそれらしいものも見当たりません。
select current document region {{0, 0}, {0, 100}, {200, 100}, {200, 0}} as oval とかできればいいんですけどね・・・
ほんと宜しくお願い致します。
149137:2008/11/13(木) 01:22:21 ID:C6jPTMrr0
あれ?もしかしてパスで楕円を作って選択範囲を作る必要があるんですか?
パスになるともっとわからない・・・
明日車で出張なのに気になって眠れない。
150名称未設定:2008/11/13(木) 01:30:46 ID:EqSLftju0
>>148 勘違いをしているようなので
以下が楕円方程式から求める方法
これでいいんだよね?

set a to 100
set b to 50
set ox to 200
set oy to 200

set ovalList to {_1:{}, _2:{}, _3:{}, _4:{}}
set oval to a reference to ovalList
set x to -a
set n to 1
repeat until x ≥ 0
set y to ((1 - (x ^ 2) / (a ^ 2)) * (b ^ 2)) ^ 0.5
set end of oval's _1 to {x + ox, y + oy}
set beginning of oval's _2 to {-x + ox, y + oy}
set end of oval's _3 to {-x + ox, -y + oy}
set beginning of oval's _4 to {x + ox, -y + oy}
set x to x + n
end repeat

tell application "Adobe Photoshop CS2"
select current document region oval's _1 & oval's _2 & oval's _3 & oval's _4
end tell
151名称未設定:2008/11/13(木) 02:19:22 ID:w1vAjk9p0
>150
すげーな。素人にはさっぱりわかんね!でも
repeat until x ≥ 0
って通らないぞ。
152名称未設定:2008/11/13(木) 07:30:54 ID:I6x4aDNX0
x >= 0
かな、入力する時は。後で勝手に≧に変換されるんだっけかな。
153名称未設定:2008/11/13(木) 07:32:45 ID:I6x4aDNX0
>>だったかな、入力する時は。

って意味です。すまそ
154名称未設定:2008/11/13(木) 07:57:22 ID:X81kC3MY0
積分思い出した
155137:2008/11/13(木) 09:08:52 ID:KUaqIAkT0
>>138
>>140
>>144
>>150
>>152
皆さんありがとうございます。
去年から気になっていてあきらめていたんですが
出来てしまうとは!!
ホントにありがたいです!
でも、なんでこの式で楕円になるかさっぱり分かりません(笑
でも、ここまでやってもらえれば私でも出来ます!!!!
ありがとうございます。
でも、やっぱりなぞです・・・
156150:2008/11/13(木) 13:13:13 ID:EqSLftju0
>>155私はあなたが最初にレスをつけた>>120ですよ。
>>138さんのおかげで気がついた。
ちなみに各座標を求める部分をサブルーチン化するのであれば以下のようにする。

set a to 100
set b to 50
set ox to 200
set oy to 200

on get_oval(a, b, ox, oy)
script oval
property _1 : {}
property _2 : {}
property _3 : {}
property _4 : {}
end script
set x to -a
set n to 1
repeat until x ≥ 0
set y to ((1 - (x ^ 2) / (a ^ 2)) * (b ^ 2)) ^ 0.5
set end of oval's _1 to {x + ox, y + oy}
set beginning of oval's _2 to {-x + ox, y + oy}
set end of oval's _3 to {-x + ox, -y + oy}
set beginning of oval's _4 to {x + ox, -y + oy}
set x to x + n
end repeat
return oval's _1 & oval's _2 & oval's _3 & oval's _4
end get_oval
tell application "Adobe Photoshop CS2"
select current document region my get_oval(a, b, ox, oy)
end tell
157名称未設定:2008/11/15(土) 20:21:14 ID:QxiQRkp80
暗号化コンテナ作成&マウントソフト「TrueCrypt」にパラメータを渡して
起動するため(コンテナをマウントさせる形で起動)、何とかAppleScriptの
形にしてみました。

do shell script "/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt /Volumes/DATA/test.tc"

この一行のみです。アプリTrueCryptを使ってDATAディスクにあるtest.tcを
マウントするための単純なシェルスクリプトを、Terminalを表示させずに
行うためとった苦肉の策なのですが、上記のスクリプトを実行すると、
暗号化コンテナをマウントするためのパスワード入力窓がフォアグラウンド
には来ず、即座にパスワードを入力できる状況にはなりません。

このスクリプトを起動したときに、これがフォアグラウンドに来るための
方法なぞご存知の方、ご教示ください。TrueCrypt側の問題なのかもしれない
ですが・・。

158名称未設定:2008/11/15(土) 20:32:13 ID:zjzwFa6K0
TrueCryptって全然知らんけど

do shell script "/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt /Volumes/DATA/test.tc &"
tell app "TrueCrypt" to activate

かな
間にdelay 3とか入れたほうがいいかも
159157:2008/11/15(土) 20:46:46 ID:QxiQRkp80
>>158
ありがとうございます。
うーん、やはりパスワード入力窓がフォアにならないですね・・。
delay 3 を入れても同様です。

と思ったら、パスワード入力窓はバックのままなのですが、その入力をキャンセル
すると、アプリ本体が起動され?メインの窓がフォアに来たりしています。

パスワード入力窓のプロセスか何かが、アプリ本体と違う要素で出来てるとか何か
なんでしょうか。こうなってくると、TrueCrypt側の問題っぽい感じがしますね。
というより、フォアに「どれを」持ってこればいいのか調べきれない私の問題か。

いずれにせよ、もすこし試行錯誤してみます。ありがとうございました。
160名称未設定:2008/11/15(土) 22:56:56 ID:6ZZgBvaS0
UI Element Inspector か Prefab UI Browser 辺り使えば、
プロセス調べるぐらい簡単じゃないか

やろうと思えばAppleScriptでもできるし、
LeopardならAutomatorを使う手もある
161名称未設定:2008/11/16(日) 03:42:21 ID:kpcsZDAS0
>>159
1行目と2行目入れ替えればいんでない?
162150:2008/11/16(日) 11:51:03 ID:yqcSWyTJ0
do shell script "/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt /Volumes/DATA/test.tc"
tell application "System Events"
tell application process "TrueCrypt"
set frontmost to true
end tell
end tell

これでどう?
163159:2008/11/16(日) 19:44:57 ID:c9TxTH4I0
>>161,162
うーん、やはりうまくいきません。
スクリプトエディタから起動した場合も、アプリケーションにして保存して
ファインダーからダブルクリックで起動した場合も、パスワード入力窓は
最前面には出てこず、エディタの背後やファインダーの背後に立ち上がり
ます。

do shell script を使うのが無理矢理っぽいって感じなのでしょうかねえ・・・。
他に、アプリをパラメータつきで起動する方法は無いでしょうか・・。
164名称未設定:2008/11/16(日) 20:34:46 ID:YH31Dkqw0
まさか

tell app "TrueCrypt"
activate
open (("/Volumes/DATA/test.tc" as POSIX file) as alias)
end

で済むと言う話ではないのか
165150:2008/11/16(日) 22:09:51 ID:yqcSWyTJ0
>>163
ひょっとして2行目以降に進んでいない?
ignoring application responses
do shell script "/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt /Volumes/DATA/test.tc"
end ignoring
tell application "System Events"
tell application process "TrueCrypt"
set frontmost to true
end tell
end tell

これでダメなら最後の手段、
アプリケーションを起動するスクリプトとアプリケーションを全面に送るスクリプトを分けてしまう。
以下のようにする。
スクリプトA> tmp.txtにファイルパスを書き込み、スクリプトBをファインダーより起動、
       スクリプトBにより起動したTrueCryptを全面に送る
スクリプトB> tmp.txtに書き込まれたファイルパスをシェルを使って開く
166名称未設定:2008/11/17(月) 01:23:38 ID:HYGF21ap0
まさか TrueCrypt とやらじゃなくて UserNotificationCenter だったなんてオチじゃないよね
167名称未設定:2008/11/17(月) 04:42:03 ID:vf7oC03d0
168163:2008/11/17(月) 13:21:56 ID:aCPrsfJR0
>>164
ありがとうございます。アプリケーションのメインの窓は出てくるのですが、パスワード表示窓は表示されず、また
test.tcも選択されていない状況で、「file "DATA:test.tc" のタイプを alias に変換できません。」という
エラーメッセージが出てきてしまいました。このあたりの意味は今後もう少し勉強してみます。

>>166
ありがとうございます。一応、パスワード入力窓はTrueCryptのものと思われます。オプションにTrueCrypt
マウント関連の項目がありますので・・。

>>167
情報ありがとうございます。やはり、このソフトに関しては同じようにマウント自動化につまづく状況の人が他にも
いるようですね。TrueCryptの振る舞いの問題もあるのでしょう。ひょっとすると、このソフトの性質上、そうした
自動化をやりにくいように工夫されているのかもしれません。特にパスワード入力窓の操作など。

169163:2008/11/17(月) 13:24:09 ID:aCPrsfJR0
>>165
ありがとうございます。うむむ・・ やはり、パスワード入力窓は、起動したスクリプトエディタ、またはファインダ
の背後に出現してしまい、いったんマウス操作なりで前面に持ってこないとパスワード入力できない状況ですね・・

「最後の手段」についてやってみましたが、二つに分けることで、何とかうまくいったようです。

tell application "System Events"
tell application process "TrueCrypt"
set frontmost to true
end tell
end tell

で、tcfront.appという形でtest.tcと同じ場所に保存し、

do shell script "/Applications/TrueCrypt.app/Contents/MacOS/TrueCrypt /Volumes/DATA/test.tc &  /Volumes/DATA/tcfront.app"

を、test.appで保存。test.appを起動することで最初はファインダーの背面にパスワード窓が出てきますが、
1秒ほどでそれが前面に出てきます。とりあえずはこれでやっていけます。
大変感謝しております。ご教示ありがとうございました。
170150:2008/11/17(月) 22:53:12 ID:Uomap7AT0
>>156の続き
暇だったので、こんなのも作ってみました。

--引き数→ 角の数,傾き,高さ,横幅,中心点横座標,中心点縦座標
on polygon(corner, angle, h, w, ox, oy)
script obj
property theList : {}
end script
set {angle} to {((angle + 360) mod 360) / 360 + 0.75}
set angle_2 to angle
repeat with i from 1 to corner
set {sign_1, sign_2} to {-1 ^ (angle_2 div 0.5), -1 ^ (angle_2 div 0.25)}
set rad to ((0.5 + (sign_2 * angle_2 mod 0.5)) mod 0.5) * 2 * pi
set {y, ni} to {rad, 1}
repeat with n from 1 to 8
set ni to ni * (2 * n) * (2 * n + 1)
set y to y + -1 ^ n * (rad ^ (2 * n + 1)) / (ni)
end repeat
set y to y div 1.0E-13 * 1.0E-13
set end of obj's theList to {sign_1 * sign_2 * ((1 - y ^ 2) ^ 0.5) * w + ox, sign_1 * y * h + oy}
set angle_2 to angle + i / corner
end repeat
return obj's theList
end polygon

tell application "Adobe Photoshop CS2"
select current document region my polygon(90, 0, 1000, 1000, 1500, 1500)
end tell

↓テイラー展開はここを参考にしました。
ttp://www33.ocn.ne.jp/~xinoue/freeware/trigonometric.html
171名称未設定:2008/11/18(火) 01:14:04 ID:nGx6fZdr0
Applescript でサウンド再生するスクリプト。
RubyCocoa を呼び出しているので,Tiger以前の場合は別途 RubyCocoa のインストールが必要(Leopardには標準添付)。


playSystemSound("Basso") -- /System/Library/Sounds/*.aiff および ~/Library/Sounds/*.aiff から探して鳴らす
playSoundFile("/System/Library/Sounds/Blow.aiff") -- サウンドファイルのパスを指定してサウンドを鳴らす

on playSystemSound(soundName)
do shell script ("/usr/bin/ruby -e \"require 'osx/cocoa';OSX::NSSound.soundNamed(\\\"" & soundName & "\\\").play;sleep 0.5\"")
end playSystemSound

on playSoundFile(soundFilePath)
do shell script ("/usr/bin/ruby -e \"require 'osx/cocoa';OSX::NSSound.alloc.initWithContentsOfFile_byReference(\\\"" & soundFilePath & "\\\", true).play;sleep 0.5\"")
end playSoundFile

172名称未設定:2008/11/18(火) 21:43:00 ID:Oj2LKQ7S0
ファイル名の一部を判定して条件分岐するにはどうしたらいいのでしょうか?

Apple純正FAXモデム使ってMacでFAX受信するようになったのですが
受信したFAXのファイル名が相手先のTEL番号に自動的になっており 例)FAX from 123 4567.png
これを利用して取引先からのFAXか迷惑FAXかなどを判定し
リネームやAlertを出すFloder Action Scriptを作っている途中です。
173名称未設定:2008/11/19(水) 00:47:49 ID:0V1+hMLH0
ファイルは既に取り出せてるの?
それが、theFaxFileだとして

tell application "Finder"
set theName to name of theFaxFile
end

で名前は取り出せる。あとは文字列操作だけど、それはもう少し具体例が
ないとよくわからない。
もしかすると
text 10 thru 17 of "FAX from 123 4567.png"
でいいような話かな?
174名称未設定:2008/11/19(水) 00:52:38 ID:Bx+L9xFS0
条件分岐だけなら例えばこんな感じだが

if theName starts with "FAX from"then
if theName contains "123 4567" then
/*123 4567からのFAX*/
else if theName contains "456 7890" then
/*456 7890からのFAX*/
else
/*迷惑FAX*/
end if
else
/*FAX以外のファイル*/
end if

例のようなファイル名なら、
"FAX from "と".png"込みで判別した方が確実な気もするけど…
175173:2008/11/19(水) 01:02:07 ID:0V1+hMLH0
123 4567が電話番号だとすると、東京からだと3123 4567になってたりしますね。
単純に文字数ではだめっぽい。
市外局番があることもあるんでしたっけ(それだとwordもつかえない)。

>>174もおっしゃるように
全部含めて比較した方が世話なさそうだ。

176名称未設定:2008/11/19(水) 01:02:51 ID:+YqqaPqO0
>>172
例えば,デスクトップのファイルで "hoge","hage" のいずれかが含まれているファイルに対してアラートを表示するなら,

set whitelist to {"hoge", "hage"}
tell application "Finder"
repeat with aItem in whitelist
repeat with aFile in ((every item of (path to desktop) whose name contains aItem) as list)
set namae to name of (aFile as alias)
display dialog (namae & " is Valid!") buttons "OK" default button 1
end repeat
end repeat
end tell

あるいはこんな感じでもいい。

set whitelist to {"hoge", "hage"}
tell application "Finder"
repeat with aFile in ((every item of (path to desktop)) as list)
set namae to (name of (aFile as alias))
repeat with aItem in whitelist
if namae contains aItem then
display dialog (namae & " is Valid!") buttons "OK" default button 1
end if
end repeat
end repeat
end tell

177名称未設定:2008/11/27(木) 17:05:32 ID:AmrFVjHJ0
>>171
すごいです。手を出しすぎるとわけわかんなくなるから RubyCocoa 逃げてた。
これは色々出来そうですね。RubyCocoa スレ行ってきます。
178171:2008/11/28(金) 01:00:23 ID:PIGyVP2U0
179171:2008/11/28(金) 01:06:43 ID:PIGyVP2U0
↑途中で送信してしまいました。
>>177
他にも,こんな使い方もできます。

例1:AppleScriptに対応していない 辞書.app を何としても使って辞書を引く

on lookupinDictionary(aWord)
do shell script ("/usr/bin/ruby -e \"require 'osx/cocoa';
p = OSX::NSPasteboard.generalPasteboard;
p.declareTypes_owner([OSX::NSStringPboardType],self);
p.setString_forType(\\\"" & aWord & "\\\",OSX::NSStringPboardType);
OSX::NSPerformService(\\\"Look Up in Dictionary\\\", p)\"")
end lookupinDictionary

lookupinDictionary("アップル") -- AppleScript に対応していない辞書.appを使って「アップル」を調べる


例2:AppleScript から WebKit の JavaScript エンジンを使って JavaScript コードを実行。
AppleScript→sh→Ruby→Cocoa→WebKit→JavaScript という,もはや何がしたいのか分からない呼び出しの深さになっていますが……。
まあ,こんなこともできますよ,というネタです。

on eval_js(jsCode)
do shell script ("/usr/bin/ruby -e \"require 'osx/cocoa';
OSX.require_framework \\\"WebKit\\\";
print OSX::WebView.alloc.init.windowScriptObject.evaluateWebScript(\\\"" & jsCode & "\\\").to_i\"")
end eval_js

display dialog eval_js("(new Date()).getYear()+1900")

180名称未設定:2008/11/28(金) 16:17:05 ID:mHcPVnbl0
辞書引く場合は
open location "dict://apple"
non ASCIIだとURLエンコードがちょっと面倒
open location "dict://%E3%82%A2%E3%83%83%E3%83%97%E3%83%AB"
181名称未設定:2008/11/28(金) 22:03:07 ID:CStVQp+C0
set _word to "こうですか?わかりません!"
open location "dict://" & URLEncode(_word)

on URLEncode(_str)
do shell script "printf '" & _str & "'| perl -pe '~s/([^\\w])/\"%\".unpack \"H2\",$1/ego;'"
return result
end URLEncode
182名称未設定:2008/11/28(金) 22:05:09 ID:CStVQp+C0

\はバックスラッシュに置換よろ
183名称未設定:2008/11/29(土) 09:44:16 ID:VZIVUASpP
php の方が余計なエスケープいらないからすっきりして分かりやすそう。
do shell script "php -r '$str=$argv[1];$str=urlencode($str);print $str;' " & _str
184名称未設定:2008/11/29(土) 09:50:56 ID:VZIVUASpP
>>183
ちょっと訂正。
do shell script "php -r '$str=$argv[1];$str=urlencode($str);print $str;' '" & _str & "'"
185名称未設定:2008/11/29(土) 18:52:50 ID:3EFLCewh0
iTunesで選択された曲のアーティストを右クリックからググることって
AppleScriptで出来ますか?
186名称未設定:2008/11/29(土) 19:28:45 ID:0uoN253C0
割と簡単に出来るので試してみて下さい
187名称未設定:2008/11/29(土) 19:54:25 ID:opFxlnzc0
>>184
urlencodeだと半角スペースが+になって
辞書appではデコードされないので%20になるrawurlencodeの方がいいかな。
あと''で単純に単語を囲むと'を含む文字でエラーになるので
quoted form ofを使った方がいいかな。

まあ、どっちも単語検索では問題になるケースは滅多に無いと思うけど
いろいろ使うならどっかで問題になることがあるかも。

do shell script "php -r 'print rawurlencode($argv[1]);' " & quoted form of theText
188173:2008/11/29(土) 20:53:59 ID:QzsGECYR0
>>186
「右クリックから」はそう簡単じゃなくないか?
189名称未設定:2008/11/30(日) 01:50:01 ID:g75iUdnM0
不特定多数の人に見られたら困るが
ある特定の人に渡したいフラッシュ(swf)があります
添付付きメールを送り、見てもらいたいのですが
相手がMac初心者であるため、swfをそのままダブルクリックとか
したりして見れないかと思います
そこで、swfをsafariで開くAppleScriptを同封したいと思っております
「同階層にあるhoge.swfをSafariで開く」
AppleScriptをだれか作っていただけないでしょうか?
190名称未設定:2008/11/30(日) 02:02:47 ID:b3addvQ70
>>189
swfファイルを選択してコマンド+I(アイ)
 ↓
「このアプリケーションで開く」ポップアップからその他を選択
 ↓
ファイルオープンダイアログでSafariを選択

このようにしたファイルを送ったほうが早くね?
Mail.appならメタ情報も送ったと思うだけどアーカイブしておいたほうが安全かな?
191186:2008/11/30(日) 12:58:36 ID:YQMNir780
>>188
AppleScriptを起動する為のコンテクストメニュープラグインが幾つか有るので
それを導入する事はそんなに難しい事でもないと思ったのですが。。。
CMプラグイン無しでやるには難しいですね。
192189:2008/11/30(日) 19:39:20 ID:g75iUdnM0
>>190
ありがとうございます
アップルスクリプト使わない方向で送り
無事届きました
193名称未設定:2008/12/04(木) 18:17:32 ID:C4D3uOe/0
path to me って10.4だとスクリプト自身のパスを取ってきてくれないんですね…
10.4で自身のパスを取得したい時はどのようにしたらよいのでしょうか…
194名称未設定:2008/12/04(木) 21:27:22 ID:HwXCthH70
>>193
スクリプトをアプリケーションとして保存する
んでもってアプリケーションとして実行
195名称未設定:2008/12/04(木) 21:37:26 ID:ypxWlKaq0
そのスクリプトを実行しているまさにそのアプリのパスが返るんだよ。
編集中のスクリプトであればその編集プログラムの,アプリとして実行中であればそのアプリの...
196名称未設定:2008/12/04(木) 23:15:34 ID:D4sqqstd0
Automator Actionの「AppleScriptを実行」だとLeopardでも同じ現象が起こる
よく使うのは path to をオーバーライドする方法だね
197名称未設定:2008/12/04(木) 23:28:03 ID:ypxWlKaq0
どうやんの?
198193:2008/12/04(木) 23:45:42 ID:BQJVqUNw0
レスありがとうございます!

ふむふむ…若干ややこしそうですね…
199名称未設定:2008/12/05(金) 01:29:21 ID:LdWXDghp0
ttp://homepage.mac.com/tkurita/scriptfactory/Monologue/pathtome/index.html#debug
人任せですまないが、くりた氏の所から
200193:2008/12/05(金) 09:53:39 ID:okzXidIv0
ありがとうございます!!
一度試してみます!!
お手数お掛けしました!
201名称未設定:2008/12/06(土) 16:29:42 ID:0qrcWF2v0
safariにsafaristandを入れたときにコンテキストメニューに現れる「PDF形式で書き出し」を
applescriptから実行するにはどうすればよい?

SystemEvents でやったみたけど出来ない・・・。
202名称未設定:2008/12/06(土) 18:02:11 ID:Y1jB2mcS0
>>201
コンテキストメニューからではなく
プリントからPDF書き出しではダメなのか?
203名称未設定:2008/12/06(土) 18:39:58 ID:0qrcWF2v0
それだとページに分かれちゃうのがやなんだよね。。。
204名称未設定:2008/12/06(土) 22:05:24 ID:NDrqP39+0
>>203
プリンタのカスタム用紙サイズでA4の縦が10倍くらいのをつくって
それ使ってプリントからPDF書き出し→トリミングで(゚д゚)ウマ−
205名称未設定:2008/12/07(日) 02:31:56 ID:LPtgCgIE0
applescript から用紙サイズを指定できない・・・
206名称未設定:2008/12/08(月) 23:57:55 ID:/A4x2I0f0
Safariのブラウザ部分だと action "AXShowMenu" が使えないね
マウスキーでも使わない限り、スクリプトでのコンテキストメニュー表示は厳しいんでないかな
207名称未設定:2008/12/10(水) 04:30:55 ID:5tEDkIRR0
Mac OS 10.5.5 (intel)/iTunes 8.0.2

tell application "iTunes"
set currentTrack to current track
set currentName to name of currentTrack
display dialog currentName
end tell

こうやるとエラーは出ませんが、

tell application "iTunes"
set currentTrack to current track
display dialog (name of currentTrack)
end tell

こうするとエラーが出てしまいます。
この違いは、どこから出るのでしょうか…
208名称未設定:2008/12/10(水) 05:18:07 ID:EFcWvX1W0
>>207
上の方は勝手に型の変換が行われてるわけよ。
tell application "iTunes" to display dialog name of current track as string
209名称未設定:2008/12/10(水) 05:29:42 ID:5tEDkIRR0
>>208
ありがとうございます。
textとstringは違うんですね…
210名称未設定:2008/12/10(水) 18:29:18 ID:G6ldQbJ30
これは display dialog の引数のクラスを調べて見ると良い。引数には string が必要なのに
class of (name of currentTrack)
は property と帰される。なので型変換が実行されるわけだが、 property を変換することは
スクリプトには出来ないので、tell してるアプリに処理が丸投げされ、そこでエラーが起きている。

アプリ側にしてみれば「そこのジョプズの名前を教えろよ」と命令されているようなもので、
「てめぇ、名前知ってて聞くか!?」とぶち切れてエラーを起こしている…わけではなくて、
ほとんど無意味な処理なので実装されてなくて、命令が処理できずエラーになっているだけ。

たとえば、これを明示的に型変換を指定して、
display dialog (name of currentTrack) as string
と書くと、エラーは起きずに処理が進む。
この場合は先に name of currentTrack が get されていて、それから型変換が試みられる。
class of (get name of currentTrack)
は、Unicode text なので、スクリプト側で string として処理することが可能で、結果、
アプリ呼び出しは起きずに変なエラーにはならない。

>207
の動作した最初の例なら、
set currentName to name of currentTrack
のところで、実際は
set currentName to (get name of currentTrack )
と実行されていて、display dialog に渡される引数は実体になっているので、問題は起きない。


結局これは暗黙の形変換に絡んだやっかいで解りにくい問題なんだけど、
たとえば、
display dialog (get name of currentTrack)
と記述しても動作するわけで、暗黙か、明示かと言うよりは、対象が参照か実体か?
それが解決されるとき、どこで処理が行われているか?あたりが分かれ目なんたど思う。
211名称未設定:2008/12/10(水) 22:01:35 ID:5tEDkIRR0
>>210
ありがとうございます。
「get」関数のある意味がようやくわかりました…
212名称未設定:2008/12/14(日) 09:26:06 ID:0xUWQQKX0
tell application "QuickTime Player"
open location "http://hoge"
-- ここで、読み終わるまで待つには、どうすればいいんだろう?
save self contained document 1 in new_file
close document 1
end tell
213名称未設定:2008/12/14(日) 12:32:48 ID:CSeBAn7s0
>>212
if load state of document 1 is complete then
処理

とするとか
214名称未設定:2008/12/14(日) 13:17:24 ID:0xUWQQKX0
>>213
なるほど、これでいいんだな。
サンキュー。
tell application "QuickTime Player"
open location "http://hoge"
repeat while load state of document 1 is not complete
delay 1
end repeat
save self contained document 1 in new_file
close document 1
end tell
215名称未設定:2008/12/14(日) 20:53:38 ID:9ph8Kdqc0
ちょいと質問。

DVDプレーヤーのイコライザーっていじれないですよね?
要は、VIDEO_TSフォルダから再生すると、イコライザの設定が保存できないの
で、AppleScriptを使って保存/復帰をさせたいんですけど、用語説明を一見し
たところイコライザに関する設定が見つからないので…

最悪、System Eventsを考えていますけど、あくまでも最終手段ということで。

申し遅れましたが環境は10.4.11です。よろしくお願いします。
216名称未設定:2008/12/15(月) 11:47:43 ID:J3odUKcK0
ちょっと質問させて下さい。

今 XCode 上で AppleScript メインのアプリケーションを作成しているのですが、
例えばあるボタンが選択された時に呼ばれる

on clicked theObject
end clicked

があったとして、この時呼ばれるスクリプトオブジェクトを事前に知る方法はないので
しょうか?それとも、毎回ボタンが押されるたびに新しいスクリプトオブジェクトが
生成され、実行されているのでしょうか?

だとすると、これらのハンドラの中からグローバルな値をいじる事はできない
のでしょうか?

うまく伝わったか心配ですが、何卒よろしくお願いします。
217216:2008/12/15(月) 14:35:17 ID:J3odUKcK0
ちょい言い方変えた方が分かりやすいかもしれません…。

例えば
・a.applescript
・b.applescript
という二つのファイルがあったとして、

その中で常に参照できる一つのスクリプトオブジェクトみたいなものがあれば、
万事解決する気がします。
218名称未設定:2008/12/15(月) 15:49:53 ID:fBme1Rqv0
>>216
どうも理解ができない。
この場合呼ばれるtheObjectってのはon clickedメソッドを呼び出したクラスだぞ?
で、on clickedの場合theObjectはボタンだぞ?
on clickedより先に中身知りたいならwill finish launchingでインスタンス呼べば良いんじゃないの?
>>217 でもっと混乱しておる。aとbのスクリプトが同じプロジェクトにあるならなんもせんでもインスタンス共有してるじゃん。
ばらばらに書くほうがめんどいと思うのだが?
219216:2008/12/15(月) 16:11:44 ID:J3odUKcK0
え〜っとですね…………。

on clicked theObject

で呼ばれるスクリプトが a.applescript だったとしますよね?
よく分からないですが、多分ボタンをクリックすると a.applescript を読み込んで
インスタンス化し、そのスクリプトオブジェクトの clicked 関数を呼んでる訳ですよね?

そのスクリプトオブジェクトを事前に知りたい………と言ったらおかしいかもしれないですが、
要するに a.applescript 内での "me" と b.applescript 内での "me" ってのは違ってきちゃう
訳じゃないですか。

もっというなら、最初に起動した時に呼ばれてる awake from nib の時の me ってのを
clicked 内から呼びたいんですが、伝わってますかね………。

グローバルで定義しとけばいけるのかな〜と思いきや、ファイルが違うと global の範囲も
そこで区切れてしまうらしく、以下の様な呼び出しができませんでした。

(続く...)
220216:2008/12/15(月) 16:13:00 ID:J3odUKcK0
(a.applescript)
global MainScript

on awake from nib theObject
set MainScript to me
end

on test (theValue)
display alert (theValue)
end

(b.applescript)
global MainScript

on clicked theObject
tell MainScript to test ("aiueo")
end
221216:2008/12/15(月) 16:54:14 ID:J3odUKcK0
連投になってしまってすみませんが、

ttp://homepage.mac.com/tkurita/scriptfactory/Monologue/GlobalVariable/index.html

ここを参考にまずは a.applescript の MainScript を property として
b.applescript を global に定義してみたのですが、うまくいきませんでした…。

Nib からのイベントハンドラの時だけスコープがおかしいんでしょうか。
222名称未設定:2008/12/15(月) 17:43:37 ID:F/y6zi1v0
何がしたいのか良くわからないけど、値を取得したいなら、
普通は一つのスクリプトに纏めるべき何では?
どうしてもスクリプトを分けるなら、適当なオブジェクトに
値を埋め込んで取得するとか。
223216:2008/12/15(月) 18:06:40 ID:J3odUKcK0
>>222
できれば、一つのウィンドウは一つの .applescript ファイルに、という形でまとめたかった
んですよね。一つのファイルにごちゃごちゃ入ってると見にくいし…。

当初適当なオブジェクトに最初の me をつっこんでおこうと思ったのですが、全ての
.applescript から絶対的に呼べる所が分からなかったので、ダメでした…。
何かうってつけのオブジェクトなど、ありますか?
224名称未設定:2008/12/15(月) 23:29:47 ID:vbtDqJru0
毎回load script命令で読み込んでみたら?

225名称未設定:2008/12/15(月) 23:57:42 ID:5awCoNJ20
> on clicked theObject
>
> で呼ばれるスクリプトが a.applescript だったとしますよね?
> よく分からないですが、多分ボタンをクリックすると a.applescript を読み込んで
> インスタンス化し、そのスクリプトオブジェクトの clicked 関数を呼んでる訳ですよね?
>
> そのスクリプトオブジェクトを事前に知りたい………と言ったらおかしいかもしれないですが、

うん、それはおかしいな
イベント発生時にどのスクリプトのハンドラが呼ばれるかは Interface Builder 使って自分で設定するんだから、
事前に知りたいも何もない

仮に以下の様に設定したとする

button "A_btn" of window "A_win"
-> AppleScript タブで「a.applescript」と「action-clicked」を選択

button "B_btn" of window "B_win"
-> AppleScript タブで「b.applescript」と「action-clicked」を選択

この場合、button "A_btn" を押すと「a.applescript」の「on clicked」が呼ばれ、
逆に button "B_btn" を押すと「b.applescript」のの「on clicked」が呼ばれる

んで、厳密にはウィンドウじゃなくてボタンレベルだけど、これでやりたい事は解決できんじゃないの?
226名称未設定:2008/12/16(火) 00:26:15 ID:M9H7jOFz0
MacOS10.5.5です。
bookmarksフォルダにある全てのファイルについて、スポットライトコメントをリスト形式で得たいのですが、上手くいきません。よかったら教えてください。

set aRootFolder to "Macintosh HD:Users:hoge:Bookmarks"

tell application "Finder"
activate
tell folder aRootFolder to set aFileList to name of every file
repeat with aThisFile in aFileList
tell aThisFile to set aCommentList to (get comment of aThisFile as list)
end repeat
end tell

aCommentListの中には以下のようなものが入っているようです。コメントではなくファイル名が入ってしまっているようです。(ScriptDebuggerによると)
note of item 2 of {
"ほげ.webloc",
"ふが.webloc"
}
227216:2008/12/16(火) 00:29:49 ID:2FbCdVtl0
>>224
それでは毎回別のスクリプトオブジェクトが生成されてしまうのでダメだと思います…。

>>225
ボタンクリックによって呼ばれるスクリプトを指定できるのは分かりますが、
スクリプトオブジェクトを指定できないのが困りものなのです………。

多分、言いたい事が伝わってないですね。すみません。
本当に説明が難しくて…。色々やっているうちに AppleScript のバグじゃないかと
思ってきたんですが…。クリックなどのハンドラ内では global な値はそもそもが
いじれない気がします。
228名称未設定:2008/12/16(火) 00:41:27 ID:Q0LU9beE0
>>227
「AppleScript Studioでスクリプト分割に影響されない形でアプリケーション
グローバルが使いたい」ってことじゃないの?
だったらuser defaults使えば? これなら保存も効くし。
229名称未設定:2008/12/16(火) 00:57:28 ID:HLbSKQnW0
>>227
失礼、違ったか
そもそもスクリプトオブジェクトが出てくる辺り全く意味わからんので、俺程度ではもう無理だな

> クリックなどのハンドラ内では global な値はそもそもがいじれない気がします。
バグか仕様か知らないけど、イベントハンドラ 内で定義した変数は例えトップレベルで global や property 宣言してあっても、
イベントハンドラ内ではローカル変数扱いだった気がする

>>228の言うuser defaultsを使うか、UI内の値にするとか、
スクリプトの外側に求めるしか無いんじゃないかな
230216:2008/12/16(火) 01:06:46 ID:2FbCdVtl0
>>228
やっぱり最終的にそうなっちゃうんですかね。
実はさっき諦めてそういう形にしました。

なんか不便ですねぇ(^_^

>>229
おぉ!そうなんですか。
そういう仕様だったんですね………。
231名称未設定:2008/12/16(火) 02:01:58 ID:LE4/gpv90
>>226
>tell folder aRootFolder to set aFileList to name of every file
「ファイル名」そのもの取得しちゃってる。name of はいらない。

>repeat with aThisFile in aFileList
>tell aThisFile to set aCommentList to (get comment of aThisFile as list)
>end repeat
繰り返して追加するなら最初に
set aCommentList to {}
としておいて
repeat内に
set end of aCommentList to comment of aThisFile

一気にやるなら
set aRootFolder to "Macintosh HD:Users:hoge:Bookmarks"
tell application "Finder"
set aCommentList to (comment of files in folder aRootFolder) as list
end tell

自分のトコTigerなので違ったらゴメン
232名称未設定:2008/12/16(火) 02:35:02 ID:LE4/gpv90
あ、よく見たらカッコもas listもいらんかった。
>>226のスクリプトの頭の数行でファイル名をリストとして取得できてるんだから
name ofをcomment ofに変えるだけでOKだね。

set aRootFolder to "Macintosh HD:Users:hoge:Bookmarks"
tell application "Finder"
activate
tell folder aRootFolder to set aCommentList to comment of every file
end tell
233名称未設定:2008/12/16(火) 09:19:04 ID:G3m1InAp0
>>232

ありがとうございます、上手くいきました。示唆に富むレスを頂き、ありがとうございます。
234名称未設定:2008/12/16(火) 21:56:13 ID:sc3SpK6H0
scroll view の中にある text view のスクロール具合を指定したいのですが、
どうすればできるでしょうか? 要するにテキストが追加されると一番下まで
スクロールしたいのですが…。

かれこれ2日ほど悩んでます(;_;)
235名称未設定:2008/12/16(火) 23:02:54 ID:sc3SpK6H0
追記:

scroll to bottom はメッセージを認識できない、と出てしまい、
vertical scroller の float value を 1.0 にしてもスクロールバーだけが移動し、
内容が移動してくれませんでした。
236名称未設定:2008/12/16(火) 23:16:41 ID:sc3SpK6H0
できました!!

http://developer.apple.com/documentation/applescript/reference/studioreference/sr5_control_suite/sr_control.html#//apple_ref/doc/uid/20011219-ASKControlViewSuite.Commands.Scroll

ここによると、scroll to bottom とかはまだ正確にサポートされていないとの事で、
以下のコードでできました。

set theLength to length of (contents of (text view "xxx" of scroll view "xxx" of window "xxx") as string)

--スクロール
tell text view "xxx" of scroll view "xxx" of window "xxx"
 call method "scrollRangeToVisible:" of object it with parameter {theLength, theLength}
end tell
237名称未設定:2008/12/18(木) 14:11:24 ID:3s+aMYPz0
>>203

オートメタースレより
もういらんかな?
290 名前: 名称未設定 Mail: sage 投稿日: 2008/12/12(金) 15:43:26 ID: DrSmwv6L0
バラのPDFを一個にしたりしてる。
238名称未設定:2008/12/18(木) 23:02:48 ID:vAyDBqey0
>>237
>バラのPDFを一個にしたりしてる。
これは複数のPDFファイルをひとつにまとめるって意味じゃないかな?

Safari以外のツールを使っても良いなら、シイラには[1枚のPDFで出力]ってメニューがあるから使えるかも。
あと、同じHMDTのCoralだと、コマンドラインでURLを与えてpdfオプションを付ければ、
一枚で出力される。ただ、高さの計算がおかしいみたいで、ソース落として手直しが必要かも。
239名称未設定:2008/12/22(月) 01:14:24 ID:YcErVovj0
AppleScriptを使って、たとえば12月分のiCalイベントの項目をテキストに書き出す、
というのはやり方を見つけたのですが、これを普通のテキストではなくて、
ics形式で書き出す方法をご存知の方はおられませんか。
あるカレンダーのある期間のものだけ、イベント名をすべて変更して
かつメモ欄に同一文をつけ足してから別のMacのiCalへ持っていきたいので
ただのテキストへ書き出すのではちょっと使いにくいのです。
240名称未設定:2008/12/22(月) 04:58:21 ID:JbjbTgRh0
普通に「ファイル-書き出し…」で ics 形式で書き出せるけど?

ちなみに第2文以降は簡単にAppleScriptでできた.
ただし,親カレンダーを変更するのはわからなかったから,あらかじめ対象の
イベントを書き出し対象のカレンダーに移動しておいてね.
241名称未設定:2008/12/22(月) 14:53:42 ID:meU4MAq/O
うちではその方法では、12月分だけとかは書き出せないなあ
カレンダー内のすべてのイベントが書き出されてしまう
242名称未設定:2008/12/23(火) 15:34:06 ID:4qnl3VEI0
>>241
うん、だから12月分のイベントは別カレンダーに移動して、移動した先のカレ
ンダーを書き出す、ってことじゃない?

ちなみに、イベントの移動ってのは自動でやるのは結構大変(同じプロパティ
を持つイベントを作成するという形になる)
243239:2008/12/23(火) 16:11:34 ID:Xd5k/12X0
239です。質問の意図がわかりにくかったようですみません。
AppleScriptによって一番自動化したいのは、「12月分のイベントをics形式に書き出す」
という部分です。現在の使い方だとそこを手動でやるのではあまりメリットがないので
質問させていただきました。そこ以外はできるというのは把握しています。

現状は、すべてのイベントが書き出されたicsファイルを、LightWayTextで開いて
LightWayTextのマクロ機能で一気に処理しているのですが、不要な部分を取り除くのに
だんだん時間がかかるようになり、ここを改善したいというのが目的です。
AppleScrpitでこういった形で書き出せてしまえば、LightWayText(私の環境ではやや不安定)の
マクロを使わなくても、そのままAppleScriptで処理できてしまうので、いまより便利になるな、
という公算でした。

必要な部分だけ別のカレンダーへ移動して、というのは、あまり考えていませんでした。
まず、ダミーのカレンダーを作ってそこで処理を行い、最後にそれを削除して終わる、ということですよね。
うーん、ちょっと考えてみます。ありがとうございました。
244名称未設定:2008/12/23(火) 17:35:12 ID:4qnl3VEI0
>>239=243
ここを参照して、普通のイベントに対応できるようにすればいいんじゃね?
ttp://blog.deadbeaf.org/2006/07/15/
245名称未設定:2008/12/25(木) 15:33:22 ID:6FISXrhM0
data utxtを使ってユニコード16進数から文字を出すことは可能ですが、
逆に文字からユニコード16進数を出すことはできますか?
246名称未設定:2008/12/25(木) 20:27:58 ID:lRBhhS9Q0
>>245
set slct to "字"
set unihex to do shell script "echo " & quoted form of slct & "| iconv -f UTF-8 -t UTF-16 | perl -pe '~s/([^?w ])/¥"%¥".unpack(¥"H2¥", $1)/eg;' | sed s/$'%0a'// | sed s/'%'//g | sed s/feff// | sed s/$'00'//"

自己レスで考えてみたけど、スマートじゃないね・・・。
perlがよくわからないので
247名称未設定:2008/12/26(金) 02:24:46 ID:pDJlSCTf0
>>245
>108 ので10進とって16進に変えたら?
248名称未設定:2008/12/26(金) 09:41:34 ID:JIlTPKw20
>106 の逆。decからhex
set decNum to id of "亜" --leopard only
set hexNum to do shell script "ruby -e 'p " & decNum & ".to_s(16)'"
249名称未設定:2008/12/26(金) 12:20:08 ID:E9x+Te7w0
246ですが、tigerなのでidは使えないのです。
で、5桁の文字にも対応するようにちょっと改善

set unihex to do shell script "echo " & quoted form of slct & "| iconv -f UTF-8 -t UTF-32 | perl -pe '~s/([^?w ])/¥"%¥".unpack(¥"H2¥", $1)/eg;' | sed s/'%'//g | sed s/0000feff000// | sed s/$'0000000a'//"
250名称未設定:2008/12/26(金) 22:34:33 ID:foTzQ6520
個人的に以前 id of 同等機能をTigerでやる必要があった時には、
hexdumpとprintf使って無理矢理やったな

perlで出来るんならそっちのが万倍早そうだけど
251名称未設定:2008/12/26(金) 23:05:19 ID:+dIEzKNr0
set theText to "漢字あいうアイス123abc☆○abc"
set hexString to do shell script "perl -e 'use Encode qw(from_to); $t = $ARGV[0]; from_to( $t, q{utf-8}, q{utf-16} ); $t =~ s/(.)/unpack(q{H2}, $1)/ge; print $t;' " & quoted form of theText
log "hexString:" & hexString
log "date utxt:" & (run script "«data utxt" & hexString & "» as Unicode text")

feffはそのままでもutxtで戻せる気がするけど消した方がいいのかな?
252名称未設定:2008/12/30(火) 18:31:49 ID:I5OBkT890
しかし、do shell script を多用するなら、もとのスクリプトをそっち (sh/perl/ruby 等)
で書いて、Apple Event の部分だけスクリプトブリッジを使ったり osascript で
呼んだ方がよかったりして。

パフォーマンスとかによってはそれでも AppleScript メインで書いた方がいい場合も
あるのかもしれないけど....
あるいは、AppleScript を純粋にスクリプト言語として見た場合の優位性ってある?
253名称未設定:2008/12/31(水) 03:31:04 ID:Mm1sm4sY0
対応アプリケーションの制御 かな

OS 10.5から
#!/usr/bin/osascript
で始まる、コマンドラインで実行できるAppleScript書けるようになったから
他のスクリプト言語との親和性を高めようとはしてるのかなと思う
254名称未設定:2008/12/31(水) 11:11:52 ID:Ozabx93y0
自分の場合,入出力がGUIでできて,簡単に.app形式のアプリにできる,という点が大きい。
一般人に使ってもらうためのちょっとしたツールを作るには,ターミナルを見せないことが望ましいからね。
255名称未設定:2008/12/31(水) 16:08:22 ID:b2MY+RQ70
他のアプリとの連携はASの優位性だと思うが,あまり活用してアプリを作る人はいない。
(DTP系とか一部のソリューションをのぞいてね)
256名称未設定:2008/12/31(水) 18:29:43 ID:oTst3lHO0
自分用に作るAppleScriptはそれが多いんだけど、
それは一般性があるわけじゃないから公開はできなかったりします。
257名称未設定:2008/12/31(水) 18:40:05 ID:AjDOZHKY0
デバッガが本人の資質だったりするからな。
おのずと規模がでかいと手間取るし、作る気もなくなる
258名称未設定:2008/12/31(水) 19:03:18 ID:Sltoo2eV0
>>255
AppleEventでアプリ制御する場合はC++でごりごり書いちゃうね。
AppleScriptだとUnicode処理とか細かい所がうまく書けない。プロトタイピングや
テスト時はAppleScriptも使う。
>>257
ScriptDebugger
259名称未設定:2009/01/01(木) 06:26:57 ID:gq08o8Xj0
AppleScript の良さは、
本来自分がやるべき単純作業をコンピュータにやらしてらくちんできること
使用頻度の少ないものでも採算がとれるケースが他の言語に比べて圧倒的に多いこと
おおよそなんでもできること ←ちょっと語弊があるか、要はできる奴にやらせるということ
260名称未設定:2009/01/01(木) 13:11:38 ID:r11gX/B20
>>252
>AppleScript を純粋にスクリプト言語として見た場合の優位性
かなり自然言語に近い。
でもこれ英語を話す人じゃないとメリットじゃないんだよね。
261名称未設定:2009/01/01(木) 14:53:29 ID:g3+YIBVs0
でも、tell application "Finder" to activate
って、toの前後が逆のような気がする(日本語の語順っぽいから、日本人的にはOK)。
262名称未設定:2009/01/01(木) 16:37:25 ID:/KkdaRW00
>>261
そう、Mac の操作は「このファイル」を「コピーする」で日本語的。
英語は「コピーする」「このファイル」なんだよね。
263名称未設定:2009/01/01(木) 17:51:51 ID:yGgn93fb0
自然言語に近いっていうことは英語ネイティブにとってどんな利点があるのかな?
いろんな表現を許す自然言語から離れて、文法的な曖昧さのない人工言語で
プログラミングができるほうが、英語ネイティブにとってもいいんじゃないかと思っちゃうんだけど…。
どんな表現でもこちらの意図をくんでインタープリタが機械語に変換してくれるんならいいけど、
結局はこうじゃないと通じない、っていうのが決まってるわけだしね。

>>261
この場合の to はプログレッシブ英和でいうところの「状態境遇の変化の結果」
ってやつで、これはこれで自然な英語なんじゃないかな。
sing a child to sleep|歌を歌って子供を寝かせる

>>262
最初の本格的な GUI を搭載したパソコンとして Macintosh が発売されたときに、
まずマウスで操作の対象となるアイコンを選択してから、メニューで「コピー」という操作を選ぶ、
というのがオブジェクト指向だとか言われていたみたいだね。
264名称未設定:2009/01/01(木) 19:06:18 ID:ckwdD4I/0
「何を」「どうする」の順で操作するのがオブジェクト指向的だったんじゃないか?
マウスでアイコンをクリックしてからコマンドを選択する。
対象となるアプリを指定してから動作内容を記述するのはちゃんと伝統に則っていはいるように思われる。

ところで,AppleScript日本語について誰も言及しないのはなぜだ。

265名称未設定:2009/01/01(木) 19:27:30 ID:fMNW6y3O0
日本語でスクリプト書いてる人ってどれくらいいるんだろうね
何一つメリットが思い浮かばないんだけどさ
266名称未設定:2009/01/01(木) 20:14:26 ID:gq08o8Xj0
>>263
書く方はそうだろうけど
読むのは楽だよ
267名称未設定:2009/01/02(金) 02:22:25 ID:sK+2ziH80
>>263
>まずマウスで操作の対象となるアイコンを選択してから、メニューで「コピー」という操作を選ぶ、
>というのがオブジェクト指向だとか言われていたみたいだね。
つかそれこそオブジェクト指向だけど。
Cの言語仕様の一つがオブジェクト指向とか勘違いしてないよね?

>>264
オブジェクトに指令を出すとその指令をどう実行するかはそのオブジェクト自身が知っているという事。
表層はオブジェクト指向だけど内部的にはオブジェクト指向的。
268名称未設定:2009/01/06(火) 17:29:19 ID:7WvgjDPx0
コマンドラインでのオペランドの並び順はバラエティにとんでるからねえ。
CP/Mの時のPIPコマンドとMS/DOSでは逆だったじゃない。

>>267
>オブジェクトに指令を出すとその指令をどう実行するかはそのオブジェクト自身が知っているという事

知らないメッセージは処理しようがないわけで、それはオブジェクトに限らずプログラム一般に言えそう
だから、継承という考え方も加えとかないといかんのじゃない?

初代Macのオブジェクト指向風って、smallTalkで書かれたaltを模したってところじゃないかな。
269名称未設定:2009/01/06(火) 17:39:55 ID:9hT81oaU0
>>268
知らないメッセージは発行自体が出来ない。何ができて何ができないかはオブジェクトを選択したときの
メニューに反映される。

つかオブジェクト指向の概念の本とかみんな読まんのね。有名な部長と秘書の話とか。
実装ってサブセットに縛られ過ぎ。
270名称未設定:2009/01/06(火) 17:45:50 ID:x9TH+iw90
>>264
以前、AppleScriptを日本語で書くというのがとにかく嫌だった。
なんでこんな馬鹿なことをさせるのかと腹が立った。
プログラムはある法則で書かざるを得ないんだから、そのルールは嫌でも覚えなければならない。
それが自然な日本語に近いかどうかより、覚えやすく、書くのが楽なほうが余程良い。
おまけに国依存のソースコードになる。(勿論内部では同じ扱いになるということは承知しているが)
そういう意味では英語(というよりアルファベットかな)のほうが遥かに分かりやすく能率がいい。
OS Xで、やっと英語が標準になってホッとした。
271名称未設定:2009/01/06(火) 19:25:04 ID:O1FFwiLj0
日本語でしか AppleScript を書けなかった俺が通りますよ…
272名称未設定:2009/01/06(火) 21:07:21 ID:clcxNgKA0
>>270
純粋に好奇心で聞くんだが、「以前」はどうしてわざわざ日本語で書いていたの?
273名称未設定:2009/01/06(火) 21:14:48 ID:k8xAJtIz0
>>272
AppleScriptでゼンマイびゅんびゅん!! のソースが日本語だったから。
274名称未設定:2009/01/06(火) 22:47:07 ID:Lek/xeGZ0
>>268
> smallTalk

Smalltalkはこれで一語だからtを大文字にするのはヤメれって口をすっぱくしているのに
その上わざわざSまで小文字にするってどんだけ嫌がらせだよ。w
275名称未設定:2009/01/06(火) 23:08:01 ID:podRJ9OX0
AppleScript日本語が出る前からAppleScriptを書いていたから,今でも英語。
276名称未設定:2009/01/07(水) 08:30:53 ID:2paAUfaL0
>>274
おお、まさに小言。
277名称未設定:2009/01/07(水) 09:11:51 ID:NmRz++hy0
>>274
Cocoaプログラマならそうしたくなるなw
278名称未設定:2009/01/07(水) 09:25:59 ID:7Pev0izK0
>>276
うまいこと言うなきみぃ
279名称未設定:2009/01/07(水) 10:06:57 ID:Tr3RL5ZE0
>>273
なるほど。理解。
あの本の(せい|おかげ)で日本語で使ってた人を「ショーダー」と呼ぶことにしよう。
280名称未設定:2009/01/12(月) 01:10:40 ID:AhGlsvAA0
以下,LeopardのTerminalで動作することは確認しています。

perl
$_='Yaeeeh!';
if (/Yae+h!/){print "マッチしました。\n";}

このPerl文をdo shell scriptで実行させるためには,どうやって書くのでしょうか。
281名称未設定:2009/01/12(月) 16:40:31 ID:1vC0p+Pe0
>> 280
自己レス。Perlはまだよくわからないので,デリミタで行うことにしました。
282名称未設定:2009/01/12(月) 22:41:08 ID:X7CbqN+90
>>280
このスレでも少しググればでてくるし、飽食ぎみって感じもあるが。知りたい人もいるかもしれないし。
set myText to "Yaeeeh!"
set searchText to "Yae+h!"
do shell script "perl -e '$hoge = ¥"" & myText & "¥" ; if ($hoge =~ /" & searchText & "/){print ¥"マッチしました。¥n¥";}'"
log result
283名称未設定:2009/01/12(月) 23:20:53 ID:Px3IuVgW0
284名称未設定:2009/01/13(火) 00:23:10 ID:oDBl1TKn0
    じゃあラーメンタイマーの仕様定義するからよろです。

    ・ラーメンの待ち時間の長さ&商品によって異なる味の変化をデータベース化
     例:商品Aでは4分で「麺のふにゃふにゃ感が芽生えはじめる」
       というような情報に基づき柔軟に味を調節可能
     データベースは、ある設定でラーメンが出来たら、感想フォームを表示、
     ここに感想を入力していくことでオリジナルのデータベースが出来あがっていくという仕組み。
     さらに、TCP/IP通信でこのデータベース情報を交換できる。

    ・ラーメンが出来るまでの時間をミニ格闘対戦ゲームで潰せる「時間があっというまに経つね」機能
     TCP/IP通信で、ロビーをデディケートサーバーで提供できるような感じで。

    ・ラーメン作成回数・日時・商品情報から、ラーメンにおける摂取カロリー計算や
     嗜好分析などを行える統計機能つき。
     この統計から、「おすすめの新作カップメン」みたいな情報も表示できる。

    タイムリミットは明日の6時までに適当なアプロダで。

285280:2009/01/13(火) 00:26:58 ID:MBIFafNT0
>>282
前ににたようなこと教えてもらったのだけれど,Perlの難解さに挫折。
でも,今作っているスクリプトがどうしても正規表現が必要になってきたので,
再度やってみたけど,やっぱり挫折。

正規表現すらまだ満足に使えてないので,またまた挫折。do shell script 上での
Perlの書き方もわかりにくくまた挫折。操作対象の文字が複雑なので,デリミタでは
やれることに限界がみえて,今作っているスクリプトはやめてしまいました。

とまあ,チラ裏はそのぐらいにして。ありがとうございました。
286名称未設定:2009/01/13(火) 00:54:29 ID:CwEaS6FN0
>>285
こう分解すればわかるか?
perl -e
$hoge = ¥"Yaeeeh!¥" ;
if ($hoge =~ /Yae+h!/){
print "マッチしました。¥n";
}
これの2行目以降をシングルクォートで囲んで、中にあるダブルクォートをエスケープしただけ。
全然むずくないよ。がんば。

>>284
スレ違い。ASじゃなくてAIRの人に頼みなさい!!!
287名称未設定:2009/01/13(火) 01:37:12 ID:CwEaS6FN0
2行目エスケープ文字が残ってたな。

iPhoto整理してて、写真クリック、コンテクストメニューからGoogleMap。とかしたら撮影場所思い出しやすいなと。
で、Geoタグを取得したく寝る前の暇つぶしにさわってたのだが、iPhotoに無いし。プレビューはAS対応してないし。
Image Eventsにあるかな?と思ったがなさそうだ。
どっかにある?AS+標準ソフトでは無理?perlのモジュールはあったけど、なんか使うの悔しいし。
Cocoaにある?あったらrubyから呼べるのか?もう寝なくては。だれか教えて。
288名称未設定:2009/01/13(火) 02:58:57 ID:E9SxCmsI0
Perl内部のクォートはq//とかqq//に置き換えておいた方が、
エスケープでややこしくなんないと思う
289名称未設定:2009/01/13(火) 03:03:44 ID:FJi280aN0
>>287
まだ販売開始されてないけどiPhoto '09ならGeoタグ系統のAS対応あるかも。
290名称未設定:2009/01/13(火) 03:19:24 ID:FqSFhcGA0
perlのExifToolならコマンドライン版もあるよ。
ASからのExif読み出しで使ったことある。
291名称未設定:2009/01/13(火) 10:09:24 ID:tb6yNxsD0
Perlが難解。。。まあ魔法使いにはなれないってこったな。その方が正常至極。
まあ嫌いでも馴れなくても、入り口くらいには立っておいた方が便利と言えば便利。
292287:2009/01/13(火) 12:35:26 ID:VJtXyZsK0
>>290
perlライセンス調べてないけど、さすがにパッケージの中にいれたらだめでしょ?
それに友達とかに配る時ソースで渡したいし。そこで、何々をインストールして。ってのは不格好だから。
iPhoto'09に期待だね。ExifToolのを一応発表しとく(細かい処理やってない)
--http://www.sno.phy.queensu.ca/~phil/exiftool/index.html ツールはここに
tell application "iPhoto"
set hoge to selection
set tarImage to image path of item 1 of hoge -->複数選んでたら最初だけ
end tell
set tarImage to quoted form of tarImage
set GPSLatitude to do shell script "exiftool -b -GPSLatitude " & tarImage
set GPSLongitude to do shell script "exiftool -b -GPSLongitude " & tarImage
set gpsUrl to "http://maps.google.com/?q=" & GPSLatitude & "," & GPSLongitude & "&spn=0.05,0.05&t=h&om=1&hl=jp"
tell application "Safari" to make new document with properties {name:"GeoTag", URL:gpsUrl}
293名称未設定:2009/01/13(火) 22:47:12 ID:v0LdsXek0
phpで書いてみたというか他のソースのコピペだけどバックスラッシュ地獄になってしまった
10.5で特にphpをいじった記憶は無いのでOS標準状態で行ける気がするが詳細は不明。
自分で撮った対応画像が無いのであってるかよくわかりませんがネットで拾った画像ではそれっぽかった。
set theFile to "/Users/hoge/Desktop/Download/geotag1.jpg"
-- http://www.google.com/codesearch/p?hl=ja#jDlm4b6TORk/map/mapItemEdit.inc&q=GPSLongitude%20exif_read_data
set theGPSData to do shell script "php -r '
@$exif = exif_read_data($argv[1], 0,true);
if (!empty($exif)){
foreach ($exif as $key => $section) {
if ($key ==\"GPS\") {
$deg = explode(\"/\",$section[\"GPSLatitude\"][0]);
$min = explode(\"/\",$section[\"GPSLatitude\"][1]);
$sec = explode(\"/\",$section[\"GPSLatitude\"][2]);
$Glatitude = $deg[0]/$deg[1] + ($min[0]/$min[1])/60 + ($sec[0]/$sec[1])/3600;
$Glatitude = ($section[\"GPSLatitudeRef\"]==\"N\") ? $Glatitude:-$Glatitude;
$deg = explode(\"/\",$section[\"GPSLongitude\"][0]);
$min = explode(\"/\",$section[\"GPSLongitude\"][1]);
$sec = explode(\"/\",$section[\"GPSLongitude\"][2]);
$Glongitude = $deg[0]/$deg[1] + ($min[0]/$min[1])/60 + ($sec[0]/$sec[1])/3600;
$Glongitude = ($section[\"GPSLongitudeRef\"]==\"E\") ? $Glongitude:-$Glongitude;
echo \"$Glatitude,$Glongitude\";
}
}
}
' " & quoted form of theFile

if theGPSData is not "" then
set gpsUrl to "http://maps.google.com/?q=" & theGPSData & "&spn=0.05,0.05&t=h&om=1&hl=jp"
open location gpsUrl
else
beep
end if
294280:2009/01/14(水) 00:57:06 ID:38Iaw+vJ0
>>286
その例でなんとなくわかっても,また表現が変わるとグダグダになってしまうので
どうしようもないです。正規表現の強力さはエディタ利用で実感しているので,
なんとかしてPerlを覚えたいと思っていますが,先は長そうです。

わざわざレス,ありがとうございました。
いい加減チラ裏なので,この話題はこれで終わりにします。
295287:2009/01/14(水) 09:42:55 ID:YSbRwTRb0
>>293
動いた。私もPHPいじった記憶ないから標準で実装だね。
解析させていただきますのだ。ありがと。って仕事しなきゃ。昼休み迄お預け。
296名称未設定:2009/01/14(水) 12:32:19 ID:SEtVNCW60
Tiger以降ならSpotlightが集めたメタデータ使えば良い。
on GPSData(aFile)
set aPath to quoted form of POSIX path of aFile
set latitude to do shell script "mdls -name kMDItemLatitude -raw " & aPath
if latitude = "(null)" then return ""
set longitude to do shell script "mdls -name kMDItemLongitude -raw " & aPath
if longitude = "(null)" then return ""
return latitude & "," & longitude
end GPSData
297287:2009/01/14(水) 13:14:31 ID:Wr//aTFN0
>>296
こんなコマンドがあったなんて。持ってるコマンドリファレンスに載ってない。買い替えなきゃ
とググってみたらトップヒットサイトにまたびっくり。すごく詳しい。プログラムって奥が深いです。もっと勉強したい。
>>288さんのアドバイスに従って>280を例に書き直してみました。知らなかった。読みやすいです。ありがとう。
do shell script "perl -e '$hoge = qq(Yaeeeh!) ; if ($hoge =~ /Yae+h!/){print qq(マッチしました。¥n);}'"
298名称未設定:2009/01/14(水) 17:29:45 ID:U/ibqIqB0
Latitudeの数値の見方がよくわからないけど
do shell script "mdfind '(kMDItemLatitude < 52.509) && (kMDItemLatitude > 52.505)'"
な感じで近場の画像を検索できたりするのかな?
299名称未設定:2009/01/14(水) 23:36:02 ID:h4QfYTHv0
>>298
できるよ。スマートフォルダ化もできる。
検索式(Raw Query)の書き方はSpotlightスレも参照
300名称未設定:2009/01/15(木) 00:55:41 ID:agfBod760
>>299
おおできますか。
いろいろ楽しいことができそうだと思ったけど
よく考えたら家の中でねこしか撮ってなかった…。
GPS内蔵デジカメも出てるらしいし次ぎデジカメ買うときは注目の機能かな。
301名称未設定:2009/01/15(木) 23:23:15 ID:N8kGJ0Ww0
iTunesにMP4動画を追加し、追加した動画に関して各種パラメータをいじるスクリプトを書きたいと思っています。
いろいろとググって以下のようなコードを書いて、動かしているのですが、うまく動作しません。
2行目の「set path to "/temp/tempfile.MP4" as POSIX file」で、
「expression、property または key form など があるべきところですが end of line が見つかりました。」
なる構文エラーが出力されるのですが、何が不足しているのかよくわかりません。
UNIX方式のパスの書き方では登録できないのでしょうか?

tell application "iTunes"
set path to "/temp/tempfile.MP4" as POSIX file
set track to add path
set video kind of track to "TV show"
set episode number of track to "1"
set show of track to "showname"
set name of track to "title"
end tell
302名称未設定:2009/01/16(金) 00:26:28 ID:UZxMSevB0
本当に2行目でエラーになってるんだとすると、
登録云々以前に2行目の記述自体に問題があるって事かと

POSIX file は単なるパス変換で実体は無くても通った様な気がするが、
手元にMac無いので確認できねぇ
303名称未設定:2009/01/16(金) 00:27:07 ID:C2NBMgdQ0
304名称未設定:2009/01/16(金) 00:33:39 ID:Rbk7ZgH40
>>301
set thePath to POSIX file "/temp/tempfile.MP4"
とかじゃないか
305名称未設定:2009/01/16(金) 01:42:24 ID:UZxMSevB0
例えばこれはエラーになるが
tell application "System Events" to POSIX file "/temp/tempfile.MP4"

こっちは通ったりする
tell application "System Events" to "/temp/tempfile.MP4" as POSIX file

逆のパターンてあるのかな
306名称未設定:2009/01/16(金) 08:57:32 ID:mdKHS71/0
301です。
>>302-305 さん
回答ありがとうございました。
結論としては304さんの記述を真似たところ、通るようになりました。
おかげでffmpeg変換->iTunes登録が一本のスクリプトで動かせるようになりました。
ありがとうございました。
307名称未設定:2009/01/16(金) 11:33:27 ID:ALiEqpIp0
GraphicConverterで表示されてるフォルダーをbrowser表示するツールバースクリプトを作っています
とりあえず動くのですが、フォルダー名が長い場合、browser表示できません
どうやらパス中のフォルダー名が32バイトを越えるとダメなようです
これはGraphicConverter側のバグでしょうか?
308名称未設定:2009/01/16(金) 11:39:04 ID:ALiEqpIp0
あ、日本語がおかしかった
表示されてるフォルダーをGraphicConverterのbrowserで表示するツールバースクリプトです
短いので載せておきます
tell application "Finder"
set current_folder to the target of the front Finder window as text
tell application "GraphicConverter"
activate
browser current_folder
end tell
end tell
309名称未設定:2009/01/16(金) 19:16:53 ID:LzojrXFi0
>>308
as textをas aliasにする
310名称未設定:2009/01/16(金) 22:08:38 ID:ALiEqpIp0
>as textをas aliasにする
うう、お恥ずかしい
ありがとうございました
311名称未設定:2009/01/16(金) 23:02:01 ID:ISGkwbF40
>301
MPEG Exporter TNGでも使っていた方が楽だわ。
312名称未設定:2009/01/16(金) 23:15:35 ID:UZxMSevB0
>>301は単純に path が予約語なだけだったな
やっぱり1行ずつ確認しないとダメだわ
313名称未設定:2009/01/16(金) 23:26:11 ID:eiQgVAbqi
>>311
なるほど。こういうツールもあるんですね。
でも今回の場合は、既に独自の命名規則で管理している動画が沢山あったので、自分で作ったわけです。
今後はこう言った物で管理するのも検討してみようと思います。
314名称未設定:2009/01/17(土) 00:03:41 ID:VYFyvu8o0
時報を鳴らすスクリプトを作ってるのですが、肝心のサウンドを鳴らす方法が見つかりません。
UNIXコマンドも探しましたがなさそうです。なにか良いアイデアはありませんでしょうか?
315名称未設定:2009/01/17(土) 00:06:11 ID:fqNr3t6F0
316名称未設定:2009/01/17(土) 00:08:14 ID:OZOiX+nk0
>314
旧OSではサウンドファイルをFinderに開かせるだけで良かったんだけどねえ。
Speech Managerでしゃべらせたら?

317名称未設定:2009/01/17(土) 00:13:33 ID:k4VFz9wf0
>>314
>171
音が長くて途切れる場合はsleepの後の数字を増やせば良さそう
318名称未設定:2009/01/17(土) 00:15:30 ID:fP/WNXTo0
319名称未設定:2009/01/17(土) 00:19:18 ID:OgROf3fA0
>>314
do shell script "say e mah nanji death car"
320名称未設定:2009/01/17(土) 00:26:47 ID:cP+1OOSR0
say "Yoh ji death yo-da"
321名称未設定:2009/01/17(土) 00:59:50 ID:Bs9oVMGd0
>>314
/usr/bin/afplay
一々process起こすのも大げさなので標準OSAXにもCoreAudio使った
サウンドプレーヤがあるべきですな。
322名称未設定:2009/01/17(土) 01:10:11 ID:D6PwfetK0
>>314
>>171のような方法もある。
323名称未設定:2009/01/17(土) 01:10:27 ID:VYFyvu8o0
>旧OSではサウンドファイルをFinderに開かせるだけで良かったんだけどねえ。
>Speech Managerでしゃべらせたら?
68K時代から使っているサウンドファイルがあるんです。これがないとMacって感じがしないほど
なんで標準はサウンドファイル不可で不気味なものいれたんだろう。
諦めてサウンド再生だけコマンドラインCommand Line Utilityで作ってみます
324名称未設定:2009/01/17(土) 01:32:08 ID:VYFyvu8o0
>321
ありがとうございます。やっぱりUnixコマンドであったんですね
325名称未設定:2009/01/17(土) 15:03:23 ID:OZOiX+nk0
>321
Tigerにはなさそうなんだが。
326名称未設定:2009/01/17(土) 16:37:50 ID:OZOiX+nk0
>323
とりあえず,そのサウンドファイルの中身は再圧縮なしでQuickTimeまたはAIFFに変換できるはずだから,
将来に備えて変換しておくといいと思うよ。
リソースを使ったサウンドファイルは将来のディスクフォーマットで記録できなくなる可能性がある。
変換にはQuickTime Proを使うよろし。

327名称未設定:2009/01/18(日) 00:26:05 ID:tAw7Ee/A0
>326
System7SoundFileと認識されているのですが、QuickTimeProでは開けませんでした
変換にはSndSamplerというシェアウェア(無課金でも変換可)を使いました
328名称未設定:2009/01/18(日) 14:35:03 ID:obx8kJEO0
>>327
>System7サウンド
QuickTimeでは無理。
でもご安心あれ。iTunesで変換できるよ。
329名称未設定:2009/01/21(水) 22:13:39 ID:oHuMxTGK0
フォルダーアクションって使っている方いますか?
あれって一体なにに有効なのかさっぱりイメージできない
330名称未設定:2009/01/21(水) 23:30:03 ID:n7Q3devI0
フォルダにドロップされたファイルを処理
331名称未設定:2009/01/21(水) 23:33:44 ID:fg4RodSA0
>>329
FAXを受信したらプレビューで開くってのを仕込んである。
332名称未設定:2009/01/22(木) 02:11:28 ID:bnJBd1zX0
>>329
実際に使ってるワケじゃないけど
LAN内でファイル共有し合って作業してるときに
パブリックフォルダに何か送られてきたらメッセージ出すとか。
送り元が分かると更に便利に、安全になるんだけどねぇ

ファイルに対してわざわざ処理しようと思って実行するんだったらドロップレットの方が確実だから、
他人がトリガーになるような使い方とか
自分の自然な行動(作業)内に含まれるファイルの移動に組み込める内容なら有効に使えそう。
333名称未設定:2009/01/22(木) 08:26:17 ID:aqEDA+4F0
>>329
FAXを受信したらGrowlのメッセージが表示されるように仕込んである
334名称未設定:2009/01/22(木) 14:45:46 ID:fvb5r/TD0
>>329
スクリーンショットを取ったら自動的にプレビューで開くようにしてる。

後は>>332のと同じように共有フォルダにファイルを受信したら
Growlでメッセージを表示するようにしてある。
335名称未設定:2009/01/22(木) 15:04:07 ID:/Vfvtq050
Leopardになってフォルダアクションがすぐに反映されないので
リアルタイムに必要な物には使いにくくなった。
しかもうちでは何故か動かない時があるし。
336名称未設定:2009/01/22(木) 22:52:32 ID:XSycLvZ60
誘導されてきました。

repeat
delay 15 * 60
activate
beep

delay 5 * 60
activate
beep
end repeat

15分→5分→15分のエンドレスでアラームがなるスクリプトで、
特に繰り返しの回数は決めてないんですが何かのキーを押したら終了とかという風に
設定するにはどうしたらいいでしょうか?
スクリプトエディタから起動して終了じゃなくてアプリケーションで保存して使えるようにしたいです。
アドバイスよろしくお願いします。
337名称未設定:2009/01/23(金) 00:30:27 ID:g8GHY3vb0
>>336
ソフトさがしスレからきた人だね。

on idle
activate
beep

delay 15 * 60
activate
beep

return 5 * 60
end idle

これで「実行後、自動的に終了しない」にチェック入れて保存したら、
強制終了じゃなくて普通に終了できるよ。
音だけ鳴ればいいんだったら activate はなくてもいいんじゃないかな?
アラートも表示させるんだったらあったほうがいいだろうけど。
でも起動してしょっぱなに意味のないビープ音が鳴っちゃうのがスマートじゃないね。
なんとかならないかな?
俺はしろうとに毛が生えたようなもんなんで、他のベテランの人たちの回答も待ってね。
338名称未設定:2009/01/23(金) 01:28:55 ID:op5j6dQK0
アプリケーションとしての保存は保存形式でどーとでもなるが、
キーを押したら終了ってのはスクリプトエディタでは難しいね

妥協点としては return か esc ぐらいしか使えないが、
display dialog の giving up after を使う方法とか

on run
repeat
activate
display dialog "停止を押すと終了します" buttons {"停止"} default button 1 giving up after 15 * minutes
if button returned of result is "停止" then quit
beep
activate
display dialog "停止を押すと終了します" buttons {"停止"} default button 1 giving up after 5 * minutes
if button returned of result is "停止" then quit
beep
end repeat
end run
339名称未設定:2009/01/23(金) 01:43:46 ID:op5j6dQK0
ちなみに起動直後の idle ハンドラ回避は、property か global を上手く使えば可能
起動直後と終了直前にフラグを反転させればいい

property theFirst : true

on idle
if theFirst then
set theFirst to false
else
if |継続条件| then
--継続時の処理
else
--終了時の処理
set theFirst to true
quit
end if
end if
return *
end idle
340336:2009/01/23(金) 02:48:37 ID:I5W2QyB50
ありがとうございます。
キーを押したら終了じゃなくても全然かまいません。
>>338-339のスクリプトで試してみたのですが、うまくいかないのは保存形式が悪いんでしょうか?
>>339のダイアログの停止ボタン押したらそこでループしてしまって、
ダイアログまた表示されてしまいます。
341名称未設定:2009/01/23(金) 03:04:13 ID:g8GHY3vb0
338さんのはスクリプトエディタで終了ボタンを表示する方法じゃないかな
342名称未設定:2009/01/23(金) 03:30:51 ID:I5W2QyB50
なるほど。

338さんのやり方で十分だったので使わせてもらいますw
みなさんありがとうございました。
343名称未設定:2009/01/23(金) 03:31:58 ID:g8GHY3vb0
ああ、ごめん。
>>337はdelayしてる間は普通に終了できないね。強制終了しないと。
returnで待ってる間は普通に終了できたから勘違いしちゃった。
ごめんよ。
344名称未設定:2009/01/23(金) 03:39:06 ID:I5W2QyB50
そうなんですか?
最初やったときは終了できなくて、
もう一度やったら終了できたんでいいかなーと思ったんですがw
345名称未設定:2009/01/23(金) 03:53:58 ID:g8GHY3vb0
うん。俺いま実力ないのに口出して冷や汗かいてるわ。
でも>>339のアドバイスを参考にこういうふうに直してみた。

property theFirst : true
on idle
activate
beep
if theFirst then
set theFirst to false
return 15 * 60
else
set theFirst to true
return 5 * 60
end if
end idle

こんどはいけるんじゃないかな!
本当は>>339のアドバイスは、起動直後に意味のないビープ音を
鳴らさない方法を教えてくれてるんだと思うんだけど、
そっちのほうはちゃんと理解できなかった…。
それでその部分はそのままになってる。

全然関係ないけど、シフト押しながらアップルメニューをクリックしたら、
そのときにアクティブになってるアプリの強制終了メニューが表示されるの知ってた?
346名称未設定:2009/01/23(金) 04:17:46 ID:I5W2QyB50
いけますね!
ありがとうございます。

リンゴのマークの強制終了から消してました。。
ありがとう!
347名称未設定:2009/01/23(金) 22:35:51 ID:iEiQKZr90
on reopen
if button returned of (display dialog "Beepタイマーを終了しますか?" buttons {"キャンセル", "終了"} default button 2 giving up after 15) is "終了" then quit
end reopen

を追加しておくと,起動中のDockアイコンをクリックすると終了ダイアログを出せる。
うっかりダイアログを出しても,15秒後に解除される。
タイマーはその瞬間にリセットされてしまうけど。
348名称未設定:2009/01/23(金) 22:47:30 ID:vlisoeNa0
VLCでクリップボードにあるURLをOpenURLで開こうとしてるのですが、なにをやってもうまく動きません・・・
どのように書いたらうまくいくか教えていただけないでしょうか?
よろしくお願いします。
349名称未設定:2009/01/23(金) 22:54:52 ID:oyAQpv4q0
可能?
350名称未設定:2009/01/24(土) 00:59:10 ID:dHrVx5iw0
>>345は飽くまでも「起動直後の idle ハンドラを回避する」という一般的な話として書いたものだよ
>>338の様なダイアログで代用する方法なら、idle を使う必要は無かったから

んで reopen は使ったこと無いのだけど、>>347を参考に、こんな方法も考えてみた
キーボードではなく Dock アイコンをクリックする事で終了のトリガーとする

property theCount : 0

on idle
set theCount to theCount + 1
if theCount > 1 then beep
if (theCount mod 2) is 1 then
return 15 * minutes
else
return 5 * minutes
end if
end idle

on reopen
set theCount to 0
quit
end reopen
351名称未設定:2009/01/24(土) 01:01:15 ID:dHrVx5iw0
1行目訂正…

>>345は飽くまでも「起動直後の idle ハンドラを回避する」という一般的な話として書いたものだよ

>>345
>>339は飽くまでも「起動直後の idle ハンドラを回避する」という一般的な話として書いたものだよ
352名称未設定:2009/01/24(土) 01:40:53 ID:XrB8hENy0
アップルスクリプト作ったはいいが、そのアイコン探しに毎回時間がかかる
大抵のアイコン集がディスク系や既存有名アプリ系、フォルダー系なので
それのどれでもない日常品とかそういったアイコン集って案外少ないね
353名称未設定:2009/01/24(土) 01:41:19 ID:xaoZ6Etd0
>>329
テキストクリッピングをデスクトップに作成した時に、特定のフォルダに移動
する
354名称未設定:2009/01/24(土) 02:12:57 ID:R4DkHcSF0
>>329
フォルダを開く行為にも使える

on opening folder open_folder
set pass to "password"
tell application "Finder"
set win to window 1
set ans to display dialog "パスワードを入力して下さい" default answer ""
if (text returned of ans) is not pass then
close win
end if
end tell
end opening folder>>329
355354:2009/01/24(土) 02:14:09 ID:R4DkHcSF0
あー最後のアンカー無視して
356名称未設定:2009/01/24(土) 02:27:00 ID:C7l3u5Cn0
おもしろい
357348:2009/01/24(土) 07:34:13 ID:9pufTnQG0
>>349
あれ
不可能ってことでしょうかorz
358名称未設定:2009/01/24(土) 14:37:43 ID:iuhMERsp0
>>348
VLC で OpenURL をやると、そのまま再生されるのではなく
「再生一覧」のところに登録されるようになってるようだけど。
359名称未設定:2009/01/25(日) 15:32:49 ID:tJVbHTew0
なあ、applescriptを勉強しようと思うんだが、
どの辺から始めれば良い?
htmlぐらいしか触った事がないんで、右も左も分かんねぇ…。

始めたきっかけとか、とっかかりはこうしたとか、
教えてくれるとありがたい。
360名称未設定:2009/01/25(日) 15:42:08 ID:fTmccVMX0
最初はQuickTime Proの書き出し機能が無料版でもAppleScriptからなら使えると聞いたのがきっかけだったかな..
あとは用語説明と実際のサンプルスクリプトを読みまくった感じ。
http://piyocast.com/as/
がアプリケーションごとに整理されていて参考になる。
英語OKなら↓が公式のGetting Started Guide。
http://developer.apple.com/referencelibrary/GettingStarted/GS_AppleScript/index.html

今はまあ基礎のレベルは突破したかなという感じ。
まだオブジェクトの扱いとか謎なところはかなり多いけれど。

最近Cocoaに浮気中(といってもまともに時間取れないけど)。
361名称未設定:2009/01/25(日) 16:32:24 ID:tJVbHTew0
>>360
サンキューだ…。とてもありがたい。
参考URLもブックマークに登録しといた。
で、今はどっかの入門篇見て、試行錯誤中。
今日一日でどの辺までいけるかなあ。
362名称未設定:2009/01/25(日) 21:20:37 ID:wcrhehAR0
1日じゃ無理だw
クセのある言語だからな。
でも,邪魔な予備知識がないとむしろ飲み込みが早いかも。
スクリプトという名前とは裏腹に,独立したプログラム言語なんだよなあ。

363名称未設定:2009/01/25(日) 22:23:24 ID:CN85++4l0
>>359
とりあえずiTunesとかのスクリプトだと割と身に付くと思う。
構文も一通り使うし。

それまでもちょこちょこ使ってはいたけど、激ハマリしたのは、QTの録音機能
を駆使するようになってからかなぁ。
タイマーで録音を開始し、終了したら録音ファイル名を録音日時と録音内容に
変更したりするスクリプトを書いてみたり。

今はAppleScriptも一通り遊び尽くしたからCocoaを勉強してみようかな。。。
と思ってる。

若干チラ裏スマソ
364363:2009/01/25(日) 22:27:21 ID:CN85++4l0
>>359
参考URL(今でも参考にする)は、
AppleScript Beginner's
ttp://homepage.mac.com/jinjin/applescript
AppleScript PARK
ttp://www.tonbi.jp/AppleScript/
かな。あとは>>360のように、やっぱり用語説明だな。連書きスマソ
365348:2009/01/25(日) 22:32:01 ID:9PuEB+lJ0
>>358
そういうことなのですね。ありがとうございます。
このあとにPlayをしてみたんですが、やはりうまくいかないですね。。。
今はとりあえずキーストロークで書いてるんですが、0.8.6にしか効かず、新しいバージョンに対応したいなぁと思っていたのですが、なかなか難しいようですね。
366名称未設定:2009/01/25(日) 23:13:55 ID:tJVbHTew0
お前ら優し過ぎだよ…うぅ;;
iTunesか…分かった!基礎が身に付いたら初めにそこで試行錯誤するよ!
時間は凄くかかるけど、俺もAppleScript→Cocoa→Xcodeってな感じで進みたい…。
行く先は絶壁ばかりの難関のようだけど、
少しでも進めば、そこで見える光景は今と全く違うんだろうな…。
早くみんなに追いつきたいぜ。
じゃあ、スレ汚しはこの辺で。本当にありがとう。

>>364
早速ブクマ登録した
367名称未設定:2009/01/25(日) 23:14:19 ID:CN85++4l0
>>348
次のスクリプトはダメ?
---
tell application "VLC"
OpenURL (the clipboard)
next 1
end tell
---
0.9.8で動作確認。
要は、再生するオブジェクトの参照をつけてやっただけなんだけど。
playでなく、nextとしたのも、ある意味ポイントかも。
368名称未設定:2009/01/25(日) 23:19:48 ID:g4VQsUPX0
097〜9の頃のAppleScriptって今より記録ボタンで記録できる範囲がひろくて
それがおもしろくて使い始めた
OSXになってから泣いた
369名称未設定:2009/01/25(日) 23:24:09 ID:d8T6lSiO0
AppleScriptなんてつらいだけだけどなあ。
いつもAppleScriptで作り始める。ASStusioを使う。パフォーマンスその他の理由で
そのままobj-Cに移行って感じで、まともなもの作ろうとすると基本的にobj-Cに行っちゃうな。
配列が異様に遅いのが決定的。

AppleScriptを使う場面っていうと、デリミタのみでいじれる軽いものとか、言語のみでIllustratorに
絵を描かす(これは便利だ)とか。
370名称未設定:2009/01/25(日) 23:27:57 ID:fTmccVMX0
でも遊んでて楽しいよな。
371名称未設定:2009/01/25(日) 23:29:46 ID:g4VQsUPX0
他のアプリを操作出来るってのがどうにも楽しいよね
372名称未設定:2009/01/25(日) 23:32:00 ID:CN85++4l0
>>371
同意。

あと、UNIXコマンドに軽いインターフェースを乗せられるのが何気に便利。
373名称未設定:2009/01/26(月) 10:05:39 ID:9LIdtwhI0
>>369
Applescriptのlistは確かに遅いけど、
>>170で使っているようなテクニックを知らない人が多い

150の中の人はどうすればlistに早くアクセスできるか知っている
374名称未設定:2009/01/26(月) 20:30:34 ID:0v2l/cYb0
コマンド+F1を押させたくて
tell application "System Events"
keystroke "F1" using command down
end tell
とやってみたんですが、うまくいきません。
ファンクションキーってどうやって指定すればいいんでしょうか。
375名称未設定:2009/01/26(月) 23:32:59 ID:GQNoX3uA0
key code 122 using command down
でいけると思います(動作未確認)
keycode は.Xmodmapに書かれているコード番号ー8の値を入れれば良いようです

例)ダッシュボードを開く
tell application "System Events"
key code 111 -- F12Key
end tell
376名称未設定:2009/01/26(月) 23:44:42 ID:GQNoX3uA0
あ、選択アプリケーションの別ウインドウを操作対象にするってことか
377名称未設定:2009/01/29(木) 16:12:40 ID:R6pNhmv80
Applescriptに初挑戦のものです。

G5 + OSX10.4.11 に付属している、AppleScriptで試しています。 

1994年の「AppleScript入門」で基礎を読みまして、サンプルをいくつか試しました。

実際に作りたいものの最初のステップは、
・ドロップされたファイルと同一名称のサーバー上のフォルダの名称を、「フォルダ名--x」に変更し、
・ドロップされたファイルを、別のサーバー上のフォルダにコピーする。
です。

でまずはと、デスクトップ上のファイルを、サーバー上のフォルダにコピーするスクリプトを作ったのですが、うまく動いてくれません。

tell application "Finder"
activate
duplicate "++testdata" to foler "A(デスクトップに表示されているボリューム名):B(Aの中のフォルダ)"
end tell

この短い命令が動かず、いきなり途方にくれてます。

どうぞ、よろしくお願いします。
378名称未設定:2009/01/29(木) 16:25:57 ID:2lfbHmya0
実際のスクリプトがダブルクォーテーションの中身以外
まったくそのままなのだとしたら考えられるのは下の点。
1.folderがfolerになっている。
2.コピー元ファイルの頭にfileが無い。

つか、なんてエラーが出てるのかも書いた方がいいよ。
379名称未設定:2009/01/29(木) 17:06:19 ID:R6pNhmv80
>378さん

レスありがとうございます。1&2のアドバイスで無事できまして、ホッ
としました!
foler はとてもはずかしいかったです。質問する前にもっと確認してからにいたします。
次回質問する際はエラーメッセージも書くようにします。
380名称未設定:2009/01/29(木) 21:41:26 ID:Tzux3mwy0
おいおい,うまく動かない以前にコンパイルを通らないだろう。
381名称未設定:2009/01/30(金) 00:32:43 ID:EwmQPhjH0
多分いきなり全文書いて実行したかなんかで、
コンパイルエラーと実行時エラーの区別もまだ付いてなかったんだろうね

初心者にはありがち
382名称未設定:2009/02/03(火) 03:15:17 ID:bokIOKSF0
tell application "Safari"で
ブックマーク画面(すべてのブックマークを表示)を出したいのですが、どうすればよいのでしょうか?
BookmarksMenu??すいません。ご教示願います。
383名称未設定:2009/02/03(火) 03:33:29 ID:VSUkA48gP
>>382
ブックマーク画面へのパスが分からないと言う事ですよね?
URLを開く構文のURLを
"bookmarks://"
に指定すれば開けます。
384382:2009/02/03(火) 03:40:12 ID:bokIOKSF0
>>383
早速ありがとうございましたヽ( ^∀^)ノ
385名称未設定:2009/02/03(火) 17:17:14 ID:yaURClTN0
Indesign csのスクリプトで、
text frameのテキストの配置を変更する方法は無いのでしょうか?
text frame preferencesのvertical justificationだと思ったのですが、
text frame preferencesはR/Oになっています。
386名称未設定:2009/02/03(火) 23:59:20 ID:wReeK7/00
>>385
自分はCS3しか持ってないけど
行毎にjustificationは変えられるから

tell paragraph 1 of text frame 1 of document 1
set justification to right align
end tell

paragraph 1をparagraphsにすれば全行とか
CSと違ってたらゴメン
387名称未設定:2009/02/04(水) 09:19:55 ID:yUkH0xLC0
>386
すみません。行揃えではなく、ボックス内での配置です。
テキストフレームオプションのテキストの配置の設定です。
388名称未設定:2009/02/04(水) 13:48:51 ID:7mf3xcML0
iTunesとiPhoneの同期ができるようにapple scriptで打ち込んだはいいのですが、
これをキーボードのF19キーにキーボードショートカットで割り当てたいのですが、うまく実行出来ません。
スクリプト自体は打ち込み時に実行して同期が確認出来ましたので、問題はないと思われます。
保存場所と保存形式を確認の意味を込めて教えていただけないでしょうか?
389名称未設定:2009/02/04(水) 16:18:00 ID:tDz4s+YN0
>>387
これですか
tell application "Adobe InDesign CS3"
set vertical justification of text frame preferences of every text frame of document 1 to center align
end tell

390名称未設定:2009/02/04(水) 16:38:07 ID:yUkH0xLC0
>389
おお、これです。
ありがとうございます。CSでもできました。
391名称未設定:2009/02/05(木) 00:00:42 ID:DUIXmIrt0
どのようなキーが含まれているかわからないレコードの、キーの一覧を取得することって出来ますか?
myRecord as listで、リスト化すれば、中身の一覧は取得できるのですが、キーの一覧を取得する方法があれば知りたいです。
392名称未設定:2009/02/05(木) 04:03:46 ID:2fUT2Rv90
377です。

サブルーチンの作り方を教えてもらいたく、またきました。
実行すると、「Can't continue GetFileName.」と表示されます。
on open drop_items
tell application "Finder"
repeat with obj in drop_items
set x to obj as string
GetFileName(x)
set fileName to result
end repeat
end tell
end open

on GetFileName(x)
set npassName to count characters of x
set i to npassName
repeat until i < 1
if character i of x = ":" then exit repeat
set i to i - 1
end repeat
set A to text from character (i + 1) to npassName of x
return A
end GetFileName

アドバイス、よろしくお願いします。
393名称未設定:2009/02/05(木) 06:57:48 ID:rms0EaSc0
my GetFileName(x)

で呼べばええんでないの?
1994年の「AppleScript入門」とやらにも書いてありそうだけど。
394名称未設定:2009/02/05(木) 10:12:42 ID:4dIjcn6u0
Acrobat 7 pro の「文書を比較」を自動化したいと思ってます。
修正前後のPDFを渡して、比較結果をプリントさせたいのですが、
それにはAcrobat SDKが必要なのですか?
ためしに、ダウンロードしてみましたが英文資料で、困ってます。
395名称未設定:2009/02/05(木) 10:20:00 ID:o6VZ5fgvP
>>391
これでできないかなぁ?
>List & Record Tools Scripting Addition
ttp://www.latenightsw.com/freeware/RecordTools/index.html
396名称未設定:2009/02/05(木) 12:02:14 ID:+6eAoqeZ0
>>395
ありがとうございますm(_ _)m 出来ました!
397名称未設定:2009/02/05(木) 21:22:51 ID:r3g1DmqO0
>>394
機械翻訳サイト使え
398名称未設定:2009/02/05(木) 23:20:25 ID:sVZqjkor0
以前にこのスレで質問した事がある者です
最近使った項目を消去するスクリプト

tell application "Finder"
activate
end tell
tell application "System Events"
click menu item "メニューを消去" of menu "最近使った項目" of menu item "最近使った項目" of menu "Apple" of menu bar 1 of process "Finder"
end tell

これを起動項目に入れて使ってるのですが
毎回「NSReceiverEvaluationScriptError:4」が出るようになりました
起動項目に入れずに、起動後に実行するとエラーも出ず問題なく動作します
これはどういった原因が考えられるのでしょうか?
OSは10.4.11です
399名称未設定:2009/02/06(金) 00:13:32 ID:j9l05J/20
ググった方が早そうだけど。

ttp://macosx.com/forums/software-programming-web-scripting/265285-applescript-error-nsreceiverevaluationscripterror-4-a.html
The fix is to turn off Fruit Menu's "Use application icon" option.  とか
ttp://mtlab.ecn.fpu.ac.jp/WSM_2005/050608132452.html
ちゃんと階層を追わないと、NSReceiverEvaluationScriptError: 4になります。 とか
400名称未設定:2009/02/06(金) 00:30:40 ID:GHgYEa9y0
>>392
同じくAppleScriptを勉強している者として別件のレス。

そのソースだとファイルのフリをしたフォルダをドロップした時に
エラーが起きたり,パスのまま表示されたりするから注意が必要。
401名称未設定:2009/02/06(金) 01:02:36 ID:TwTQSaTB0
>>398
click menu item "メニューを消去" of menu "最近使った項目" of menu item "最近使った項目" of menu "Apple" of menu bar item "Apple" of menu bar 1 of process "Finder"

にしてみたらどうかねえ?
402名称未設定:2009/02/06(金) 01:20:38 ID:HZTbiaVw0
377&392です。

>393
どうもありがとうございます。my をつけただけでうまくいきました。

>1994年の「AppleScript入門」とやらにも書いてありそうだけど。
書いてないんです。
僕がつけたサブルーチンの名称がいけないのかな...
403名称未設定:2009/02/06(金) 01:27:10 ID:DBYu8CLZ0
>>402
tell ナントカ 〜 end ナントカ
の間に書かれたメッセージはナントカに送られるのがデフォルトなので、
それ以外のもの(この場合、自分で書いたハンドラ)に送るときには
そのことを明示しないといけない。
そして、「自分で書いた」を簡単にあらわすのが my。

もしtell〜endの中じゃないところだったらmyがなくてもかまわない。
(その場合のデフォルトが自分自身になるので)
でもmyをつけても問題はない。

というわけで、とりあえずは、「自分で書いたハンドラを呼び出すときには
myをつける」って習慣を付けるんでいいと思います。
404名称未設定:2009/02/06(金) 01:49:40 ID:6Ud4QbMP0
>>398
おかしいと思ったら遡るクセを付けよう

良く見ればエラーが
click menu item "メニューを消去" of menu "最近使った項目" of menu item "最近使った項目" of menu "Apple" of menu bar 1 of process "Finder"
ここで発生している事がわかる筈だ

後は文を少しずつ短くしていくか、
menu item "メニューを消去" of menu "最近使った項目" of menu item "最近使った項目" of menu "Apple" of menu bar 1 of process "Finder"

menu "最近使った項目" of menu item "最近使った項目" of menu "Apple" of menu bar 1 of process "Finder"

menu item "最近使った項目" of menu "Apple" of menu bar 1 of process "Finder"

或いは逆に長くしていく
process "Finder"

menu bar 1 of process "Finder"

menu "Apple" of menu bar 1 of process "Finder"

この場合、「menu bar 1 of process "Finder" 」ではエラーにならず、
「menu "Apple" of menu bar 1 of process "Finder" 」でエラーになる事がわかる
つまり「menu "Apple"」が間違い

じゃあ実際そこに何があるのかを調べるにはこう書く
UI elements of menu bar 1 of process "Finder"
すると「menu bar item "Apple"」がある事が見えてくる

後はこの繰り返しで>>401の答えに自力で辿り着けるだろう
405名称未設定:2009/02/06(金) 01:53:10 ID:6Ud4QbMP0
>>404補足

ただしこれはSystem Eventsに限った話という事で、
全部前後に↓が付く
tell applicaiton "System Events"

end tell
406名称未設定:2009/02/06(金) 23:41:20 ID:rXCQ6Lpp0
398です
問題なく動作するようになりました
階層の記述を勉強しなおしてみます
ありがとうございました

もう一つ教えて欲しいのですが
ログイン項目に入れると不具合のあった当初のスクリプトでも
起動後に動かすと問題無く動作するというのは
どういう理由なんでしょうか?
今後も起動時に動作させたいモノがあった場合の参考にしたいもので
407名称未設定:2009/02/06(金) 23:46:14 ID:I+mf8i9v0
>>406
ひとまずそのスクリプトを公開
408名称未設定:2009/02/07(土) 00:01:26 ID:dxI01BKb0
>>407
当該のスクリプトは>>398のになります
スクリプト自体がエラーなものなら、どの状況でもにエラーになるのでは?と思えてしまいまして
もしかしたら自分の固有の環境によるものなのかもしれないのですが
409名称未設定:2009/02/07(土) 00:07:13 ID:S/nzdlk80
考えられるのはログイン時にそのスクリプトが実行される順序の問題かなあ..
該当スクリプトをアプリケーション化してこれ↓で時間差で起動させてみるといいかも。
http://d.hatena.ne.jp/tanemori/20081208/DelayedLauncher
410名称未設定:2009/02/07(土) 19:49:54 ID:t6UihYDj0
ルールでスクリプトを起動するとMail.appが落ちるのですが,同じ症状の人いますか?自分のとこの固有の問題だろうか?
10.5.6 Intel Core 2 Duo、Mail.app 3.5(930.3)です。
以下のスクリプトです。
using terms from application "Mail"
on perform mail action with messages messageList
tell application "Mail"
display dialog "Hello"
end tell
end perform mail action with messages
end using terms from

単に
tell application "Mail"
display dialog "Hello"
end tell
では問題ないです。
411名称未設定:2009/02/07(土) 22:29:26 ID:3ZCqlF3E0
スクリプト作成初学者です。
Applescriptをアプリ形式、自動終了しない形で保存して常駐させてます。
この場合、実行するとドックに表示されたり、アプリケーションの切り替え(⌘+tab)時に
表示されたりする訳ですが、これを表示させない様にするには
どうすれば良いでしょうか?

またこのスクリプトの実行時に毎回、スクリプトを実行するか(Run or Quit)
どうか聞いてくるのですが、これを表示させないようにすることは
出来ませんでしょうか?
ご返答お待ちしてます。
412名称未設定:2009/02/07(土) 23:45:29 ID:dxI01BKb0
>>409
398です
これを使って例のスクリプトを数秒遅らせて立ち上げるとエラーは出ないです
ログイン項目同士での相性ってのがあるのかもしれないですね
413名称未設定:2009/02/08(日) 00:08:41 ID:rX16vSuh0
>>411
> これを表示させない様にするには
俺はこういうユーティリティソフト使っちゃう
http://homepage.mac.com/fahrenba/programs/dockless/dockless.html
> スクリプトの実行時に毎回
保存するときの「初期画面を表示しない」にチェックが入ってない、か
「初期画面を表示する」にチェックが入ってる、かな?(どっちか忘れた)

>>412
それか立ち上がった直後ってGUI Scriptingを受け付ける態勢がまだ
できてなかったりするのかも
414名称未設定:2009/02/08(日) 02:16:21 ID:rWeForWa0
>>411
アプリケーションバンドル内のContentsフォルダ内のInfo.plistファイルに
NSUIElementという項目を作ってやって値を1にするとDockに表示されなくなる。
これはほとんどのアプリケーションで有効だけど開発環境がJava、Qt、REALBasic、GTK+とかのXcode以外のアプリだと有効にならないことがある。

この作業を自動でやってくれるのが>>413のリンク先みたいなソフト。
415411:2009/02/08(日) 12:26:50 ID:n+VNWqmE0
>>413>>414
有り難うございます。早速チャレンジしてみます。
416名称未設定:2009/02/09(月) 01:09:57 ID:4WZjUu4n0
横からだけどサンクス。>>413のソフト知らなかったので。
417名称未設定:2009/02/09(月) 01:30:42 ID:7yoNQIj20
>>412
System Eventsにもactivate入れてみてもダメかな?
418名称未設定:2009/02/09(月) 10:00:15 ID:uyw/qjjy0
こんにちは。
新・macではないのですが、ご存じでしたらお願いします。
OS9.2.2でスクリプト編集プログラムを動かせないのと、OSX10.4.1で作成したスクリプトを実行することができません。
AppleScriptが動作できていないような感じです。
AppleScriptを動作させるには、機能拡張などで必要なものが何か教えてもらえますでしょうか?

ちなみにこちらにあるのは、
スクリプト編集プログラム(J1-1.8.3)
AppleScriptLib(1.1)
CarbonLib(1.6.1)
AppleScript(J1-1.8.3)
です。

他にたりないもの、この組み合わせではダメなどありましたら、アドバイスお願いします。
419名称未設定:2009/02/09(月) 15:01:31 ID:XPR85N1q0
>>418
OS再インストールした方が手っ取り早いし確実
420名称未設定:2009/02/09(月) 22:05:29 ID:PajgxNGs0
標準状態で使えるはずのものが使えない状況を想像することの方が難しい。
適当にシステムの中をいじって壊しちゃったんだな。

421名称未設定:2009/02/09(月) 22:23:21 ID:vuYP+bSc0
>>418
OSの再インストールだよ。
422名称未設定:2009/02/09(月) 22:50:48 ID:SHKnVhck0
1つのスクリプトを9.2.2でも10.4.1でも動かすのは、いろいろ気をつければできるかもね。
半角英数しか使わないとか。
423名称未設定:2009/02/10(火) 00:21:46 ID:MfkdZSVw0
418です。
みなさん、レスありがと。
手っ取り早いのは再インストールですね。
9.1のインストーラ&9.2.1アップローダを用意して出社したのですが、9.2のマシンではインストーラを受け付けてもらえませんでした。は〜
仕事柄、フォントやらなんやらとレガシーな環境にどっぷり浸かってて、簡単には再インストールできないんで、残念無念です。
424名称未設定:2009/02/10(火) 00:45:12 ID:lbO1HTXc0
>>422
両方で動くスクリプトは作れるけど,半角英数はどっちも筋違い。
文字に制限はない。それよりもFinderの仕組みが全然違うとか,他に気を使うところがたくさんある。
425名称未設定:2009/02/10(火) 01:10:57 ID:MBLFe4sO0
>>423
去年の今頃までこのスレで一人OS9でAppleScriptの作成やってましたので,
懐かしくもあり他人事とは思えません。とりあえずAppleScript関連の初期設定
ファイルを捨てて再起動してみてはどうでしょうか。

バージョン1.8.3のものと,そのCarbonLibはOSXのClassic環境からもってきた
ものですよね。うちもそれで動かしてましたので,問題はないと思います。
AppleScriptLib(1.1)は,あってもなくてもどちらでもいいみたいですよ。

インストーラを受け付けてもらえないとのことですが,AppleScript関連の
機能拡張ファイルが欲しいのであれば,Tome Viewerを使えばそれだけを
抜き出せます。
426名称未設定:2009/02/10(火) 09:26:51 ID:dwaMcUh70
418、423です。
おはようございます。

>425さん。
今日、試してみます。ありがとう。m(_ _)m
427名称未設定:2009/02/11(水) 10:46:10 ID:/8iL043f0
べんきょうになりますた。
>ttp://d.hatena.ne.jp/zariganitosh/20090210/1234233639
428名称未設定:2009/02/12(木) 02:18:08 ID:XfGneg7Z0
>>427
勉強になった。紹介してくれてありがとう。またじっくり読んでみる。
429名称未設定:2009/02/13(金) 17:51:35 ID:X6PEsdkV0
知っている人多いと思うが、面白いプログラム紹介
http://www.apple.com/jp/downloads/macosx/imaging_3d/cocoapotrace.html
ラスタ画像をベクタ画像に変換するソフト
UIがAppleScriptで作られてるので、ここにいる人たちなら簡単に・・・でもないが
改良できる。XCodeでのAppleScriptアプリの作り方もよく分かる。
430名称未設定:2009/02/13(金) 19:27:02 ID:Zw0texJL0
>>427
HyperCard思い出すなあw
431名称未設定:2009/02/14(土) 00:18:32 ID:YcJ/wip30
AppleScript Studioって、GUI アイテムのプロパティとかコマンドがXcodeの
辞書に書いてあるということを知れば世界が広がるよね。俺が知らなかっただ
けか…
432名称未設定:2009/02/14(土) 01:08:35 ID:z8F0C/ZG0
俺も最初は AS Studio で世界が広がると思ったけど、
オリジナルの AS との細かい違いで長時間ハマッたり
Studio が必要なほど複雑なプログラムなら Cocoa の方が早いことに気づき…
433名称未設定:2009/02/14(土) 01:34:55 ID:YMQD1jCs0
というか日本でStudioいじってるのってぴよまるさんぐらいじゃないの?
434名称未設定:2009/02/14(土) 01:43:10 ID:r07wwjNu0
単なるInterfaceBuilderだと思えば悪くない。
435名称未設定:2009/02/14(土) 13:12:05 ID:Eibf3qrk0
ASSとASの比較一覧ってどこかにある?
436名称未設定:2009/02/14(土) 16:13:47 ID:EkMgjDr40
尻スペシャルと尻
437名称未設定:2009/02/14(土) 17:05:13 ID:mgRJ7TE10
ASS使うとしても,AS純正の用語しか使うつもりはないなあ。
ASSにはまると使い回しがきかなさそうで。
438名称未設定:2009/02/14(土) 17:06:54 ID:YcJ/wip30
>>437
そんなこと言ってたら何もできない気がする
439名称未設定:2009/02/14(土) 17:41:16 ID:hBlfVeum0
>>431
ASSでソフト作ってるけど知らなかった。
これは役に立ちそうだ。
あと、
using terms from application "Xcode"
end
で囲むと手元のASSのスクリプトがスクリプトエディタでコンパイルできた。
440名称未設定:2009/02/14(土) 19:21:52 ID:yQ8ACLxwP
おまいら下品ですね。


あ、いや、そう言ってみたかっただけです。
441名称未設定:2009/02/14(土) 22:12:54 ID:mgRJ7TE10
>439
で,それは実行できるの?
442名称未設定:2009/02/14(土) 22:38:24 ID:71kHicmX0
>>441
実行できましたがASSアプリのスクリプトだから何も起きません。
今G4で2500行ぐらいのスクリプトを編集してるのですが
Xcodeだとめちゃくちゃ重い時があるので
スクリプトエディタで編集できればいいかなと
思ったのですがXcodeのウインドウ分割のメリットの方が
大きい気がして今のところ利用してません。
ちなみに試しに同じスクリプトのコンパイル時間を計ってみたら
Xcodeが18秒、スクリプトエディタが8秒でした。
443名称未設定:2009/02/15(日) 11:31:58 ID:X5oFpKDQ0
インターフェイスがダイアログディレクター並みになってくれれば
それだけでいいんだがなあ。
444名称未設定:2009/02/15(日) 23:53:04 ID:7AKlIZrQ0
インターフェイスはHyperCard並みになってくれなきゃやだ
445名称未設定:2009/02/17(火) 12:53:35 ID:7/l5dUgl0
pdfファイルをデフォルトでないプリンタを選択してプリントアウトしたいのですが,propertiesの設定の仕方がわかりません。
tell application "Finder"
print "sample.pdf" as POSIX file with properties {target:"INKJET@imac" }-- <-デフォルトでないプリンタ
end tell
上の場合,デフォルトのプリンタで出力されてしまいます。プレビュー.appがうまく、プリンタを選択できてないようなのです。
print "sample.pdf" as POSIX file with properties {target printer:"INKJET@imac" }
とすると(System Eventsにtell?)とすると
『書類"sample.pdf"をプリントのために開くことができませんでした。"スクリプトエディタ"はプレビュー.app Document フォーマットでファイルを開くことができません。』というダイアログが出て無限ループに入ってしまいます。
プリンタの選択方法を教えてください。
446名称未設定:2009/02/17(火) 12:53:46 ID:fbjg39Wf0
詳しい事忘れたけどXcodeだとコンパイル完了出来ない部分を
スクリプトエディタで保存してファイル入れ替えみたいな事とかやってたな
447名称未設定:2009/02/17(火) 14:02:56 ID:Zh80Ur/x0
大量の配列を、NSTableViewに表示させようとして、
今、data sourceに一つずつループで追加してるんですが、
すごい遅いんです。
call methodあたり使って、一括でドンと追加できたりしないでしょうか。
448名称未設定:2009/02/17(火) 14:05:27 ID:UG64q1lP0
Safariでウインドウが一つも開いていないときに何でもいいので
ウインドウをアップルスクリプトで開く方法を教えてください。
どうやっても『&1を取り出すことはできません。』とエラーポップアップが出てしまい、
うまくいきません。
ご教示お願いいたします。
449名称未設定:2009/02/17(火) 15:02:55 ID:30E1YDdG0
>>448
make new document
でどうぞ
450名称未設定:2009/02/17(火) 20:37:08 ID:BsjqPHB20
>>447
もうやってるかもしれないけど
appendするデータはレコードのリストでも大丈夫だから
リストでまとめて渡してappend実行を一回にしたらちょっとはましになると思う
451名称未設定:2009/02/18(水) 06:58:36 ID:/i+Sn36e0
GraphicConverter で、PDFをJPEGに変換するスクリプトを教えてもらえますか?

作りたいのは、Aフォルダに入ったPDFを、自動的にJPEGに変換し、Bフォルダに入れたいのです。

選択したPDFを開くスクリプトはできました。

↓それをデスクトップのBフォルダにJPEGで保存させようと作ったスクリプトです。

tell application "GraphicConverter"
tell window 1
set JPEG quality to 30
set JPEG progressive to true
save in "アカウント〜:Desktop:B:" as JPEG
end tell
end tell

これを実行すると、デスクトップに
アカウント〜/Desktop/B
というJPEGフォルダができます。

どうぞよろしくお願いします。
452名称未設定:2009/02/18(水) 12:54:33 ID:G7YxrSTk0
"アカウント〜:Desktop:B:ファイル名付けて.jpg" は?
453448:2009/02/18(水) 19:16:34 ID:y/5nPWtg0
>>449

早速ご教示ありがとうございました。大変感謝しております。
こういったSafariがらみのスクリプト集といいますか例文ってどこにあるんでしょうか?
Appleのサイト上にはもう既にリンクが死んでしまっていてたどれないのですが…。
454448:2009/02/18(水) 19:33:29 ID:y/5nPWtg0
追加ですいません。
現在Quicksilverと組み合わせて使いやすいマック環境を構築しようと努力をしている日々です。
ここ数日ググりつつがんばっている物の、知識が追い付かず苦戦しております。

目標としている物は、クリップボードにコピーしてある英単語を、
http://eow.alc.co.jp/◎/UTF-8/
◎のところに挿入してSafariで開くと言う物です。
皆様どうかご教示お願いいたします。
455名称未設定:2009/02/18(水) 19:54:15 ID:jLH41gIx0
>>454
ブラウザで開くだけならopen locationが楽
○のところに入れるのは○の前後に文字を足すと楽

open location "http://eow.alc.co.jp/" & (the clipboard) & "/UTF-8/"
456名称未設定:2009/02/18(水) 21:18:09 ID:ixisb50p0
>451
何故ぐらこん?
QuickTime Playerとかのシステム標準のツールを使った方が汎用性が広くないかい?
457名称未設定:2009/02/19(木) 01:53:10 ID:FYxtePeS0
遅いレスですまんが、
>>410
Mail は on perform mail action 以下で display dialog をすると
フリーズするみたい。
なんらかのメッセージを出すなら、ファイル経由で出すしかないようだ。
458名称未設定:2009/02/19(木) 02:11:37 ID:FYxtePeS0
>>454
簡潔なのは >>455 だが、Safari 指定でなんらかのURLを開こうとすると
下記のようになる。
document 1 というような形でブラウザウインドウの指定が必須なので、
ウインドウが開いてなければエラーとなるので要注意。
ちなみに Safari での document 1 とは、最前面のブラウザウインドウを指す。

tell application "Safari"
set URL of document 1 to "http://www.google.com/"
end tell

おまけで Firefox だと下記。Firefox の場合はウインドウ指定は任意。

tell application "Firefox"
OpenURL "http://www.google.com/"
end tell

AppleScript は「指定した URL を開く」という同じ処理でも、
アプリケーションごとに指定方法が異なるから注意。
処理によってはアプリケーションが AppleScript に対応していないことも。
459名称未設定:2009/02/19(木) 02:13:11 ID:dxd9g2MY0
FirefoxってASから叩けたんだ...
3.xからかな?
AS周りはCaminoの方が充実してそうだが。
460名称未設定:2009/02/19(木) 02:28:22 ID:XN/6YGiP0
標準のGetURLイベント使えばどのブラウザでも動くはず。
tell application "なんでも"
<<event GURLGURL>> "http://www.google.com/"
end tell
461名称未設定:2009/02/19(木) 03:10:35 ID:FYxtePeS0
>>460
イベントがあったね、忘れてた。
そしてスクリプトエディタでイベントの直記述してみて、
>>458 をもっと楽に書けることに気づいた…。
実行の度にウインドウがパカパカ開いちゃうのがあんまよくないけど。

【コンパイル前】
tell application "Safari"
ヌevent GURLGURLネ "http://www.google.com"
end tell

【コンパイル後】
tell application "Safari"
open location "http://www.google.com"
end tell

コンパイルすると変換されちゃうのが残念。
でもどうやら、「ヌevent GURLGURLネ」と「open location」は同じ処理みたいね。

ちなみにイベントの記述について、>>460 さんは表示上あえて << >> と
半角大なりと小なりの 2 回で書いているけど、
スクリプトエディタ上は、ヌ と ネ で記述する必要がある。(フォントが Osaka の場合)
↑半角カナの「ぬ」と「ね」です。
462名称未設定:2009/02/19(木) 03:43:42 ID:PVkmz0MG0
451です。
レスありがとう。

>452
やってみましたが、
GraphicConverter でエラーが起きました:フォルダ 不特定のオブジェクト が見つかりませんでした。
というAppleScriptエラーになりました。

>456
PDFをCMYKモードを維持したままJPEGにできればなんでもOKです。
スクリプタブルなもので検索してひっかかったのです。
QuickTime Playerはプロ版をもってないので保存できず、
プレビューがいい感じなのですが、スクリプタブルにする改造?ができてません。

何かいい手はないでしょうか?
463452:2009/02/19(木) 08:55:45 ID:KUTxFZfc0
ありゃま。5.9.5で出来たんだけど。バージョン違うとまた違うのかな。
AutomatorアクションにはRender PDF Pages as Imagesて良さげなものもあった。10.4
464名称未設定:2009/02/19(木) 12:22:46 ID:pWbBVdn90
>>451
tell application "Image Events"
launch
set hoge to open file pdfFile
save hoge in jpgFile as JPEG
end tell
面白そうだし書いてみたが長くなったからキモの部分だけを
imegeEventsのコマンドに関しては用語説明読むべし。set と save の間に挟むだけ。
465464:2009/02/19(木) 15:35:58 ID:pWbBVdn90
あー.......CMYK維持したまま?
ごめんわからん。JPEGにもCMYKあるってのも知らんかった。
ImageEvents だとどーなってるんだろ?ま、ほぼ確実にRGBになってるとおもう。
466名称未設定:2009/02/19(木) 16:02:36 ID:XE9/4O7Y0
SafariでURLを開く方法いろいろ(10.4.11 Safari 3.2.1)

--新しいURLを指定したドキュメントウィンドウで開く
--(ex.ドキュメント 1 のカレントタブに)
tell application "Safari"
set URL of document 1 to "http://www.google.com/"
end tell
--新しいURLを指定したウィンドウの指定したタブで開く
--(ex.フロントウィンドウの一番左のタブ に)
tell application "Safari"
set URL of tab 1 of front window to "http://www.google.com/"
end tell
--open を使う
--Safariの環境設定に従って、新規ドキュメントかカレントウィンドウの新規タブで開く
tell application "Safari"
open location "http://www.google.com"
end tell
--常に新規ウィンドウで開く
tell application "Safari"
make new document with properties {URL:"http://www.google.com"}
end tell
--常に新規タブで開く
--(ex.フロントウィンドウに新規タブで)
tell front window of application "Safari"
make new tab with properties {URL:"http://www.google.com"}
end tell

こんな感じかな?
上でフロントウィンドウを指定してるものは、最前面が
"ダウンロード"ウィンドウだったりするとエラーになるので注意。
除外するのが面倒なんだよな
467名称未設定:2009/02/19(木) 21:28:11 ID:bfwXC6dw0
QuickTime PlayerはAppleScriptから使うとそのままPro版と同じ機能だと思ったけどー
468名称未設定:2009/02/20(金) 01:43:29 ID:KD7wz1li0
>>451
>>452
フォルダ 不特定のオブジェクト〜じゃなくて,ファイル 不特定のオブジェクト〜なら,
パスの区切りを : から / に変更するだけでいいようです。Ver.6.4のグラコンで確認。
469名称未設定:2009/02/21(土) 15:32:38 ID:k0Jn4bRS0
「ことえり単語登録」で直接登録できない品詞は
テキストから読み込めば登録できるわけだが、
それをしやすくするためのスクリプトを書いたみた。
行数が多いんで何回かにわけて書き込みます。
470469:2009/02/21(土) 15:33:39 ID:k0Jn4bRS0
tell application "WordRegister" to launch
display dialog "でんき,電気,普通名詞
たかさ,高さ,普通名詞
ゆだ,ユダ,人名
たなか,田中,姓
いちろう,一郎,名
むらさきしきぶ,紫式部,その他の人名
かりふぉるにあ,カリフォルニア単純地名
いりのいしゅう,イリノイ州,接尾語付き地名
あっぷる,アップル,組織名
ふぁいんだー,Finder,その他の固有名詞
べんきょう,勉強,サ変名詞
じゆう,自由,形動名詞
わが,我が,連体詞
たいした,たいした,連体詞
がたがた,ガタガタ,副詞
がたがたと,ガタガタと,副詞
しかし,しかし,接続詞
まあ,まあ,感動詞
さす,指す,五段動詞
とぶ,飛ぶ,五段動詞
みる,見る,一段動詞
うける,受ける,一段動詞
さっする,察する,サ変動詞
あんずる,案ずる,ザ変動詞
471470の続き:2009/02/21(土) 15:34:38 ID:k0Jn4bRS0
うつくしい,美しい,形容詞
しずか,静か,形容動詞
へいせい,平成,数字列接頭語
さま,さま,人名接尾語
ぐん,郡,地名接尾語
おんちゅう,御中,組織名接尾語
えん,円,数字列接尾語
きをみてもりをみず,木を見て森を見ず,成句
おんぷ,♪,無品詞
こんま,¥",¥",無品詞
だぶるくぉーと,¥"¥"¥"¥",無品詞
スペース,” “,無品詞" default answer ",,"
set theWords to text returned of result
472471の続き:2009/02/21(土) 15:35:27 ID:k0Jn4bRS0
do shell script "ruby -rnkf -e 'print NKF.nkf(¥"-w16B -xm0¥", $*[0])' " & quoted form of theWords & " > ~/Desktop/j_i_s_h_o_t_o_r_o_k_u.txt"
tell application "WordRegister" to activate
tell application "System Events"
tell process "ことえり単語登録"
click menu item "テキストや辞書から取り込む..." of menu "辞書" of menu bar 1
end tell
delay 0.1
keystroke "d" using command down
delay 0.1
keystroke "j_i_s_h_o_t_o_r_o_k_u.txt"
delay 0.1
keystroke return
end tell
473名称未設定:2009/02/21(土) 15:44:20 ID:k0Jn4bRS0
あ、以上です。
474名称未設定:2009/02/21(土) 16:20:08 ID:Pn8FTPOT0
評価環境、使用法くらい書けばいいのに
475名称未設定:2009/02/21(土) 16:27:44 ID:4G3ITV8D0
使用方法はスクリプトエディタで実行以外に何があるんだ?
あとことえりはTigerとLeopardでほとんど変わってない気がするから基本どちらでも行けそう。

でも一つだけ質問。
display dialog~以下の各品詞ごとの羅列の部分を実際に登録したい単語列に入れ替えるの?
このスクリプトだとその情報を抽出してRubyでテキストファイルをユーザーのデスクトップに作成しそのファイルをベースに辞書登録を行うようにしか見えないが....
476名称未設定:2009/02/21(土) 17:14:43 ID:k0Jn4bRS0
ごめんね
ムービーを書き出す片手間に書いてたもんだから使い方書くの忘れてた。

display dialog 以下のずらずらっと書いてあるのは記入例です。
ダイアログにこの記入例が出るので、それを参考にして下の入力欄に

 読み,登録したい単語,品詞

の順に書き込んで
OKを押してください。
「ぐぐる,ググる,五段動詞」みたいな感じで。

Rubyは生成するテキストファイルのコードを
(念のため)UTF-16にするのに使ってるだけです。
ASだけでも同じことはできるんだろうけど
ファイルアクセス使うのが何か面倒で…。

ちなみにうちの環境はLeopardね。
俺はスクリプトメニューに入れて使ってるけど
もちろんアプリケーションとして使ってもOK。
477名称未設定:2009/02/21(土) 17:32:12 ID:4G3ITV8D0
もしかしてスクリプトの中の¥は¥だったりする?
やたらとエラーが出ると思ったらそのせいか。
478名称未設定:2009/02/21(土) 17:32:47 ID:4G3ITV8D0
訂正
もしかしてスクリプトの中の¥はバックスラッシュだったりする?
479名称未設定:2009/02/21(土) 17:43:34 ID:4G3ITV8D0
どうやっても
こんま,",¥",無品詞
だぶるくぉーと,¥"¥"¥"¥",無品詞
の部分でコンパイルエラーになるんだが...
480名称未設定:2009/02/21(土) 20:41:34 ID:47MMjVt00
10.5.6で
"/Library/Scripts/Folder Action Scripts/Image - Duplicate as PNG.scpt"
を特定のフォルダにフォルダアクションとして設定しているんだけど
多数(10個以上程度)一度にフォルダに入れると途中で止まってし
まいます。
特にエラーが起きている風もないんだけど、、、

481479:2009/02/21(土) 20:56:17 ID:4G3ITV8D0
ひとまず
こんま,",¥",無品詞
だぶるくぉーと,¥"¥"¥"¥",無品詞
の2行を削除して残りの¥をバックスラッシュになおしたら動いた。
あとdefault answerのあとの",,"の部分は", ,"の方が分かりやすいな。
私見だが。
482名称未設定:2009/02/21(土) 20:58:31 ID:k0Jn4bRS0
>>478
いろいろ説明不足ですまん……
その通り。
¥は半角バックスラッシュに直してね。
483名称未設定:2009/02/21(土) 21:10:49 ID:k0Jn4bRS0
>>481
送信が一足遅かった…

>あとdefault answerのあとの",,"の部分は", ,"の方が分かりやすいな。

そういやその部分の半角スペースは無視されるんだよね。
そのことを忘れないためにもその方がいいかも。。。
まあ細かいところはお好みで。
品詞ごとの例とかもね。
上のやつはことえりヘルプの中のをほぼそのまま使ってるけど、
あの部分に何を書こうと動作は変わらないから
わかりやすいように直して使ってください。
484474:2009/02/22(日) 11:42:50 ID:h259Mcwl0
俺のレス否定したくせにごちゃごちゃ質問したり実行に手間取ったり
元スクリプトに意見したりすなボケ死ね

って激しく思った
485名称未設定:2009/02/22(日) 19:06:16 ID:PonWBSMG0
そうですか
486名称未設定:2009/02/22(日) 19:29:43 ID:d37E2LC/0
そうですとも
487名称未設定:2009/02/23(月) 04:54:46 ID:arfcVvPz0
iTunesに、iPhone/iPod touchのアプリケーションのアップデートを確認させるコマンドって用意されていませんでしょうか?

ポッドキャストの更新なら、updateAllPodcasts でいけるのですが、アプリの場合がわからなかったもので。

よろしくお願いします。
488SideTrash:2009/02/24(火) 22:03:30 ID:39UR9TzU0
日本が誇るおまいらの叡智で、Paolo Portaluri 氏の疑問を
解消してやることはできませんか。

http://work.to.it/software/sidetrash/index-en.html

重要:"SideTrash"にエイリアス(またはsoft-link)をドラッグすると、
Important: if you drop an alias or a soft-link onto SideTrash icon,
エイリアスではなくオリジナルのファイルがゴミ箱に移動してしまいます。
the original file will be trashed and not the alias.
この問題の解決策をご存知の方は教えてください。
If you know how to solve this issue, please contact me.
"SideTrash"の本体は、以下のようなAppleScriptです。(続く)
489SideTrash:2009/02/24(火) 22:04:01 ID:39UR9TzU0
(続き)
----------------------------------------------
on open of fileList
tell application "Finder"
set volumeKind to kind of the startup disk
repeat with oneFile in fileList
if (kind of oneFile) as string is equal to volumeKind then
eject oneFile
else
move oneFile to trash
end if
end repeat
end tell
end open

on run
tell application "Finder"
activate
try
--- go to trash
set target of Finder window 1 to trash
on error error_message
--- new window with trash
open trash
end try
end tell
end run
----------------------------------------------
--- Written by Paolo Portaluri
490名称未設定:2009/02/24(火) 23:02:57 ID:qAaIgqFJ0
画像のエリアスをプレビューにドロップしたら画像が開いてくれないと困るでしょ?
そーゆーこと。

ぐぐれかすーって言っておいてあげて。

on open
tell application "Finder"
set fileList to selection
set hoge to item 1 of fileList
move hoge to trash
end tell
end open

こんな感じでとったらどう?
何に使うのか理解してないけど、普通にrunハンドラの中に書いて、
コンテクストメニューに当てたほうが使いやすいんじゃないかな?
491名称未設定:2009/02/24(火) 23:59:07 ID:Fnd+h1Hw0
>>490
selection使うと、
無条件に最前面ウインドウ内で選択中のオブジェクトが捨てられるので危険かもよ。
492名称未設定:2009/02/25(水) 01:48:59 ID:/rpDFEA/0
>>488
ほう、こういう仕様になってたのか。
on open of fileList
の時点で fileList にはオリジナルのファイルの方が
収められちゃってるんだね。
じゃあその後の部分でどうこうしても意味無いな。

Studioでドラッグ&ドロップに対応したアプリを
作ってみたことがあるんでそれで試してみたけど、
ウィンドウにドロップした場合はエイリアス自体が、
アプリケーションアイコンにドロップした場合は
オリジナルのファイルが得られるようだ。
493名称未設定:2009/02/25(水) 09:23:28 ID:jLfLEwug0
>>491
ドロップレットってことは選択してアプリに落とすんだよ?意図してやってるのに危険もなにも無いでしょ。
それこそゴミ箱の存在が危険になるよ。

昨日はオープンハンドラに脊椎反射してしまってカキコしたけど、今ソース読んでみた。
フィルタリングして特定ファイルを処理してるんかと思ったら。これってただのゴミ箱じゃん?
なんでわざわざ書くんだろ?ゴミ箱使うかコマンドdeleteか右クリックすりゃよいのに。
494名称未設定:2009/02/25(水) 09:41:07 ID:WBXil1uZ0
サイドバーやツールバーに置くゴミ箱。と言うことだね。
30intかデュアルモニタ、ワンボタンマウス、ショートカット嫌い。こういう人向でしょ。
495490:2009/02/25(水) 09:58:43 ID:xHE/Cs8B0
>>491
あーーー、意味解った。こりゃヤバいね。どしよ?
仕事終わったらマジもっかい取り組む。
496名称未設定:2009/02/26(木) 13:47:16 ID:/Pl7kI450
ドロップレットにしないでフォルダアクションにすればいいんじゃない
on adding folder items to this_folder after receiving these_items
tell application "Finder"
repeat with aItem in these_items
delete aItem
end repeat
end tell
end adding folder items to
497名称未設定:2009/02/26(木) 13:55:34 ID:/Pl7kI450
あー フォルダアクションだと
>>489はできないか
498名称未設定:2009/02/26(木) 13:56:28 ID:8z5uiXZ30
いつも参考にさせてもらってます。
以下のコードをどうすれば動くのかアドバイスをお願いします。

やりたいことは、入力した文字列を含むフォルダを、検索して、その中のファイルをコピーする、です。
setのところですでに引っかかってしまってます。

tell application "Finder"
activate

display dialog "製番を入力してください" default answer ""
set seiban to text returned of result

--前回製番のフォルダがあるかどうかチェック
set seibans to every item of folder "P-job" of folder "output" of disk "Genera" that (seiban as text) is in name

display dialog (count seibans)
repeat with obj in seibans
set tgtFile to file "0001-Top.JTF" of folder folder -1
duplicate tgtFile to folder "HFRoot:Oce-2:"
delay 5
end repeat
end tell
499名称未設定:2009/02/26(木) 18:05:58 ID:H0HZqmsc0
>>410さんと似たような質問なのですが、Mail.appのルールに設定するスクリプトに関して質問です
特定のメールに関して自動返信したいのですが以下のスクリプトでは何の反応もありません
using terms from application "Mail"
on perform mail action with messages theMessages for rule theRule
tell application "Mail"
repeat with theMessage in theMessages
set aReply to reply theMessage opening window yes
save aReply
end repeat
end tell
end perform mail action with messages
end using terms from

repeatの中をサンプルのAppleのウェブサイトを表示するやつに差し替えるとちゃんと表示されるのですが・・・
メールの中身に応じて返信の文章を加工したいのでMailの返信機能よりもスクリプトを使いたいと思ってます
対策というか正しい書き方がわかる方がいらっしゃいましたらご教示ください
500名称未設定:2009/02/26(木) 21:45:43 ID:tf6yrkdf0
>>493
selectionは最前面のウィンドウでの選択項目を指しているけど、
Finderアイテムをドラッグする場合ってそのウィンドウが必ずしも最前面とは限らないんだよね
>>491の指摘はそういう意図かと

という事を踏まえてドロップアイテムとFinderのselectionを無理矢理合わせる方法は思いついたんだが、
その方法では結局エイリアスファイルには対応できないので意味が無い…

全ウィンドウのselectionを回収してエイリアスファイルが無いか確認すれば可能かもしれないけど、
フォーカスがぐるぐる回るのはあんま実用的では無いよねぇ
501名称未設定:2009/02/27(金) 02:31:09 ID:aglmUdik0
>>498
自分で解決する方法も憶えた方がいい

エラーになったところより後ろは全部省いて、エラーになったところは更に分解する
さてどこでエラーになるのかな

disk "Genera"
folder "output" of disk "Genera"
folder "P-job" of folder "output" of disk "Genera"
every item of folder "P-job" of folder "output" of disk "Genera"
every item of folder "P-job" of folder "output" of disk "Genera" that (seiban as text) is in name
set seibans to every item of folder "P-job" of folder "output" of disk "Genera" that (seiban as text) is in name
502名称未設定:2009/02/27(金) 02:43:02 ID:aglmUdik0
てゆーかこっちか?

> set tgtFile to file "0001-Top.JTF" of folder folder -1

folder folder -1 ってコンパイル通る?
503名称未設定:2009/02/27(金) 03:35:32 ID:EFQWo3vf0
>>496
>repeat with aItem in these_items
>delete aItem
>end repeat

ここは単に

delete these_items

でいいんじゃない?
にしても面白い変数名の付け方するね。
504名称未設定:2009/02/27(金) 10:07:34 ID:cnLaFbvz0
498です。
>501、502さん、ありがとうございます。

分解して調べてみて、やっとスペルミスに気づきました。
ディスク名が間違ってました。はずかしい

入力した文字列を含むフォルダを検索することまではできました。
が、コピーする対象をセットできず奮闘中です。

>set tgtFile to file "0001-Top.JTF" of folder folder -1

↑を、set tgtFile to file "0001-Top.JTF" of folder "folder -1 "
に変えましたが、これではだめでした。

seibans の中のobj の中の、"folder -1"フォルダの中の、"0001-Top.JTF"ファイルをtgtFileにセットしたいのです。

set tgtFile to file "0001-Top.JTF" of folder "folder -001" of me

としてみたら、
appication "Finder"をタイプ string に変換できません。
というエラーがでてしまいました。

ちなみにobj自身をgtFileにセットすることはでき、コピーすることはできてます。
なんかもう少しのような気がします。

アドバイスあれば引き続きお願いします。
505名称未設定:2009/02/27(金) 10:11:22 ID:cnLaFbvz0
498、504です。

エラーメッセージが違ってました。
file "0001-Top.JTF" of <<class cfol>> "folder-001"をタイプreferenceに変換できません。

でした。
506名称未設定:2009/02/27(金) 10:20:24 ID:cnLaFbvz0
498、504,505です。
実況みたいですいません。

set tgtFile to file "0001-Top.JTF" of folder "Folder-001" of obj

で解決できました。

これだけで仕事がものすごく楽になります。

お世話になりました。
507488:2009/02/28(土) 03:03:27 ID:CebBBIIC0
なんでデスクトップにゴミ箱を置きたいか、くだくだしい説明は
省くけど、もちろんくだらない理由であり、
必要度で言えばもちろん、かなり低い。ないならないで別にいい。

でもちょっと置いてみたくて、Homeの「.Trash」のエイリアスを作り、
「.」を取ってゴミ箱のアイコンを貼ってデスクトップ右下隅に置いてました。
それでまあまあ満足(そもそも必要度低いんだし)だが、
強いて言えば欠点がふたつある。
1:起動ボリューム以外にあるアイテムをドラッグするとコピーになる。
2:ボリュームのイジェクトには使えない。

「別ボリュームからは使わなきゃいい」んだし
「イジェクトには使わなきゃいい」んだけど、たまに、ついやっちゃう。
で、最近「SideTrash」を知りました。これには上記の欠点がない。
しかしエイリアスの扱いについてデインジャラスな欠陥がある。

この件では意外に盛り上がってくれたようでみなさんありがとうございます。
しかし日本の英智を結集しても無理なのか・・・
>>496を試してみたけど、「.Trashのエイリアス」と同じ欠点がある。

引き続きこのスレ覗くので、
どなたかが天才的な解決策を発見されることを期待します。
期待するばかりで申し訳ない。
508名称未設定:2009/02/28(土) 03:52:01 ID:5qJ0Z5Az0
ここで天才的解決策というより姑息な回避策を待つよりも
DragThingを購入してゴミ箱をデスクトップにおくのがオススメ。

DragThingユーザの内、デスクトップにゴミ箱を表示するのに
使ってる人間は約20%くらいいる。(俺リサーチによる調べ)
509479:2009/02/28(土) 06:39:04 ID:tusqZGXT0
>>507
シェアウェアでこんなのあった。
bin-it
http://www.fastforwardsw.com/binit/
12.5ドルならDragThingよりは安いはず
でもボリュームのアンマウントに使えるかは未確認
510名称未設定:2009/02/28(土) 08:47:04 ID:H3QYeF6l0
オレの場合、Dockを右側に置いているんだがそれを下いっぱいに下げることでゴミ箱問題を解決した。
Dockを下側に置いてる時は右いっぱいに寄せていた。
通常はセンタリングされるけどこれでOK。
511名称未設定:2009/02/28(土) 13:19:32 ID:Od4bhtxF0
>>507
>>488もこのことに触れているけど
イメージだけ表示されるWindowが作れれば、あとはAppleScript Studioで作成可能
(DragThing、bin-it 両者もWindow内のイメージにドラッグドロップしている。)

イメージだけ表示されるWindowを作るには、...Carbon?(の様な気がする)
特別仕様のWindowを作る方法がわからん。オレには無理だ...orz

追記…アイコンにドラッグドロップでファイル管理をしようとした場合、他にも不都合な点があって、
ひな形に設定しているファイルを勝手に複製して、複製した方を選んでしまう。
ファイル管理には使わない方がいいと思う。
512511:2009/02/28(土) 16:00:21 ID:Od4bhtxF0
間違った
>>488もこのことに触れているけど←誤
>>492もこのことに触れているけど←正
513名称未設定:2009/03/01(日) 02:36:25 ID:emrRc1U90
画像を表示するだけならNSImageViewを使えば良いのだけど、
そういう事では無いのかな?

そういえばドラッグ&ドロップ関係のイベントって使ったこと無いな
今度やってみよっと
514名称未設定:2009/03/01(日) 10:11:43 ID:TnjXyS+p0
タイトルとか影の話では?
515名称未設定:2009/03/02(月) 02:42:45 ID:yFs6o5gb0
なるほど、ウィンドウとしての体裁が邪魔なんだね
516名称未設定:2009/03/04(水) 14:16:27 ID:2NgDZ+ZS0
>>472を書いた者だけど、

>do shell script "ruby -rnkf -e 'print NKF.nkf(¥"-w16B -xm0¥", $*[0])' " & quoted form of theWords & " > ~/Desktop/j_i_s_h_o_t_o_r_o_k_u.txt"

この行、ターミナル用のコマンドに nkf がなかったんで
わざわざRubyを使ったんだけど、iconv の方を使って

do shell script "echo " & quoted form of theWords & " | iconv -t UTF-16 > ~/Desktop/j_i_s_h_o_t_o_r_o_k_u.txt"

こっちの方がシンプルでよかったかな、と今更だが。
517名称未設定:2009/03/06(金) 00:50:31 ID:aPPVeAWG0
>>511
Cocoaでイメージだけ表示するウィンドウは作れたんだけど、
このウィンドウはタイトルバーがないので、ドラッグで移動させるには自分でコード書かなきゃいけないらしい

でやってみたんだけど、ドロップ処理と競合してるのか上手く動いてくれなかった
ドラッグできる部分とドロップできる部分を分ければ動くっぽいのだが

全部Objective-Cで書けばどーにかなるのかなぁ
518名称未設定:2009/03/07(土) 00:42:01 ID:SbUlu+Ap0
ネットワーク環境を切り替えるスクリプトを書いてみたんだけど上手くいかない
誰かなにか知ってたら教えてください

tell application "System Events"
tell network preferences
-- 全ての設定の名前のリスト作成
set locList to (every location)
set nameList to {}
repeat with aLoc in locList
set nameList to nameList & (name of aLoc)
end repeat
-- 現在の設定の名前を取得
set currentName to (name of (current location))
end tell
end tell
-- ユーザが名前から選択
activate
set chooseResult to (choose from list nameList with prompt "ネットワーク環境を選択" default items {currentName} without multiple selections allowed and empty selection allowed)
try
set selectName to (first item of chooseResult)
on error
return 0
end try
-- 選択した名前に切り替える
tell application "System Events"
tell network preferences
set (current location) to (location selectName) --これが実際は効いてない
--(name of (current location)) --でもこれは切り替え後の名前を返してはいる
end tell
end tell
519名称未設定:2009/03/07(土) 02:25:33 ID:hXH4a81Y0
本題とは無関係だが

name of every location

では通らないのか
520名称未設定:2009/03/07(土) 17:27:12 ID:i52yTfP90
>>518
network preferences object は current user のものだ、と書いてあるから多分無理。
元々 system wide なものだから、system の設定のコピーなんだろう
>>519
型が違う
name of item 1 of every location な
521名称未設定:2009/03/10(火) 11:25:45 ID:ELqaet4+0
ちょっと教えていただきたいのですが

set aFile to (choose file) as text
tell application "Adobe Photoshop CS3"
open file aFile
end tell

と処理した時に、フォルダやファイル名に全角数字や()があると
“ファイル 不特定のオブジェクトが見つかりませんでした”
とエラーが出てしまうのですがどう対処すればよいのでしょうか?

環境はOS 10.4.11
522名称未設定:2009/03/10(火) 12:40:24 ID:g5tPUcRm0
>>521
as textが多分原因
---
set aFile to (choose file)
tell application "Adobe Photoshop CS3"
open aFile
end tell
---
じゃだめかい?
523名称未設定:2009/03/10(火) 13:32:25 ID:ELqaet4+0
>>522
ダメです……
同じエラーがでます
524名称未設定:2009/03/10(火) 13:51:31 ID:ZtHNMoSd0
>523
OS同じだがエラー起きないよ。
525名称未設定:2009/03/10(火) 15:25:33 ID:ELqaet4+0
>>524
複数のマシンで試したんですけどやっぱり動きません……
1バイトだけなら動くんですけどね〜

で、色々やってましたら
イラストレーターなら全角数字や全角パーレンが
入ってても開きました

ムムム、これは……?
526名称未設定:2009/03/10(火) 15:51:42 ID:ZtHNMoSd0
>525
こっちのPhotoshopはCS1なので、もしかするとそういうことなのかも。
527名称未設定:2009/03/10(火) 16:34:38 ID:ELqaet4+0
>>526
CS1が入ってるマシンで試したらあっさり動きました
CS3め〜〜〜〜〜〜〜〜

お騒がせしました
色々ありがとうございました
528名称未設定:2009/03/10(火) 16:40:42 ID:jduE+5AY0
>>527
ちなみにCS4でも駄目だった。
また不思議な事に123.jpgと123.jpgがあった場合、
123を指定したにも関わらず123が開く。
なんだろね。
529名称未設定:2009/03/11(水) 00:51:43 ID:hBq3cjAN0
>>518
current locationを変更してもpreferences.plistは変更されない事から、
network preferencesでの切り替えは無理っぽいので、defaultsを使って直接書き換える
更に書き換えるだけだと変更はされるが有効にならないので、networksetupを使う
ついでに名前リスト生成は>>519で可能

というわけで、ちぃと強引だが一応できた

tell application "System Events"
tell network preferences
set nameList to name of locations
set currentName to name of current location
end tell
end tell
choose from list nameList with prompt "ネットワーク環境を選択" default items {currentName} without multiple selections allowed
if result is false or item 1 of result is currentName then
return
else
set selectName to item 1 of result
end if
tell application "System Events"
tell network preferences
set current location to location selectName
set selectId to id of current location
end tell
end tell
do shell script "sudo defaults write /Library/Preferences/SystemConfiguration/preferences CurrentSet /Sets/" & selectId with administrator privileges
repeat with theService in paragraphs 2 thru -1 of (do shell script "networksetup -listallnetworkservices")
do shell script "networksetup -setnetworkserviceenabled " & quoted form of theService & " on"
end repeat
530名称未設定:2009/03/11(水) 00:54:29 ID:hBq3cjAN0
書いといてなんだが、これだとnetwork preferences使う意味が薄いな
Leopard限定になっちゃうし
531名称未設定:2009/03/11(水) 01:48:58 ID:6EL/JQSO0
>>525
自分も興味があったので検証してみた。

Leopard上のPhotoshop CS3でも全角ファイル名は開けないみたい。
Ver.6なんかは全角ファイル名でも開いているので,CS3のバグのような気がする。

あと全然関係ないけど,choose fileの結果はaliasクラスの値が返ってくるのに,
display dialogで結果を表示させると,なぜかalisというクラス名が表示される。
今気がついたんだけど,バグかなこれ?
532名称未設定:2009/03/11(水) 02:16:37 ID:hBq3cjAN0
試してないがこんなのとかどうかな

POSIX path of (choose file)
do shell script "open -a 'Adobe Photoshop CS3' " & quoted form of result
533名称未設定:2009/03/11(水) 08:55:26 ID:VR0lCmu00
Acrobatの「文書のプロパティ」メニューで、タイトル類の全角半角を修正しても
元に戻ってしまってドツボに嵌まったのを思い出した。
それはそれとして、回避策はないのかな。自分はCS2なんで検証できず。
534名称未設定:2009/03/11(水) 09:24:27 ID:L+4refM90
Leopard上で >>532 のスクリプトを全角ファイル名で試したけど大丈夫っぽい。
535名称未設定:2009/03/11(水) 10:05:35 ID:V6fpi6WP0
えっと、多分だけど open の前に activate する。ではないのかな?かな?
536名称未設定:2009/03/11(水) 10:08:38 ID:yCagSJRU0
みんな検証ありがとう
>>532
shell script は試そうと思ってうまく出来なかったんですけど
tell application "Finder"
open aFile
end tell
で開かせた事があって
これだとフォトショップで開く事になるんですけど
保存の際にエラーになるんです
だから結局はこれでやっても処理は継続できないかな……
知恵貸してもらっておいて申し訳ないです
537名称未設定:2009/03/11(水) 10:43:50 ID:8zhPSfdZ0
>>536
検証してわかったんだけど,openとopen file,パスを直接記述するか変数に入れるか,
でも挙動が違うみたい。自分も初めて知った。
538名称未設定:2009/03/11(水) 10:44:53 ID:8zhPSfdZ0
>>535
うちでは変化なかった。
539名称未設定:2009/03/11(水) 11:42:44 ID:V6fpi6WP0
>>538
本当だ、って試さんと書いたんかい。実はそうなのだ。
set hoge to (choose file)
set hoge to hoge as Unicode text
tell application "Finder" to open file hoge using (application file "Adobe Photoshop CS3.app" in folder "Adobe Photoshop CS3" in folder "Applications" in startup disk)
保存の際にエラーってことなら無理かもだけど。一度こんなの試してみてもらえるかな?
540名称未設定:2009/03/11(水) 12:45:36 ID:yCagSJRU0
>>539
開けました
でも保存できません

開くのは抜け道?あるけど
保存は何も思いつかない……


javascriptはどうかなと今朝思い立って
ググってやってみたけど開けなかった
541名称未設定:2009/03/11(水) 13:10:47 ID:VR0lCmu00
Finderにリネームさせてからフォトショで処理して保存して、
Finderに名前を元に戻させる、かなあ。
542518:2009/03/11(水) 22:30:43 ID:hV+fJwFN0
レスサンクスです。
>>519 そうですね。repeatする必要ありませんでした。
>>520,529 やはり無理なんですね。
current locationがr/oになってないのでできるのかなと期待したのですが。

で、Appleメニューから選択する方法にしてみました。
日本語&UIスクリプティング限定ですがこれでできました。
543518:2009/03/11(水) 22:31:12 ID:hV+fJwFN0
-- 全ての設定名、現在の設定名を取得
tell application "System Events"
tell network preferences
set nameList to (name of every location)
set currentName to (name of (current location))
end tell
end tell
-- ユーザが名前から選択
activate
set chooseResult to (choose from list nameList with prompt "ネットワーク環境を選択" default items {currentName} without multiple selections allowed and empty selection allowed)
try
set selectName to (first item of chooseResult)
on error
return 0
end try
-- 選択した名前に切り替える
tell application "System Events"
set frontProcess to (first item of (every process that frontmost is true))
tell frontProcess
tell first menu bar
tell menu bar item "Apple"'s menu "Apple"
tell menu item "ネットワーク環境"'s menu "ネットワーク環境"
tell menu item selectName to click
end tell
end tell
end tell
end tell
end tell
544名称未設定:2009/03/12(木) 06:23:41 ID:5YNKczeZ0
>>539
開くことを確認。

>>540
うちのPhotoshop CS3で試してみたら保存できた。
ファイル名は関係なさそう。Leopardで確認。
545名称未設定:2009/03/12(木) 09:19:58 ID:BSiFn71/0
>>540
どんなエラーでてるん? save document コマンドで変なフルパス渡してるんじゃないの?
>>539 で開いて >>532 で開かないってのもおかしいよね?なんか根本的に知識足りてないとかない?
open file のとこしか書いてないけど全体を見せてくれたら助言出来るかもだよ?
546名称未設定:2009/03/13(金) 00:11:29 ID:OLNuIInyO
ウチの環境ではPhotoshopに直接投げる方法(>>521>>522)では確かに開く事すらできなかったが、
Finder(>>536>>539)やshell(>>532)で開く事は可能で、その後手作業で編集して保存するのも特に問題無くできた

OSは10.4.11/10.5.6の両方でPhotoshopはもちろんCS3
ファイル名は"(123).psd"として、編集内容はレイヤー増やしたり削除したりしてcommand-s実行

そもそもスクリプト使わず手作業で開いた後ならちゃんと保存できてるのだろうか、とか
別名で保存すらできないのだろうか、なんて事を考えてしまうのだが、
状況を再現できない事にはこれ以上何とも云えませんなぁ

それとも俺が勘違いしてるだけで、>>545の言う様にスクリプトで保存までやってんのかな?
だとしたらそこはGUI Scriptingに置き換えるとか、幾らでも逃げ道はありそうだが

>>536
ちなみにshellのopenコマンドでは -a 'Finder' とか書いているのでもない限りFinderは関与しないので、
もしまだ>>532を試してないのだったらやるだけやってみる事を勧めておくよ
547名称未設定:2009/03/13(金) 00:35:54 ID:RY5WwQqCO
興味があったので、Photoshopの件、実験してみた。
Leopard + CS4体験版(うちにはCS、CS2しかない…)

test(001).epsというファイルを用意して539で開いた後、
save cuurrent document --> ちゃんと保存される。メデタシ。

save cuurrent document as Photoshop EPS in aFile
-->これもちゃんと保存された…と思いきや、test(001).eps というファイルが
出来てる! 勝手にドキュメント名が半角になっちまってるではないか。

で、in aFile を外してみると、当然のことながらダイアログ は出るが、
元のファイル名のまま上書きされた。しかし面倒だ、スクリプトの意味が無い。
GUIスクリプト書かねばならんのか…

面倒くさいんで、新規保存のアクションを作って do action でやらせたら
ファイル名は元のまま保存された。ふう、難儀なもんだ。
548521:2009/03/13(金) 13:05:31 ID:N22ZBqD00
色々検証をありがとう!
昨日は仕事が忙しくてあまり試せなかったのですが
文字パレットのUnicodeの半角・全角形が入ってるとダメっぽい
FF00〜どこまでかは未検証

POSIX path of (choose file)
do shell script "open -a 'Adobe Photoshop CS3' " & quoted form of result

tell application "Adobe Photoshop CS3"
activate
set docRef to the current document
set Getpath to file path of docRef
set Sendpath to Getpath & "_.eps" as Unicode text
--別名保存をするためダミーでつけてます
set aOptions to {class:EPS save options, encoding:high quality JPEG, preview type:eight bit TIFF}
save current document in file Sendpath as Photoshop EPS with options aOptions appending no extension with copying
close current document saving no
end tell

保存まで入れたものです
これを実行しますと開くのは問題ありません
保存の際、ファイル名に特定の全角があるものは半角にされてしまい
フォルダ名にあるのは『フォルダ 不特定の〜』とエラーが出てしまいます
当然、半角のみのパスなら問題なく保存されます
これは改めてわかった事なのですが、
フォルダ名にあるのとファイル名にあるのでは挙動が違うみたいです

後だしじゃんけんで怒られそうですが
元々はASSで作っておりまして、一度は出来たと思っていたのですが
エラーが出るよと使用者に言われて
検証していったらPhtoshopのopenに行き着いたので
簡略化して質問してしまいました
549名称未設定:2009/03/19(木) 16:03:23 ID:sWEDU9rC0
1.ファイルをドロップ
2.元ファイルの場所にファイル名を"XXX.拡張子"に変更した複製を作成


on open (inFiles)
set theFile to item 1 of inFiles
tell application "Finder"
set theFolder to container of theFile
set theNewFile to duplicate theFile to theFolder without replacing
set name of theNewFile to "XXX.拡張子"
end tell
end open

一つだけなら処理できるのですが、これを複数ファイルのドロップに対応させるにはどのように記述すれば良いでしょうか?
550名称未設定:2009/03/19(木) 16:21:35 ID:gh/Y7KwX0
repeat with theFile in inFiles
end repeat
551名称未設定:2009/03/19(木) 17:05:07 ID:sWEDU9rC0
>>550
有り難うございました。
挿入する場所がいまいちわからなかったのですがうまく行きました!
552名称未設定:2009/04/01(水) 12:40:12 ID:i9A41uXD0
保守
553名称未設定:2009/04/11(土) 18:28:36 ID:E/Ke3yel0
2chResViewってしたらばに対応は難しいんですかね・・・
あと読み込むスレのURL入れるダイアログをいつでも出せるようにしていただけるととてつもなくうれしいです。
554名称未設定:2009/04/12(日) 16:16:13 ID:eCja8I9i0
applescriptからicalのeventまたはtodoに"スクリプトを実行(run script)"する
アラームの設定の仕方を教えて下さい。
sound alarmやopen file alarmなどのクラスは辞書(iCal.sdef)に載っているのですが、
スクリプトを実行するためのクラスが見当たりません。
make new `run script' at end with properties {trigger date:current date, script name:"sample"}
こんな感じをイメージしていたのですが,参考になるサイトも見つからなくって...
555名称未設定:2009/04/12(日) 20:09:46 ID:VRZcuAEG0
スクリプトを実行するようなTODOをiCalから作って、そいつをScript Editorで調べてみるといい
やってみると、open file alarms として登録されてるっぽいな
ここで指すスクリプトが、スクリプト形式でないといけないのか、
アプリケーションとして作っておかないといけないのかは、>>554がレポートしてくれることを望む
556名称未設定:2009/04/13(月) 13:02:49 ID:ABtawuno0
>>554
>applescriptからicalのeventまたはtodoに"スクリプトを実行(run script)"する
>アラームの設定の仕方を教えて下さい。

iCalのカレンダーからスクリプトを実行するんじゃダメなのか?
applescriptからiCalを呼んで更にapplescriptを呼び出す意味がよくわからないのだが…
557名称未設定:2009/04/20(月) 12:25:14 ID:8MTahNtV0
Photoshopの全角英数文字の話があったけど私の場合はIllustratorで全く同じ現象でした。
InDesignはだいじょうぶなんですけどね。
結局、解決方法として、開く場合は同じようにPOSIX pathであつかい、保存する場合は、
homeフォルダにダミーの俺様一時フォルダと一時ファイルを作り、
Finderでリネームしてからmoveして上書きさせるという方法にしました。
すっきりしなくてしばらく悩んでたけどここを見て頭の中の整理ができました。ありがとう。
558名称未設定:2009/04/20(月) 22:32:27 ID:DJFzfGbq0
>>557
話が出てた頃、長いアク禁状態で書き込めなかったんだけど、
do javascript で一応回避できたよ(10.4.11 CS3)。
まあ、あまり真剣に検証はしてないけど
----
set aFile to choose file
set aFile to quoted form of POSIX path of aFile
tell application "Adobe Photoshop CS3"
--open
set aJsOpen to "
var aDoc = new File(" & aFile & ");
open(aDoc);"
do javascript aJsOpen

--EPS SAVE
set aJsSave to "var docRef=documents[0];
var epsOptions = new EPSSaveOptions();
epsOptions.encoding=SaveEncoding.JPEGHIGH;
epsOptions.preview=Preview.EIGHTBITTIFF;
docRef.saveAs(new File(docRef.fullName + '_.eps'),epsOptions);"
do javascript aJsSave

--close
close current document saving no
end tell
----
559名称未設定:2009/04/21(火) 10:53:16 ID:G/XoDJ6w0
>>558
おぉ、javaで保存いけますね。Illustratorでも確認しました。その他の色々もいけるかも?
Adobe関連の新しい部分はASとVBは更新せずjavaだけになるという話ですし、
これからは中身をできるかぎりjavaでやるかなー。やるきでてきました。
560名称未設定:2009/04/21(火) 10:59:56 ID:8kyWcLOc0
JavaとJavascriptを区別できない馬鹿は
豆腐の角に頭をぶつけて死ぬのがオススメ
561名称未設定:2009/04/21(火) 11:36:04 ID:G/XoDJ6w0
javaと略してはいけないんですね。 JSですか。
562名称未設定:2009/04/21(火) 12:42:21 ID:kPLxhmON0
まったく分かってないのにかっこつけて略すなよw
563名称未設定:2009/04/21(火) 12:53:04 ID:G/XoDJ6w0
略してはいけないんですね。
とりあえず色々となんだかいけそうになってきたよ。ありがとう。
564名称未設定:2009/04/21(火) 12:56:18 ID:BzQNW88n0
>>563
何かかわいそうになってきたので、括弧つけて略した
java script (JS); Java (Java); 全く別の言語だから注意するように。
ジャバといえば風呂釜…じゃなくて、Sun が買収されましたなぁ。
565名称未設定:2009/04/21(火) 13:02:48 ID:G/XoDJ6w0
なるほど。毎回説明するのがいやになるイライラスイッチみたいな
恩を仇で返すような書込みだったんですね。以後気をつけます
566名称未設定:2009/04/21(火) 14:44:35 ID:hZzJxJyl0
>>564
俺も>>562を括弧付けてって読んじゃったよ
567名称未設定:2009/04/21(火) 16:21:33 ID:s/8jjmoQ0
複数のフォルダを、DVDにバックアップする前処理として、
4GB程度ごとに振り分ける単純な処理を自動化ようと思ってます。

できるだけ均等になるように、とか、
組み合わせを事前に計算して、とかができればいいんですが、
難しいので、とりあえずシーケンシャルに処理させるように組みました。

が、フォルダ容量を加算する、
という単純なところで、エラーが出たり出なかったりして、思うように動作をしてくれません。

加算できない時があるのは、なぜでしょうか?

568名称未設定:2009/04/21(火) 16:23:39 ID:s/8jjmoQ0
567です。スクリプトです。よろしくお願いします。m(_ _)m

tell application "Finder"
activate
set nDivFolder to 0 --分割フォルダ数を初期化
repeat
set DivFolderVol to 0 --分割フォルダ容量を初期化
--新規に分割フォルダを作成し、ターゲットにセットする
set nDivFolder to (nDivFolder + 1)
try
set DivFolder to make folder at "Macintosh HD:BackupFolder:4GB単位で振り分け:" with properties {name:((month of (current date) as integer) & day of (current date) as string) & "-" & nDivFolder}
on error errText
beep
display dialog "分割フォルダを作成できません"
exit repeat
end try
set tgtFolders to every item of folder "作業終了" of folder "BackupFolder" of disk "Macintosh HD"
if (number of tgtFolders) = 0 then
display dialog "該当データするデータはありません"
exit repeat
end if
569名称未設定:2009/04/21(火) 16:26:16 ID:s/8jjmoQ0
567です。長くてすいません。続きです。

repeat with obj in tgtFolders
--フォルダ容量をsizeDataに設定する
set sizeData to size of obj
try
--分割フォルダ容量にフォルダ容量を加算する
set DivFolderVol to (DivFolderVol + sizeData)
on error errText
beep
display dialog "分割フォルダ容量にフォルダ容量を加算できません" & return & "DivFolderVol = " & DivFolderVol
exit repeat
end try
--分割フォルダに、ターゲットフォルダを入れると、4.2GBに収まるか?
if DivFolderVol < 4.5E+9 then
--分割フォルダに移動する
move obj to DivFolder
else
display dialog "容量をオーバーします"
set DivFolderVol to (DivFolderVol - sizeData)
end if
end repeat
end repeat
end tell
570名称未設定:2009/04/21(火) 17:20:53 ID:UWZ3EL1T0
Finderの tell ブロックの中で Finder item の情報をもらうと変になるね?って。
話し合ってたのはここじゃなかったか。つい最近どっかで色々書いたけど。
サイズがもらえないんだよね?他にもクラスもらったらカタカナとかいろいろ困ったものだ

System Events の中でやる。
tell application "System Events" to set sizeData to size of obj

一度プロパティをセットしてそこからもらってくる。
set hoge to properties of obj
set hoge to size of hoge as integer

こんな感じを試して欲しい。ちなみに私は10.5.6。
何が帰ってきてるかイベントログを出しながらいろいろやってみると良いのだ。
571名称未設定:2009/04/21(火) 18:22:12 ID:s/8jjmoQ0
570さん、ありがとうございます。
試してみました。

> System Events の中でやる。
> tell application "System Events" to set sizeData to size of obj

現象は変わりませんでした。

> 一度プロパティをセットしてそこからもらってくる。
>set hoge to properties of obj
>set hoge to size of hoge as integer

hogeを、sizeData に変えて試してみたところ、

「missing valueをタイプ integerに変換できません」
というAppleScriptエラーが出てしまいました。

イベントログを出しながら、というのがわからないので調べてみます。

遅れましたが、こちらの環境は、OXS 10.4.11です。
572名称未設定:2009/04/22(水) 00:35:43 ID:72Y7WtJy0
>>560
>>564
×Javascript
×Java Script
○JavaScript

>>571
スクリプトエディタの下部で、結果ではなくイベントログを選んで実行してみる
573名称未設定:2009/04/22(水) 03:47:30 ID:9KCuLn0o0
>>571
missing value が出るのは Finder がそのデータを持っていない時。
つまりフォルダーのサイズは常時計算されていないってことだと思う。

その "作業終了"フォルダーをリスト表示で開いておいて、
Finder の[表示]-[表示オプションを表示]で
このウィンドウのみ、全てのサイズを計算にチェックを入れておけば、
フォルダーに中身の合計容量が表示されるので、それから実行すれば
エラーは出ないかも。

あるいは、missing value が出たら、ちょっと待って、再取得すればOKかもしれない。
missing value は他の変数に代入したり計算しようとするとエラーが起こるので、
それを try文で捕まえて、もう一度ループさせるとか。いや、たんにメッセージだして
終了させて、もう一度手動で再実行すればいいのか。

あるいは、サイズ取得に StandardAdditions の info for を使えば行けるかも。
set fileInfo to info for (obj as alias)
set sizeData to sizeData + (size of fileInfo)
こんな感じ?

あと、休止してるドライブとか、遅いネットワーク越しとかだと、タイムアウト
してエラーになるようなこともあるんで、場合によってはそう言う対策も必要かも。

と、ちょっととりとめもなく…
574名称未設定:2009/04/22(水) 03:52:04 ID:9KCuLn0o0
>>573
間違えた
×set sizeData to sizeData + (size of fileInfo)
○set sizeData to size of fileInfo
だね
575名称未設定:2009/04/22(水) 04:04:31 ID:4h7RmYLW0
もともと、LiveScriptをJavaScriptに改名したNetscape(当時)がどうかしてるん
だけどねえ。
576名称未設定:2009/04/22(水) 09:32:50 ID:DwUsCRRs0
スレ違いになってしまうかもしれないが、「バックアップのためにフォルダ
サイズを調整して入れる」ことが目的ならディスクイメージを作ってそれを
分割するのが良いんじゃないだろうか?
hdiutilにディスクイメージの分割機能があるので分割したままでマウントも
できるし。
コマンドラインに抵抗があるなら(スレ的にそれはないか)DMGConverterが
フロントエンドとしてある。
577名称未設定:2009/04/22(水) 09:34:15 ID:DwUsCRRs0
日本語変だな
hdiutilにディスクイメージの分割機能があるし、分割ディスクイメージなら
分割したままマウントできるし。
578名称未設定:2009/04/22(水) 09:34:18 ID:56XqzhhX0
>>572
SmallTalk、Next Step、C言語 なんかも許容できない人と見たw
こまけぇことはいいんだよ
579名称未設定:2009/04/22(水) 09:45:50 ID:qwOiPX0/0
JavaとJavaScriptを間違えるのはまだかわいいよ。
それよりAppleScriptとActionScriptを待ちがえるほうが嫌。
580名称未設定:2009/04/22(水) 12:01:06 ID:eLwgTwLC0
さすがにActionScriptとは間違えないだろw
どっちかしか使ってないから区別がつかないんだろうな
581名称未設定:2009/04/22(水) 12:16:09 ID:c0rUZZVk0
質問です。
スクリーンショットを撮るスクリプトを書き、アプリ化
して保存しました。

そのアプリを実行すると、それがアクティブになってしまい、
撮りたいウィンドウが非アクティブの状態で撮影されて
しまいます。

これを回避する方法を教えてください。お願いします。
582名称未設定:2009/04/22(水) 12:20:40 ID:ni9Ii5340
スクリプトを晒さないとまともなアドバイスは期待出来ないと思うぞ
583名称未設定:2009/04/22(水) 13:13:29 ID:YD0+zBI20
tell application "Finder"
set myPngPOSIXpath to (POSIX path of (home as alias) & "Desktop/mySC.png") as Unicode text
end tell
tell application "目的のアプリ"
activate
end tell
do shell script "screencapture " & myPngPOSIXpath
584名称未設定:2009/04/22(水) 13:20:00 ID:eLwgTwLC0
普通に目的のアプリがアクティブ状態で撮れてるよ?
585名称未設定:2009/04/22(水) 15:43:15 ID:oiZ0etmK0
567です。

>573
ありがとうございます。

これですんなりいけました。
586名称未設定:2009/04/22(水) 18:53:30 ID:ICJtJeVG0
>>582
そうですね、すみません

>>583
その「目的のアプリ」をスクリプト実行前に
アクティブだったアプリにしたいのです。
特定のアプリならいいんですが、毎回変わる
ものなので・・・
587名称未設定:2009/04/22(水) 20:02:27 ID:YD0+zBI20
てきとう
tell application "Finder" to set myPngPOSIXpath to (POSIX path of (home as alias) & "Desktop/mySC.png") as Unicode text
tell application "System Events" to set visible of processes whose frontmost = true to false
tell application "System Events" to set visible of processes whose frontmost = true to false
do shell script "screencapture " & myPngPOSIXpath
588名称未設定:2009/04/22(水) 20:41:31 ID:jmWII8kE0
>>581
ScriptMenuみたいにfrontに出ないユーティリティーからscript実行する。
どうしてもアプリケーションにしたいならInfo.plistにLSBackgroundOnlyを
設定してbackgroundで実行する。
589名称未設定:2009/04/22(水) 20:57:41 ID:HyNMQeQ20
>>586
ここはスクリプトを作ってもらうスレじゃないからね、あんまり甘えんなよ
590名称未設定:2009/04/22(水) 21:41:02 ID:ICJtJeVG0
>>587,588
ありがとうございました。
これをヒントにがんばってみます!

>>589
そんなことは頼んでないと思いますが。
どうやれば適切な質問になったのでしょうか?
591名称未設定:2009/04/22(水) 21:46:56 ID:y31/uTER0
>>590
>>582をはじめ過去ログ見ればわかるだろ
まずはどこまで書けたかを晒し、それを添削するというのがこのスレのスタイルだ
592名称未設定:2009/04/22(水) 23:20:41 ID:kURH2FYG0
そんなことは頼んでないと思いますが(キリッ
どうやれば適切な質問になったのでしょうか?(キリッ

それすら考えられない馬鹿が何いきがってんだよ
593名称未設定:2009/04/22(水) 23:42:36 ID:HyNMQeQ20
>>590
>>1
>【注意】
>安直なスクリプト作成依頼、丸投げはやっちゃダメ! わからない点、エラーが解決できない点について、スクリプト片を添えて質問しよう。

1くらい読んでるよね?
594名称未設定:2009/04/23(木) 00:05:11 ID:lNNc0y1j0
>>590
>>>589
>そんなことは頼んでないと思いますが。
>どうやれば適切な質問になったのでしょうか?

適切な質問の方法としては、回答者に対して否定的な文章を書かないことがある。
もっと正確に言うと、否定的な意味のある言葉を使わずに文章を書くべき。
質問している(=人にお願いをしている)人から「そんなことは頼んでない」
なんて上から目線とも取れるような文章が出てきては、回答しようという気がそがれてしまう。

書き込み前に投稿する文章を自分で声を出して呼んでみて、自分の上司や先生にも同じ
言い方/書き方をするのか、と考えてみると良いよ。
595名称未設定:2009/04/23(木) 00:59:00 ID:Ic9Lovq50
>>594
2ch設立人の趣旨が理解できないなら他いってくれ
596名称未設定:2009/04/23(木) 01:46:22 ID:NERf7AVq0
全てが自由にみえる2chにも2chなりのルールがある。
そして各板,それに続くスレッド個々に独自のルールがある。
それぞれの目的でそれぞれのスレッドが立ち、そのスレッドに興味ある人たちが集まる。

でもそのルールは強制じゃない。偉そうに質問解答するのも自由。多少なら荒らすことも可能。
ただ、端から見れば低俗な人が来たなって思うだけ。規制がかかるだけ。ただそれだけのこと。
気に入らないレスがあるなら、いちいち反応しないでスルーすればいいだけの話。
597名称未設定:2009/04/23(木) 01:56:29 ID:YYCPFwhG0
設立人の趣旨を尊重する人間 ≠ 実際に質問に答える能力の有る人間
あとはわかるな?
598名称未設定:2009/04/23(木) 12:17:01 ID:c0enMtgx0
>>594
>適切な質問の方法としては、回答者に対して否定的な文章を書かないことがある。
>質問している(=人にお願いをしている)人から「そんなことは頼んでない」
>なんて上から目線とも取れるような文章が出てきては、回答しようという気がそがれてしまう。

「回答者に対して」って書いてあるけど、明らかに >>590 は回答者に
対して言ってないよね。>>587,>>588で既に回答をもらっていて、
回答もしないでルールを押し付けてくる>>589に対して言ってるだけ。
そもそも>>594は「そんなことは頼んでない」という発言に対して
疑問を投げかけている、つまり>>590以前の質問に関する質問の仕方
については何も言っていない。>>594は全く答えになってないんだよ。
分かるかな?あと、自分の上司や先生と2chは同じものだと
本気で思ってる?>>594は言ってることがめちゃくちゃ。

あのさ、確かに>>590はスクリプトを晒してから質問しなかった
のは反省すべき。でも、端から見ていると >>594みたいに
回答もできないのにピントのずれた的外れなレスをつけたり、
>>592みたいにわざわざ (キリッ みたいな文言をつけくわえて
粋がっている奴らのほうがよほど「低俗」に見えるよ。

>>594,>>592は反論があったら遠慮なくどうぞw
599名称未設定:2009/04/23(木) 12:38:18 ID:Q/06Zh550
>>598
私憤をはらしたいのかしらんが当事者でも無いのに混ぜっ返すな
589がルールを押し付けてる様に見えてるお前が一番低俗だよ
600588:2009/04/23(木) 13:31:24 ID:Jztm23Mzi
>>599
>589がルールを押し付けてる様に見えて

確かにそこは言い過ぎでした。すみません。
601名称未設定:2009/04/23(木) 14:17:49 ID:coHpjbSb0
やれやれ
恥の上塗りだな
602名称未設定:2009/04/23(木) 21:01:14 ID:E1/9Y5jB0
つい最近、「AppleScriptをつくった誰々(個人名)」っていう記述を読んだんだが
どこで読んだのかまったく思い出せん…。老人力がつき始めて困るわあ
603名称未設定:2009/04/23(木) 21:07:08 ID:qlfXGITq0
その誰々はChris Espinosaな気がする
ぴよまるさんがよく名前出すから思えたw
604名称未設定:2009/04/23(木) 23:24:42 ID:E1/9Y5jB0
>>603
ありがとう、どこで読んだか思い出しました。確認したら人名はウィリアム・クックでした。
「Macでプログラミング」スレでオブジェクト指向プログラミングの話になっていて、
そこで紹介されていたサイトの中で「クックも AppleScript の設計者ではありますが」云々
というかたちで触れられていたのでした。
http://pc11.2ch.net/test/read.cgi/mac/1216824430/794
AppleScriptについての論文をみてみると(この論文自体ウィリアム・クックによるものですが)、
開発メンバーの中にクックの名前はありますが、Chris Espinosaの名前はありませんね。
論文の謝辞には名前があげられてるのに、なぜだろう…。
ちなみに開発メンバーの中には日本人の名前もありますね。
http://www.cs.utexas.edu/~wcook/Drafts/2006/ashopl.pdf
605名称未設定:2009/04/24(金) 09:37:42 ID:dawE2+ah0
>>604
ありがとう、俺も最近どこかで読んだが分からなかったので、すっきりした。
606名称未設定:2009/04/26(日) 18:24:42 ID:zhEj7A+E0
質問です。
quicktimeで自動エンコさせるスクリプトを組んでいるのですが、現在エンコ中か否かの判断をファイルサイズで判定しようとしています。
二回の判定の間にdelayを入れてますが、何故か測定値が二回とも同値で返ってきてしまいます。
原因のわかる方いらっしゃいますでしょうか?
以下、該当部分だけ抜き出します。


tell application "Finder"
set firstdata to size of file "change.mov"
end tell

delay 300

tell application "Finder"
set seconddata to size of file "change.mov"
end tell


if seconddata = firstdata then (以下省略)
607名称未設定:2009/04/26(日) 18:40:19 ID:YrTAymmC0
>>606
エンコ中でファイルに書き出されてないからとか。
エンコ終了しても同じ値なの?
608名称未設定:2009/04/26(日) 19:07:24 ID:m06JOqFF0
エンコ中は、一時ファイルに書出してる。
しかも不可視属性で。
ターミナルで確認出来るよ。
609名称未設定:2009/04/26(日) 19:20:43 ID:t5z6VwIc0
そんなことしなくても,普通にスクリプトから実行したエンコは終了時に結果がスクリプトにかえるじゃん。
なぜそのような面倒をしなくてはいけないのかよくわからない。

610名称未設定:2009/04/29(水) 14:42:31 ID:DarRGFRi0
611名称未設定:2009/05/01(金) 20:51:03 ID:AObOhZeI0
applescriptではないと思うんだけどもし知ってる人がいたら教えてくれませんか
EXCEL2004のVBAでapplescriptを実行する際に
MacScript ("download.scpt")
と実行するのですが
download.scptに引数を持たせたいとき
MacScript ("download.scpt world")
にしてもエラーが出てしまいました
MacScriptの中の実行しようとするスクリプトに引数を持たせたいときどうすればいいか
対処方法を知ってる方が忌ましたら教えていただけないでしょうか
よろしくお願いいたします
612名称未設定:2009/05/01(金) 22:51:54 ID:4QK2oGBF0
>>611
アップルスクリプトには、引数を指定できない。
シェル関数を使えば、引数の指定が出来るので、それで代用すれば?
やりたい事が、何なのか判らないので具体的どうしろとは言えないが。
613名称未設定:2009/05/02(土) 00:23:18 ID:0nRo4xwr0
>>611
もしかしてVBAのスレで質問してた人?
614名称未設定:2009/05/02(土) 01:40:31 ID:pIVluPwb0
applescript側に特定のテキストファイルやセルから引数を読み取る処理を入れておけばいい
615名称未設定:2009/05/02(土) 21:58:35 ID:VNFqXEXPO
まぁ>>614の方法が定石かな。

ていうかそもそもコマンドラインの概念がないMacではいわゆる引数なんてのもなかったところにAppleScriptだのターミナルだのが入ってきたからこういう質問が出るんだよなぁ。
まぁASには世話になってるし、便利だから否定はしないんだけど。

これ以上は哲学論になりそうだからこの辺で。チラ裏すまそ
616名称未設定:2009/05/03(日) 21:16:47 ID:jMJr40Ab0
でも昔はファイルの選択順とかもきちんとアプリ側に渡されてたよなあ。
いまはめちゃくちゃ。
617名称未設定:2009/05/06(水) 18:18:42 ID:88NaZlCL0
>>614
>applescript側に特定のテキストファイルやセルから引数を読み取る処理を入れておけばいい
クリップボード経由でも引数を渡せる

--clipboard is something like "book1;1500"

set text item delimiters of AppleScript to ";"
set hikisuuList to the clipboard
set mono to text item 1 of hikisuuList as text
set nedan to text item 2 of hikisuuList as number

ブラウザーから引数を渡して,appleScriptを実行することも可能。すごいことができる!

http://www.apple.com/applescript/linktrigger/
618名称未設定:2009/05/08(金) 19:19:41 ID:Q/b1ZXLGi
複数開いているsafariのウィンドウの中で、一番手前にあるウィンドウをactiveにして、その画面上のテキスト情報を、
コマンド+aで全選択し、コマンド+cでコピーする
という処理はどの様なapplescript になりますでしょうか。
よろしくお願い致します。
619名称未設定:2009/05/08(金) 20:12:32 ID:yArLlEst0
>>618
>>1
>【注意】
>安直なスクリプト作成依頼、丸投げはやっちゃダメ! わからない点、エラーが解決できない点について、スクリプト片を添えて質問しよう。
620名称未設定:2009/05/08(金) 20:49:35 ID:iCuTc15f0
書くのも面倒なくらい簡単なのでレスつかない感じ
というか調べてないだろ
621名称未設定:2009/05/08(金) 22:30:55 ID:WFRjsTTt0
フォーカスがアドレスのとことか検索のとこにあると面倒そうだな〜。
documentのsourceかtextをset the clipboard toとかした方がええんでない?
622名称未設定:2009/05/09(土) 07:00:30 ID:oMS6MlVs0
tell responseNumber '618'
 do practice by yourself
end tell
623名称未設定:2009/05/09(土) 12:47:06 ID:W+fM2Fc80
構文エラー

end of line があるべきところですが unknown token が見
つかりました。
624sage:2009/05/09(土) 14:57:35 ID:1jJZLE260
>>618
>という処理はどの様なapplescript になりますでしょうか。
私は618ではありませんが,この程度の仕事を有料(10万円?)で
請け負う業者は,日本にありますでしょうか? 私も時々,お金を
支払ってもよいので,助けてもらいたいことがありますので。
625名称未設定:2009/05/09(土) 15:11:14 ID:ZfNrnr3O0
626名称未設定:2009/05/09(土) 16:53:49 ID:pKuXQG/5O
>>624
この程度の仕事を10万円でよければ俺が請け負うけど
627名称未設定:2009/05/09(土) 17:50:24 ID:OcpHrPQ80
このスレには腐るほどいそうだな。

>>618
つか金掛けていいなら、Quickeysとかと併用した方が手軽に作れるぞ。
628624:2009/05/09(土) 17:59:39 ID:1jJZLE260
>>625, 626
情報ありがとうございます。

>>618 のような依頼を一番安く請け負う人を捜すオークションのような
ものがあれば,利用する人は多いのではないでしょうか?

例:

オークション開始時間:5月9日11時
出品(?)者:[email protected]
開始価格:10万円
現在の価格:8万5千円
入札者:[email protected]
入札件数:8件
オークション終了時間:5月19日19時
仕事内容: >>618
納期:6月19日
支払い方法:商品納入後3日以内に銀行振り込み



629名称未設定:2009/05/09(土) 18:39:23 ID:gOokyMgW0
AppleScript製作依頼スレ(丸投げ)
とかあったら>618程度の簡単なスクリプトなら暇な時に作るかもしれない。
何か作るのは好きだけど普段はあまりネタが無いので。

ちなみに>618はオートメーターでできそう。
630名称未設定:2009/05/09(土) 18:50:32 ID:OcpHrPQ80
でも、どうせすぐに価格下落するだろ。

このスレ見てると、奇特というかなんというか、よくそこまでって人間が多いからな。
他のスクリプトスレ、プログラミングスレに比べて、格段に多い印象を持つのは
AppleScriptが頼む方、作る方ともに手軽だから何だろうが。

つか2chで一番勝手にスクリプトを作ってくれるスレじゃね、ここ?
631名称未設定:2009/05/09(土) 22:00:48 ID:W+fM2Fc80
>>628
それやると将来プログラム単価が下がってソフト業界が危ないかもしれない。

>>618
「 Macのこんなソフト・アプリを探してます」スレで目的のアプリなければ
AppleScriptで作ってくれる場合(も)あるよ。
632名称未設定:2009/05/12(火) 23:27:37 ID:FPEttIxO0
PHPからAS叩きたいんだけど上手くいかない。
10.5.6と内蔵のapache2とPHP5.2.6。safari3.2.1。localで動かしてる。
いろいろとやってみたのだが。例えば(記号化けるかも)こんなので
<?php echo shell_exec('sh test.sh'); ?>

#!/bin/sh
ls -la
shファイルがこれならば大丈夫。動く。でもASの1行を足すと動かんようになる。読み込み途中で止まる。
osascript -e 'tell application "System Events" to choose file'
ターミナルでshはちゃんと動く。
他も思いつくことはいろいろやってみたけど、どの書き方でもPHPからAS呼んだ時点で止まる。

環境が今の環境しかなくて、私の環境が悪いのか、書きかたが悪いのか解らんのです。
誰かおしえてくださいませ。
633名称未設定:2009/05/13(水) 02:35:32 ID:FD/JG1F7O
取り敢えずSystem Eventsにtellする必要は無いと思う
634名称未設定:2009/05/13(水) 08:56:06 ID:sV0y9G9b0
apache 経由だと普通のやり方ではウィンドウだせんと思った。
635名称未設定:2009/05/13(水) 09:22:02 ID:QmqTEE2h0
>>633−634
あー。適当に書いただけ。別にイベントやりたい訳じゃなくて例だよ。
#!/bin/sh
osascript << EOF
tell application "Finder"
activate
end tell
EOF
例えばこんなんでも同じ。動かないんよ。
636633:2009/05/13(水) 11:20:45 ID:FD/JG1F7O
ごめんなさい間違ってたかも

ターミナルからtell抜きでchoose file実行すると-1713エラーになっちゃうので、
何等かのアプリにはtellしないとダメかもしんない
多分本題とも無関係だ…

php知らない癖に余計なレスして申し訳ないです
637名称未設定:2009/05/13(水) 12:44:38 ID:24+G55b80
この辺?
ttp://developer.apple.com/documentation/MacOSX/Conceptual/BPMultipleUsers/Concepts/SystemContexts.html#//apple_ref/doc/uid/20002208-116501-BAJBHGEJ
Frameworks Available in the Root Session
Many system frameworks depend on the window server for part of their implementations. (中略) However, if you are writing a daemon or other type of program to run
in the root session, there is no window server process with which to communicate. As a result, many higher level frameworks cannot be used at all.

ttp://developer.apple.com/technotes/tn2005/tn2083.html#SECDAEMONS
Daemons
(前略) A daemon cannot display any GUI; more specifically, it is not allowed to connect to the window server. A web server is the perfect example of a daemon.

638632:2009/05/13(水) 13:13:56 ID:BTTOhXxR0
>>637
うん。ためしに open /Applications/TextEdit.app やってみても動かなかった。
ASの問題じゃなかったんだ。セキュリティだったんだね。
launchd と Daemon か。勉強してみる!!!ありがとーー!!!
639624:2009/05/13(水) 20:21:17 ID:HPdBwNRb0
>>632

これが可能なので,
>ブラウザーから引数を渡して,appleScriptを実行することも可能。すごいことができる!
>http://www.apple.com/applescript/linktrigger/

SafariからPHPやperlで次のようなCGI(=AppleScript)が実行可能
seekdvd://com.taro.AppleScript.seekdvd?time=321&DVDname=matrix1

私はSafariからこのAppleScriptにタイムコードとDVDの名前を送って,Apple DVD Player(ソフトウェア)に映画の場面を呼び出しています。

機能が豊富なSafariからローカルのAppleScriptが呼べるので,非常に便利。
640624:2009/05/13(水) 20:28:51 ID:HPdBwNRb0
>>639
間違いに気がついたので修正。
>SafariからPHPやperlで次のようなCGI(=AppleScript)が実行可能
>(1) seekdvd://com.taro.AppleScript.seekdvd?time=321&DVDname=matrix1
正しくは,html+javascriptのファイルから直接,(1)のようなAppleScriptが
実行出来る。同じhtml+javascriptファイル内に,perlやPHPを呼び出すコード
を入れることも可能。
641名称未設定:2009/05/13(水) 23:25:37 ID:xdtAikh90
>>632
#!/usr/bin/php
<?php
system("osascript -e 'tell application \"System Events\" to choose file'");
?>
これは動くよ
642632:2009/05/14(木) 00:11:14 ID:2AAUctmY0
>>641
うーと、うんと。shellから呼ぶのはできるんよ。やったのはshellだよね?
phpの中からshell_execで呼んだ時のことなんよ。
ちなみにshだけじゃなくて他のターミナルプログラムでもだめなん。
だからたぶん >>637 さんのだと思うん。で、がんばって読もうとしてる。

>>624さんのどうやって読むの?seekdvd://って何のアプリで実行できるん?たろーさん?削ってもみえない。
ぐぐったら音楽関係?うーーー。わからん。もう少しヒント欲しいかも。

英語ページ。単語は辞書引いたらわかる。でも文章になると理解するんに時間かかる。いや理解できんほうが多いんよ。
なきそう。頭悪いんよ。私。ゆっくり勉強する。解ったら報告する。
今日は飲みにつれてかれたから駄目かも。でも1時間だけ頑張る。
643名称未設定:2009/05/14(木) 00:35:15 ID:8H56Jb2/O
いきなり私情垂れ流しかよ。薄汚い。
酔い覚ましてまともな文章書けるようになってから来いや。
これだから酔っ払いは嫌いなんだよ。
644632:2009/05/14(木) 00:37:17 ID:2AAUctmY0
>>624
ごめん連カキ。少しパニクり収まりました。酔いはまださめんけど。
上のリンクに解決策が書いてあるのだけは理解しました。>>637さんのと合わせてゆっくり読んでみます。
仕事なんてやんないでずっと勉強だけやってればいい人に(←いないって。そんなひと)生まれたかったなー。週末に燃えるぜ!!!
645632:2009/05/14(木) 00:38:16 ID:2AAUctmY0
>>643
あ、ごめん。遅かった。ごめんね。
646名称未設定:2009/05/14(木) 04:32:21 ID:CbIkU6cQ0
>>643
その乱暴な言葉なんとかならない?気分悪い
647624:2009/05/14(木) 13:26:29 ID:nlDw7ho+0
>>642
>seekdvd://って何のアプリで実行できるん
これはAppleScriptをjavascriptのwindow.open(URL,...)
または,<a href=URL ...>appleScript1</a>のようにして,
Safariから呼び出すときのおまじないです。

英文の説明通りに,AppleScript内のInfo.plistの編集が必要です。
AppleScript歴13年の私にも,Info.plist編集は初めての作業で,
最初は不安でしたが,上手く動き,大感激です。

この機能は魅力的です。
648名称未設定:2009/05/17(日) 09:33:34 ID:K73s2t5c0
>>639
そのapple.comのページ削除されてるんだけど、その機能使って大丈夫なの?
セキュリティホール作りそうな機能だな、ってのが第一印象だ
649名称未設定:2009/05/17(日) 10:23:19 ID:giB4EXQ90
どうやらAppleScript関連はすべて
http://www.macosxautomation.com/
に移動されてるみたいだ。
自動化関連でまとめてみましたというかドメイン名長いなおい。
650名称未設定:2009/05/17(日) 11:53:40 ID:vVr4QXRk0
>640
機能としてはいいんだけど,CGIとは呼ばないんじゃないか?
CGIはあくまでもサーバ側で動くものという理解なんで。
AppleScriptで.cgiのアプリを作る方法が昔あったけど,今でも使えるのかな?

651名称未設定:2009/05/17(日) 12:00:31 ID:ETJhil530
よく分からないしまだAlphaだけどこんなのある。
Mother
http://www.mugginsoft.com/mother

どうもサーバーサイドAppleScriptってことらしい。
ぴよまるさんのブログで知った。
ttp://piyo.piyocast.com/piyocolumn/2008/applescriptmother.html
652名称未設定:2009/05/18(月) 02:26:43 ID:Gh046Y190
>>650
スクリプターズミーティング?だっけ。
AppleScriptのCGIで作られてる掲示板サイトがあったよね。
653640:2009/05/18(月) 06:37:25 ID:ckzORXVl0
>>650
>CGIはあくまでもサーバ側で動くものという理解なんで。
おっしゃる通りです。引数が...?x=aaa&y=bbb... と渡せる
ので、間違ってCGIと表現してしまいました。
654名称未設定:2009/05/19(火) 15:22:18 ID:q0trasev0
AppleScript Studioで、起動時に、たとえば、コマンドキー押しながらダブルクリックして
起動した場合と、単にダブルクリックで起動した場合で、処理を変えたいのですが、
起動時に押されているキーを取得する方法ってありますか?
655名称未設定:2009/05/19(火) 16:30:08 ID:yhfqDKrC0
Jon's Commandsが使える環境ならkeys pressedで簡単だったけど、ダメなら↓あたり?
ttp://macscripter.net/viewtopic.php?id=19065
656名称未設定:2009/05/19(火) 19:53:05 ID:q0trasev0
>>655
このURLのを参考に実現できました!
ありがとうございます。
657名称未設定:2009/05/21(木) 15:01:33 ID:pv3/B7PX0
OS9からOSX(10.4.11)に移行中です。
OS9では動くのですが、OSXではうまくいきません。
複数のファイルのファイルネームを新旧のテキストファイルに従ってコピーリネームをかけるものです。

どのへんがおかしいのかヒントを頂けないでしょうか?

tell application "Finder"
make new folder at desktop with properties {name:"copy folder"}
select folder "copy folder"
open selection
set afolder to choose folder with prompt "複製したいファイルのあるフォルダは?"
activate
try
set text item delimiters of AppleScript to return
set text_1 to read (choose file with prompt "旧テキストファイルを選択" of type "TEXT")
set text_2 to read (choose file with prompt "新テキストファイルを選択" of type "TEXT")
repeat with i from 1 to (count text item of text_1)
set my_item to text item i of text_1
set newname to text item i of text_2
set thefiles to (every file of entire contents of folder afolder whose name is my_item)
duplicate thefiles to folder "copy folder" of desktop
select file my_item of folder "copy folder"
set name of selection to newname
end repeat
end try
set text item delimiters of AppleScript to ""
end tell
658名称未設定:2009/05/21(木) 16:14:30 ID:fhY7OPvr0
テキストファイルの改行コードが違うせいでうまく分割できてないとか?
旧OSデフォルト: \r (0x0d)
新OSデフォルト: \n (0x0a)
659名称未設定:2009/05/21(木) 16:30:31 ID:pv3/B7PX0
>>658
ありがとうございます。読込むテキストはOSXで作成したものですので
改行の文字コードでは無いのではと思いますが・・・。
660名称未設定:2009/05/21(木) 16:47:00 ID:fhY7OPvr0
そしたらスクリプトエディタのウインドウ下部でイベントログってのを選んどいて実行し、吟味する。
661名称未設定:2009/05/21(木) 17:38:33 ID:JUeQ7uQJ0
>657
とりえあずどこで引っかかって、何てエラーが出てるかぐらいは書いたら?
662名称未設定:2009/05/21(木) 17:43:13 ID:TrXAWxZN0
info.plistなどのValueを得るにはどうすればよいのでしょうか?
663名称未設定:2009/05/21(木) 17:53:50 ID:LSY4s3VX0
改行コードの問題じゃなければ
select file my_item of folder "copy folder"
set name of selection to newname

set name of file my_item of folder "copy folder" to newname
と一行にすればいいかも。
あと同じように最初の2〜4行部分もいったん選択させてまた選択部分を探させるとかより
open (make new folder at desktop with properties {name:"copy folder"})
とか、
set myCopyFolder to make new folder at desktop with properties {name:"copy folder"}
open myCopyFolder
とかするようにしたほうが無難だし色々便利だよ。
664名称未設定:2009/05/21(木) 18:30:53 ID:KezhojMS0
>>657 そもそもtext_1、text_2ともにリストになってないよ!!
665名称未設定:2009/05/21(木) 18:55:47 ID:QmjsjipI0
>>657
repeat内をこんな感じで

repeat with i from 1 to (count of paragraphs of text_1)
set my_item to paragraph i of text_1
set newname to paragraph i of text_2
set thefile to file my_item of afolder
set newitem to duplicate thefile to folder "copy folder" of desktop
set name of newitem to newname
end repeat
666665:2009/05/21(木) 19:20:37 ID:QmjsjipI0
>>657
ちょっと添削

テキストを改行で区切るのにparagraphsを使うと
delimiterが必要なくなるよ。


>set thefiles to (every file of entire contents of folder afolder whose name is my_item)
フィルタ使って絞り込んで例えファイルが1つだったとしてもthefilesには
リスト形式で入るのでファイルそのものの名前を変更するには
set name of item 1 of thefiles to newnameとかやらないとダメ

set thefile to file my_item of afolder
とすればthefileに直接ファイルが入る。


あと忘れてたけどtryはrepeat内に入れないとダメ
テキストにはあるけど実際には存在しないファイルがあった場合など
継続してくれない。
667名称未設定:2009/05/21(木) 19:32:09 ID:pv3/B7PX0
657です
皆様ありがとうございます

テキストリスト読込みまでは出来ているようなのですが、リネームがうまく行えずに終了する感じです。
エラーも返さずにリピートもされません。結果 copy folderに始めのコピーファイルが一つ残っている状況です。

665様ありがとうございます。
duplicate thefiles to folder "copy folder" of desktop
select file my_item of folder "copy folder"
set name of selection to newname
この3行が問題だったのですね。そういえば変数の収め方を変えるとうまくいった事がありました。
詳しい添削もありがとうございます。全て無知な私には『うっそー!そうだったの』という内容です。
改めて咀嚼させていただきます。

試行錯誤を繰り返しているうち、レスが遅れ申し訳ありませんでした。
またよろしくお願いいたします
668632:2009/05/27(水) 22:43:47 ID:mbQsFiLB0
>>647 他皆々さま方
規制に巻き込まれ返事遅れてすいません。
今回のPHPからのGUIを含んだASの実行は、サーバサイドでのon adding folder で処理しました。

もちろん教えていただいた、seekdvd(動きました。すごいな)もlaunchdも暇を見て勉強します。がんばります。
見捨てずに応援お願いします。
669名称未設定:2009/05/31(日) 17:56:35 ID:nC+csEpV0
上で紹介されてたLaunch Scripts from Webpage Links
http://www.macosxautomation.com/applescript/linktrigger/index.html
を使ってみたけどいろいろ応用できそうでいいことを知りました。

これに関する細かいtipsとして
Info.plistにLSUIElementをstringで1を追加するとスクリプトを実行した時に
バックグラウンドで起動してアプリが表示されません。
しかし、他のAppleScript製アプリケーションが起動していると
このスクリプトを実行した時にそのアプリケーションが手前に来てしまいます。
そこでInfo.plistのCFBundleSignatureを適当に書き換えて(半角英数4文字でユニークなもの)
Info.plistと同じフォルダにあるPkgInfoをテキストエディタで開いて
後半4文字を上で書き換えたものにするとAppleScript製アプリケーションが起動していても
それが手前に来る現象が無くなります。
上記書き換えの後にはFinderに書き換えたことを知らせる為に
書き換えたスクリプトをいったんデスクトップに移動して
元に戻すなどの作業が必要な場合があります。
670名称未設定:2009/06/01(月) 22:09:02 ID:5re3dwDY0
4文字のコード(ファイルクリエータ)を使うのは古いやり方なんですけどね。
しかも大半のコードはすでに予約済み。
この問題を解決するため,CFBundleIdentifierでドメイン名と同じコード体系を使えるようになった。

671名称未設定:2009/06/01(月) 22:46:14 ID:nuIVfTra0
>>670
他のアプリ見たらPkgInfoが無いのもあるんだね。
PkgInfoは書き換えなくても消したらOKかな
672名称未設定:2009/06/03(水) 19:28:58 ID:B4sZ0VE/0
新しいやり方について行けない・・('A`)
673名称未設定:2009/06/04(木) 14:41:58 ID:fxthYjgt0
すごく初歩的な質問になってしまいますが

do shell script "~/app -v"

を、ログイン項目に入れて自動実行したいのですが
スクリプトエディタがでてきてしまいます
フォーマットをアプリケーションにしてみるとうまく実行できなくて困ってます

助言お願いします。
674名称未設定:2009/06/04(木) 15:13:25 ID:VYstycJf0
>フォーマットをアプリケーションにしてみるとうまく実行できなくて困ってます

どううまく実行できないのかを詳しく
それとOSバージョンを書く
675673:2009/06/04(木) 15:22:59 ID:fxthYjgt0
失礼しました、OS10.5.7です
appにすると

&1を取り出すことはできません。
編集             OK

とでます
OKを押せば実行できてるようなのですが、
あまり気持ちよくないし、そこは完全自動にしたいのです。
676名称未設定:2009/06/04(木) 15:24:42 ID:fxthYjgt0
&1

& a m p ; 1
677名称未設定:2009/06/04(木) 16:40:21 ID:fxthYjgt0
自己解決しました;;
まず、appを置く場所がよくなかったみたいで移動したら問題なく起動しました(とあるアプリのパッケージ内
このコードのまま起動するとrunを押さないと動いてくれなかったので

do shell script "~/app -v &"

にしたら自動で起動してくれるようになりました。
スレ汚しすいません
678名称未設定:2009/06/07(日) 07:38:08 ID:h6jE2aK/0
applescriptで、ログインウィンドウにしたあと
スリープさせることってできるでしょうか?
10.5.6/intelです。
679名称未設定:2009/06/07(日) 09:01:53 ID:ATf/9vvT0
ログアウトは可能だけどその後のスリープって難しいんじゃない?
ログアウトした時点で実行権は手放してるような…
680名称未設定:2009/06/07(日) 09:30:23 ID:d3VbnpDx0
>>678
AppleScriptではスリープだけさせて
コンパネでスリープからの復帰時にログインウインドウを表示させるオプションをONにすればいいんじゃね?
681678:2009/06/07(日) 22:56:25 ID:h6jE2aK/0

>>679
説明不足ですみません。
ログアウトはせずにファストユーザースイッチで
ログインウィンドウにする場合でした。
その場合も実行はできないかのかも知れませんが・・。

>>680
ああ、もしAppleScriptでコンパネの設定を変更できれば、
ログインウィンドウを出さない復帰(在席中、待機時間がすぎて自動でスリープする場合)と
ログインウィンドウを出す復帰(離席などでスリープさせる場合)を区別できてよさそうですね。
682名称未設定:2009/06/08(月) 00:11:58 ID:8Pyc4iK00
>>681
・UI Scriptingが有効
・日本語
・メニューバーにファストユーザースイッチ表示
 (しかも右のほうにあるとかなりウザい動き)
という限定された条件だけど、ログインウィンドウを出すまで。

tell application "System Events"
tell process "SystemUIServer"
tell first menu bar
set menuExtraList to every menu bar item
repeat with aExtra in menuExtraList
try
tell aExtra
click
try
tell front menu
tell menu item "ログインウインドウ..." to click
return 0
end tell
on error
click
end try
end tell
end try
end repeat
end tell
end tell
beep
end tell
683名称未設定:2009/06/08(月) 00:22:57 ID:73cBRrcn0
>>681
ファストユーザスイッチでログインウィンドウを表示した後スリープ

do shell script "/System/Library/CoreServices/Menu¥¥ Extras/User.menu/Contents/Resources/CGSession -suspend"
tell application "System Events" to sleep
684名称未設定:2009/06/08(月) 00:26:41 ID:73cBRrcn0
683の ”¥" はバックスラッシュで。念の為
685678:2009/06/08(月) 07:06:38 ID:qRIcyF3F0
>>683,684
ありがとうございます!
どちらも無事に動作しました。
686678:2009/06/08(月) 07:11:47 ID:qRIcyF3F0

× >>683,684
○ >>682,683
687名称未設定:2009/06/13(土) 00:30:20 ID:vE7EViQwO
最近ネタもないので保守ついでに。
「Safariで最前面のウインドウに含まれるタブのURLを抜き出し、Mailに貼付け、下書きに保存する」スクリプト書いたけど、うpしてもいいですか?

母艦で閲覧中のページをiPhone等で閲覧するときに便利かと思ったけど(そして実際便利)
688名称未設定:2009/06/13(土) 04:13:37 ID:v6WiuQp70
おねがいします
689687:2009/06/13(土) 21:06:23 ID:kR6bttbH0
687です。あんまりうまいスクリプトじゃないかもなんで、大目に見てください。
なお、使用にあたっては、1行目のGmailの部分を変更してください。あとは見ていただくとわかると思います。そんなに難しいことはしていません。
--ここから--
property acc : "Gmail"---お使いのIMAPアカウント名
my makeNewMessage(getUrls(), "URLs " & getCurrentDateTime("+%y%m%d_%H%M"))

(* 以下、関数群 *)
--最前面WindowのtabのURLをテキスト形式(デリミタ:改行)で取得
on getUrls()
set asdlm to AppleScript's text item delimiters
set AppleScript's text item delimiters to {return}
tell application "Safari"
tell front window
return (URL of every tab as string)
end tell
end tell
set AppleScript's text item delimiters to asdlm
end getUrls

--与えられたパラメータをもとにメールメッセージを作成、保存 パラメータ:本文とサブジェクト
on makeNewMessage(body, subj)
tell application "Mail"
set newMessage to (make new outgoing message with properties {subject:subj, content:body, visible:true, account:acc})
save newMessage
end tell
end makeNewMessage

--現在の日付・時刻を取得。シェルスクリプトを使用。だってAppleScript単体だとめんどくさいんだもん
on getCurrentDateTime(opt)--opt:dateコマンドに渡すオプション
return (do shell script ("date " & opt))
end getCurrentDateTime
--ここまで--
690名称未設定:2009/06/14(日) 00:23:58 ID:F9xi/s+50
質問というか、相談というか、なんと言うか、なのですが

フォルダアクションスクリプトを書いていてちょっと引っかかりました
やろうとしていることは、フォルダにファイルがドロップされたら、そのファイルの内容を調べ、内容にあったファイル名にする、というものです
あまりAppleScriptに慣れていないので、フォルダアクションで取得したファイルのリストをC++で書いたコマンドラインアプリにわたし、リネームしようとしています
で、その前段階としてこのようなスクリプトを書きました

on adding folder items to this_folder after receiving added_items
set p to POSIX path of added_items
do shell script "mv" & space & p & space & p & ".`date +%H%M%S`"
end adding folder items to

フォルダアクションとして適当なフォルダに割り当て、ファイルをドロップしてみると延々とリネームされます
どうやらリネームされることで「新しいファイルが加わった」と判定され、このスクリプトが呼び出されるようです
リネーム前にロックファイルを作成し、ロックファイルがあった場合は削除して終了、ない場合はリネーム、ということも考えたのですが
1ファイルのドロップで2回動作するのがスマートではないな、と
あるいはdropletにし、リネーム後にフォルダへ移動ということも考えたのですが、内容解析のロジックは一つなのですが分類用のフォルダは複数あるので
dropletもあまり有効ではありません(ログファイルを週ごと、月ごと、あるいは適当な単位でフォルダに入れて分析するイメージです)

ファイル名が変更されたことを拾わないのが一番良いのですが、どうもそれらしいことはできないようで、こまっています

皆さんならどうしますか?フォルダアクションでやろうとすることが間違いでしょうか?
691名称未設定:2009/06/14(日) 01:03:43 ID:rL2Y4BEK0
別のフォルダに移動してからリネーム は?
692名称未設定:2009/06/14(日) 04:58:37 ID:GbfflDsr0
「分析」-リネーム-移動を1つのdo shell scriptでやれば問題ない話ではないのか?
移動してしまえば当該フォルダへの追加というイベントは拾わなくなる気が。

前段階だけやってるからハマっているように私には見える。
693名称未設定:2009/06/14(日) 11:53:09 ID:aUwSj36e0
>>690
フォルダアクションで、ファイルが追加された時に、日付のフォルダを作って
そこに移動するってスクリプトはよくあるけど、フォルダ作っても新しいファイルが
追加されたとは認識されないよ。

いくつか気になる点が…

added_items は、ファイルのリスト (複数ファイルが入る可能性あり) なんだけど、
考慮されてないっぽい

.DS_Store や Icon^M みたいな、Finder が勝手に作るファイルを考慮に入れてない
→ どうやってフォルダアクションが延々動いてるって確認した?
694690:2009/06/14(日) 22:18:43 ID:F9xi/s+50
書き込み、ありがとうございました
遅くなりましてすみません

説明不足でした
やりたいことは、テキストファイルの内容を分析し、内容にあったファイル名にする、です
テキストファイルは、例えばApacheのログであったりTomcatのログであったり、そのほか適当なアプリケーションのログであったりします
テキストファイルが何のログかは分析しないので、APACHEフォルダやTOMCATフォルダや適当なアプリフォルダを作り、そこにドロップすることでフォルダクションスクリプトが動いて分析し
リネームされたファイルがそのフォルダの中にある、という動作を想定していました
分析内容は日毎のアクセス件数の平均の多寡によりOKやNGと言ったような感じです(実際はもう少し複雑なのでC++で作成しました)

前段階のスクリプトは、AppleScriptに慣れていないので、とりあえずShellScriptを呼び出す方法を理解したくて書いてみただけです
が、AppleScript側というかフォルダアクション側から見れば、フォルダアクションの結果、フォルダにドロップされたファイルの名前が変更される、ですので
前段階のスクリプトで充分検証可能だとおもったのです
695690:2009/06/14(日) 22:20:15 ID:F9xi/s+50


>>691
>>692
自分の想定ではフォルダアクションを設定したフォルダに入れておきたいのですが、やはり設定したフォルダから移動するのが一般的でしょうか?
分析するアプリケーションの種類が少数であれば良いのですが、いずれ増やしていくつもりなので、1つのアプリに付き2つのフォルダというのはちょっと贅沢かな、とおもっています

>>693
>added_items は、ファイルのリスト (複数ファイルが入る可能性あり) なんだけど、
適当なテストのつもりでしたので、ここではリストであることは無視していました

>.DS_Store や Icon^M みたいな、Finder が勝手に作るファイルを考慮に入れてない
これは想定外でした
がC++の方で拡張子を指定(.logだけ処理)としていたので、特に問題はないかとおもっています

>→ どうやってフォルダアクションが延々動いてるって確認した?
前段階のスクリプトをフォルダアクションとして設定し、そこにファイルをドロップするとAppleScriptが実行されるたびにドックにアイコンが表示されたので
延々と実行されているのだ、と認識しました
ターミナルを立ち上げ、そのフォルダに移動してlsを連打し、ファイル名の後ろに時刻がどんどん付け足されてファイル名が長くなっていくのも確認しましたので
フォルダアクションを設定したフォルダの中でリネームするということは「新しいファイルが加わった」と判定されるのではないか、とおもったのです
696名称未設定:2009/06/14(日) 23:41:22 ID:12ThMYRE0
shellに渡すと延々動くね。AppleScriptだけで完結すれば問題ないけど。
フォルダ内のファイル数を記録しておいて、変わらなければ何もしないようにするとか。
スマートじゃないね。頭悪いんでこの程度しか思いつかん。スマン
697690:2009/06/15(月) 00:34:30 ID:ShPQmIPm0
>>696
検証ありがとうございます

AppleScript内で完結していれば何の問題もないということは、ShellScriptが起動した時点で別プロセスとなっている為、イベントが発生する、ということなのでしょう
同プロセスで起動することも出来ないですし、C++の方で分析した結果をAppleScriptに返してAppleScriptでリネームしてみます

読んでくださった方、書き込んでくださった方、本当にありがとうございます
もう少しAppleScriptで遊んでみます
698名称未設定:2009/06/15(月) 05:06:42 ID:3+Uz5go00
思いつきで言うんで、間違ってたらごめんなんですが、
C++のコマンドでは、変更後になるべきファイル名を返すようにして
リネームの処理はAppleScriptにやらせるのだとどうなるでしょうか。

コマンドの結果はdo shell script の戻り値として得られます。つまり
set newName to do shell script "yourCommand "
699名称未設定:2009/06/15(月) 05:08:37 ID:3+Uz5go00
途中で送ってしまった。つづき

AppleScriptでのリネームは
tell app "Finder"
set name of theFile to newName
end
こんな感じです。
700692:2009/06/16(火) 00:03:33 ID:VeIPeggb0
冷静に>>690を読むと確かにリネームまでC++のツールでやろうとしてるように読めるな
実際、C++で処理する方が実行速度は稼げるけど、そこまで必要なければ、というか、AppleScriptと連携させるのであれば、寧ろファイル操作はASに任せてもいい気が。

つかファイル名じゃなくて、ファイル種別によって予め決めた終了コードを返し、AS側で分岐させるかな、俺なら
701名称未設定:2009/06/16(火) 00:29:56 ID:xRcB0s0l0
C++で書く方が得意or簡単ならAppleScriptに固執する必要は無いでしょ。
launchd Agent使えばfolder監視もできる。
http://developer.apple.com/macosx/launchd.html
~/Library/LaunchAgents/com.apple.FolderActions.folders.plistを
見れば判る様にLeopardではFolderAction自体launchd Agentを使ってる。
702690:2009/06/16(火) 00:51:09 ID:6K94KIQ60
色々とありがとうございます

>>698
>>700
現在はAppleScriptでフォルダアクション→C++で解析→解析結果を拾ってAppleScriptでリネーム、という流れにして、想定通りに動くようになりました

703690:2009/06/16(火) 00:54:13 ID:6K94KIQ60
>>701
何と、そんな方法が……
素晴らしい情報ありがとうございます
704名称未設定:2009/06/16(火) 00:59:04 ID:ZEmWLU6h0
ttp://piyocast.com/as/archives/253

上のソースを実行しても,うちのLeopard環境(10.5.7)では値がかえってきません。
同じLeopard環境で上のソースが問題なく実行できるという方はいますか?
705名称未設定:2009/06/16(火) 01:47:24 ID:JK7Z2RtGO
規制うざいのぅ

>>704
基本的な事だが、まずはこれを確認
ttp://piyocast.com/as/archives/269
706名称未設定:2009/06/16(火) 07:44:51 ID:ER9HQYNK0
>>705
最初にそこを確認しましたけどダメでした。
補助装置にはチェックが入ってて >>704 で確認してもtrueということで。
707名称未設定:2009/06/16(火) 09:59:41 ID:05VgSyEgP
OS9なんですけど、クリックで本体をスリープさせる
スクリプトってできますか?
708名称未設定:2009/06/16(火) 10:44:44 ID:byiJ9M1d0
>>707
スクリプトエディタ以下を記述して、アプリケーションで保存。
tell application "Finder" to sleep
709707:2009/06/16(火) 11:14:01 ID:05VgSyEgP
>>708
ありがとうございます。
できました。
710名称未設定:2009/06/16(火) 11:19:24 ID:byiJ9M1d0
>>704
多分、言語を英語にしないと、そのままじゃ動かない。
そこの tell list 1 の直後に以下のコードを追加して処理を見れば原因が分かると思うよ。
repeat with i in every UI element
log (description of i) as string
end repeat

うちの環境(10.5.7)では、上記コードで例えばアプリケーションなら "アプリケーション Dock 項目" という文字列が返ってきた。
Leopardになってから、description の値に日本語翻訳が入ったのかもしれない。
というわけで、取得できるようにするには tell list 1 〜 end tell の処理を下記のようにすれば良いかと。

--アプリケーション
set apList to title of every UI element whose description is equal to "アプリケーション Dock 項目"
--登録された書類
set docList to title of every UI element whose description is equal to "書類 Dock 項目"
--最小化されたウィンドウ
set winList to title of every UI element whose description is equal to "しまわれたウインドウ Dock 項目"

ちなみに、フォルダを登録している場合は、下記のようにすればよさげ。
--登録したフォルダ
set folderList to title of every UI element whose description is equal to "フォルダ Dock 項目"
--returnを下記に変更
return {apps:apList, docs:docList, wins:winList, folders:folderList}
711710:2009/06/16(火) 12:03:39 ID:byiJ9M1d0
>>704
連投スマン。
10.4でも正しく動作させるには tell list 1 〜 end tell の処理を下記のようにした方が良いはず。

--アプリケーション
set apList to title of every UI element whose subrole is equal to "AXApplicationDockItem"
--登録された書類
set docList to title of every UI element whose subrole is equal to "AXDocumentDockItem"
--最小化されたウィンドウ
set winList to title of every UI element whose subrole is equal to "AXMinimizedWindowDockItem"


なぜなら、description の意味は「説明」。
説明が日本語だろうが英語だろうが空欄だろうが問題ないはず。
そんな説明を「種類」を抜き出す処理に使っているのは、推奨できないと思う。
その種類を表すプロパティが UI element の場合は subrole のようだ。
というか System Events の用語説明の subrole に書いてあるのね…。
an encoded description of the UI element and its capabilities
(適当訳:UIエレメントとその性質をコード化した)
712名称未設定:2009/06/16(火) 12:46:11 ID:JK7Z2RtGO
>>704
頓珍漢な事を書いてすまない
>>710の言う通り英語でしか動かないね
descriptionはローカライズされているようだ

言語依存しないようにwhose以下を
whose subrole is "AXApplicationDockItem"
whose subrole is "AXDocumentDockItem"
whose subrole is "AXMinimizedWindowDockItem"
てな感じで書いてみてもいいかな
713名称未設定:2009/06/16(火) 12:48:59 ID:JK7Z2RtGO
更新すりゃよかった
俺カコワルイ
714名称未設定:2009/06/16(火) 14:18:42 ID:Q058B9BW0
イラレやPhotoshopでメニューバーに「スクリプト」メニュー追加する方法が分からなくなりました。
以前は、そのためのapplescriptが付属していたような・・・
分かる方いたら教えてください。
ググりましたが解決しませんでした。
715名称未設定:2009/06/16(火) 20:59:07 ID:05VgSyEgP
すみません。

スクリプトエディタ1.6(OS9)で、「全てのウインドウを閉じる」の
スクリプトを書いたんですけど、構文エラーが出ます。

tell application "Finder"
close every Finder windows
end tell

どう直せばいいのでしょうか?
716名称未設定:2009/06/16(火) 21:04:56 ID:EnX+FFUl0
tell application "Finder"
close every window
end tell
717名称未設定:2009/06/16(火) 21:23:49 ID:05VgSyEgP
>>716
ありがとう
718704:2009/06/17(水) 10:27:30 ID:vplx/Ow80
>>710
>>712
教えていただいたsourceでタイトルが取得できました。
ありがとうございました。
719名称未設定:2009/06/17(水) 11:35:30 ID:3O0cPPFX0
これくらい環境整ってると生産効率格段に違うんだろうな...
素直に凄い
ttp://piyocast.com/as/archives/733
720名称未設定:2009/06/17(水) 22:58:00 ID:eqljvYl60
ていうか標準でも(必ずしも十分とは言えないが)そこそこには入力支援スクリプトがついているんだな。知らなかった
721名称未設定:2009/06/24(水) 16:39:56 ID:X8F7KQmY0
フォルダアクションを設定したフォルダに
大量もしくは巨大なファイルをコピーすると、
コピーが完了する前に、フォルダアクションが立ち上がってしまいます。
立ち上がってしまうのはしょうがないのですが、
コピーが終了するのを検知して処理を開始したいのですが、
可能でしょうか?
722名称未設定:2009/06/24(水) 16:47:56 ID:eiA3HxO00
コピーウインドウがなくなってから処理をするとか。
荒技ですまん
---
tell application "Finder"
set theWins to name of windows
if theWins does not contain "コピー" then
(* コピー終了後の処理 *)
end if
end tell
---
723名称未設定:2009/06/24(水) 18:20:39 ID:pWLsWSc10
acrobat7 proでしおりのリストを取り出すと日本語が文字化けするのですが、
何か回避方法はないでしょうか?
javascriptでやろうとしましたが、jsの方は文字化けしないのですがページ番号の取り出し方がわかりません。
724名称未設定:2009/07/01(水) 10:55:08 ID:5a5vkrF10
OS10.5.7使用。

a.jpg, b.JPGと混合したファイルをドロップすると、

・拡張子が大文字の".JPG"の場合".jpg"に変更。
・もしくは拡張子が大文字なら小文字へ。

どちらか簡単な方でよいのでどなたか教えていただけませんか?
725名称未設定:2009/07/01(水) 11:03:18 ID:yVm3oP8r0
>724
つRenamer4Mac
726名称未設定:2009/07/01(水) 12:16:10 ID:qz6hN3AM0
ファイル名のリネームはAutomator一択だろJK
"選択されたFinder項目を取得"→"Finder項目の名前を変更"の組み合わせでOK
"テキストを置き換える"にして検索文字列をJPG,置換文字列をjpgにすればいい
大文字/小文字を無視のチェックは外しておくこと
727名称未設定:2009/07/01(水) 13:24:08 ID:5a5vkrF10
>>726
X.JPGを選択したら
選択されたFinder項目を取得
になったが先がわからない・・
728名称未設定:2009/07/01(水) 20:07:26 ID:t/oRihd90
>>727
Automatorはワークフロー作成した後にファイルを選択して実行

単純に拡張子だけ大文字→小文字にするスクリプトならこんな感じ
on open DROPS
tell application "Finder"
repeat with I in DROPS
set OLDXTN to name extension of I as text
set LENGTHOFXTN to number of characters of OLDXTN
set NEWXTN to do shell script "echo " & OLDXTN & " | tr '[A-Z]' '[a-z]'"
set FILENAME to text 1 thru -(LENGTHOFXTN + 1) of (name of I as text)
set name of I to FILENAME & NEWXTN
end repeat
end tell
end open
729名称未設定:2009/07/01(水) 22:02:55 ID:MUMuOLwE0
>>724
shupapan使った方が楽だけどな
730名称未設定:2009/07/02(木) 14:16:14 ID:g9DhaeoR0
>>721
あまりいい方法とは思えないが、うちではこんな感じ。

フォルダアクションを設定したフォルダで
ls -l を実行すると、コピー中のファイルとコピー済みのファイルとで
パーミッションが違うのがわかる。
すべてのファイルのパーミッションがコピー済みの状態になるまで
repeatでls -l を繰り返して、コピー中かどうかを判定してる。
731名称未設定:2009/07/02(木) 16:09:18 ID:PPcna6kK0
インデザインCSで別名保存がしたく、以下のスクリプトを組んでみたのですが、
最後の置き換えボタンの所でエラーが起こります。
最後の所を"キャンセル"に変えるとエラーは起こりませんが、キャンセルも実行されません。


activate application "InDesign CS_J"
tell application "System Events"
tell process "InDesign CS_J"
click menu item "別名で保存..." of menu 1 of menu bar item "ファイル" of menu bar 1
click button "保存" of window "別名で保存"
click button "置き換え" of window 1
end tell
end tell
732名称未設定:2009/07/03(金) 01:05:03 ID:DHN2wJRV0
インデザ持ってないけど、あくまでも一般論として、activateするのってtell processした後じゃなかったっけ?
それから、
 click button "置き換え" of window 1
ってあるけど、of以下っているのかな?

見当違いだったらスマソ
733名称未設定:2009/07/03(金) 01:56:38 ID:kh9Cn6vBO
同じく持って無いので参考程度にしかならないが、
ボタンによる状態遷移がノータイムとは限らないから、
何らかのウェイトは置いた方がいいかもね

>>732
activateはapplicationに対する命令だから、
System EventsのElementsであるapplication processには直接影響しないよ
前でも後でも記述上問題無いけど、どちらかってーと前に書いた方が無難

あとof window 1を省くとprocess直下にbuttonがある事になっちゃうので、
それは構造上ありえないんじゃないかな

予想だとwindowではなくsheet、例えば
button "置き換え" of sheet 1 of window "別名で保存"
…だったりとか?
734名称未設定:2009/07/03(金) 02:04:12 ID:yJyiGUBh0
>>731
click button "保存" of window "別名で保存"
delay 0.3
click button "置き換え" of window 1
で解決
735名称未設定:2009/07/03(金) 09:26:49 ID:lU7fMxEu0
>732-734
ありがとうございます。
結論から言うと、>734さんの方法で上手くいきました。
ただ、delayだと0.3とは限らずエラーが起きる場合もありそうなんで、
もっと確実に回避できる方法って無いでしょうか?


で、言われたことも検証してみました。
一行目のactivate application "InDesign CS_J"は取るとエラーが起きました。
click button "置き換え" of window 1のof window1も削除するとエラーが起きました。

UI scriptは初めてで全くわからなかったんで、
UI Browser(demo)の吐き出したコードを元にやっています。

ただ、tell processの部分の"InDesign CS_J"はUI Browserの出すコードでは"Adobe InDesign"となってて、
そのままだと上手く動かなかったんで変更したんですよね。
736724:2009/07/03(金) 10:26:20 ID:ryg47w4R0
>>728
ご親切に有り難うございます。
あなたは今日から私の神です。

>>729
shupapan愛用してるが各設定のドロップレットを保存できればいいんだが。。
737名称未設定:2009/07/03(金) 10:51:41 ID:WDd3QFI30
System Events使わなくても済む程度にAppleScriptに対応して欲しいな
高いんだしAdobeのDTPソフトとMacは昔からの付き合いなんだしねえ
738名称未設定:2009/07/03(金) 15:18:12 ID:5UQuM/kF0
>>737
久しぶりにInDesign CS3開けてみた。普通にsaveコマンド効くよ?確かCS2も4もいけた記憶が。
Adobeもちゃんと頑張ってると思う。無印開けたことなかったから知らなかったけど対応してなかったのか。
739名称未設定:2009/07/03(金) 15:41:38 ID:lU7fMxEu0
>738
saveコマンドしかなかったので、別名で保存はできないのかと思い込んでいましたが
試してみたらできました。
まあ今回はUI scriptingを試す機会にもなったので良しとしておきます。
お騒がせしました。
740735:2009/07/03(金) 15:42:44 ID:lU7fMxEu0
間違えてメール欄に入れていた。
>739は735です。
741名称未設定:2009/07/04(土) 00:55:52 ID:TSGA7cJhO
>>735
先述の様に恐らくbuttonが(ていうかwindowが)表示される前にclickしようとしてエラーになってるので、
確実に存在する状態まで待つか、エラーにならなくなるまでclickし続ければいい

前者はdelay以下の代わりに
repeat until exist button "置き換え" of window 1
end repeat
click button "置き換え" of window 1

後者は同じく
repeat
try
click button "置き換え" of window 1
exit repeat
end try
end repeat

更に完璧を期するならenabledを調べたり、イロイロやる余地はある
742名称未設定:2009/07/04(土) 01:02:39 ID:TSGA7cJhO
訂正
existではなくexistsだっけか

あと書いてお置いてなんだけど無限ループは何かと危なっかしいから、
あんまり使わない方がいいかも
743名称未設定:2009/07/05(日) 01:33:26 ID:zOlSNB6s0
iTunesの曲情報を変更するScriptを作ろうとしましたが、うまくいきません。
やりたいことは以下の通りです。(iPodでアルバムを発売年順に並べるため)
1.曲情報の「年」を取得
2.それをアルバムのオリジナルと結合し、「並び替え」項目の「アルバム(読み)」に入れる 例:アルバム名”Carol” → アルバム(読み)"1988Carol" のようにしたい
ttp://blog.chibiegg.net/2009/06/29_20_337.htm を参考にして書いてみたのですが、数曲でエラーになったり、エラーは出なくても数曲は変更できなかったりします。スクリプトは以下の通りですが、どうすればうまくいきますか?
display dialog "iTunesで選択した曲の「アルバム(読み)」項目に年を入力します" buttons {"NO", "OK"} default button 2
set button_a to button returned of result
if button_a = "OK" then
--iTunesのスクリプト
tell application "iTunes"
try
set name_list to {}
set select_track to a reference to selection
if select_track as list is {} then return
repeat with i in select_track
set end of name_list to i
end repeat
repeat with i in name_list
set original_year to year of i
set original_album to album of i
set new_tag to original_year & original_album as string
set sort album of i to new_tag
end repeat
on error
display dialog "エラー発生" buttons {"OK"} default button 1
end try
end tell
display dialog "終了" buttons {"OK"} default button 1
end if
744名称未設定:2009/07/05(日) 09:00:25 ID:s3uFR/Ps0
>>743
処理速度が間に合わないのかも。一入力が終わるごとにdelay 1とかやってみて
745名称未設定:2009/07/05(日) 11:13:14 ID:zOlSNB6s0
>>744
どうもありがとう。試してみました。確かにエラーは出なくなりましたが、変更されないものがあるのは変わりませんでした。(約200曲でテストし、変更されないものが3割程度)
delay を 3 にしても症状は変わらず。
iTunesを見ていると、タグが変わると同時にどんどんソート順が変わっていくので、その分delay をかなり長く取らないといけないかもしれません。
746名称未設定:2009/07/05(日) 13:30:53 ID:lxajQgtH0
>>743
なんだかとても無駄が多い気がする。
シンプルにこんな感じではどう?

display dialog "iTunesで選択した曲の「アルバム(読み)」項目に年を入力します" buttons {"NO", "OK"} default button 2
set button_a to button returned of result
if button_a = "OK" then
--iTunesのスクリプト
tell application "iTunes"
try
set selectionList to selection
repeat with theTrack in selectionList
set original_year to year of theTrack
set original_album to album of theTrack
set new_tag to (original_year & original_album) as string
set sort album of theTrack to new_tag
end repeat
on error
display dialog "エラー発生" buttons {"OK"} default button 1
end try
end tell
display dialog "終了" buttons {"OK"} default button 1
end if
747743:2009/07/05(日) 19:04:44 ID:zOlSNB6s0
>>746
すばらしい!何度やっても成功します。
実行速度も大幅アップ。どうもありがとうございました。
確かに、上のループは無駄ですね。勉強になりました。

これを、iTunesでCD取り込んだ直後に必ず実行、のように設定するのは可能なのでしょうか。
748735:2009/07/06(月) 10:15:00 ID:U/rFKgL/0
>742
ありがとうございます。
今回は結局saveが使えましたが、今後の参考にさせて頂きます。
確かに無限ループは余り使いたくありませんが・・・。
749名称未設定:2009/07/06(月) 16:21:42 ID:Ik2H/7TsP
http://www005.upp.so-net.ne.jp/maruho/g4.html#20

このページの「20.起動時爆音問題、解決」に載ってるスクリプトなん
ですけど、システム終了項目に入れてる方は、うまく動作してるん
ですけど、システム起動項目にいれている方のスクリプトが、起動時
に長時間待たされたあげくにエラーが出てしまって、スクリプトがうま
く実行されません。

以前はうまく動作していたのですが、エラーが出る原因は何なんで
しょうか? 一度電源を落として翌日からも、ずっとエラーが出ます。
750名称未設定:2009/07/06(月) 16:46:18 ID:fVf8P5jC0
機種とOSとエラーの内容くらい書いたら?
751名称未設定:2009/07/06(月) 17:52:21 ID:Ik2H/7TsP
すみません。

G4 MDD、OS9で、「イベントの終了メッセージ待ちしてて
タイムアウト」みたいな感じです。
752名称未設定:2009/07/07(火) 02:45:50 ID:m9Kr0rEx0
>>751

先ずは新しいマシンを購入すべき
質問は、その後でw
753名称未設定:2009/07/08(水) 01:10:33 ID:mwrEmuwS0
>>752
先ずはG4 MDD、OS9付を購入すべき
回答は、その後でw
754名称未設定:2009/07/08(水) 01:16:54 ID:cRl0ctE+0
それじゃ一生回答してくれる人いないぞ
755名称未設定:2009/07/08(水) 07:30:24 ID:QE8yPRRm0
>>749
そのスクリプト、Standard Additions(標準機能追加)OSAXを使っているだけなので
Finderに tellするブロックは要りません。

set volume 0 --これだけで動作するはずです。

> 以前はうまく動作していたのですが、
ということなので
Standard Additions又は、標準機能追加 OSAXがシステムフォルダ内の
スクリプティング機能追加フォルダに入っているかどうか。
入っているなら、壊れている可能性も有るのでこのファイルを入れ換えてみて下さい。

それでもダメなら新しいAppleScriptに全部入れ替え
AppleScript 1.8.3(Mac OS 9.1or later)
http://docs.info.apple.com/article.html?artnum=120128
756名称未設定:2009/07/08(水) 08:58:03 ID:3mb+Ej5b0
AppleScriptやシェルスクリプトの入門書でお勧めのものがあったら教えていただけませんか?
入門サイトでもいいです。

プログラムやサーバ管理の経験は多少ありますが、スクリプト関係の知識と経験が絶無なので、勉強したいな、と…。
757名称未設定:2009/07/08(水) 09:54:09 ID:b+wp8kF40
>>756
入門サイトは
>>1のAppleScript PARKとAppleScript Lab.<http://www.drycarbon.com/applescript/>とか。

シェルスクリプトは板違い。UNIX板へ。
758名称未設定:2009/07/08(水) 11:33:11 ID:P9ybUUceP
>>755
ありがとうございます。

なぜか、最近、自然に治ってたんですけど、ついでに、Finder tellの
ブロックを削除してシンプルにしたら、起動後の有音確認のbeepの
実行が速くなりました。良かったです。
759名称未設定:2009/07/08(水) 11:35:31 ID:P9ybUUceP
>>756
入門書では、「AppleScriptでゼンマイびゅんびゅん」って
いうのが定番みたいです。

旧、新で3冊くらいあるみたいなので、注意してください。
760名称未設定:2009/07/09(木) 00:01:13 ID:8F5914Al0
AppleScriptの本は,実質無いに等しいんですよねー。
そんな中でMacPeopleがAppleScriptの特集を組んでくれたのはよかったな。
761名称未設定:2009/07/09(木) 01:32:29 ID:LBYGlg+y0
AppleScript Programming for Mac OSX
はオレのバイブル。今ではボロボロになってる。
調べたら入手困難だった…

どんな本でも載ってるサンプルコードをそのまま打ち込んで
実行して効果を実感することが大事。
762名称未設定:2009/07/09(木) 01:56:01 ID:345a/I1p0
テンプレに有るAppleScript PARK の
http://www.tonbi.jp/AppleScript/dic/
AppleScript PARK / Dictionary(リファレンス)
これじゃだめですか?
763757:2009/07/09(木) 07:08:34 ID:BQfQLCeR0
>>762
このリファレンスはよくまとまっているよね。本として出版してほしいくらい。
>>757で挙げた2つのサイトでAppleScriptのほとんどを学んだ気が。
764名称未設定:2009/07/10(金) 00:30:12 ID:pMycUAML0
AppleScriptでスクリプトの書かれているファイル名を取得する方法はある?
シェルでいうと$0(basename $0)みたいなもの
#!/usr/bin/osascript
return do shell script "basename $0"
としても
`sh'
しか戻ってこなくて...
765名称未設定:2009/07/10(金) 01:12:45 ID:Bg8+qFg20
>>764
path to me でスクリプトの alias 型の参照が取得できる。
OS 10.5から、スクリプトエディタで編集中でも正しくスクリプトのファイルパスを取得するよ。
http://www.seuzo.jp/st/Other/AS2.0.html

他参考
http://www.tonbi.jp/AppleScript/tips/Alias/RelativePath.html
http://slashdot.jp/~azk/journal/423903

#この質問はFAQだな。前のスレでもあったし。
766名称未設定:2009/07/15(水) 00:20:17 ID:/C23je9T0
とりあえず

アップルスクリプトってなに?
767名称未設定:2009/07/15(水) 00:38:55 ID:V0/3mzQ+0
>>766
ざーっくり言うとMacを操作できる簡易なプログラム言語。
これでわからないなら「ざっくりマンデー」に質問してみてくれ。
768名称未設定:2009/07/16(木) 13:11:05 ID:YP6jCy5H0
Mac OS X 10.4.11を使用しています。
次のスクリプトをスクリプトエディタで動かすと正常に動作するのに、アプレットとして起動すると正常に動作しません。

以下、具体的なスクリプトです。
---
set asdlm to AppleScript's text item delimiters
set AppleScript's text item delimiters to ":"

set a to (path to me as text)
display dialog text item -2 of a--(*)

set AppleScript's text item delimiters to asdlm
---
スクリプトエディタで動かすと、(*)の結果は"Script Editor.app"となります。
しかし、アプレットとして動かすと、"Can't get text item -2 of 〜"となります。

この原因がさっぱりわからないのです。どなたか理由をご存じの方、理由を教えていただけると幸いです。
よろしくお願いいたします。
769名称未設定:2009/07/16(木) 14:32:25 ID:+mLgvKU80
>>768
AS2.0.1 OS10.5.7 この環境で問題なしだったよ。
システム壊れてるかも。あたらしい環境作ってためしてみなー。
770名称未設定:2009/07/16(木) 14:38:12 ID:rD5p5EBG0
>>768
アプリケーションバンドルで保存して Japanese.lproj を追加する
771768:2009/07/16(木) 14:45:43 ID:YP6jCy5H0
>>769-770
>>770さんの方法で無事に動きました。
ありがとうございました。
772名称未設定:2009/07/16(木) 17:37:37 ID:HdWSG8bM0
文字列の最後に改行を三つ付け足したいのですが、
set theText to theText & {return} & {return} & {return} as string
こういう書き方以外に、return×3をスマートに表す方法ってあります?
773735:2009/07/16(木) 18:06:30 ID:x8lJBa4h0
>>772
set theText to (theText as string)&"¥r¥r¥r"
774名称未設定:2009/07/16(木) 18:31:37 ID:HdWSG8bM0
>>773
レスどうもです。
試してみたところ、動作は問題ないのですが、

set theText to (theText as string)&"


"

こんな感じで、スクリプトエディタ上ですでに改行された状態になってしまいました…。
775名称未設定:2009/07/16(木) 18:32:15 ID:YP6jCy5H0
>>772
set theText to theText & rr(3)
---
(* 改行をt個つける関数rr *)
on rr(t)
set a to ""
repeat t times
set a to (a & {return})
end repeat
return a
end rr
776名称未設定:2009/07/16(木) 18:39:58 ID:HdWSG8bM0
>>775
おお、サブルーチンカコイイ!

set theText to theText & my rr(3)

でいけました。

改行をたくさん使う時に便利そうですね ψ(‥ ) メモメモ...
777775:2009/07/16(木) 18:47:05 ID:YP6jCy5H0
ちょwネタレスのつもりだったのにw

まぁ無駄レスにならんでヨカター
778名称未設定:2009/07/17(金) 11:13:04 ID:anQozH4tO
>>768
set AppleScript's text item delimiters to ":" as Unicode text

とするとアプレットのままでも動いたよ
ただしアプレットの場合はpath to meの結果に最後の":"がつかないから、
アプリ名を表示するのが目的なら表示側も変えないといけないけど

display dialog text item -1 of a


>>772
>>set theText to theText & {return} & {return} & {return} as string
この書き方がそもそも冗長ではあるよね
リスト化も文字列化も必要無いので、これでいい

set theText to theText & return & return & return

スマートとは言えなさそうだが、こんな書き方もできる

set theText to theText & ≪data utxt000D000D000D≫

≪data utxt000D000D000D≫には、本当はas stringかas Unicode textが要るんだけど、
前にくっつけるtheTextに倣って自動変換してくれる
779772:2009/07/17(金) 19:00:15 ID:5kj6daby0
>>778
>set theText to theText & return & return & return
>set theText to theText & ≪data utxt000D000D000D≫

上の方がシンプルでわかりやすいので、こちらを使うことにします。
下の方は改行に限らず、特殊な文字を表す時に使えそうですね。

とても参考になりました。ありがとうございます。
780名称未設定:2009/07/22(水) 11:45:03 ID:dHg3SDD70
PhotoShopをつかってASで取得した、カラーモードの、《constant ****e083》意味を教えてください。
781名称未設定:2009/07/22(水) 21:32:38 ID:eHBDZj5u0
ATOKの「ユーザー辞書」を「ATOK 辞書ユーティリティ」を使い、applescriptで開きたいと思っています。

tell application "Finder"
open file "/Users/xxxxxx/Library/Preferences/ATOK21/ ユーザー辞書" using "/Library/Application Support/JustSystems/ATOK 2009/Support/ATOK DicUtility.app"
end tell

と試行錯誤をしてみたのですが、どうしてもエラーが返ってきてしまいます。
「&1を取り出すことはできません。」
何卒ご教示お願いいたします。
782名称未設定:2009/07/22(水) 23:57:08 ID:G8RvuAiW0
>>781
その用途はAutomatorでいけると思う
あとATOKとかにApplescript対応を求めるのが間違い
783名称未設定:2009/07/23(木) 00:09:37 ID:XA7F6mFV0
>>781

set pref to ((path to preferences) as string)
tell application "Finder"
open file (pref & "ATOK22:ATOK22ユーザー辞書1")
end tell

のようにすればうまくいったよ。
784名称未設定:2009/07/23(木) 01:06:52 ID:ruyEtXW60
>>780
「カラーモードの、《constant ****e083》」を取得できたスクリプトを教えて
785名称未設定:2009/07/25(土) 13:30:04 ID:aHQwJDQy0
質問させてください。TimeMachineバックアップのボリュームを取得したいのですが、

tell application "System Events"
set tm_plist to value of contents of property list file "/Library/Preferences/com.apple.TimeMachine.plist"
(|BackupAlias| of tm_plist)
end tell

と書いてみました。これを実行すると結果として

«data ****0000…略…0000»

が出ます。これをalias型か何かのファイル参照にできないでしょうか?
as alias としても失敗します。
結果をスクリプトにコピペして

«data alis0000…略…0000»

と書き換えて実行するとボリュームを指すaliasに変わってくれるのでaliasデータである事は
間違いなさそうなのですが。OS 10.5.7です。
786(・∀・):2009/07/25(土) 17:43:09 ID:zeKJUHlO0
>>785
valueで取り出してはいけなかったような。
以下はiTunesでTracksを取り出す例。この記述を参考に。

set trs to property list item "Tracks" of contents of property list file "〜.xml"

787名称未設定:2009/07/26(日) 12:57:28 ID:Iyj+Iql80
>>785
力づくだが……

>>785
力づくだが……

set tempFilePath to "/tmp/backupAliasTemp"
set tempFile to POSIX file tempFilePath

tell application "System Events"
    set backupAlias to property list item "BackupAlias" of contents of property list file "/Library/Preferences/com.apple.TimeMachine.plist"
    
    set tempFileHandler to open for access tempFile with write permission
    try
        write ((text of backupAlias) as Unicode text) to tempFileHandler
    end try
    close access tempFileHandler
end tell

set timeMachineVolume to POSIX file (do shell script ("ruby -e \"require 'nkf';puts NKF.nkf('-mB -w', File.read('" & tempFilePath & "'))\" | strings | tail -n 1; rm " & tempFilePath))
788785:2009/07/26(日) 16:13:05 ID:EUIADagx0
>>786
値を取るにはいずれどこかでvalueを見る必要があると思います。
Rootのvalueから見てくか末端までvalueを見ないかの違いではないかと
ちなみにこうやっても同じでした

tell application "System Events"
set tm_plist to (contents of property list file "/Library/Preferences/com.apple.TimeMachine.plist")
set volume_data to (property list item "BackupAlias" of tm_plist)
(value of volume_data) as alias
end tell

>>787 2回もの「力尽く」でありがとうございます。(ちなみに辞書.appによると ちから「ず」く のようです…)
これも結構無理矢理ですが、こんなやり方でもできました。実行すると数秒待たされますw

set xml_string to (do shell script "defaults read '/Library/Preferences/com.apple.TimeMachine' 'BackupAlias'")
-- xml_string は "<00000000 021a0002 000…ffff 0000>" なので16進文字だけにする
set hex_text to ""
repeat with c in xml_string
if (c is in "0123456789abcdef") then set hex_text to (hex_text & c)
end repeat
-- 'alis' data として変換させる
run script "«data alis" & hex_text & "»"

ちなみにこれ、バックアップボリュームをマウントしてない時だとなぜか、
alias "/Volumes/Time Machine バックアップ"
などという存在しないものを返してきます。
789名称未設定:2009/07/26(日) 16:38:50 ID:3iI9f40r0
>>788
なんで"ッ"の上に濁点がついてるんだ?
790名称未設定:2009/07/26(日) 17:36:48 ID:EUIADagx0
「バックアップ」の部分がBathyScapheでは変に表示されてますねw Firefoxでは問題ないです。

スクリプトエディタの結果からBathyScapheにコピペ。
エンコードがどうたらで書き込めないのでさらにFirefoxにコピペして書き込んだらなぜかこうなりました…
791名称未設定:2009/07/26(日) 17:43:07 ID:3iI9f40r0
>>790
たぶんスクリプトエディタが濁点を正しく処理&表示できてない
ひらがなとカタカナの区別も出来ないらしいし
ttp://piyocast.com/as/applescriptiydhye105e/oeeeyyyyeieeice/
を参照
792名称未設定:2009/07/27(月) 19:10:15 ID:EK04TzG60
>>791
前スレでも書いたけど、AppleScript2.0のUnicode文字比較はカレントロケールの
基準で行われるから、System Preferences > Internationalのソート順設定で
結果が変わって来る。例えば下の比較
{"is" = "IS","is" = "is"} -- {ASCII小文字=ASCII大文字,ASCII=Fullwidth}
Locale English --> {true,false}
Locale Japanese --> {true, true}
Locale Turkish --> {false, false}
となる。驚いたことにトルコ語の"i"の大文字は"I"じゃないから全く一致しない。
AppleのAS担当者はUnicodeのこういう面全く知らないんだろうね。デフォールトでは
共通ロケール使い、considering localeでカレントロケール使う様な仕組みが欠けてる。
793名称未設定:2009/07/27(月) 19:37:44 ID:PO2+vvtv0
>AppleのAS担当者はUnicodeのこういう面全く知らないんだろうね。

そう思うならフィードバックしてやればいいやん

こいつ思い出す http://www.bekkoame.ne.jp/~iimori/sw/UnicodeUtilsOSAX.html
言ってることはまともか知れんがぶちぶち鬱陶しい
794名称未設定:2009/07/27(月) 21:18:12 ID:XPiUmNgd0
フィードバックしても無視されるとエロイ人が騒いでた。
795名称未設定:2009/07/27(月) 21:37:04 ID:2L03+vlh0
>>793みて思い出したが、Edit7よりはYooEdit派だったなぁ
YooEditのマルチファイル検索にはよくお世話になった

完全スレ違いにつきsage
796名称未設定:2009/07/27(月) 21:45:32 ID:XPiUmNgd0
Edit7のマルチファイル検索にもお世話になったぞ。
797名称未設定:2009/07/29(水) 11:58:51 ID:4KzMEEYk0
外部のScriptからAppleScript Studioで作ったアプリ内部のハンドラってどう呼べばいいの?
798名称未設定:2009/07/29(水) 21:08:59 ID:WQ65Oyq60
呼べないんじゃない?
または,アプリの親になるスクリプトだけ呼べる?
このあたりはappletの方が自由度が高いような気がする。
799名称未設定:2009/07/30(木) 10:57:51 ID:zCgjq0OMO
AppleScript Script File (*.scpt) と AppleScript Text File (*.applescript) のどちらも、
/Contents/Resources/Scripts/*.scpt としてパッケージされているので、
run script やら load script で直接指定してやれば好きなように扱えるよ

仮に AppleScript Application を theApp という名前で作ってルートに置き、
theHandler というハンドラを呼ぶ場合はこんな感じ

set theScript to load script ("/theApp.app/Contents/Resources/Scripts/theApp.scpt" as POSIX file)
theHandler() of theScript
800名称未設定:2009/07/30(木) 19:26:14 ID:xkR6r4CJ0
>>799
load script はAppleScript Text File (*.applescript) を読み込めない。
801名称未設定:2009/07/30(木) 22:32:03 ID:bmnIxIER0
>>799
POSIXにする必要はないだろ。
それにアプリの位置をはじめに特定しなきゃいけない。

set theScript to load script file ((path to my application as string) & "Contents/Resources/Scripts/theApp.scpt")
tell theScript
theHandler()
end tell

そもそも.scptと.applescriptは完全に性質が違うし,パッケージとは本質的に関係ない。
アプリの中にある実行ファイルは.scpt

802名称未設定:2009/07/31(金) 00:08:37 ID:RyQI5MW70
>>801
ヒント:アプリの位置は/
803799:2009/07/31(金) 01:22:18 ID:diPjS/wxO
>>800>>801
*.scpt や *.applescript を AppleScript Studio でビルドすると、
/Contents/Resources/Scripts/ 以下に *.scpt として保存される
*.scpt だから load script できるよ
…ってな事を最初の3行で書いたつもりなんだが伝わらないもんだな
わかりづらくて申し訳ない
状態としては実行専用でバンドル保存した時と同じ

ルートに置いたのは単なる例だね>>802フォロー感謝
そのアプリがどこにあるか不定だとするなら、>>801の様な書き方になるのかな

POSIXパスをエイリアス化してるのは、個人的な習慣なので流して下さいな
ってか今試せないんだけど>>801みたいな書き方できるのかな
参照文字列とPOSIXパスの混在はおかしいような…?
804名称未設定:2009/08/01(土) 00:18:12 ID:eiSCELPW0
ビルドしたら. applescriptじゃないじゃん。
アプリをルートに置く?変態!

>参照文字列とPOSIXパスの混在はおかしいような…?
うっかりしてたぜ。試さずに直打ちだったからな。
set theScript to load script file ((path to my application as string) & "Contents:Resources:Scripts:theApp.scpt")
tell theScript
theHandler()
end tell
でよろ。
805名称未設定:2009/08/01(土) 01:14:06 ID:rgFGbau00
だから初めからどっちも .scpt になるって言ってじゃん
それに実際ルートにファイルを置いて実験する事はよくあるんだけど、
その程度の事で変態よばわりされるのは心外だなぁ

ピンと来なかったから流したけど my applcation てのも初めて見た
my が指しているのはスクリプトオブジェクトだから、application とは続かんのでは
>>797は「外部のスクリプトから」と言っているし、呼び出す側のスクリプトとは無関係
特にアプリ名を弄ってなければ application "theApp" かな、この場合
806名称未設定:2009/08/10(月) 20:26:04 ID:tROgkyMR0
itとかits applicationとか使えるんだっけ?
807名称未設定:2009/08/12(水) 20:45:18 ID:6/lEY3pP0
このスレッドすばらしすぎる
本を出してくれ
808名称未設定:2009/08/14(金) 11:45:42 ID:t1Qawg8h0
関連付けの方法を教えてください.

.appファイルを作り,
特定の拡張子のファイルをクリックすると作ったスクリプトファイルを実行させたいのですがうまくいきません.

'''
on open theFiles
end open
'''
というような何もしないスクリプトを作り,
特定の拡張子を持つファイルの「情報を見る」メニューでアプリケーションを指定し実行することはできました.
他のファイルにも関連付けたいのですが,
「すべてを変更」ボタンをクリックすると,
関連付け先が元々指定していたアプリケーションに戻ってしまいます.
例えば,*.txtであれば,ボタンを押すと「テキストエディット」というように戻ってしまいます.

何もメッセージが出ないく上記のようなミニマムコードでも発生するので,お手上げ状態です.
どなたかご教示ください.

ちなみに,他のアプリ(*.txtにCarbon Emacs)では関連付けることはできました.
809(・∀・):2009/08/14(金) 12:53:11 ID:Ydvl0xHm0
とりあえず、OSXのバージョン書いたら。
810名称未設定:2009/08/14(金) 12:56:26 ID:Qqv11JBA0
アプリケーションバンドル
Info.plist
CFBundleDocumentTypes

例: /Applications/TextEdit.app/Contents/Info.plist
811名称未設定:2009/08/14(金) 17:45:30 ID:y1kvroUD0
すみません。do shell scriptで
「スペースを含む文字列」が格納された変数を
渡すには、どうすればいいでしょうか?

do shell script "perl " & perlPath

これ↑で変数perlPathに格納されたパスに置かれた
Perlスクリプトを実行したいのですが、
パスにスペースが含まれると、
それ以降が「2番目の引数」と見なされてしまいます。

環境はMac OS X 10.5.7です。よろしくお願いします。
812名称未設定:2009/08/14(金) 18:15:54 ID:GteGzGkb0
813811:2009/08/14(金) 18:42:11 ID:y1kvroUD0
>>812
ありがとうございます。解決しました。
814808:2009/08/14(金) 21:47:55 ID:t1Qawg8h0
>>809
すみません.
OSXのバージョンは10.5.8です.

>>810
ありがとうございます.
スクリプトをアプリケーションバンドルとして保存し,
TextEdit.appのInfo.plist内の拡張子txtに関する値をコピーし,CFBundleDocumentTypes 配列に追加しました.
しかし,状況は依然変わりません.
815名称未設定:2009/08/14(金) 21:55:02 ID:+VcvW3Pr0
>>814
再起動あるいは再ログインした?
それでもおかしいならば手順がおかしいがどこかで間違ってることになるので、
後はこちらを熟読してください。
http://developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html
816808:2009/08/16(日) 02:44:57 ID:bos/Izjb0
>>815
再起動もしました.
念のため新規作成してみました.

手順は下記の通り.
1. スクリプトを書く
2. アプリケーションバンドルとして保存する
3. CFBundleDocumentTypes配列に拡張しtxtに関する値を追加
4. txtファイルを右クリックし「情報を見る」メニューで,
アプリケーションを指定し「すべてを変更」ボタンをクリック
5. 指定していたアプリケーションが元に戻ってしまうorz

という感じです.

ドキュメント読んで出直してきます.
817名称未設定:2009/08/16(日) 04:22:31 ID:raj8GWeT0
Info.plistをいじった後でLaunchServicesのDBを更新する必要があるんじゃ?
・アプリを保存し直すか ←うろ覚え
・アプリを一旦別フォルダに移すか ←うろ覚え
・ターミナルでlsregister -fで更新するか ←ググって
・そっくり再構築してしまうか ←これもlsregisterでできるけどググって
818名称未設定:2009/08/16(日) 06:38:26 ID:wyWiCqwg0
>>816
CFBundleDocumentTypesは変える必要はなく、
CFBundleIdentifierを追加するだけでいいと思います。
以下の手順で確認しました。再起動・ログアウトはしてません。
(OS 10.5.8)

[1] スクリプトエディタで以下のスクリプトを書いて、
フォーマット:アプリケーションバンドル
オプション:全てチェック外す
で保存。

on open file_list
repeat with f in file_list
display dialog f as string
end repeat
end open

[2] [1]で保存したドロップレットのパッケージ内のInfo.plistをProperty List Editorで開いて
Key「CFBundleIdentifier」Value「com.apple.jp.droplet.test」を追加して保存。
(※CFBundleIdentifierについては他のアプリも参考になると思います)

[3] テキストエディットで適当なテキストファイルを作成(拡張子はtxt)。

[4] [3]で作成したテキストファイルをFinderで選択し、情報ウインドウで、
「このアプリケーションで開く」の「その他...」から[1]のドロップレットを選択し、
「すべてを変更...」もクリック(&OK)する。

[5] [3]で作成したテキストファイルをダブルクリック。[1]で保存したドロップレットが動作する。

[6] ちなみに、テキストエディットで新たにテキストファイルを作成と保存し、
ダブルクリックしても、[1]で保存したドロップレットが動作する。
819808:2009/08/16(日) 06:53:23 ID:9/s4dSgl0
>>818
解決しました!ありがとうございます.
820名称未設定:2009/08/18(火) 03:54:59 ID:d2BwqLTK0
自分も追加日ソート組みなため iTunesスレでの
質問に興味があるですが "Date Added" Fieldを
好きな日付けで書き換えられるようなスクリプトは
海外にも無いようで、Macの日付を戻したりして
入れ替えたり、とてももローテクで面倒でした

こちらの詳しい方はどう思われますか

>ソートするのに追加日でしているのですが、なぜか古いファイルが
>同日になってしまい同じジャケットがバラバラ出てきて悩んでおります。

>削除して入れ直すには数が多いのでスクリプトでアルバム単位変更できないかと
>Doug's AppleScriptなど探してみてはいるのですが、見落としているのか
>みつかりません。

>Added Date を変更する方法解る方いらっしゃいませんでしょうか?
821名称未設定:2009/08/18(火) 05:31:47 ID:O2qHJ4wa0
http://pc11.2ch.net/test/read.cgi/mac/1247448657/408
で触れられてたと思ったけど
822名称未設定:2009/08/18(火) 23:04:55 ID:XK6x6+6J0
iTerm.app をフルスクリーンモードで起動させたい
起動後に Control-Return でフルスクリーンに出来る

のだけど iTerm の設定があるのかと ~/Librarys/Preferlence/net.sourceforge.iTerm.plist 当たりを葬ってみたけど挫折。

残るは iTerm.app に ^Return に相当する事を Apple Script で実現できないものかとスクリプトエディタとにらめっこしてみたが・・・・あああっ。

iTerm Hopme の Script サンプルを見ても、カラーを買えたりとかでフルスクリーン On /Off をコントロールを見つけることができなかった。

スクリプトというより iTerm のコントロール、それも起動の時フルスクリーンにしたい・・をどうすればお助けとを。よろしくお願いしまふ。
823名称未設定:2009/08/19(水) 00:37:08 ID:GCsKUHSv0
多分、一番簡単なのはAutomatorを立ち上げてワークフローメニューの「記録」
を選んで(ユニバーサルアクセスの設定変えろ言われるかもしれないけど)iTerm
でフルスクリーンにするコマンドをたたいてみること。
あとは、アプリケーション立ち上げを追加するだけで目的のワークフローができる。
824名称未設定:2009/08/19(水) 05:11:11 ID:k7nMVCkA0
以下を(とりあえずデスクトップに itermfullscreen.scpt として)保存
tell application "iTerm"
if (count of terminal) is not 1 then return
if (count of session of front terminal) is not 1 then return
end tell
tell application "Finder" to set screenBounds to bounds of window of desktop
tell application "iTerm" to set windowBounds to bounds of front window
if windowBounds is not screenBounds then
tell application "iTerm" to activate
tell application "System Events" to keystroke return using command down
end if

bash だとして、以下を .bash_profile に記載
if [ "$TERM_PROGRAM" = "iTerm.app" ]; then
osascript $HOME/Desktop/itermfullscreen.scpt
fi

ただ、
起動時と、ウインドウ無しからウインドウを開いた時を区別できない、
遅い、
Spacesがあるとどうなのかわからない(10.4なもんで)
825名称未設定:2009/08/19(水) 09:34:18 ID:xpOLjwyfi

あ、ありがとう。これからやってみる。
826名称未設定:2009/08/19(水) 10:20:14 ID:82znTTCqi
Autometer初めてやってみた。これはこれですこい。待ち時間まで再現で自分のトロさがみえてある意味がわらえた。
Script上手くいきました。感激です。
組み込みに使うので立ち上げてイベント送るのみではじめます。ただ、やはり色んな状態を想定すること、勉強になります。
今は、Script眺めてるだけでアップアップだけど、せっかくのサンプル、これからじっくり理解したい。
途方に暮れてた(大袈裟?)のでマジ感謝です。
AppleScript 奥が深い。
827名称未設定:2009/08/19(水) 22:07:57 ID:xFoqMzlJ0
AppleScriptってすごい
828名称未設定:2009/08/19(水) 22:09:01 ID:P++cE7Id0
パソコンに取り込んだ譜面を見ながら楽器を弾く時、切り替えに不便なため作成したAppleScriptです。
MidiPipe使用。Midiフットコントローラでページの切り替えができるため大変便利です。
iTunesの曲も切り替えられます。とりあえずできたので載せてみます。

--MidiPipeでMidiフットコントローラによるUI操作のためのAppleScript
--現在の機能 一番上のウィンドウの戻る進むとiTunesの戻る進む
--
--AListでMessageを取得する
--Midiフットコントローラからの情報、item 1 192はProgram Change、item 2 は音色番号
--音色番号を元に切り替えを行う

on runme(message)
tell application "System Events" -- 一番上のウィンドウに戻る進むのコマンド
if (item 1 of message = 192) and (item 2 of message = 0) then key code 123 using command down -- ⌘→
if (item 1 of message = 192) and (item 2 of message = 1) then key code 124 using command down -- ⌘←
end tell
829名称未設定:2009/08/19(水) 22:09:41 ID:P++cE7Id0
--続き
tell application "iTunes" -- iTunesの次の曲、前の曲 (リピート時でも移動可能)
if (item 1 of message = 192) and (item 2 of message = 4) then
set currentPlaylist to current playlist --現在のプレイリストを取得
set currentSongRepeat to song repeat of current playlist --現在のリピート情報を取得
set song repeat of currentPlaylist to 0 --リピートを切に設定
next track --次のトラックへ
set song repeat of currentPlaylist to currentSongRepeat --リピート情報を元の情報に設定
end if
if (item 1 of message = 192) and (item 2 of message = 3) then
set currentPlaylist to current playlist --現在のプレイリストを取得
set currentSongRepeat to song repeat of current playlist --現在のリピート情報を取得
set song repeat of currentPlaylist to 0 --リピートを切に設定
back track --トラックの始めに戻る
set song repeat of currentPlaylist to currentSongRepeat --リピート情報を元の情報に設定
end if
end tell
end runme
830名称未設定:2009/08/19(水) 23:11:06 ID:TcrzqjAk0
>>828-829

iTerm で助けてもらったものです。質問させてください。

on runme(message)
-- body
end runme

この括りは runme の message の呼び出しと message はどこから・・(ここから判らないっす)
message の 0, 1, 3, 4 は MidiPipe からの音色情報を代用しているという事?

tell application "System Events"
-- item 1, item 2 というのは System Events のキーワード?
-- key code 123 useng command down
-- ⌘→を押したのと等価ということですか?
end tell

currentPlaylist の取得ですが、これって何ですか
(あまりにも素人質問ですいません)

後、このシンタックスって、最後は慣れですかね?
(くだらない質問ですいません。これはパスしてください)
831名称未設定:2009/08/20(木) 01:11:14 ID:ZBXl4WV1O
>>830
横槍ですまないがちょっと性急に過ぎやしないか
質問内容を見る限り、正直まだ他人様のコードを読み取れる段階とは思えない

テンプレをひととおり、或いはせめてAppleScript PARK辺りだけでも読んでくる事を勧めます
832名称未設定:2009/08/20(木) 08:12:16 ID:8NKD9fZJi
ども
Apple Script PARK いってきます。
833名称未設定:2009/08/26(水) 12:55:24 ID:UT+ZadVY0
漠然とした質問で申し訳ないのですが
AppleScript Studioの事でお尋ねします
それまで問題なくビルド・実行出来ていたスクリプトが
ある時を境に
¬のところでは
Expected expression but found unknown token. (-2741)
コマンド /usr/bin/osacompile が終了コード 1 で失敗しました。
≠のところでは
Expected メthenモ, etc. but found unknown token. (-2741)
コマンド /usr/bin/osacompile が終了コード 1 で失敗しました。
とエラーが出るようになってしまいました
どういった原因が考えられるでしょうか?
834名称未設定:2009/08/26(水) 17:22:49 ID:BkHeLdT30
文字コードとか言語環境とか
835(・∀・):2009/08/27(木) 01:24:24 ID:Qeoje6Iv0
>>833
その表記はOS9とともに死滅したはず。
836名称未設定:2009/08/27(木) 04:02:50 ID:cbglxXbv0
寝言は(ry
837名称未設定:2009/09/03(木) 01:26:55 ID:Q4oKYJOD0
--画面解像度を変えるAppleScript。トグルするようにしてみました。
--もしかしたら専用の命令があるかもしれないけど。10.5、10.6で動きました
tell application "Finder"
set theScreenSize to get bounds of window of desktop
set theScreenWidth to item 3 of theScreenSize
set theScreenHeight to item 4 of theScreenSize
end tell
if theScreenWidth is 1440 then
set theNewSize to "1024 768"
else
set theNewSize to "1440 900"
end if

--http://www.macosxhints.com/article.php?story=20090413120929454
set theScript to "
require 'osx/cocoa';
display = OSX::CGMainDisplayID();
mode = OSX::CGDisplayBestModeForParameters(display, 32, ARGV[0], ARGV[1], nil);
config=nil;
result = OSX::CGBeginDisplayConfiguration(&config);
config = result[1];
if 0 == result[0] then
OSX::CGConfigureDisplayMode(config, display, mode);
OSX::CGCompleteDisplayConfiguration(config, 2 );
print 'change';
end
"
do shell script "/usr/bin/ruby -e " & quoted form of theScript & " " & theNewSize
838名称未設定:2009/09/04(金) 00:58:40 ID:9GqtYbtS0
TigerでMacに入っている電子辞書をスクリプトを使って利用したいんですが、
そういうスクリプトつくれますか?

スクリプトはAppleScriptでもJavaScriptでも可。
電子辞書は国語辞書や漢字辞書で、
スクリプトで操作できるものを購入しようと調べましたがわからなかったので、
どの電子辞書を前提でも可。

具体的な内容は、テキストに書かれている大量の単語を、
辞書で検索して意味などをテキストに書き出すという作業です
839名称未設定:2009/09/04(金) 03:06:48 ID:AtlUaXKv0
LogoVista辞典ブラウザ 1.2.2はスクリプトエディタで用語説明開いてもアプリ固有の情報なかった
もしやるならGUI スクリプティングだろうけど、どこまでできるかわからない(単語を選択してサービスメニューから辞書引きはそこそこできるかも?だけど)
840名称未設定:2009/09/04(金) 12:14:06 ID:YWJx89YP0
>>838
egbridge Uni2付属の電子辞典ビューアにlookupってコマンドがあるね。
でも、いまからegbが入手できないという問題が…。
ちなみに、コトノコはASに完全に未対応だった。

--egbridge Uni2付属の電子辞典ビューア
tell application "DictionaryViewer"
activate
lookup for "辞書"
end tell

tell application "System Events"
key code 48 --Tabキー
keystroke "a" using command down --全選択
keystroke "c" using command down --コピー
end tell

これで、"辞書"という内容を検索して、表示された意味を全コピーするところまではできた。

あとは、

・意味内容一行目の見出し部分を取り出して読みやすく加工
・それをテキストエディタにペースト
・引きたい単語をリスト形式で変数に取り込んで、repeat with〜in〜でループさせる

こんな処理を付け加えれば良さそう。

841名称未設定:2009/09/04(金) 12:29:41 ID:YWJx89YP0
Jammingにもsearchってコマンドがあるから、これでもいけそう。
842名称未設定:2009/09/04(金) 22:45:15 ID:nUYUxVxi0
>837
これはもはやAppleScriptではない...

843名称未設定:2009/09/04(金) 22:51:48 ID:FV9DqDd30
>>842
むしろ、これこそAppleScriptならではだと思う。
844名称未設定:2009/09/05(土) 00:59:07 ID:hQMec1Px0
>>839-841
ありがとうございます。
egbridge Uni2は手に入らなさそうですね。Jammingをちょっと見てみます。
845名称未設定:2009/09/05(土) 11:46:21 ID:QymRaNX90
Snow LeopardでAppleScript Studioが打ち切りになったと知ってショックだ
どうしろと
846名称未設定:2009/09/05(土) 12:57:59 ID:hqWAS12H0
Depられただけで、まだ動くよ。
>ttp://mycometg3.blog.so-net.ne.jp/2009-09-05

IB3.2でdefaultを書き換えて、使えばいい。
847名称未設定:2009/09/05(土) 15:58:04 ID:PQZGDKO60
まじかよ
848名称未設定:2009/09/05(土) 16:29:09 ID:A/UzNj2OP
Cocoa-Javaでアプリ書いてた人の気持ちがわかったような
849名称未設定:2009/09/05(土) 20:29:20 ID:WdLCdU6t0
850名称未設定:2009/09/05(土) 20:50:30 ID:be+wMAR70
俺は面白いと思うよ、AppleScriptObjC
既存の文法を拡張せずにObjCのオブジェクトを継承できたりしてASSなんかよりずっと良い
851名称未設定:2009/09/05(土) 23:05:45 ID:ej1h2E+O0
ASSに手を出さなくて正解だったぜ...
しかし,これからどうなるんだ...
852名称未設定:2009/09/05(土) 23:30:17 ID:be+wMAR70
ASSって基本的に書き捨てアプリ向けだから、随分役に立ったよ
853名称未設定:2009/09/05(土) 23:39:14 ID:DIop7y1ui
基本的な所が動かない...

Set theDate to (class "NSDate")'s |date|()
log theDate's description()
854名称未設定:2009/09/05(土) 23:43:02 ID:6qHVmxV70
Objective-Cと同じ書き方が必要なら、gdbのデバッグ能力をフルに使える
Objective-Cそのまま使う方がずっと簡単だと思うんだが?
855名称未設定:2009/09/06(日) 00:07:31 ID:vNiNb+rl0
そんなこと言ったらRubyCocoaもPyObjCも同じじゃん
856名称未設定:2009/09/06(日) 00:45:48 ID:de0Txa+C0
原則 Class methodしか使えなかったcall method連発のASSよりもよいものになっている事を祈る
857名称未設定:2009/09/06(日) 02:12:09 ID:vNiNb+rl0
>>853
set theDate to current application's class "NSDate"'s |date|()
log theDate

current applicationがミソ
あとdescriptionメッセージは別になくても平気
858名称未設定:2009/09/06(日) 02:33:41 ID:BnE4l9Ao0
Xcode で AppleScript Droplet が作成できなくなった……
ドロップレットを作成する簡単な方法はなくなったの?
859名称未設定:2009/09/06(日) 03:17:38 ID:vNiNb+rl0
ドロップレットならAppleScriptエディタの方が簡単でしょ
860名称未設定:2009/09/06(日) 09:33:35 ID:PTAKa/tri
ASSアプリを、AppleScriptObjCに移植
してみた。コツをなかなかつかめない。

Idleハンドラが動かないのでNSTimer
使ってみた。
Bindingが使えるのはおもしろいな。
861名称未設定:2009/09/06(日) 11:43:38 ID:LuSTT5iG0
ASOCを覚えると自由にウィンドウを作ったり、
普通のアプリっぽいこともできるのかな?
862名称未設定:2009/09/06(日) 11:59:23 ID:vNiNb+rl0
できる
863名称未設定:2009/09/06(日) 12:22:01 ID:BnE4l9Ao0
早速新しいAppleScriptエディタでアプリケーションバンドルを作成してみたけど,
Dockアイコンがドロップを受け付けてくれない……。

Info.plist を
http://miff.blog.so-net.ne.jp/2009-05-11
のように書き換えてみると,Finderのアイコン上へはドロップできたけど,
やっぱり Dock アイコンへはドロップできない。

どうするのが正しいのでしょうか?
864863:2009/09/06(日) 12:44:22 ID:BnE4l9Ao0
分かった。最初に保存するときに,on open ハンドラが存在すればドロップレットとして保存される模様。
865名称未設定:2009/09/06(日) 13:03:02 ID:vNiNb+rl0
866名称未設定:2009/09/06(日) 13:04:58 ID:VyLvyVqf0
出来上がったアプリをコピー,Dockに登録し直し,ログインし直し。
これらの単独または上記の順番で連続して実行。
867名称未設定:2009/09/06(日) 13:34:55 ID:zEN1Hafm0
<妄想>
スクリプトエディタで書く普通のスクリプトをObj-Cでも書けるようにしてくんねえかな
昔JavaScript版どっかが作ってたけど

いや、Obje-C++みたいに、というかさらに混在できるようにしちゃうとか
Objective-C++AS
予約語が重なりそうだな
</妄想>
868名称未設定:2009/09/06(日) 13:51:46 ID:vNiNb+rl0
Scripting Bridgeがだいたいそんな感じ
869名称未設定:2009/09/06(日) 14:48:46 ID:+Cg2k6Qb0
初めてのAS-ObjCアプリです。
>ttp://mycometg3.blog.so-net.ne.jp/2009-09-06

面白いね。これ。
870名称未設定:2009/09/07(月) 18:59:05 ID:SsOr1JYe0
ダイアログを表示せずにキーボード入力をsetする方法はあるのでしょうか?
スクリプトを起動したら入力待機して、1文字入力したら、それを変数に格納したいのです。
871名称未設定:2009/09/08(火) 01:13:51 ID:O0UZeph10
>>870
--別スレでCGEventSourceKeyStateでチェックできると見たので。keycode2charの行を分割したので一行に結合してください
tell application "System Events" -- アクティブなアプリでキーを拾わないように
set theAppNameList to name of processes whose frontmost is true
set theAppName to item 1 of theAppNameList
activate
end tell
set thePressKey to my getPressChar()
tell application theAppName to activate -- 元のアプリに戻る
display alert thePressKey
on getPressKeycode() -- キーを押しているのを見つけるまでループ
set theRubyScript to "require 'osx/cocoa'
while(1)
for i in 0..126
if OSX::CGEventSourceKeyState(0, i)
print i
exit(0)
end
end
sleep 0.1
end"
set theResult to do shell script "/usr/bin/ruby -e " & quoted form of theRubyScript
return theResult as number
end getPressKeycode
on getPressChar() -- keycode2charには記号など抜けているキーがあります。間違いもあるかもしれません。
set keycode2char to {"a", "s", "d", "f", "h", "g", "z", "x", "c", "v", 0, "b", "q", "w", "e", "r", "y", "t", "1", "2", "3", "4", "6", "5", 0, "9", "7", 0, "8",
"0", 0, "o", "u", 0, "i", "p", "Return", "l", "j", 0, "k", 0, 0, 0, 0, "n", "m", 0, "Tab", "Space", 0, "delete", 0, 0, "Command", 0, "Shift", 0, "Alt", "Ctrl",
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "F5", "F6", "F7", "F3", "F8", "F9", 0, "F11", 0,
"F13", 0, "F14", 0, "F10", 0, "F12", 0, "F15", 0, 0, 0, 0, "F4", 0, "F2", 0, "F1", "Left Arrow", "Right Arrow", "Down Arrow", "Up Arrow"}
set theKeyCode to getPressKeycode()
return item (theKeyCode + 1) of keycode2char
end getPressChar
872名称未設定:2009/09/08(火) 01:17:59 ID:O0UZeph10
ついでにできた修飾キーをゲットするスクリプト
コマンド押しながら起動したら処理分けるとかに使えるかもしれない

set theResult to my getModifierKeys()
log theResult

on getModifierKeys()
set theRubyScript to "require 'osx/cocoa'
event = OSX::CGEventCreate(nil)
mods = OSX::CGEventGetFlags(event)
print mods,' '
if (mods & 0x00020000) != 0
print 'shift '
end
if (mods & 0x00040000) != 0
print 'control '
end
if (mods & 0x00080000) != 0
print 'option '
end
if (mods & 0x00100000) != 0
print 'command '
end
"
do shell script "/usr/bin/ruby -e " & quoted form of theRubyScript
end getModifierKeys
873名称未設定:2009/09/08(火) 01:19:24 ID:+3aA31Hn0
safariに連続で画像を読み込ませるのをやってみたんですが、
日本語名のフォルダに入っているファイルではうまく動いてくれません。どうしたらいいですか?
OSは10.5.8です。

スクリプトはこんなかんじです。

on open drop_items
repeat with curItem in drop_items
tell application "Safari"
set itempath to POSIX path of curItem
set URL of tab 1 of front window to itempath
end tell
end repeat
end open


874名称未設定:2009/09/08(火) 03:14:12 ID:Tv2i7/JY0
やっぱりいざというときにはRubyとかObj-Cだなぁ
875名称未設定:2009/09/08(火) 03:25:31 ID:Tv2i7/JY0
>>873
set itempath to POSIX path of curItem

set itempath to quoted form of (POSIX path of curItem)

これじゃだめかい?
876名称未設定:2009/09/08(火) 23:13:07 ID:YZ3C8W070
>>873
素直にURL使った方が早いかも
10.6で確認

on open drop_items
repeat with curItem in drop_items
tell application "System Events"
set itempath to URL of curItem
end tell
tell application "Safari"
set URL of tab 1 of front window to itempath
end tell
end repeat
end open
877873:2009/09/08(火) 23:58:57 ID:+3aA31Hn0
>>875さん
>>876さん
ありがとうございます。


>>876さんの書かれたスクリプトで出来ました。本当にありがとうございました。

878名称未設定:2009/09/09(水) 21:44:46 ID:1O7J4flE0
>874
それはすでにAppleScriptでありながらAppleScriptではない。
879名称未設定:2009/09/11(金) 08:51:39 ID:WxzErIRi0
AS-Studioだったら出来てたんだけど・・・

AS-ObjCで、DragAndDropを受け付けるコードを書こうとしたが
最初のDraggingEnterd_()でビット演算(AND)が必要な箇所があって、
手が止まってしまった。
ObjC
if (sourceDragMask & NSDragOperationGeneric) {
 return NSDragOperationGeneric;
}
AS
・・・

AppleScriptって、今だにビット演算使えないのか・・・
880名称未設定:2009/09/13(日) 01:06:53 ID:4appDlQC0
>>879

AS-ObjC ってそうなんだ
イベントつなぐのが楽になってるのかと思ってた
881名称未設定:2009/09/13(日) 04:40:12 ID:xhAgFv6VP
タグを自動で一括編集したくて、
コメント欄に書いてあるリリース日を説明欄にコピって
説明欄でソートしたらリリース日順に並べられるようにするAppleScriptを作るのに今までかかった。
全くのプログラム初心者なので色々なサイトのを借りてきて切り貼りさせてもらったけどなんとか期待通りの挙動になった…
882名称未設定:2009/09/13(日) 04:42:18 ID:xhAgFv6VP
↑はiTunesの話です…
883名称未設定:2009/09/13(日) 11:01:53 ID:KkddvEMq0
>>881-882
真意のわからん投稿だが完成おめでとう。
ところでそれはこのスレでは初心者レベルなのか.....質問がしにくくなった.......

一定時間間隔で空きメモリの量を確認して,規定量以下になったらメモリを食っているアプリを終了させて,liberamemory(auto)とかを走らせようと思っています。
ここで質問なのですが。liberaを走らせる部分は単純に
tell application "Libera Memory Auto3"
activate
end tell
で、liberaは起動すると自動で処理を開始し,処理を終わらせると勝手に終了するので,起動させるだけでいいのですが
アプリが勝手に自動終了しようとするところでエラーがでるみたいです。イベントログだとこんな感じです。
tell application "Libera Memory Auto3"
activate
current application
"Libera Memory Auto3 でエラーが起きました:接続が無効です。"
こんな風に自動で処理を進めて勝手に消えていくアプリの場合,どのように書けばいいのでしょうか。

すみません,低レベルかもしれませんがよろしくお願いします。
884(・∀・):2009/09/13(日) 11:33:16 ID:C0joxKVM0
activateを消せばいいんじゃ。
885名称未設定:2009/09/13(日) 11:41:40 ID:QxE5LHfg0
ディスクキャッシュクリアしたいなら専用コマンドあるんだから、そっち使えば?
do shell script "/usr/bin/purge"
man purgeも読んでね。
886名称未設定:2009/09/13(日) 14:32:03 ID:E536R0Uc0
tellブロックの内部を
ignoring application responce
end ignoring
で囲む。
または
try
end try
で囲む。
なんてのは?

887883:2009/09/13(日) 17:37:33 ID:KkddvEMq0
>>884
activate消すと起動しませんよね......

>>885
ご指摘ありがとうございます。
シェルスクリプトに関しても全くの無知でして。勉強になりました。
うまく併用させてみたいと思います。

>>886
try~end try でできました!
ありがとうございます。m(_ _)m
888名称未設定:2009/09/13(日) 21:01:19 ID:65DAWBwz0
>>887
起動させるのはrunで、activateは一番手前に持ってくる命令じゃね?
889883,887:2009/09/13(日) 23:07:59 ID:KkddvEMq0
>>888
そうですね,言葉が不適切でしたか。すみません。
890名称未設定:2009/09/14(月) 22:30:46 ID:oBw14roh0
ASObjCの勉強するか…
掌田さんあたりがわかりやすい入門書出してくれんだろうか
891名称未設定:2009/09/15(火) 07:52:49 ID:RPQKMNww0
掌田津耶乃の本がわかりやすい…?
892名称未設定:2009/09/15(火) 10:36:57 ID:Aou5RXENi
>>891
釣られてどうする
893名称未設定:2009/09/15(火) 16:14:41 ID:6SUSyBKT0
昔のHyperCardの入門書はよかったけどな。
894名称未設定:2009/09/15(火) 17:11:48 ID:EXK1+Zxt0
HC入門ならダニーグッドマンだろ。
895名称未設定:2009/09/15(火) 20:04:13 ID:1HSKzOmg0
>>891
掌田津耶乃ぐらいしか出してくれないだろう。
896名称未設定:2009/09/15(火) 21:21:24 ID:YMDNfyXT0
いや、単に自分がAppleScript Programming for Mac OS Xで
ASS覚えたからというだけの話なんだ
897名称未設定:2009/09/15(火) 22:30:32 ID:RPQKMNww0
あの青い表紙のやつか。
うちにもそれとぜんまいビュンビュンあるけど、今読み返してみるとやっぱりメチャクチャだわ
898名称未設定:2009/09/16(水) 01:36:44 ID:gNIc8Rhx0
>>897が出版してくれよ
899名称未設定:2009/09/17(木) 02:49:26 ID:7uBdTuPX0
10.5以前でつくったアプリケーションを10.6のエディタで別名で保存すると64bitになる
900名称未設定:2009/09/17(木) 19:35:09 ID:5fOLsob60
複数のファイルの頭から指定バイト数を削除するスクリプトを教えてください。
901名称未設定:2009/09/17(木) 22:13:25 ID:nHKewOSW0
902名称未設定:2009/09/17(木) 22:26:43 ID:9ISfMQA40
とりあえず丸投げ禁止がこのスレの掟。
>>901はそれがいいたいのかと。

と言うだけじゃアレなんでヒントだけ示せば、nバイト削除=(n+1)バイト目から読み込んで書き込むということだから read from文使えばいいだろう。
あとはわかるな?

>>901
IDがnHK
903名称未設定:2009/09/18(金) 02:49:37 ID:dF8NJ+Je0
tail -c +開始バイト
も簡単で
904名称未設定:2009/09/18(金) 02:53:19 ID:JPJU8UqJ0
>>903
簡単だけど、時間が稼げない気がする
以前、do shell script("touch"〜とopen for accessでファイルを100個だか500個だかの作成をループで回して時間計ったことがあるけど、open for accessの方が圧倒的に速かった

まぁ最近の機種だとそうでもないかもしれないけど
905名称未設定:2009/09/18(金) 03:27:59 ID:dF8NJ+Je0
そんなオーダーで要求されるとは想像もしなかったよw
5個か10個か、スクリプトも使い捨て/使い切りと思ってさ
906名称未設定:2009/09/18(金) 08:10:15 ID:Xs8mCu3S0
そういう時はtailじゃなくてddだろjk
907879:2009/09/18(金) 09:56:06 ID:Xs8mCu3S0
なんとかしてみた。

code:
on conv10to2(INPUT)
-- 8 bit, Decimal to Binary String translation
-- ex: in:5 out:"00000101"
set {str2, val} to {"", INPUT}
repeat while val > 0
set str2 to ((val mod 2) as text) & str2
set val to (val div 2)
end repeat
return (characters -8 thru -1 of ("00000000" & str2)) as text
end conv10to2

set NSDragOperationGeneric to 4
set myINFO to conv10to2(7)
{myINFO, (character -NSDragOperationGeneric of myINFO) > 0}

output:
{"00001000", true}
908名称未設定:2009/09/18(金) 19:25:28 ID:xFgjt65u0
こんなソフト・アプリスレ 702-751 より。
あるディレクトリより指定日以降に変更、追加されたファイル抽出>他のマシンの指定ディレクトリにリストア

display dialog "フォルダより差分ファイル抽出、上書きスクリプト" buttons {"Cancel", "Restore", "Archive"} default button 3
set retText to button returned of result

if retText = "Restore" then
myRestore() of me
else if retText = "Archive" then
myArchive() of me
end if

on myRestore()
--指定tarファイルを指定フォルダにリストアします。
choose file "アーカイブファイルを選択してください。"
set tarFilePath to POSIX path of result
set tarFilePath to (quoted form of tarFilePath)

choose folder "リストア先のフォルダを選択してください"
set restFolderPath to POSIX path of result
set restFolderPath to (quoted form of restFolderPath)

do shell script "cd " & restFolderPath & "; tar xvpf " & tarFilePath
end myRestore

続く
909908:2009/09/18(金) 19:27:54 ID:xFgjt65u0
on myArchive()
--指定日付より後にモディファイされた書類を、デスクトップにアーカイブします。
set myDeskTopPath to path to desktop folder
set myDeskTopPath to POSIX path of myDeskTopPath

choose folder
set myFolderPath to POSIX path of result

display dialog "何日前からをデスクトップにアーカイブします。" default answer "30"
set myDate to text returned of result as integer
if myDate < 0 then return

set myDate to (current date) - myDate * days
set myDate to ((year of myDate) as integer) & "-" & ((month of myDate) as integer) & "-" & ((day of myDate) as integer) as Unicode text

set myFolderPath to (quoted form of myFolderPath)
set tarPath to (quoted form of (myDeskTopPath & myDate & ".tar"))
set myDate to (quoted form of myDate)

do shell script "cd " & myFolderPath & "; tar -cpl --newer-mtime " & myDate & " -f " & tarPath & " ./"
--不正ファイル名チェック?--force-localオプションは、この書式では使えませんでした。後日勉強。
--do shell script "cd " & myFolderPath & "; tar -cpl --newer-mtime " & myDate & " --force-local -f " & tarPath & " ./"

set hoge to tarPath & " に保存しました。" as Unicode text
display alert hoge
end myArchive
910名称未設定:2009/09/19(土) 01:04:54 ID:fjEnmgv00
do shell scriptは文字列の解釈作業が入るからスループットが悪いのでは?

911名称未設定:2009/09/19(土) 18:24:06 ID:6nVF67/a0
教えてください
語句を選択してAmazonやらYouTubeやらで検索というASを下記を改変しつつ作っているのですが
open location "http://http://find.2ch.net/?BBS=2ch&TYPE=TITLE&STR=" & surl & "&ie=EUC-JP&oe=EUC-JP"

とすると開いたページで文字化けしてしまいます
解決策をご教示願います

--選択した語句でgoogle検索
set cb to the clipboard as record
tell application "System Events"
tell application process "Safari"
tell application "Safari" to activate
delay 0.5
keystroke "c" using command down
delay 0.5
set surl to the clipboard
end tell
end tell
set the clipboard to cb
if surl contains return then set surl to do shell script "echo " & quoted form of surl & " | sed s/" & return & "//g"
if surl contains " " then set surl to do shell script "echo " & quoted form of surl & " | sed s/" & quoted form of " " & "/" & quoted form of "+" & "/g"
tell application "Safari"
open location "http://www.google.com/search?client=safari&rls=ja-jp&q=" & surl & "&ie=UTF-8&oe=UTF-8"
end tell
912911:2009/09/19(土) 18:29:44 ID:6nVF67/a0
連投すみません。訂正です。
>open location "http://http://find.2ch.net/?BBS=2ch&TYPE=TITLE&STR=" & surl & "&ie=EUC-JP&oe=EUC-JP"

open location "http://find.2ch.net/?BBS=2ch&TYPE=TITLE&STR=" & surl & "&ie=EUC-JP&oe=EUC-JP"
913名称未設定:2009/09/19(土) 18:59:26 ID:Rap9QQE20
>>911
こんな感じで文字コード変換した後にURLエンコードしたらOK

set theText to "ラブプラス"
set theScript to "print rawurlencode(mb_convert_encoding($argv[1], 'EUC-JP','UTF8'));"
set theEncText to do shell script "php -r " & quoted form of theScript & " " & quoted form of theText
open location "http://find.2ch.net/?BBS=2ch&TYPE=TITLE&STR=" & theEncText

10.6だったらAutomatorのサービス用の検索ひな形をAutomatorスレに書いたので
これ使うとテキストを選択したときのコンテキストメニューから検索できるようになる
914名称未設定:2009/09/19(土) 19:02:00 ID:AjXA6wu+0
ASOCのサンプルが出てました。
http://www.tidbits.com/matt/default.html#applescriptthings
http://www.tidbits.com/matt/downloads/SearchTidBITSAsoc.zip

自分で定義したObjCクラスをインスタンス化して、AppleScriptから
使っているそうです。
915911:2009/09/19(土) 20:08:33 ID:6nVF67/a0
>>913
ありがとうございます!
お察しの通り、10.6でテキストを選択>コンテキストメニューから検索
の作業をしていたところです。
QuickSilverがダメダメで途方に暮れていたので助かりました。
916名称未設定:2009/09/23(水) 05:20:45 ID:mHdOAya10
すみません。教えていただきたいのですが、
クリップボードに何も入っていない時、エラーにならないために以下のような3行を入れていました
if (the clipboard) is {} then
set the clipboard to ""
end if

しかし、OS10.5.6あたりから突然「エラー25131」が表示され、この3行が使用できなくなりました。
ぜひ、回避方法をご存知の方は教えていただけないでしょうか?
よろしくお願いいたします。
917名称未設定:2009/09/23(水) 05:24:53 ID:Y9WDEAhq0
>>916
try 〜 on error 〜 end try
918名称未設定:2009/09/23(水) 09:48:59 ID:mHdOAya10
>>917
try
set cb to the clipboard
on error
set the cb to ""
end try
としたら、うまくいきました。ありがとうございます。
マジで助かりました!
919名称未設定:2009/09/23(水) 11:47:43 ID:pld8dcYT0
で、Snow Leopardでは
keychain辺りのバグは直っているのか?
920名称未設定:2009/09/26(土) 05:56:09 ID:uXS75+MN0
アップルスクリプトで、

あるページをSafariで表示し、
そのページを定期的に更新(例えば30分おきなど)し、
更新するたびにそのページのスクリーンショットを撮る。

という一連の作業を自動的にやってくれるようなことがスクリプトで可能であれば、
教えていただけないでしょうか。
921名称未設定:2009/09/26(土) 06:35:13 ID:hjP5EEwK0
くれくれ廚は帰れ。
922名称未設定:2009/09/26(土) 06:40:39 ID:uXS75+MN0
そうですか。
ではけっこうです
923名称未設定:2009/09/26(土) 06:44:16 ID:HC0zHsja0
なにがしたいんだよw
AppleScript書けなくてもAutomatorで出来そうだな
924名称未設定:2009/09/26(土) 06:50:49 ID:uXS75+MN0
>>923
Automaterに挑戦していましたが、
自分の動作を記録させてSafariを更新させることができました。
あとAutomaterに入ってるスクリーンショットを撮る動作をその後に追加しましたが、
やはりそれを例えば30分置きに実行するというのが不可能っぽいです。

ググるとcronとかいうのを使って定期実行してる人もいるみたいですが、
チンプンカンプンです。
それに定期実行のスタートと終了を、アプリケーションを起動くらいシンプルなものにしたいので、
ターミナルでcronを使うというのはちょっと違うかなと思いまして。
やはりXcodeなどでプログラミングした方がいいんですかね・・。
925名称未設定:2009/09/26(土) 08:28:09 ID:uXS75+MN0
とりあえずそれっぽいのを完成させることができました。
>>920は忘れてください。
>>923さんレスありがとうございました
926名称未設定:2009/09/26(土) 13:21:47 ID:v6tnP4iz0
聞くだけ聞いて自分の情報を出さない人ですか?
927名称未設定:2009/09/26(土) 13:30:04 ID:7AJ/V1wc0
そうです。人に厳しく、己に優しくをモットーに生きています。
928名称未設定:2009/09/26(土) 15:07:13 ID:wIZ3SGKZ0
AppleScriptだけで出来そうだ。
929名称未設定:2009/09/26(土) 16:13:41 ID:uXS75+MN0
>>926
>>921のレスさえなければ出してましたよ
930名称未設定:2009/09/26(土) 17:08:07 ID:KYGTqK6L0
バカバカしい
いちいち応戦すんなよ
もう黙ってろ
931名称未設定:2009/09/26(土) 17:18:51 ID:100nMdRE0
>>uXS75+MN0

>>1にある、
>【注意】
>安直なスクリプト作成依頼、丸投げはやっちゃダメ! わからない点、エラーが解決できない点について、スクリプト片を添えて質問しよう。

これを読んでいない、もしくは理解できていない上に、
自作スクリプトを発表する意志すらないのであれば、
このスレに書き込む資格はない。
とっとと出ていって欲しい。
932名称未設定:2009/09/26(土) 17:29:18 ID:FumBLbdq0
>>931
>>930

反応する奴も出てけ
ASと無関係な書込みも同類
933名称未設定:2009/09/26(土) 17:36:04 ID:nhXhp6NX0
こわいよー
934名称未設定:2009/09/26(土) 17:53:18 ID:klkoQD640
>>932
お前はここのヌシか?
935名称未設定:2009/09/26(土) 18:43:09 ID:ydLGr6SL0
誰か魚紳さん呼んでこい
936名称未設定:2009/09/26(土) 20:31:52 ID:QE+wYwnt0
AppleScript-ObjCの勉強におすすめ。

英語だけど、分かりやすいビデオが置いてある。
>ttp://www.macosxautomation.com/applescript/develop/
InterfaceBuilderとかXcodeとか、使ってないひとにはこれ見て
もらった方が早いよ。
937名称未設定:2009/10/01(木) 22:10:11 ID:37QaXFn10
AppleScriptとperlを組み合わせて、Excel 2008用に正規表現置換
ダイアログボックスを作りたいと思ってるんだけど、もうそんなの
やってるって人いますかね。
938名称未設定:2009/10/02(金) 02:14:26 ID:L+9RMJbk0
ログイン時にアプリを3秒の間隔開けて起動させるようなAppleScriptを
http://wakabamac.blog95.fc2.com/blog-entry-785.html
このページのサンプルのアプリ名だけを変えて作りました。
AppleScriptで起動させたアプリを通常のログイン項目オプションの"隠す"と同じように
ウインドウを表示させないようにしたいと思っているのですが、どなたか方法を教えていただけませんでしょうか?
939名称未設定:2009/10/02(金) 02:18:59 ID:WRY5kmZj0
>>938
tell application "System Events"
set visible of processes whose name is "Safari" to false
end tell
940名称未設定:2009/10/02(金) 02:24:24 ID:03zFY9jW0
activateじゃなくてlaunchにすべき
941名称未設定:2009/10/02(金) 02:27:31 ID:L+9RMJbk0
>>939,940
どうもありがとうございます!
試してみます。
942名称未設定:2009/10/04(日) 17:42:52 ID:SYx3/svw0
current applicationとmy applicationって、どう違うんでしょう。

943名称未設定:2009/10/04(日) 20:10:16 ID:j2TT7lJ30
>>942
前に調べたけどよくわからなかったなぁw
たぶん current application を使うのが正しいというか普通だと思う。
これは2語で定義された定数としてわざわざ用意されているもの。

my application は、書き出したスクリプトアプリケーション自身の内部で
自分自身に対して activate や quit をしたい時に tell節と一緒に使われる例が
あるみたいだけど、たぶん大抵は current application で足りると思う。

文法的にみると my application は my+クラス名になっているわけで、
そんな表現に意味があるのか?
似たような表現で my document なら、スクリプタブルなアプリケーション上
(たとえばScriptEditor上)でなら、documentオブジェクトの一覧が得られたりするんだけど、
これはたぶん Standard Suite の applicationクラスの documentエレメントが帰されてると
理解すべきだろうし、
………。

なんてところで思考停止しているw
まあ、my application や my document はありそうな文節だけど、
その実体を考えるとよく分らない。なら、間違いのないだろう
current application や documents of current application を使おう
と言うのが現時点の自分の解釈かな。
944名称未設定:2009/10/11(日) 21:55:18 ID:wBFwomFd0
なんだかSnow Leopardでは苦労している方々も多いようで...
945名称未設定:2009/10/13(火) 02:55:48 ID:Pc4UImqk0
Snow Leopardに対応しているリストのソートを行うためのScripting Additionsって
ないでしょうか。

自前でソートプログラムを組んでみたものの,日本語のことを考えて作ろうとすると
とたんに難しくなってしまうので,Scripting Additionsで代用しようと思っています。
946名称未設定:2009/10/13(火) 23:31:00 ID:Pc4UImqk0
945のレスはスルーして下さい。あきらめることにします。
947名称未設定:2009/10/15(木) 20:10:58 ID:7B1FElCm0
Illustrator CS3、MacOS X 10.5.8です。
埋め込み画像を選択してグレースケールに変換するスクリプトを
書こうとしているのですが、変換は do script でアクションを指定してやるとして
レイヤーがロックされていた場合にエラーになります。
あるアイテムの親のレイヤーのロックをはずす処理はどう書けばよいでしょうか?
948名称未設定:2009/10/15(木) 22:09:52 ID:mPxrVekl0
document とかはテキトーに調節して下さい


tell application "Adobe Illustrator"
tell document 1
if locked of layer "レイヤー 1" is true then
set locked of layer "レイヤー 1" to false
end if
end tell
end tell
949947:2009/10/15(木) 22:55:32 ID:7B1FElCm0
>>948
ありがとうございます、でもそうじゃないんです
tell application "Adobe Illustrator"
tell document 1
tell raster item 1
set selected to true
do script "convertGray" from "mySet" without dialogs
delay 1
end tell
end tell
end tell
という感じのをファイル拾ってループ回そうとしてたんですが
raster item 1 の乗っているレイヤーにロックがかかっていてエラーになるので
乗っているレイヤーを指定する方法(名前を知る方法)?が知りたかったんです
950名称未設定:2009/10/15(木) 23:11:23 ID:mPxrVekl0
layer of xxx

で分かるはずですが…。
951947:2009/10/16(金) 01:31:19 ID:2+Wbf0t/0
>>950
できた!動いた!これで勝つる!
ありがとうございます!
952名称未設定:2009/10/16(金) 01:50:52 ID:ER7xwyai0
そんなあなたに魔法のスクリプト。

ドキュメント上で何かを選択した後で、

get properties of selection

取得できる全ての属性を一覧できる。
953名称未設定:2009/10/16(金) 12:51:43 ID:Pb3J39Vs0
>>951
set locked of every layer to false
ではじめに一括で解除してはダメなのでしょうか?
954名称未設定:2009/10/16(金) 20:38:48 ID:1g+K/xUZ0
Illustratorの埋め込み画像を抽出するスクリプトを描いたよ。
会社の知的財産だからここには出せないけど
(新規ドキュメントにペースト)
(画像の解像度を調節する)
(書き出しコマンド)
こんなヤツです。
955名称未設定:2009/10/16(金) 20:41:56 ID:QZcFjrHn0
だったら書くなよw
956名称未設定:2009/10/16(金) 23:32:00 ID:1g+K/xUZ0
出し惜しみもアレなんで今度ゴニョゴニョしてここに出しますw
サーセン
957名称未設定:2009/10/16(金) 23:46:36 ID:/Vccu3Qz0
フリーのプラグインあるじゃん>埋め込み抽出
958947:2009/10/17(土) 00:46:08 ID:neKQRchY0
jsだったらたけうちとおる氏が公開してるし…>埋め込み抽出
959947:2009/10/17(土) 00:52:41 ID:neKQRchY0
しまった名前取るの忘れた
>>953
そういう処理思いつかなかったです
コピペ野郎だからどっちにしろ書けなかったし…
960名称未設定:2009/10/17(土) 18:14:39 ID:Mg6+AD3A0
>>959
ということは埋め込み画像はそのままにグレースケールにしたかったということか。
961名称未設定:2009/10/18(日) 00:33:09 ID:AuXydGcw0
プログラムの知識が無いので助言頂きたく。
「あるサイトからURLを抽出して一定の文字列を削除してtextファイルに保存」

というのをやりたいです。

前半と後半はAutomatorにまかせるとして、文字列の編集が出来ないようなので、
AppleScriptを勉強しようとおもいましたが全く分かりません。
下記はAutomatorで自動的に挿入される文です


on run {input, parameters} (←これで前のアクションの結果を受け取っているのでしょうか?)

    hogehoge     (←参考になるサイト教えて下さい)

return input
end run

宜しくお願いします
962名称未設定:2009/10/18(日) 00:42:14 ID:u8zvA7ej0
>>961
>参考になるサイト教えて下さい

http://www.google.com
963名称未設定:2009/10/18(日) 06:50:32 ID:skbFfy910
一定の文字列を削除するならAppleScriptよりshell scriptの方が手っ取り早いんじゃあ?
sed 's/対象の文字列//g' とか
対象の文字列に記号があったりすると / を他のに変えとくとかエスケープするとか必要になるけど
964名称未設定:2009/10/18(日) 08:27:04 ID:xH+fTvgb0
>>961
プログラムの知識が全くないなら、プログラムを勉強してください、という助言以外ない
ここにいる人たちには、助言を求めているのではなく、丸投げしているようにしか見えないよ
965名称未設定:2009/10/18(日) 10:28:55 ID:KI6xb+aF0
>>961
>>963
sedとcurlでやると良いよね
Perl, Python, RubyなどのLLでもいいけど
966名称未設定:2009/10/18(日) 11:26:58 ID:fNLBCNOY0
>>963
sed とかは単独のプログラムで shell scripst とはまた別な… ま、いいか。
967名称未設定:2009/10/18(日) 11:45:57 ID:zggL/kKR0
968963:2009/10/18(日) 12:31:00 ID:CPgOggp30
>>966
AutomatorのAction名に使われてたんでな
scripstと書いた覚えはないが
969名称未設定:2009/10/18(日) 14:55:43 ID:fNLBCNOY0
>>968
あっ、そゆこと。重箱のスミつつきしてしまったか。
暇だな俺。
970名称未設定:2009/10/18(日) 16:38:27 ID:JLr0Acuq0
>961
わかりにくいところだし,ぐぐるキーワードもわかりにくい。
イベントによるデータのやり取りやパイプ的な処理は,多くのAppleScriptの定型処理的なスクリプトと
比較して,多少なりとも発想の転換が必要になると思う。
それをすべて本人の努力で,というのは酷かもしれない。

971名称未設定:2009/10/19(月) 23:55:44 ID:YbfIruDg0
URL 抽出 文字列 削除 textファイル 保存 AppleScipt
でぐぐったらここがヒットしたよ↓
ttp://piyocast.com/as/archives/category/application_control/url-access-scripting/
972961:2009/10/19(月) 23:56:54 ID:aZIuS5EW0
色々助言ありがとうございます。
抽出して置換…程度に思っていたのですがそう簡単に行かないみたいですね
色々試してみます。
973名称未設定:2009/10/20(火) 09:30:30 ID:2GnlbUpf0
>>972
--少し質問が漠然としてるみたい。文字列の検索置換をASだけでやりたいのかな?URLをいじるのが主?
--たとえばURLのクエリーを省いた文字列が欲しい。で、ASだけで書きたいならこんな感じ。
set myStrings to "http://www.google.co.jp/search?q=applescript"
set splitChara to "?"
set findPos to offset of splitChara in myStrings
set retString to characters 1 thru (findPos - 1) of myStrings as Unicode text
log retString
--文字列の検索置換のASオンリーなら昔はこんなのを使ってた。今は外部で正規使うけど。
--myStringsのクエスチョンマークを文字に
replaceString(myStrings, splitChara, "QUESTION")
log result
--- Search and replase
on replaceString(myStrings, findStr, replaceStr)
set tmp to AppleScript's text item delimiters
set AppleScript's text item delimiters to findStr
set theList to every text item of myStrings
set AppleScript's text item delimiters to replaceStr
set myStrings to theList as string
set AppleScript's text item delimiters to tmp
return myStrings
end replaceString
--参考になれば嬉しい。
974名称未設定:2009/10/20(火) 13:36:32 ID:ZfIbwzZ10
他ので書いた方が楽だ...
975名称未設定:2009/10/20(火) 14:40:14 ID:R3HQI4zQP
AppleScript で文字列の検索、置換、変換をするなら
TextCommands 入れればいいのに。
976名称未設定:2009/10/21(水) 01:49:04 ID:Lo5P01LD0
俺ならPerlか何かを呼び出すかJeditなどのエディタを操作して行なう
977名称未設定:2009/10/21(水) 03:52:50 ID:eOQuYF9o0
ASオンリーでやっても効率が悪いだけなのは同意だが、
今まさにASを学ぼうとしてる961にとっては、
973を読み解くのもためになると思うよ
978973:2009/10/21(水) 07:53:04 ID:d0yLUJa50
>>961さん、どこかいっちゃったのかな?
AS批判のみなさま。確かに私もいまは外でやるのが普通になってしまったけど、
でも、基本覚えておいて損はないし、てか、offset of 系とかは絶対に他言語でもつかうじゃん。
マッチしたレコードを表示するしないに正規つかう?indexOf使うでしょ?圧倒的に早いじゃん。
delimiters系もASの使い方はちと特殊すぎるけどこれも必須だよ。

>>973に書いたの(textとcharactersの変換さりげなくやってるのも見逃さないで)と
reverse(後ろからはないもんね)を覚えて応用すればテキスト処理のほとんどがASのみでできるよ。

--reverse sample
set myStrings to "http://www.google.co.jp/search?q=applescript"
set myListStr to characters of myStrings -->リストにする
set tempStr to reverse of myListStr as Unicode text -->ひっくり返す
set findPos to offset of "/" in tempStr --> offset of は最初に見っけたところだけ。
set retString to characters findPos thru (length of tempStr) of tempStr
set retString to reverse of retString as Unicode text -->ひっくり返してテキストに

朝っぱらから何をしておる?会社いかなきゃ、かなり下がってるからあげとくね。
979名称未設定:2009/10/21(水) 08:14:53 ID:X2P6RHEq0
変数に格納している文字列をアプリケーションのキャレット位置に入力するにはどうすれば良いのでしょうか?
例えば変数STRに格納している文字列をTextEditに入力する時

tell "TextEdit"
tell window 1
keystroke STR
end tell
end tell

ではいけないのでしょうか?
上記だと「&1を取り出すことができません」とエラーが出ます。

基本的な質問ですみません。
980名称未設定:2009/10/21(水) 09:09:18 ID:EpoV8NWa0
>>979
set STR to "applescript"
set the clipboard to STR

tell application "TextEdit"
activate
tell application "System Events"
keystroke "v" using {command down}
end tell
end tell

とか書くのだけど、まずはリファレンス本を買ってみましょう、ググってみましょう。
でないと、一生書けないよ?
981名称未設定:2009/10/21(水) 14:56:21 ID:ijC2VJEn0
ASのリファレンス本ってまだ売っているんだっけ?
982名称未設定:2009/10/21(水) 15:15:07 ID:l6nJD7fz0
>>979
/Applications/AppleScript/Example Scripts/UI Element Scripts/Key Down-Up.applescript
/Library/Scripts/UI Element Scripts/Key Down-Up.applescript
見るといいよ
983名称未設定:2009/10/21(水) 15:22:21 ID:l6nJD7fz0

うち10.4なんで10.5以降で構成が変わってたらスマン
984名称未設定:2009/10/21(水) 21:13:02 ID:uUZ2pM5W0
次スレ

AppleScript アップルスクリプト 質問、発表 4
http://pc11.2ch.net/test/read.cgi/mac/1256127156/
985名称未設定:2009/10/21(水) 21:38:37 ID:6o3eLBOJ0
reverse ?
初めて見た。
いつからこんなのあった?
986961:2009/10/21(水) 22:14:30 ID:+kuh7YED0
>>973さん
1行ずつ解読中です。
凄く勉強になります。

調べて理解は出来ても書くのは難しいですね。
987名称未設定:2009/10/22(木) 00:11:39 ID:m2rL1+bb0
>>979
うまくいかない時は1行ずつバラして確認する
これ基本中の基本

ただし tell 〜 end tell は間違ってても文法的なエラー以外は出ないので、
まずは tell を抜いた状態で確認する
988名称未設定:2009/10/22(木) 00:52:42 ID:zYrS/AZb0
>>985
OS8.5時代には既にあったと思う。
989名称未設定:2009/10/22(木) 01:50:20 ID:oPeAWYAb0
みんなすげーなー
990名称未設定:2009/10/22(木) 13:31:34 ID:OtVFtJe20
AppleScript アップルスクリプト 質問、発表 4
http://pc11.2ch.net/test/read.cgi/mac/1256127156/l50
991名称未設定:2009/10/22(木) 20:58:13 ID:QFOz7M3O0
992名称未設定:2009/10/23(金) 17:54:30 ID:zaZ2Ikhi0
>>980
>>979 ではありませぬが、テキストエディットってpasteコマンドがないのですね。
なんのこっちゃ
あと、念のため「tell document 1」も入れた方がいいかも。
993名称未設定
>>992
実際は application "System Events" を application "TextEdit" で囲んでも全く意味ないので、
document 1 で囲む必要も別にありません

もし keystroke を使わずにやるのなら、
document 1 の text や insertion point を駆使する事になるけど