X



AppleScript アップルスクリプト 質問、発表 6
■ このスレッドは過去ログ倉庫に格納されています
0001名称未設定
垢版 |
2013/12/21(土) 21:50:45.07ID:1PJJFexL0
質問、発表どっちでもスレ。

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

■参考
AppleScript Language Guide
https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/
TN2065: do shell script
https://developer.apple.com/library/mac/technotes/tn2065/
AppleScript: The Language of Automation
http://www.macosxautomation.com/applescript/
MacWiki - AppleScript
http://macwiki.sourceforge.jp/wiki/index.php/AppleScript
鳶嶋工房 / AppleScript
http://tonbi.jp/AppleScript/
AS Hole(AppleScriptの穴)
http://piyocast.com/as/
■過去スレ
1 http://pc11.2ch.net/test/read.cgi/mac/1174045850/
2 http://pc11.2ch.net/test/read.cgi/mac/1197443062/
3 http://pc11.2ch.net/test/read.cgi/mac/1223026902/
4 http://anago.2ch.net/test/read.cgi/mac/1256127156/
5 http://anago.2ch.net/test/read.cgi/mac/1330350325/
0556554
垢版 |
2015/07/06(月) 19:05:12.47ID:dTkqL4+G0
>>555
ありがとうございます。なんとかできました。
0557名称未設定
垢版 |
2015/07/06(月) 19:17:26.04ID:F44xxfZx0
>>555
>Finderでドロップ可能なのにするのは、Info.plistを弄らないとならないのかな??
ああ、たぶん、Dropletsテンプレートから作れってことだな。そゆことで納得しとこうw
0558名称未設定
垢版 |
2015/07/06(月) 22:13:36.02ID:BXYRI4R00
Image Eventsで縦横を指定した数値に強制リサイズする方法ありませんか?
0559名称未設定
垢版 |
2015/07/06(月) 23:09:08.57ID:UWCV8pnF0
なさそうだからsipsコマンド-zオプションで
0560558
垢版 |
2015/07/07(火) 15:53:07.90ID:pMuP/1h30
>>559
ありがとう!
せめて短辺の数値を設定する方法ないですかね?
scale x to size xxx←これを短辺に。
0561名称未設定
垢版 |
2015/07/07(火) 16:34:46.48ID:eCnPxyr00
画像リサイズ osxでggrks
ttp://www5.wind.ne.jp/miko/mac_soft/th-maker_x/
0562558
垢版 |
2015/07/07(火) 18:07:22.26ID:pMuP/1h30
>>561
え?
そりゃフォトショでもなんでもできるがapplescriptで可能な記述はないかって話し。
同時にアイコン付けたり名前変えたりと他の作業も同時に行うスクリプトを書きたくて。
0563名称未設定
垢版 |
2015/07/07(火) 19:00:32.98ID:YzbvPtAK0
>>562
do shell script経由でimagemagickでできると思うが
0564名称未設定
垢版 |
2015/07/07(火) 22:16:01.83ID:amkJBVQ60
このスレの上の方に画像リサイズのスクリプトを書き込んだ人がいたよ。
0565名称未設定
垢版 |
2015/07/11(土) 13:33:24.18ID:uukKRe+y0
iTunesスレに行こうかとも思いましたがAppleScriptに限って発生するようなので、
まずはスクリプトの確認と再現性ということでこちらでお願いします。

AppleScriptを利用して動画データに情報を入力しているのですが、
編集できない(編集しても元に戻ってしまう)ファイルになってしまいます。
環境としてかなり限定的なのですが、今回利用したiTunes 12.2だけではなく、
以前のバージョンから引き続いて発生しています。

前提として、登録するファイルは「動画」である事と、
iTunes Mediaフォルダの場所やライブラリへ追加する際のコピーの実行の有無は問わないものの、
追加の結果、ファイルがローカルHDDではなくNAS上にあることが条件です。
(うちの場合、iTunes MediaフォルダはローカルHDDの場所を指定、追加するファイルはNAS上に設置、
環境設定にある追加時のコピーは行わない設定になっています。)

今回サンプルファイルとして以下のsample_iPod.m4vを利用しました。
https://support.apple.com/ja-jp/HT201549
0566名称未設定
垢版 |
2015/07/11(土) 13:34:16.15ID:uukKRe+y0
使用したAppleScriptは下記です。

tell application "iTunes"
add POSIX file "/Users/user/Desktop/sample_iPod.m4v"
set grouping of track "sample_iPod" to "TEST"
set year of track "sample_iPod" to "2015"
set category of track "sample_iPod" to "TEST"
set genre of track "sample_iPod" to "TEST"
set comment of track "sample_iPod" to "TEST"
set description of track "sample_iPod" to "TEST"
set long description of track "sample_iPod" to "TEST"
set name of track "sample_iPod" to "TEST"
end tell
0567名称未設定
垢版 |
2015/07/11(土) 13:36:24.56ID:uukKRe+y0
実行後、ホームビデオに追加されたsample_iPodを情報を見るから各項目を適当に編集して確定します。
その後一度このファイルを再生する、あるいは再度情報を見ると、各情報が編集前の状態(今回の場合はTEST)に戻ってしまいます。
ただ、必ずしもすべての項目で症状が発生するわけではなく、例えば説明(Description)に関しては発生しません。
編集できない情報に関しては何度やっても編集できませんが、再度AppleScriptを利用して情報を入力すれば編集できます。
AppleScriptを使用していない情報欄は編集できます。

なお、手動でiTunesに追加した場合は発生しません。
前提記載の通り、ファイルがローカルHDDにある場合も発生しません。
ミュージックファイルでも発生しないようです。

一応2種類のNAS(Drobo5NとAirMacExtremeにUSB接続したHDD)と2種類のMacで同様の症状を確認しました。
何かお気付きの点がありましたらよろしくお願いします。
0568名称未設定
垢版 |
2015/07/11(土) 14:21:39.53ID:uukKRe+y0
少し訂正です。
手動でiTunesに登録した場合でも、AppleScriptで情報入力を行うと編集できませんでした。
どうやら、NAS上にあるiTunesの動画ファイルの情報をAppleScriptを利用して書き換えると、
当該情報を手動で書き換えられないファイルになってしまう状態と言えそうです。
0569名称未設定
垢版 |
2015/07/11(土) 14:46:07.93ID:z2dqc7dE0
>>566
NASがないんで検証はできないが、文面見てパッと思いつく点
その書き方だと曖昧さがあるのでこうするのがよいと思う
...
set tarTrack to add POSIX file "hoge"
set name of track tarTrack to "hage"
...
問題の原因がこれかはわからんが
あと、症状が発生しないitunesのバージョンがわかれば何かヒントになるかも
0570名称未設定
垢版 |
2015/07/11(土) 16:18:59.81ID:uukKRe+y0
>>569
2行目でディスクリプタタイプが一致しません。number -10001 to item
と叱られたので、
set name of tarTrack to "hage"
にしてみました。が、結果は変わりません。修正不可ファイルです。

症状が発生しないバージョンは残念ながら不明です。
最近iTunesの見た目が大きく変わったのはiTunes11だったと思いますが、
iTunesのバグじゃないかなと期待しつつかかるバージョンに上げた記憶があるので、
そうすると少なくともiTunes10の頃からあった症状ということになります。
NASの導入がその頃なので、実際にはもっと以前のバージョンでも発生したのかもしれません。
0571名称未設定
垢版 |
2015/07/11(土) 16:56:15.76ID:z2dqc7dE0
>>570
ああごめん、二行目はこっちのミス
「何度やってもできない」は、一度発生した後システム再起動しても不可?
0572名称未設定
垢版 |
2015/07/11(土) 19:02:49.32ID:uukKRe+y0
>>571
iTunesの再起動、本体の再起動共に効果なしです。
NASも再起動してみましたが、ダメですね。
0573名称未設定
垢版 |
2015/07/14(火) 02:28:27.39ID:A6Vp2DDe0
>>567
ストレージ違うだけで挙動が変わるのなら追加が終わるまでの時間が違うのかも。
2行目の直後にdelay 1挟んでみたらどうだろう。
0574名称未設定
垢版 |
2015/07/14(火) 08:26:20.02ID:k1XDpkSZ0
NASでそういうことするの厳しくね?
昔、NAS上のファイル名変更ですらうまくいかなかった記憶がある。
結局、aliasにして乗り切ったけれど、ものすごく時間がかかり、
do shell script とかいろいろ使ったような。
iTunesつかったことないけど、Finderでaliasにして
iTunesで操作とかできないのかね?
まったく理論的裏付けなく、経験的なことだけど。
純正アプリだしなんとかなりそう。
0575名称未設定
垢版 |
2015/07/14(火) 08:33:02.14ID:k1XDpkSZ0
>>568
ちょっと今どきのことはわかんないけど、afp://とかでNASと
つながってるんじゃない? cifs://とかだといいかも。
最近はすべてcifsとかだっけ?3年くらい前しかいじってないので
最近は知らない。cifsとafp混在でやっててもトラブる。
0576名称未設定
垢版 |
2015/07/14(火) 16:10:40.88ID:VhXIrKmA0
Cocoa-AppleScript Applet じゃなくても Cocoaフレームワーク 使えるよにできるのね
Safariの Favorities Bar 中の特定のフォルダ中のURLをBookmarks.plistより抽出するのを書いてみたのだが、速度が段違いすぎ&tryいらないから簡潔に見えるんだけど
まあ、AppleScriptは詳しくはわかっていない(whoseの使い方がいまいちわからん)のでAppleScriptの方が冗長なのかもしれないが
0578名称未設定
垢版 |
2015/07/14(火) 17:14:05.00ID:VhXIrKmA0
>速度が段違い
ああ、System Eventsとのアプリケーション間通信でのオーバーヘッドがそのほとんどになりそうだわな
そりゃまあ遅くなるわな&どうしようもないわな&Cocoa-AppleScript万歳w
0579名称未設定
垢版 |
2015/07/14(火) 21:56:12.64ID:1ruXVyZ/0
>>573
それはちょっと考えてdelay挟んでみたもののやはり変わらずでした。
手動で追加だけしてそのあとに編集だけ行うAppleScriptを実行した場合も
同様におかしくなったので、原因はそこではなさそうです。
0580名称未設定
垢版 |
2015/07/14(火) 21:56:44.20ID:1ruXVyZ/0
>>575
マウント方法変えてみたけどダメですね。
というか、NASに置いても普通に手動で完結する分には全く問題ないから、
「NASだから」というわけでもなさそうです。
手動で追加、編集する分には問題なし。そのあとそのファイルをAppleScriptで編集すると、
その状態で固定みたいになって、以後同様にAppleScriptを使わないと編集できなくなる。
おま環なんですかね。そうであれば、それはそれで諦めるんですが。。。
0581名称未設定
垢版 |
2015/07/15(水) 04:34:10.51ID:hEGmCORz0
>>580
条件を満たしたとき「情報が戻る」というのは、itunesの操作と
スクリプト(ex. get name of tarTrack)どちらで確認している?
どちらかの手段のみで確認しても同じ?
0582名称未設定
垢版 |
2015/07/16(木) 00:32:52.64ID:qTdi8WaK0
xlsファイルをcsvで書き出すドロップレットを作りたく色々と調べた結果、
シェルスクリプトでxls2csvというアプリを使えば行けそうだったんですが
文字化けしてしまいます。

ターミナルからだと問題無いんですが、アップルスクリプトで実行すると
結果もファイルの書き出しも化けてしまう状態です。

解決する方法はあるでしょうか?

因みにxlsの文字コードはUTF-8です。
0583名称未設定
垢版 |
2015/07/16(木) 02:27:49.86ID:+fhnsm1u0
>>582
AppleScriptでも do shell script してるんじゃないの?
だったら、シェルの環境設定がかなあ。ドロップレットにしたいだけだったら、Automator(での shell script アクション)でいいんじゃないの?ああ、同じように化けるかな?
0584名称未設定
垢版 |
2015/07/16(木) 03:24:14.69ID:PVq/K62H0
csvのコードはなんだろう。UTF16か昔風のShiftJIS?
こういうので変換するかな
iconv -f SHIFT_JIS -t UTF-8 out.csv > utf8.csv
iconv -f UTF-16 -t UTF-8 out.csv > utf8.csv
0585名称未設定
垢版 |
2015/07/16(木) 04:58:23.98ID:I+N1yIOO0
>>583
はい。AppleScriptでdo shell script "xls2csv input.xls"を実行すると
化けてしまいます。
シェルの環境設定はUTF-8です。

Automatorは試して無いのでやってみようと思います。

>>584
do shell scriptで書き出したcsvのコードは何故かASCIIになってました。
2バイト文字が全て?になってる状態です。

いま手元に環境がないので、明日iconvも試してみようと思います。

お二方ともありがとうございます。
0586名称未設定
垢版 |
2015/07/16(木) 08:31:37.42ID:o5zH5spX0
>>582
身も蓋もないこと書くと、do shell scriptではなく、
ApplescriptからTerminal.appを操作すれば解決しそう。
急ぎの仕事のやっつけスクリプトならね。
0587名称未設定
垢版 |
2015/07/16(木) 13:37:36.16ID:tdcKlDmT0
>>472と同じ話で、do shell script 内で LANG=ja_JP.UTF-8 を設定してやればいける気がするよ

do shell script "LANG=ja_JP.UTF-8 xls2csv input.xls"
もしダメなら
do shell script "export LANG=ja_JP.UTF-8; xls2csv input.xls"
0588名称未設定
垢版 |
2015/07/16(木) 16:02:09.78ID:iM/9yX710
>>587
いけました!
なるほど、LANG=ja_JP.UTF8と指定してやればいいんですね。
これでまたひとつ賢くなりました!
ありがとうございます。

>>586さんもありがとうございました。
0589名称未設定
垢版 |
2015/07/25(土) 09:01:30.20ID:robl8P910
Audio Hijack Proで深夜のラジオのストリーミングを
タイマーで録音したあと、自動でシステム終了させたいです。
デフォルトのQuit Audio Hijack Pro.scptの最後に、
tell application "System Events"以下を追加したのですが
終了してくれません
まちがっているところをおしえてください
おねがいします

on sessionsAreActive()
tell application "Audio Hijack Pro"
repeat with aSession in (every session)
if recording of aSession then
return true
end if
end repeat
end tell
return false
end sessionsAreActive

tell application "Audio Hijack Pro"

repeat while my sessionsAreActive()
delay 2
end repeat

delay 2 --Just to be really safe, wait one more time
quit
end tell

tell application "System Events"
shut down
end tell
0590名称未設定
垢版 |
2015/07/26(日) 04:28:28.86ID:26OH90hA0
>>589
System Eventsって、OSが10.9くらいになると、
初めて使う時にセキュリティ設定で許可しないとダメ、とか
面倒なことになってたような…

そのへんで引っかかってはいない?

tell application "System Events"
shut down
end tell

ここだけでちゃんとシステム終了するなら原因は他のところ、
って切り分けができるので、まだやってないなら試してみるといいかも

それが関係なければ、
tell application "System Events" の前にdelay 2(数字は秒数)とか入れてみると
もしかしたらうまくいくかも…

Audio Hijackの終了処理とshut downに入る処理がぶつかっちゃって
うまく動かない、なんてことも考えられるので

ちなみに自分も、iCalのタイマーでApplescriptを起動して
特定の曜日の特定の時間にシステムスリープをする、
ってことをやってるけど、三回に一回くらいは
スリープせずにそのままだったりする…

うまくいったりいかなかったりがあるのは
非常に謎です
0591名称未設定
垢版 |
2015/07/26(日) 05:18:05.29ID:emOATh9D0
Audio Hijack Proをquitしてるから、残りのスクリプトを実行する人がいないんじゃないの
0592名称未設定
垢版 |
2015/07/26(日) 09:14:17.29ID:oPO6Ie/V0
>>590,591

tell application "System Events"
shut down
end tell
だけでよかったみたいですね
どうもありがとうございます
0593名称未設定
垢版 |
2015/08/15(土) 16:45:38.34ID:sV9ccIal0
>>589

tell application "System Events" to shut down
だけでは現在使用中の(開いてる)書類がある場合、
確認のダイアログが表示されてシステムが終了できないので

わたしのトコロでは〜♪
do shell script "sudo shutdown -h now" password "ABC" with administrator privileges

※システムのスリープ中(スリープ解除にはパスワードを要求する設定)時には、
処理がキャンセルされてしまうようです。。?詳しく調べていませんが〜
参考になれば〜
0594名称未設定
垢版 |
2015/09/11(金) 19:43:23.46ID:g5Ecp+1z0
>>227
亀レスだけどありがとう
delay挟まないと上手に機能しないんだね。そこで詰まってたんだd
0595名称未設定
垢版 |
2015/09/12(土) 20:05:41.29ID:m6VMDvfd0
tell application "Terminal" to do script "echo '123,あいう' | grep ,.い"

do shell script "echo '123,あいう' | grep ,.い"

--同じシェルスクリプトなのに、後者はエラーになる。なんでだろう・・・?
0596名称未設定
垢版 |
2015/09/12(土) 20:42:11.53ID:z0PX6hR20
>>595
・grep はパターンにマッチしたのが存在したか否かを終了ステータスでも表す
・do shell script は 0以外 の終了ステータスだとスクリプトそのものが失敗したとみなす
・do shell script と tell application "Terminal" では環境変数などが違うのだろうが、grep での , と い(日本語) が混じるパターンが一致しない。なんかあったけ?
なので、grepでパターンに一致するのがないので終了ステータスが 1 となり、do shell script はスクリプトが失敗したよと例外発生

パターンに一致しなくても例外発生させないようには、
do shell script "echo '123,あいう' | grep ',.い' || exit 0"
do shell script "echo '123,あいう' | grep ',.い';exit 0"
かな

, と い(日本語) が混じるパターンでの問題はよくわからんが
do shell script "echo '123,あいう' | grep ',.[い]';exit 0"
だといちおう思ったように動いているような
0597名称未設定
垢版 |
2015/09/12(土) 21:07:53.46ID:z0PX6hR20
>>596,595
>, と い(日本語) が混じるパターンでの問題はよくわからんが
>do shell script "echo '123,あいう' | grep ',.[い]';exit 0"
>だといちおう思ったように動いているような
いや、動いていない。[い]が絶賛無視されとる

環境変数といえば上のにあると思い見直し&調べ&テストすると、grepのパタンーマッチングではLC_CTYPEのよやね
do shell script "export LC_CTYPE=UTF-8;echo '123,あいう' | grep ',.い';exit 0"
でいいんじゃないのかな
0598名称未設定
垢版 |
2015/09/12(土) 21:47:12.87ID:m6VMDvfd0
>>597
なるほど環境変数が原因だったんですね
詳しく説明してくださってありがとうございます!
0599名称未設定
垢版 |
2015/10/02(金) 12:13:09.84ID:NO+o9yLb0
http://www.apple.com/jp/osx/all-features/
AppleScript Objective-C
dates、structs、recordsを使うためのAppleScriptObj-Cを新しくサポートします。

今更Objective-Cかいな。
0600名称未設定
垢版 |
2015/10/02(金) 12:58:15.03ID:UHfcxpmo0
OSのフレームワークが Objective-C だからな
AppleScript -> なんだかしらんがなにか(Swift?) -> Objective-C
よりも、
AppleScript -> Objective-C
だろうに

てか、「今更Objective-C」が明後日向いてね?
Objective-Cをサポートしていたが、新たに(ちゃんと) dates、structs、recordsをサポートします ってことじゃね?
0602名称未設定
垢版 |
2015/10/03(土) 10:56:11.97ID:YP/PCEMt0
OS X 10.10 Release NotesのScripting Additions
の解説にsayを使用した例:
app = Application.currentApplication()
app.includeStandardAdditions = true
app.say('Hello world')
app.displayDialog('Please enter your email address', {
withTitle: 'Email',
defaultAnswer: 'your_email@site.com'
})
があります。emailの入力部分を音声認識Dictationを
使用するjavascriptも可能なのでしょうか? 実際に作成
したいスクリプトは、英語授業で、英語の質問をsayで
聞かせて、生徒にその解答を英語で発音させて、正しく
認識できれば正解、とする英会話練習ソフトウェアです。
0603名称未設定
垢版 |
2015/10/03(土) 12:12:42.47ID:6N6av+ju0
>>602
どこまで生徒にやらせないによるだろうな。キーボードによる不正(?)とか
Cocoaにアクセスできればより先が開けるだろうね
0604名称未設定
垢版 |
2015/10/03(土) 22:32:34.51ID:dkBh6mTx0
>>602
JavaScript OSA から使える音声認識API はあるかってことだね。

まずはAppleScriptでSpeechRecognitionServerっていうのを通してOS Xの音声認識機能を使える。あらかじめ登録した単語や文章しか認識できない。
認識するなあ、ってところまでしか試してないので、想定してるようなアプリを作るような使い方ができるかどうかまではわからない。あとJavaScript OSA から使えるかどうかは調べてないのでわからない。

次にJavaScriptからはHTML 5のWeb Speech APIっていうのを使える。こちらは登録してない文章でもちゃんと認識する。"My name is Mike Smith." と発話したら「my name is mike スネーク」と認識したw
こちらもJavaScript OSA から使えるかどうかは調べてないのでわからないけど、たぶん使えない。
でもテキスト読み上げもできるので、こちらを使ってWebアプリケーションとして実装しちゃうのが楽かも。あとこのAPIに対応しているブラウザのバージョンが限られているので、学校とかで使うんならそこは要確認かも。
0605名称未設定
垢版 |
2015/10/03(土) 22:48:47.94ID:dkBh6mTx0
ところで目的は発問と解答のサイクルを対話型で行うことだろうか、それとも音声認識できるような正確な発音を対話形式で生徒に練習させることだろうか。
音声認識ってけっこう正確な発音をしないと認識しないと思うので、前者目的の場合、解答は正解でも発音のせいで正解と認識してくれないとか、あるいは間違った解答なのに音声認識させようとして一生懸命何回も発声するようなシチュエーションがありそうに思うが。
0606名称未設定
垢版 |
2015/10/03(土) 23:40:16.83ID:aEqyyNFD0
SpeechRecognitionでの認識/目的はコマンドとしてみたい。なので事前に登録した単語=コマンドのよう
音声入力は DictationIM というインプットメソッドによる。音声認識の根幹は同じかもしれないが

CocoaでもDictation制御は公開されていないので制御は難しい。ユーザによるオン/オフをシミュレートしてかな

また、AppleScript/Javascriptのダイアログのテキストフィールドはなぜか DictationIM をサポートしてないよう
JavascriptでもどうやらCocoaブリッジはサポートしているので頑張ればできないこともないってとこかな
0607602
垢版 |
2015/10/04(日) 08:46:57.00ID:YSK4WGoB0
詳しい解説をありがとうございます。>>603,604,605,606
>>604
>次にJavaScriptからはHTML 5のWeb Speech APIっていうのを使える。
これを試してみます。Appleのsayは、3、4年間使用してき
ました。事前に使用する英文のアメリカ英語、イギリス英語
オーストラリア英語の音声ファイルを作成して、生徒に聞か
せて解答させる練習をさせてきました。sayのおかげで、リ
スニングの機会が劇的に増えましたが、これだけだと授業中
まったく英語を発音しません。

>解答は正解でも発音のせいで正解と認識してくれないとか、
解答は減点なしで2、3回できるようにしたり、音声ではなく
文字での解答も認める(ただし得点は1/3)などと工夫すれ
ば、どうにかなると思います。

>あるいは間違った解答なのに音声認識させようとして一生
英文を画面に表示して、それを正しく発音して、認識させれば
正解という設問も作ります。
0608名称未設定
垢版 |
2015/10/19(月) 12:01:32.52ID:UpKLRgHK0
10.11のスクリプトエディタ、ファイルメニューの最近使った項目を開くで、白紙アイコン+名前が空欄になってるのがある
その項目を選んだら前に開いた用語説明のタイトルだけ出た
0609名称未設定
垢版 |
2015/10/30(金) 18:18:30.65ID:VxrJMSCk0
スクリプトエディタで下記を実行してもデスクトップが切り替わりません。
手動で「コントロール + 1」 をおすとデスクトップは切り替わります。
なにか重要な事を見落としていると思うのですがよくわかりません。

tell application "System Events"
keystroke "1" using {control down}
key up {control}
end tell
0610名称未設定
垢版 |
2015/10/30(金) 18:31:57.79ID:oQD0Exuq0
俺はこれで出来てる


tell application "System Events"
key code 18 using control down
end tell
0613名称未設定
垢版 |
2015/10/30(金) 20:56:24.45ID:VxrJMSCk0
>>610 ありがとう。
理屈はよくわからないけど、レスのコードそのまんまでできました。
0614名称未設定
垢版 |
2015/11/04(水) 02:10:30.60ID:pGq+pGFR0
複数のデスクトップにグーグルクロームの window があります。
デスクトップとは、マックブックドヤで四本指上スワイプしたときに表示されるやつです。

デスクトップ1のクロームを識別して、アクティブにするにはどうすればいいのでしょうか?
ここに検索結果を表示するためです。
0615名称未設定
垢版 |
2015/11/09(月) 23:53:26.28ID:u+bgZBDI0
最前面のアプリにキーストロークを送りたいのですが、なぜかうまく行きません。

tell application process と直接アプリ名をつかう場合(下記のクロームのような形式)の区別もよくわかりません
tell application "Google Chrome"使い分けがおかしいのでしょうか?

-- ↓がうまくいかない。
-- 最前面のアプリにキーストロークを送る
set topProcess to item 1 of (every process whose background only is false and frontmost is true)
tell application process topProcess
keystroke "c" using {command down}
end tell
0616名称未設定
垢版 |
2015/11/10(火) 00:49:23.10ID:8POt4B1s0
>>615
スクリプト実行してる時点でスクリプトエディタか
そのスクリプトのアプリケーションが最前面に来るから
キーストローク使うにはactivateで目的のアプリケーションを最前面に持ってこないと。
UI elements(ボタンやメニューなど)にアクセスしないならprocessは不要。

tell application "Google Chrome" to activate
tell application "System Events"
keystroke "c" using {command down}
end tell

こっちなら背面にあってもコピれる。
tell application "Google Chrome"
copy selection of tab 1 of window 1
end tell
0617名称未設定
垢版 |
2015/11/10(火) 03:12:25.57ID:FJLTXxkF0
>>616 有益なレスありがとうございます。

(*

tell application "Google Chrome" to activate
tell application "System Events"
keystroke "c" using {command down}
end tell
*)

↑これを試すとうまくいき、クロームの選択範囲がコピーできました。

でも、スクリプトエディタの用語辞書を読むと、 System Events にキーストロークが送られて、クロームの選択範囲をコピーでいないような気がするのですが違うのでしょうか。

用語辞書
keystroke v : cause the target process to behave as if keystrokes were entered
0618名称未設定
垢版 |
2015/11/10(火) 04:19:50.06ID:/h7Zu6C90
物理的にVキーを押すのが
System Events にVを送ると言う事だろ
0619名称未設定
垢版 |
2015/11/10(火) 07:57:36.97ID:8POt4B1s0
あと、Applescript対応アプリケーションで同じ機能があるなら
そっちを使う事をオススメする。
System Events経由だと実行中に何か操作しちゃうと思いも寄らぬ挙動をするので。
コマンド+xとか入ってて、そのキーストローク実行前に
他のアプリケーションに切り替わっちゃったりしたら大変でしょ。
0620名称未設定
垢版 |
2015/11/10(火) 11:53:02.16ID:LHRISVKD0
>>617
基本的にユーザが手でキーを押すのとまったく同じ挙動
何が反応するかは状況次第
0621名称未設定
垢版 |
2015/11/14(土) 22:05:07.19ID:2cEuQzhU0
>>613
今更だけど

keystroke "1" はテンキーの"1"を指すんじゃなかったかな
あと key up control は key down control の後で使うもんであって、
keystroke 文字 (key code コード) using control down は一行で完結してるので念
0624名称未設定
垢版 |
2015/11/16(月) 21:22:55.55ID:SAOPgBo80
OS9くらいからAppleScript触ってるけど素人です。
JavaScriptはさっぱりなんですが、乗り換えた方がいいんでしょうか?
0625名称未設定
垢版 |
2015/11/16(月) 21:29:21.10ID:t0VrsL6R0
それだけ長年触ってて理解できないようじゃJSなんてもっと無理だろ……
0626名称未設定
垢版 |
2015/11/16(月) 21:45:29.24ID:EmiWRZhr0
他に馴染んでる言語があるとか文字列を操作することが多いとかなら
JavaScriptの方がずっと楽だと思うよ
0627名称未設定
垢版 |
2015/11/16(月) 21:54:09.48ID:EmiWRZhr0
ああでもアップルのことだからいつまで続けるかわかんないよねw
0628名称未設定
垢版 |
2015/11/17(火) 06:26:10.94ID:1ouHt1MU0
JavaScriptはオブジェクト指向の考え方が
ある程度わからないと理解しにくい部分はありそう

AppleScriptから完全に乗り換えるんじゃなくて、
「AppleScriptだとdo shell scriptしないとできないけれど、
JavaScriptを使うとその場で解決できる処理」
が出てきた時にJavaScriptを使えばいい気がする

正規表現での文字列の検索置換とか、そういうのは
JavaScript内で出来るはずなんで、
そのへんから始めてみては?
0629名称未設定
垢版 |
2015/11/17(火) 09:09:23.09ID:Q6GYLDn20
色々組み合わせて考えるならJSよりもshell+ASの方が幅広く使えていいと思う。
0630名称未設定
垢版 |
2015/11/17(火) 13:21:15.50ID:UQB4hOGg0
JXAはあまりつかわれてないのかな
0631名称未設定
垢版 |
2015/11/17(火) 22:41:34.65ID:GvDIX6qt0
正規表現とハッシュ以外のメリットがあまりないんだよなぁ。
ダイアログ出すだけでもメンドクサイ。
0632名称未設定
垢版 |
2015/11/17(火) 22:48:48.92ID:b3qNeLRG0
AppleScriptでプログラミングする人は
html+JavaScriptでもプログラミングを
しないの? 私の場合は、ASは3%以下
JavaScriptが40%、Python40%、残りは
その他のプログラムという感じ。
 JavaScriptでfunctionを書いておけば
JXAでもhtmlでも使えるので、便利だと
思うが。
0633名称未設定
垢版 |
2015/11/17(火) 23:36:57.30ID:443NzYjK0
html+JavaScriptでもプログラミングをするのがあたりまえのように聞くのだか。アホっぽいなw
0634名称未設定
垢版 |
2015/11/20(金) 21:02:06.71ID:0VjuA+NT0
delay をどこにどれだけ入れればいいかなにか目安はないのでしょうか?

順番に処理されるから、delay いらない気がするのですが、下記のような
単純な script でも delay をいれないとうまく動きませんでした。
delay がないと myURL に設定したウェブページじゃなくて、へんなリダイレクトページが表示されました。

-- クロームでウェブページを表示
tell application
0635名称未設定
垢版 |
2015/11/20(金) 21:03:43.90ID:0VjuA+NT0
delay をどこにどれだけ入れればいいかなにか目安はないのでしょうか?

順番に処理されるから、delay いらない気がするのですが、下記のような
単純な script でも delay をいれないとうまく動きませんでした。
delay がないと myURL に設定したウェブページじゃなくて、へんなリダイレクトページが表示されました。

-- クロームでウェブページを表示
tell application "Google Chrome"
tell window kuroWinIndex to activate

-- delay 0.5
set myTab to make new tab at end of tabs of window kuroWinIndex
set kensakuGoku to _searchWord as text

-- delay 0.5
set myURL to "https://www.google.co.jp/search?q="; & kensakuGoku
log "myURL : " & myURL

delay 0.4
set URL of myTab to myURL
end tell
0636名称未設定
垢版 |
2015/11/20(金) 21:17:32.71ID:IkinpZgs0
>>635
その最後のdelayがなくてもkensakuGoku/searchWordでのGoogle検索結果になるけど
へんなリダイレクトページってURLなんやねん?なんかアンチウイルスソフトでも入れているとか?
0637名称未設定
垢版 |
2015/11/20(金) 21:21:50.09ID:IkinpZgs0
もしくはなんらかのプラグインかなあ
プラグインが原因だとしたらdelayはそこじゃなくmake new tabの直後に入れても効くだろう
make new tabをしないでやってみてどうとか見るとよりプラグインが原因かなあがはっきりするかな
0638名称未設定
垢版 |
2015/11/20(金) 21:32:23.10ID:0VjuA+NT0
delay いれないと下記の URL に飛ばされるけど、拡張機能の悪影響みたいですね。
chrome-extension://pkolifcipfnlmkonikcnilfhgdbbhhko/redirect.html
0639名称未設定
垢版 |
2015/11/20(金) 22:05:27.27ID:IkinpZgs0
なる。そみたいだね
そのキモい文字列はなんやねんってググってみたら、機能拡張に付けられたユニークなIDかな。Tab Nullpo+ ならば
0640名称未設定
垢版 |
2015/11/22(日) 02:57:49.95ID:Crb3hzhD0
おらのアップルスクリプトにショートカットを割り当てるのが面倒くさすぎる件

1. スクリプトエディタでスクリプト作成
myscript.scpt

2. オートメターのサービス作成
アップルスクリプトを実行を選択し、1. の内容をコピペ

3. 設定 → キーボード。2. で作成したサービスにショートカットキーを割り当て。
修飾キー3つぐらいつけた複雑なやつを割り当て。

4. karabina で、右コマンドに 3. で作成したショートカット割り当て

----- -----

上記手順で作成したアップルスクリプトにショートカットを割り当てているのですが、もうちょっと効率的にできないのでしょうか?

上記手順だと、スクリプトエディタでスクリプトを修正したら、またオートメター立ち上げて、コピペが必要となり効率悪いことこの上ない。
0641名称未設定
垢版 |
2015/11/22(日) 03:22:36.50ID:CSZfjbIO0
>>640
Sparkとかのランチャー系アプリ使えば2以降はキー設定のみで済む
というか、そもそもKarabinerにそういう機能あるだろ
(おれは使ってないが。従前からSpark使ってるので移行がめんどいから……)
Karabinerで多機能ランチャーを実現する - Qiita
ttp://qiita.com/catfist/items/ab43d06b6914418afb85

最近できたKarabinerスレは有益な書き込みが多いのでオススメ
【キーリマップ】Karabiner Part1【カスタマイズ】 [転載禁止]©2ch.net
ttp://anago.2ch.net/test/read.cgi/mac/1439014871/
0643名称未設定
垢版 |
2015/11/22(日) 04:22:29.35ID:CSZfjbIO0
ああ、BTTももちろんありだね
ランチャー系でメジャーどころといえばほかにもLaunchBar、Alfredなど
参考までに自分はKarabiner、BTT、Spark、LaunchBarを併用しているよ
Sparkはもうやめたいんだけど移行がめんどい(大事なことなので(ry
0644名称未設定
垢版 |
2015/11/22(日) 11:19:29.93ID:wjYxrbbL0
>上記手順で作成したアップルスクリプトにショートカットを割り当てているのですが、もうちょっと効率的にできないのでしょうか?

↑を自動化しちゃえばいいんじゃねえ、なんつって

FastScripts
Instant access to your scripts, by keyboard shortcut or menubar.
Free for 10 keyboard shortcuts. $9.95 for unlimited.

10.6以降対応、10.10の話はリリースノートに載ってる
10.11はわからん
0645名称未設定
垢版 |
2015/11/22(日) 19:11:06.31ID:nrMXMOab0
>>641
レスありがとう。

karabiner からAppleScript実行できたのか。
知らなかった。
これができれば、>>640 の手続きを大分省略できる。
0646名称未設定
垢版 |
2015/11/24(火) 22:10:39.87ID:lOO4yht00
コマンドの 引数に何を指定したらいいかどこを見たら良いのでしょうか?
用語説明見てもちゃんと書いてないのが多く困ってます。

例えば、duplicate コマンドの引数に何を指定するかエイリアス? posixパス? それとも hfs 形式?
移動先はフルパスを指定するのか、移動先フォルダを指定するのかとかも書いてなくて、簡単そうなとこで詰まりまくりです
0647名称未設定
垢版 |
2015/11/24(火) 22:55:00.77ID:vOhllC2P0
>>646
>duplicate v : Duplicate one or more object(s)
>duplicate specifier : the object(s) to duplicate
>[to location specifier] : the new location for the object(s)

>移動先フォルダを指定するのか
これは書いてあるじゃん
まあ指定しなかったらどうなるかは書いてないけど
常識の範疇というかちょっと試せばわかること

>何を指定するか
この場合もそうだが、たいてい必要な specifier は alias や file だわな
path 自体はただのテキストにすぎないので、コマンドは場所として認識しない
君の書いてるPOSIX pathやなんかも最終的には変換して渡すわけだね
>set tarFolderPath to "/hoge/hage" --これはただのテキスト
>set tarFolder to POSIX file tarFolderPath --これでファイルを参照できる
>get POSIX path of tarFolder --これで tarFolderPath と同じものが返る

逆に言えば、コマンドに渡すまではどの形で管理しようと自由
テキストであることを生かしてホイホイ変形できる
自分なんかは POSIX path がわかりやすいし何かと便利なのでそれで統一してる
慣れるまでは全部下記のようにして渡すと謎の行き詰まりも減るかと
(面倒なことに、file や folder と alias の違いが問題になることがある)
>set tarFolder to tarFolder as alias --つまり (POSIX file "/hoge/hage") as alias
0648名称未設定
垢版 |
2015/11/24(火) 23:02:46.20ID:vOhllC2P0
よく見たら質問の答えになってないな。すまん
>どこを見たら
確かに用語辞書だけ見てもちんぷんかんぷんだと思う
暗黙の前提がけっこうあるからね
その辺は>>1にあるサイトを眺めてつかんでいくしかないよ
0649名称未設定
垢版 |
2015/11/25(水) 01:16:34.40ID:7NRDBOtT0
>>647 役に立つレスありがとうございます

下記のコードで srcFile の指定を tell ブロックの中でやるとエラーになるのはなぜでしょうか?

今日一日の数時間の作業の成果。作業効率化のはずが非効率化してる。
デスクトップにファイルコピーするだけで数時間かかった。

-- このファイルをデスクトップにコピー
property bkItemFullpathText : "/Users/Tomo/Desktop/kopitesuto.scpt"

set srcFile to (POSIX file bkItemFullpathText)
set destDir to (path to desktop folder)

tell application "Finder"
log "----- 3 finder で 処理開始-----"
-- これがだめ — 上書きしない設定に変更できずこまった
-- duplicate srcFile to destDir with replacing false

-- 下記2つは動く
-- duplicate srcFile to destDir without replacing
duplicate srcFile to destDir with replacing
end tell
0650名称未設定
垢版 |
2015/11/25(水) 02:34:16.75ID:TCaMN6bP0
shellのほうが楽そうだな
0651名称未設定
垢版 |
2015/11/25(水) 11:14:05.31ID:gljbLSkV0
>>649
set srcFile to bkItemFullpathText as POSIX fileにすればtell〜内で動く。

それより、AでできるのにBの記述にできなくて何が問題?
A : duplicate srcFile to destDir without replacing
B : duplicate srcFile to destDir with replacing false
0652名称未設定
垢版 |
2015/11/25(水) 12:08:05.39ID:DGBNKIrw0
>>649>>651
ちゃんと用語辞書読めばそんな書き方はないとわかる
> [replacing boolean] : Specifies whether or not to replace items (ry
B はよけいな with がいかん
> duplicate srcFile to destDir replacing false
こう書けば普通に動く(コンパイル時に without の記法に直されるが)

どうでもいいが、without の記法が気に入らないならこうすればコンパイル通る
> set isFalse to false
> duplicate srcFile to destDir replacing isFalse
0653名称未設定
垢版 |
2015/11/26(木) 22:25:10.93ID:EikmtUER0
>>651
レスありがとうございます。

理由がよくわからないのですが、as を使わないと finder のfile オブジェクトととして解釈されて動かないということでしょうか?

AppleScriptの最大の問題点はパスの指定。エイリアス、posix 、ファインダーのファイル、Mac 形式とかあって意味不明すぎる。

AppleScript は一つの単語に複数の意味があって混乱する。
一つの単語に複数の意味、使い方があるような言語を使ってると馬鹿になるよ。
0654名称未設定
垢版 |
2015/11/27(金) 00:07:57.81ID:BPNuZ3Dr0
な、相手にしないほうが良かっただろ
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況