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/
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
な、相手にしないほうが良かっただろ
0656名称未設定
垢版 |
2015/11/27(金) 17:20:00.86ID:5UEcuuEY0
わろた

>>653=>>646とは限らないがマジレスすると
パスの仕様は意味不明でもなんでもない
ASの問題点は存在するが、お前はそれを指摘できるレベルに達してないよw
「複数の意味」を問題にするなら、せめてtellブロックでの用語衝突などを挙げてくれ
0657名称未設定
垢版 |
2015/11/27(金) 21:22:43.35ID:/EMo4Pm00
理解してない子ほど、自分の無能を棚に上げて文句言うやつか
0658名称未設定
垢版 |
2015/12/08(火) 02:50:30.52ID:VLHPwPJ50
用語辞書のスイーツ(笑) ってなんなのでしょうか。

クラスの説明が複数スイーツに分かれてたりして分かりづらい。
0659名称未設定
垢版 |
2015/12/08(火) 11:09:05.09ID:lB4YAlKM0
都会の隠れ家的お店で、頑張った等身大の自分へ与えるご褒美です。
0660名称未設定
垢版 |
2015/12/09(水) 18:01:19.26ID:yPmT8tDJ0
基本的なとこでつまりまくるので、Kindleで hanaan著"Learn AppleScript "を買った。

4600円したが内容は素晴らしい。
余計な前置きが多いのと、後で説明する、みたいなスタイルがうざいのがたまにキズ。
0661名称未設定
垢版 |
2015/12/12(土) 13:30:37.00ID:kUyJIXaw0
>>658
標準コマンドか否かみたいな感じ
基本的に見たいものは検索で探すから無視無視
0662名称未設定
垢版 |
2016/01/01(金) 09:06:18.03ID:BJsCGmtz0
display dialog "Happy New Year!"
0663名称未設定
垢版 |
2016/01/04(月) 00:18:42.48ID:Fh/KFYvI0
なーんか最近スクリプトエディタがよく落ちる
ちょっと前にJavaScriptで間違った文を実行して落ちて以来、落ち癖がついちゃったような
今はAppleScriptのコンパイル済み.scptを開いた時に多いけど、エディタ単独で開いても時々
OS X 10.11.2 (15C50)
スクリプトエディタ 2.8.1 (183.1)
0664名称未設定
垢版 |
2016/01/04(月) 03:03:47.04ID:85GhQRWi0
リポートとコンソール確認すれば
0665名称未設定
垢版 |
2016/01/05(火) 01:26:25.47ID:p4h3jkgn0
xcode 使ったら、ブレークポイントでとめて、タップで変数の中身確認とかできないの?

スクリプトエディタだとブレークポイント作れないよね?
0666名称未設定
垢版 |
2016/01/05(火) 08:47:52.77ID:w5XIhSln0
使った事無いけどLateNightのScript Debuggerとか?
0668名称未設定
垢版 |
2016/01/21(木) 00:05:03.47ID:DbKP7fYg0
下記は重複しない保存先パスを作成する script の一部です。
日付_連番_ファイル名  このような形式のファイル名を作成しています。
exists コマンドの挙動がおかしく、常に false が返ってます。

set i to 2
repeat
tell application
0669名称未設定
垢版 |
2016/01/21(木) 00:32:22.07ID:4rMo+FcO0
構文エラー
expression、property または key form など があるべきところですが end of script が見つかりました。
0670名称未設定
垢版 |
2016/01/21(木) 01:45:11.58ID:DbKP7fYg0
set i to 2
repeat
tell application "Finder" to set isItemExists to exists (my POSIX file fullpathText)
if {isItemExists = false} then
log "存在しない"
exit repeat
else -- 存在するときの処理
set k to (i as text)
-- date_k_baseName -- /Users/Yuu/Desktop/2016_01_21_test.txt
set fullpathText to destDir & baseDateStr & k & "_" & baseNameStr
end if
set i to i + 1
end repeat
return fullpathText
0671名称未設定
垢版 |
2016/01/21(木) 02:03:39.34ID:DbKP7fYg0
>>668 です。文法が怪しいところをハンドラにして書き方変えたら自己解決しました。
>>670はif文がなぜか常に "存在しない" の方に行く。

下記なら理由はよくわからないがうまくいく。
on fileExists(fullpathText)
tell application "System Events"
if exists file fullpathText then
return true
else
return false
end if
end tell
end fileExists
0672名称未設定
垢版 |
2016/01/21(木) 09:41:56.94ID:sgs/8VkY0
if {isItemExists = false} then <- なんで{}とか使ってんの?
そもそも閉じる必要もないし。
0673名称未設定
垢版 |
2016/01/21(木) 11:22:21.54ID:ID6h33Zz0
以前AppleScriptの仕様に文句言ってた人では
見切りつけて使うのをやめたんじゃなかったのか
0674名称未設定
垢版 |
2016/01/25(月) 23:43:26.79ID:2FBTd4al0
作業完了時にチャリーンと音を鳴らすにはどうするのが良いでしょうか?

下記のしっくりこない対策しか思いつきません。

・ beep
音が気にくわない。

・ AppleScriptobjc で NSSound クラスを使う。
本に載ってる。コピペでそのまま使えそう。
でも、なにか大げさで違和感のある対策。

・ iTunes でサウンドファイル再生。
大げさ、重い。
0676名称未設定
垢版 |
2016/01/26(火) 00:07:09.92ID:OaX1S4kQ0
通知ありでも良ければ
display notification with title "終了しました" sound name ""

ユーザのライブラリ/Soundsに音源ファイル入れておけばOK
sound nameに拡張子無しのファイル名で音が出る。
名前が違えば通常の通知音が鳴る。
0677名称未設定
垢版 |
2016/01/26(火) 03:37:54.07ID:UV5S+svp0
>>675 >>676
役に立つ回答有り難うございます。

できました。
do shell script "afplay /System/Library/Sounds/Ping.aiff"
0678名称未設定
垢版 |
2016/01/29(金) 21:32:54.40ID:uUQj78VG0
>>677
afplay -v 0.1 とかでボリューム調整な
うちもそうやって通知音出してるわ
0679名称未設定
垢版 |
2016/01/30(土) 23:18:50.99ID:IOL1PbEa0
起動してウインドウ位置とウインドウサイズを固定するAutomatorのアプリをApple Scriptで作りたいのですが、一部のアプリで
tell application "アプリ名"
activate
tell front window
set bounds to {0, 0, 0, 0}
end tell
end tell
でエラーウインドウが出るだけでアプリの起動もできません。

他の方法として
tell application "System Events"
を使えばいいようですが、どんな風にかけて思った動作がするにか想像もできません…
どなたか助けていただけませんか。
0680名称未設定
垢版 |
2016/01/30(土) 23:46:59.63ID:LtqeZOXR0
「一部のアプリ」でなんだかよくわからない「エラーウインドウ」ね……
エスパー募集かな?
0681名称未設定
垢版 |
2016/01/30(土) 23:59:59.45ID:IOL1PbEa0
https://i.imgur.com/4aXhmWl.png
こんなウインドウしか出てこないのでどうすればいいのか全くわかりません。
アプリはTweetbotなどです。

特にエスパーは必要ではありません。
0683名称未設定
垢版 |
2016/01/31(日) 00:43:24.43ID:Lb5Fe+7B0
参考までに。

tell application "System Events"
set app_name to name of first item of (every application process that (frontmost is true))
tell process app_name
set a_win to (1st item of (every window that subrole is "AXStandardWindow"))
set position of a_win to {20, 60}
set size of a_win to {1600, 1200}
end tell
end tell
0684名称未設定
垢版 |
2016/01/31(日) 00:50:08.78ID:H6u9ib8G0
tell application "System Events"
tell process "アプリ名"
tell front window
set position to {x, y}
set size to {w, h}
end tell
end tell
end tell
で行けんじゃないの
0685名称未設定
垢版 |
2016/01/31(日) 19:25:53.91ID:T2G1Wg900
Mailソフトでフィルタリングされた迷惑メール複数をmeiwaku@dekyo.or.jpに添付ファイルとして、転送できるようなAppleScriptって書けないものでしょうか?

件名はjunk mail transferとしたいです。
0686名称未設定
垢版 |
2016/01/31(日) 19:30:26.66ID:8Nm40lSC0
どこまで出来たか晒しなよ
見てくれる人はいっぱいいるから
■ このスレッドは過去ログ倉庫に格納されています

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