1 名前:名称未設定 [2008/10/03(金) 18:41:42 ID:Abs+u1Ko0] 質問、発表どっちでもスレ。 【注意】 安直なスクリプト作成依頼、丸投げはやっちゃダメ! わからない点、エラーが解決できない点について、スクリプト片を添えて質問しよう。 ・前スレ、関連旧スレ AppleScript アップルスクリプト 質問、発表 2 pc11.2ch.net/test/read.cgi/mac/1197443062/ AppleScript アップルスクリプト 質問、発表 pc11.2ch.net/test/read.cgi/mac/1174045850/ 【標準装備】スクリプトエディタ pc9.2ch.net/test/read.cgi/mac/1111760449/ おもろい、めずらしいアップルスクリプト発表会 6 pc7.2ch.net/test/read.cgi/mac/1117979906/ ・参考リンク AppleScript ヘルプ help:///Library/Documentation/Help/AppleScript.help 発表まとめ members.at.infoseek.co.jp/obto/script/script.html MacWiki - AppleScript macwiki.sourceforge.jp/cgi-bin/wiki.cgi?AppleScript AppleScript PARK www.tonbi.jp/AppleScript/ TN2065: do shell script developer.apple.com/jp/technotes/tn2065.html developer.apple.com/technotes/tn2002/tn2065.html
809 名前:(・∀・) mailto:sage [2009/08/14(金) 12:53:11 ID:Ydvl0xHm0] とりあえず、OSXのバージョン書いたら。
810 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/08/14(金) 18:15:54 ID:GteGzGkb0] developer.apple.com/technotes/tn2002/tn2065.html quoted form of
813 名前:811 mailto:sage [2009/08/14(金) 18:42:11 ID:y1kvroUD0] >>812 ありがとうございます。解決しました。
814 名前:808 mailto:sage [2009/08/14(金) 21:47:55 ID:t1Qawg8h0] >>809 すみません. OSXのバージョンは10.5.8です. >>810 ありがとうございます. スクリプトをアプリケーションバンドルとして保存し, TextEdit.appのInfo.plist内の拡張子txtに関する値をコピーし,CFBundleDocumentTypes 配列に追加しました. しかし,状況は依然変わりません.
815 名前:名称未設定 mailto:sage [2009/08/14(金) 21:55:02 ID:+VcvW3Pr0] >>814 再起動あるいは再ログインした? それでもおかしいならば手順がおかしいがどこかで間違ってることになるので、 後はこちらを熟読してください。 developer.apple.com/documentation/MacOSX/Conceptual/BPRuntimeConfig/BPRuntimeConfig.html
816 名前:808 mailto:sage [2009/08/16(日) 02:44:57 ID:bos/Izjb0] >>815 再起動もしました. 念のため新規作成してみました. 手順は下記の通り. 1. スクリプトを書く 2. アプリケーションバンドルとして保存する 3. CFBundleDocumentTypes配列に拡張しtxtに関する値を追加 4. txtファイルを右クリックし「情報を見る」メニューで, アプリケーションを指定し「すべてを変更」ボタンをクリック 5. 指定していたアプリケーションが元に戻ってしまうorz という感じです. ドキュメント読んで出直してきます.
817 名前:名称未設定 mailto:sage [2009/08/16(日) 04:22:31 ID:raj8GWeT0] Info.plistをいじった後でLaunchServicesのDBを更新する必要があるんじゃ? ・アプリを保存し直すか ←うろ覚え ・アプリを一旦別フォルダに移すか ←うろ覚え ・ターミナルでlsregister -fで更新するか ←ググって ・そっくり再構築してしまうか ←これもlsregisterでできるけどググって
818 名前:名称未設定 mailto:sage [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]で保存したドロップレットが動作する。
819 名前:808 mailto:sage [2009/08/16(日) 06:53:23 ID:9/s4dSgl0] >>818 解決しました!ありがとうございます.
820 名前:名称未設定 mailto:sage [2009/08/18(火) 03:54:59 ID:d2BwqLTK0] 自分も追加日ソート組みなため iTunesスレでの 質問に興味があるですが "Date Added" Fieldを 好きな日付けで書き換えられるようなスクリプトは 海外にも無いようで、Macの日付を戻したりして 入れ替えたり、とてももローテクで面倒でした こちらの詳しい方はどう思われますか >ソートするのに追加日でしているのですが、なぜか古いファイルが >同日になってしまい同じジャケットがバラバラ出てきて悩んでおります。 >削除して入れ直すには数が多いのでスクリプトでアルバム単位変更できないかと >Doug's AppleScriptなど探してみてはいるのですが、見落としているのか >みつかりません。 >Added Date を変更する方法解る方いらっしゃいませんでしょうか?
821 名前:名称未設定 mailto:sage [2009/08/18(火) 05:31:47 ID:O2qHJ4wa0] pc11.2ch.net/test/read.cgi/mac/1247448657/408 で触れられてたと思ったけど
822 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/08/19(水) 00:37:08 ID:GCsKUHSv0] 多分、一番簡単なのはAutomatorを立ち上げてワークフローメニューの「記録」 を選んで(ユニバーサルアクセスの設定変えろ言われるかもしれないけど)iTerm でフルスクリーンにするコマンドをたたいてみること。 あとは、アプリケーション立ち上げを追加するだけで目的のワークフローができる。
824 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/08/19(水) 09:34:18 ID:xpOLjwyfi] 涙 あ、ありがとう。これからやってみる。
826 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/08/20(木) 01:11:14 ID:ZBXl4WV1O] >>830 横槍ですまないがちょっと性急に過ぎやしないか 質問内容を見る限り、正直まだ他人様のコードを読み取れる段階とは思えない テンプレをひととおり、或いはせめてAppleScript PARK辺りだけでも読んでくる事を勧めます
832 名前:名称未設定 mailto:sage [2009/08/20(木) 08:12:16 ID:8NKD9fZJi] ども Apple Script PARK いってきます。
833 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/08/26(水) 17:22:49 ID:BkHeLdT30] 文字コードとか言語環境とか
835 名前:(・∀・) mailto:sage [2009/08/27(木) 01:24:24 ID:Qeoje6Iv0] >>833 その表記はOS9とともに死滅したはず。
836 名前:名称未設定 mailto:sage [2009/08/27(木) 04:02:50 ID:cbglxXbv0] 寝言は(ry
837 名前:名称未設定 mailto:sage [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 --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 名前:名称未設定 mailto:sage [2009/09/04(金) 00:58:40 ID:9GqtYbtS0] TigerでMacに入っている電子辞書をスクリプトを使って利用したいんですが、 そういうスクリプトつくれますか? スクリプトはAppleScriptでもJavaScriptでも可。 電子辞書は国語辞書や漢字辞書で、 スクリプトで操作できるものを購入しようと調べましたがわからなかったので、 どの電子辞書を前提でも可。 具体的な内容は、テキストに書かれている大量の単語を、 辞書で検索して意味などをテキストに書き出すという作業です
839 名前:名称未設定 mailto:sage [2009/09/04(金) 03:06:48 ID:AtlUaXKv0] LogoVista辞典ブラウザ 1.2.2はスクリプトエディタで用語説明開いてもアプリ固有の情報なかった もしやるならGUI スクリプティングだろうけど、どこまでできるかわからない(単語を選択してサービスメニューから辞書引きはそこそこできるかも?だけど)
840 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/09/04(金) 12:29:41 ID:YWJx89YP0] Jammingにもsearchってコマンドがあるから、これでもいけそう。
842 名前:名称未設定 mailto:sage [2009/09/04(金) 22:45:15 ID:nUYUxVxi0] >837 これはもはやAppleScriptではない...
843 名前:名称未設定 mailto:sage [2009/09/04(金) 22:51:48 ID:FV9DqDd30] >>842 むしろ、これこそAppleScriptならではだと思う。
844 名前:名称未設定 mailto:sage [2009/09/05(土) 00:59:07 ID:hQMec1Px0] >>839-841 ありがとうございます。 egbridge Uni2は手に入らなさそうですね。Jammingをちょっと見てみます。
845 名前:名称未設定 mailto:sage [2009/09/05(土) 11:46:21 ID:QymRaNX90] Snow LeopardでAppleScript Studioが打ち切りになったと知ってショックだ どうしろと
846 名前:名称未設定 mailto:sage [2009/09/05(土) 12:57:59 ID:hqWAS12H0] Depられただけで、まだ動くよ。 >ttp://mycometg3.blog.so-net.ne.jp/2009-09-05 IB3.2でdefaultを書き換えて、使えばいい。
847 名前:名称未設定 mailto:sage [2009/09/05(土) 15:58:04 ID:PQZGDKO60] まじかよ
848 名前:名称未設定 mailto:sage [2009/09/05(土) 16:29:09 ID:A/UzNj2OP] Cocoa-Javaでアプリ書いてた人の気持ちがわかったような
849 名前:名称未設定 mailto:sage [2009/09/05(土) 20:29:20 ID:WdLCdU6t0] AppleScriptObjCっつうのもなんか微妙な感じが developer.apple.com/mac/library/releasenotes/ScriptingAutomation/RN-AppleScriptObjC/index.html
850 名前:名称未設定 mailto:sage [2009/09/05(土) 20:50:30 ID:be+wMAR70] 俺は面白いと思うよ、AppleScriptObjC 既存の文法を拡張せずにObjCのオブジェクトを継承できたりしてASSなんかよりずっと良い
851 名前:名称未設定 mailto:sage [2009/09/05(土) 23:05:45 ID:ej1h2E+O0] ASSに手を出さなくて正解だったぜ... しかし,これからどうなるんだ...
852 名前:名称未設定 mailto:sage [2009/09/05(土) 23:30:17 ID:be+wMAR70] ASSって基本的に書き捨てアプリ向けだから、随分役に立ったよ
853 名前:名称未設定 mailto:sage [2009/09/05(土) 23:39:14 ID:DIop7y1ui] 基本的な所が動かない... Set theDate to (class "NSDate")'s |date|() log theDate's description()
854 名前:名称未設定 mailto:sage [2009/09/05(土) 23:43:02 ID:6qHVmxV70] Objective-Cと同じ書き方が必要なら、gdbのデバッグ能力をフルに使える Objective-Cそのまま使う方がずっと簡単だと思うんだが?
855 名前:名称未設定 mailto:sage [2009/09/06(日) 00:07:31 ID:vNiNb+rl0] そんなこと言ったらRubyCocoaもPyObjCも同じじゃん
856 名前:名称未設定 mailto:sage [2009/09/06(日) 00:45:48 ID:de0Txa+C0] 原則 Class methodしか使えなかったcall method連発のASSよりもよいものになっている事を祈る
857 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/09/06(日) 02:33:41 ID:BnE4l9Ao0] Xcode で AppleScript Droplet が作成できなくなった…… ドロップレットを作成する簡単な方法はなくなったの?
859 名前:名称未設定 mailto:sage [2009/09/06(日) 03:17:38 ID:vNiNb+rl0] ドロップレットならAppleScriptエディタの方が簡単でしょ
860 名前:名称未設定 mailto:sage [2009/09/06(日) 09:33:35 ID:PTAKa/tri] ASSアプリを、AppleScriptObjCに移植 してみた。コツをなかなかつかめない。 Idleハンドラが動かないのでNSTimer 使ってみた。 Bindingが使えるのはおもしろいな。
861 名前:名称未設定 mailto:sage [2009/09/06(日) 11:43:38 ID:LuSTT5iG0] ASOCを覚えると自由にウィンドウを作ったり、 普通のアプリっぽいこともできるのかな?
862 名前:名称未設定 mailto:sage [2009/09/06(日) 11:59:23 ID:vNiNb+rl0] できる
863 名前:名称未設定 mailto:sage [2009/09/06(日) 12:22:01 ID:BnE4l9Ao0] 早速新しいAppleScriptエディタでアプリケーションバンドルを作成してみたけど, Dockアイコンがドロップを受け付けてくれない……。 Info.plist を miff.blog.so-net.ne.jp/2009-05-11 のように書き換えてみると,Finderのアイコン上へはドロップできたけど, やっぱり Dock アイコンへはドロップできない。 どうするのが正しいのでしょうか?
864 名前:863 mailto:sage [2009/09/06(日) 12:44:22 ID:BnE4l9Ao0] 分かった。最初に保存するときに,on open ハンドラが存在すればドロップレットとして保存される模様。
865 名前:名称未設定 mailto:sage [2009/09/06(日) 13:03:02 ID:vNiNb+rl0] …
866 名前:名称未設定 mailto:sage [2009/09/06(日) 13:04:58 ID:VyLvyVqf0] 出来上がったアプリをコピー,Dockに登録し直し,ログインし直し。 これらの単独または上記の順番で連続して実行。
867 名前:名称未設定 mailto:sage [2009/09/06(日) 13:34:55 ID:zEN1Hafm0] <妄想> スクリプトエディタで書く普通のスクリプトをObj-Cでも書けるようにしてくんねえかな 昔JavaScript版どっかが作ってたけど いや、Obje-C++みたいに、というかさらに混在できるようにしちゃうとか Objective-C++AS 予約語が重なりそうだな </妄想>
868 名前:名称未設定 mailto:sage [2009/09/06(日) 13:51:46 ID:vNiNb+rl0] Scripting Bridgeがだいたいそんな感じ
869 名前:名称未設定 mailto:sage [2009/09/06(日) 14:48:46 ID:+Cg2k6Qb0] 初めてのAS-ObjCアプリです。 >ttp://mycometg3.blog.so-net.ne.jp/2009-09-06 面白いね。これ。
870 名前:名称未設定 mailto:sage [2009/09/07(月) 18:59:05 ID:SsOr1JYe0] ダイアログを表示せずにキーボード入力をsetする方法はあるのでしょうか? スクリプトを起動したら入力待機して、1文字入力したら、それを変数に格納したいのです。
871 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/09/08(火) 03:14:12 ID:Tv2i7/JY0] やっぱりいざというときにはRubyとかObj-Cだなぁ
875 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [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
877 名前:873 mailto:sage [2009/09/08(火) 23:58:57 ID:+3aA31Hn0] >>875 さん >>876 さん ありがとうございます。 >>876 さんの書かれたスクリプトで出来ました。本当にありがとうございました。
878 名前:名称未設定 mailto:sage [2009/09/09(水) 21:44:46 ID:1O7J4flE0] >874 それはすでにAppleScriptでありながらAppleScriptではない。
879 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/09/13(日) 04:40:12 ID:xhAgFv6VP] タグを自動で一括編集したくて、 コメント欄に書いてあるリリース日を説明欄にコピって 説明欄でソートしたらリリース日順に並べられるようにするAppleScriptを作るのに今までかかった。 全くのプログラム初心者なので色々なサイトのを借りてきて切り貼りさせてもらったけどなんとか期待通りの挙動になった…
882 名前:名称未設定 mailto:sage [2009/09/13(日) 04:42:18 ID:xhAgFv6VP] ↑はiTunesの話です…
883 名前:名称未設定 mailto:sage [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 名前:(・∀・) mailto:sage [2009/09/13(日) 11:33:16 ID:C0joxKVM0] activateを消せばいいんじゃ。
885 名前:名称未設定 mailto:sage [2009/09/13(日) 11:41:40 ID:QxE5LHfg0] ディスクキャッシュクリアしたいなら専用コマンドあるんだから、そっち使えば? do shell script "/usr/bin/purge" man purgeも読んでね。
886 名前:名称未設定 mailto:sage [2009/09/13(日) 14:32:03 ID:E536R0Uc0] tellブロックの内部を ignoring application responce end ignoring で囲む。 または try end try で囲む。 なんてのは?
887 名前:883 mailto:sage [2009/09/13(日) 17:37:33 ID:KkddvEMq0] >>884 activate消すと起動しませんよね...... >>885 ご指摘ありがとうございます。 シェルスクリプトに関しても全くの無知でして。勉強になりました。 うまく併用させてみたいと思います。 >>886 try~end try でできました! ありがとうございます。m(_ _)m
888 名前:名称未設定 mailto:sage [2009/09/13(日) 21:01:19 ID:65DAWBwz0] >>887 起動させるのはrunで、activateは一番手前に持ってくる命令じゃね?
889 名前:883,887 mailto:sage [2009/09/13(日) 23:07:59 ID:KkddvEMq0] >>888 そうですね,言葉が不適切でしたか。すみません。
890 名前:名称未設定 mailto:sage [2009/09/14(月) 22:30:46 ID:oBw14roh0] ASObjCの勉強するか… 掌田さんあたりがわかりやすい入門書出してくれんだろうか
891 名前:名称未設定 mailto:sage [2009/09/15(火) 07:52:49 ID:RPQKMNww0] 掌田津耶乃の本がわかりやすい…?
892 名前:名称未設定 mailto:sage [2009/09/15(火) 10:36:57 ID:Aou5RXENi] >>891 釣られてどうする
893 名前:名称未設定 mailto:sage [2009/09/15(火) 16:14:41 ID:6SUSyBKT0] 昔のHyperCardの入門書はよかったけどな。
894 名前:名称未設定 mailto:sage [2009/09/15(火) 17:11:48 ID:EXK1+Zxt0] HC入門ならダニーグッドマンだろ。
895 名前:名称未設定 mailto:sage [2009/09/15(火) 20:04:13 ID:1HSKzOmg0] >>891 掌田津耶乃ぐらいしか出してくれないだろう。
896 名前:名称未設定 mailto:sage [2009/09/15(火) 21:21:24 ID:YMDNfyXT0] いや、単に自分がAppleScript Programming for Mac OS Xで ASS覚えたからというだけの話なんだ
897 名前:名称未設定 mailto:sage [2009/09/15(火) 22:30:32 ID:RPQKMNww0] あの青い表紙のやつか。 うちにもそれとぜんまいビュンビュンあるけど、今読み返してみるとやっぱりメチャクチャだわ
898 名前:名称未設定 mailto:sage [2009/09/16(水) 01:36:44 ID:gNIc8Rhx0] >>897 が出版してくれよ
899 名前:名称未設定 mailto:sage [2009/09/17(木) 02:49:26 ID:7uBdTuPX0] 10.5以前でつくったアプリケーションを10.6のエディタで別名で保存すると64bitになる
900 名前:名称未設定 mailto:sage [2009/09/17(木) 19:35:09 ID:5fOLsob60] 複数のファイルの頭から指定バイト数を削除するスクリプトを教えてください。
901 名前:名称未設定 mailto:sage [2009/09/17(木) 22:13:25 ID:nHKewOSW0] >>900 >>1
902 名前:名称未設定 mailto:sage [2009/09/17(木) 22:26:43 ID:9ISfMQA40] とりあえず丸投げ禁止がこのスレの掟。 >>901 はそれがいいたいのかと。 と言うだけじゃアレなんでヒントだけ示せば、nバイト削除=(n+1)バイト目から読み込んで書き込むということだから read from文使えばいいだろう。 あとはわかるな? >>901 IDがnHK
903 名前:名称未設定 mailto:sage [2009/09/18(金) 02:49:37 ID:dF8NJ+Je0] tail -c +開始バイト も簡単で
904 名前:名称未設定 mailto:sage [2009/09/18(金) 02:53:19 ID:JPJU8UqJ0] >>903 簡単だけど、時間が稼げない気がする 以前、do shell script("touch"〜とopen for accessでファイルを100個だか500個だかの作成をループで回して時間計ったことがあるけど、open for accessの方が圧倒的に速かった まぁ最近の機種だとそうでもないかもしれないけど
905 名前:名称未設定 mailto:sage [2009/09/18(金) 03:27:59 ID:dF8NJ+Je0] そんなオーダーで要求されるとは想像もしなかったよw 5個か10個か、スクリプトも使い捨て/使い切りと思ってさ
906 名前:名称未設定 mailto:sage [2009/09/18(金) 08:10:15 ID:Xs8mCu3S0] そういう時はtailじゃなくてddだろjk
907 名前:879 mailto:sage [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 名前:名称未設定 mailto:sage [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 続く
909 名前:908 mailto:sage [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 名前:名称未設定 mailto:sage [2009/09/19(土) 01:04:54 ID:fjEnmgv00] do shell scriptは文字列の解釈作業が入るからスループットが悪いのでは?
911 名前:名称未設定 mailto:sage [2009/09/19(土) 18:24:06 ID:6nVF67/a0] 教えてください 語句を選択してAmazonやらYouTubeやらで検索というASを下記を改変しつつ作っているのですが open location "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 "www.google.com/search?client=safari&rls=ja-jp&q= " & surl & "&ie=UTF-8&oe=UTF-8" end tell
912 名前:911 mailto:sage [2009/09/19(土) 18:29:44 ID:6nVF67/a0] 連投すみません。訂正です。 >open location "http://find.2ch.net/?BBS=2ch&TYPE=TITLE&STR= " & surl & "&ie=EUC-JP&oe=EUC-JP" open location "find.2ch.net/?BBS=2ch&TYPE=TITLE&STR= " & surl & "&ie=EUC-JP&oe=EUC-JP"
913 名前:名称未設定 mailto:sage [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 "find.2ch.net/?BBS=2ch&TYPE=TITLE&STR= " & theEncText 10.6だったらAutomatorのサービス用の検索ひな形をAutomatorスレに書いたので これ使うとテキストを選択したときのコンテキストメニューから検索できるようになる
914 名前:名称未設定 mailto:sage [2009/09/19(土) 19:02:00 ID:AjXA6wu+0] ASOCのサンプルが出てました。 www.tidbits.com/matt/default.html#applescriptthings www.tidbits.com/matt/downloads/SearchTidBITSAsoc.zip 自分で定義したObjCクラスをインスタンス化して、AppleScriptから 使っているそうです。
915 名前:911 mailto:sage [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 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/09/23(水) 11:47:43 ID:pld8dcYT0] で、Snow Leopardでは keychain辺りのバグは直っているのか?
920 名前:名称未設定 mailto:sage [2009/09/26(土) 05:56:09 ID:uXS75+MN0] アップルスクリプトで、 あるページをSafariで表示し、 そのページを定期的に更新(例えば30分おきなど)し、 更新するたびにそのページのスクリーンショットを撮る。 という一連の作業を自動的にやってくれるようなことがスクリプトで可能であれば、 教えていただけないでしょうか。
921 名前:名称未設定 mailto:sage [2009/09/26(土) 06:35:13 ID:hjP5EEwK0] くれくれ廚は帰れ。
922 名前:名称未設定 mailto:sage [2009/09/26(土) 06:40:39 ID:uXS75+MN0] そうですか。 ではけっこうです
923 名前:名称未設定 mailto:sage [2009/09/26(土) 06:44:16 ID:HC0zHsja0] なにがしたいんだよw AppleScript書けなくてもAutomatorで出来そうだな
924 名前:名称未設定 mailto:sage [2009/09/26(土) 06:50:49 ID:uXS75+MN0] >>923 Automaterに挑戦していましたが、 自分の動作を記録させてSafariを更新させることができました。 あとAutomaterに入ってるスクリーンショットを撮る動作をその後に追加しましたが、 やはりそれを例えば30分置きに実行するというのが不可能っぽいです。 ググるとcronとかいうのを使って定期実行してる人もいるみたいですが、 チンプンカンプンです。 それに定期実行のスタートと終了を、アプリケーションを起動くらいシンプルなものにしたいので、 ターミナルでcronを使うというのはちょっと違うかなと思いまして。 やはりXcodeなどでプログラミングした方がいいんですかね・・。
925 名前:名称未設定 mailto:sage [2009/09/26(土) 08:28:09 ID:uXS75+MN0] とりあえずそれっぽいのを完成させることができました。 >>920 は忘れてください。 >>923 さんレスありがとうございました
926 名前:名称未設定 mailto:sage [2009/09/26(土) 13:21:47 ID:v6tnP4iz0] 聞くだけ聞いて自分の情報を出さない人ですか?
927 名前:名称未設定 mailto:sage [2009/09/26(土) 13:30:04 ID:7AJ/V1wc0] そうです。人に厳しく、己に優しくをモットーに生きています。
928 名前:名称未設定 [2009/09/26(土) 15:07:13 ID:wIZ3SGKZ0] AppleScriptだけで出来そうだ。
929 名前:名称未設定 mailto:sage [2009/09/26(土) 16:13:41 ID:uXS75+MN0] >>926 >>921 のレスさえなければ出してましたよ
930 名前:名称未設定 mailto:sage [2009/09/26(土) 17:08:07 ID:KYGTqK6L0] バカバカしい いちいち応戦すんなよ もう黙ってろ
931 名前:名称未設定 mailto:sage [2009/09/26(土) 17:18:51 ID:100nMdRE0] >>uXS75+MN0 >>1 にある、 >【注意】 >安直なスクリプト作成依頼、丸投げはやっちゃダメ! わからない点、エラーが解決できない点について、スクリプト片を添えて質問しよう。 これを読んでいない、もしくは理解できていない上に、 自作スクリプトを発表する意志すらないのであれば、 このスレに書き込む資格はない。 とっとと出ていって欲しい。
932 名前:名称未設定 mailto:sage [2009/09/26(土) 17:29:18 ID:FumBLbdq0] >>931 >>930 反応する奴も出てけ ASと無関係な書込みも同類
933 名前:名称未設定 mailto:sage [2009/09/26(土) 17:36:04 ID:nhXhp6NX0] こわいよー
934 名前:名称未設定 mailto:sage [2009/09/26(土) 17:53:18 ID:klkoQD640] >>932 お前はここのヌシか?
935 名前:名称未設定 mailto:sage [2009/09/26(土) 18:43:09 ID:ydLGr6SL0] 誰か魚紳さん呼んでこい
936 名前:名称未設定 mailto:sage [2009/09/26(土) 20:31:52 ID:QE+wYwnt0] AppleScript-ObjCの勉強におすすめ。 英語だけど、分かりやすいビデオが置いてある。 >ttp://www.macosxautomation.com/applescript/develop/ InterfaceBuilderとかXcodeとか、使ってないひとにはこれ見て もらった方が早いよ。
937 名前:名称未設定 mailto:sage [2009/10/01(木) 22:10:11 ID:37QaXFn10] AppleScriptとperlを組み合わせて、Excel 2008用に正規表現置換 ダイアログボックスを作りたいと思ってるんだけど、もうそんなの やってるって人いますかね。
938 名前:名称未設定 mailto:sage [2009/10/02(金) 02:14:26 ID:L+9RMJbk0] ログイン時にアプリを3秒の間隔開けて起動させるようなAppleScriptを wakabamac.blog95.fc2.com/blog-entry-785.html このページのサンプルのアプリ名だけを変えて作りました。 AppleScriptで起動させたアプリを通常のログイン項目オプションの"隠す"と同じように ウインドウを表示させないようにしたいと思っているのですが、どなたか方法を教えていただけませんでしょうか?
939 名前:名称未設定 mailto:sage [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 名前:名称未設定 mailto:sage [2009/10/02(金) 02:24:24 ID:03zFY9jW0] activateじゃなくてlaunchにすべき
941 名前:名称未設定 mailto:sage [2009/10/02(金) 02:27:31 ID:L+9RMJbk0] >>939 ,940 どうもありがとうございます! 試してみます。