とりあえず同じことを簡単に書くならこう
tell application "System Preferences"
reveal anchor "Text" of pane id "com.apple.preference.keyboard"
activate
end tell
UI Scripting はスマートじゃないから別の方法がほしいってことだと思うけど
iCloud の絡みもあるしユーザ辞書のデータは直接いじらないほうがいい気がする
探検
AppleScript アップルスクリプト 質問、発表 7 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
23名称未設定
2017/04/28(金) 23:12:52.64ID:dTKzjSUR024名称未設定
2017/04/28(金) 23:42:24.35ID:ioUFI/yc0 こんな感じでどう?
tell application "Finder"
open POSIX file "/System/Library/PreferencePanes/Keyboard.prefPane"
end tell
tell application "System Events"
tell process "System Preferences"
repeat
if exists tab group 1 of window 1 then exit repeat
delay 0.3
end repeat
tell tab group 1 of window 1
click radio button 2
click button 1 of group 1
set value of text field of UI element 2 of last row of table 1 of scroll area 1 to the clipboard
click text field of UI element 1 of last row of table 1 of scroll area 1
end tell
end tell
end tell
tell application "Finder"
open POSIX file "/System/Library/PreferencePanes/Keyboard.prefPane"
end tell
tell application "System Events"
tell process "System Preferences"
repeat
if exists tab group 1 of window 1 then exit repeat
delay 0.3
end repeat
tell tab group 1 of window 1
click radio button 2
click button 1 of group 1
set value of text field of UI element 2 of last row of table 1 of scroll area 1 to the clipboard
click text field of UI element 1 of last row of table 1 of scroll area 1
end tell
end tell
end tell
26名称未設定
2017/04/29(土) 12:12:09.72ID:FcvMI78f0 >>21-24
ありがとうございます
俺環なのかもしれませんが、POSIXで指定したら環境設定が最前面に来ないし
応答が遅くなるので、前半はSpotlightのままにしました
あと、set valueでやると、入力は出来るんだけど単語登録されないという
不思議な事態になったので、repeatのところだけ書き加えて改変しました
tell application "System Events"
key code 49 using command down
key code 102
delay 0.5
keystroke "keyboard"
delay 0.5
key code 36
delay 0.5
tell process "System Preferences"
repeat
if exists tab group 1 of window 1 then exit repeat
delay 0.3
end repeat
tell tab group 1 of window "Keyboard"
click radio button 2
click button 1 of group 1
delay 0.3
keystroke tab
keystroke "v" using command down
keystroke tab using shift down
end tell
end tell
end tell
ありがとうございます
俺環なのかもしれませんが、POSIXで指定したら環境設定が最前面に来ないし
応答が遅くなるので、前半はSpotlightのままにしました
あと、set valueでやると、入力は出来るんだけど単語登録されないという
不思議な事態になったので、repeatのところだけ書き加えて改変しました
tell application "System Events"
key code 49 using command down
key code 102
delay 0.5
keystroke "keyboard"
delay 0.5
key code 36
delay 0.5
tell process "System Preferences"
repeat
if exists tab group 1 of window 1 then exit repeat
delay 0.3
end repeat
tell tab group 1 of window "Keyboard"
click radio button 2
click button 1 of group 1
delay 0.3
keystroke tab
keystroke "v" using command down
keystroke tab using shift down
end tell
end tell
end tell
29名称未設定
2017/04/29(土) 18:09:01.88ID:FcvMI78f0 reopenつけたらいけました!!
ありがとうございます
ありがとうございます
30名称未設定
2017/04/30(日) 06:08:05.40ID:1oYYm5910 こうか
こんな書き方あったんだな
tell application "System Preferences"
reveal anchor "Text" of pane id "com.apple.preference.keyboard"
activate
reopen
end tell
こんな書き方あったんだな
tell application "System Preferences"
reveal anchor "Text" of pane id "com.apple.preference.keyboard"
activate
reopen
end tell
31名称未設定
2017/04/30(日) 17:39:24.93ID:IF7HMWKE0 applescriptの勉強で、見よう見まねで
Firefoxでurlを開いて読み込み完了したらそのウィンドを閉じるをやってみたのですけど、
「end of lineがあるべきところですが"""が見つかりました。」と出てうまくいきませんでした。
添削お願いします。
tell application "Firefox"
open location "http://www.google.com"
activate
end tell
repeat until window "Google" of application process "Firefox" of application "System Events" exists
delay 0.1
end repeat
tell application "Firefox"
close window "Google"
end tell
Firefoxでurlを開いて読み込み完了したらそのウィンドを閉じるをやってみたのですけど、
「end of lineがあるべきところですが"""が見つかりました。」と出てうまくいきませんでした。
添削お願いします。
tell application "Firefox"
open location "http://www.google.com"
activate
end tell
repeat until window "Google" of application process "Firefox" of application "System Events" exists
delay 0.1
end repeat
tell application "Firefox"
close window "Google"
end tell
32名称未設定
2017/04/30(日) 18:13:33.53ID:dCjh+jW10 勉強ならまともにスクリプタブルなアプリでやりなよ
いきなりFirefoxとか
いきなりFirefoxとか
33名称未設定
2017/04/30(日) 18:22:10.76ID:qN2t4UJL0 これでいいんちゃう
tell application "Firefox"
open location "http://www.google.com"
activate
end tell
repeat
if exists window "Google" of application "Firefox" then exit repeat
delay 0.1
end repeat
tell application "Firefox"
close window "Google"
end tell
多分、application processって文言はtell application “System Events”の中身にしか続かないと思う
application specifierとelement specifierとかいう違いがあるらしいけど、僕も詳しいことはよく知らん
tell application "Firefox"
open location "http://www.google.com"
activate
end tell
repeat
if exists window "Google" of application "Firefox" then exit repeat
delay 0.1
end repeat
tell application "Firefox"
close window "Google"
end tell
多分、application processって文言はtell application “System Events”の中身にしか続かないと思う
application specifierとelement specifierとかいう違いがあるらしいけど、僕も詳しいことはよく知らん
34名称未設定
2017/04/30(日) 18:30:57.84ID:4jCfK0kz0 do shell script "open -b 'org.mozilla.firefox' 'http://www.google.com'"
35名称未設定
2017/04/30(日) 22:09:35.35ID:DQZEroXk0 参考サイトはざっと見たんですけど、UI browserのオススメって何かありますかね?
36名称未設定
2017/04/30(日) 22:30:14.79ID:4jCfK0kz0 Accessibility Inspector
38名称未設定
2017/05/01(月) 23:22:34.46ID:ENeWi3NJ0 時々バージョンアップするアプリケーションのアイコンをバージョンアップのたびに変えたくて、
Resourcesフォルダの中のアイコンファイルを置き換えるという荒技のアップルスクリプトを作ったのですが、
これだと部分的にしかアイコンが変更されず(Finderのカラムでは前のままでプレビューでは変更されているなど)
結局「情報を見る」にアイコンをペーストする方法でしかきれいに変更されませんでした。面倒なので、
>「情報を見る」にアイコンをペーストする
をアップルスクリプト化したいのですが、情報を見る、のアイコンを触る方法がまるっきりわかりませんでした
tell application "Finder"
set icon of application "test.app" to icon of file “test.jpg”
end tell
としたら
application ¥"test.app¥" をicon of file ¥”test.jpg¥"に設定できません
と叱られました。それで後半の icon of を外したら
application ¥"test.app¥" をfile ¥”test.jpg¥"に設定できません
と叱られました。そりゃそうだと思いますがこれ以上どうしたらよいかわかりませんでした。
すみませんがお分かりになる方がおられましたらよろしくご指導をお願いいたします。
ちなみに記録してみたら「情報を見る」ウインドウを開いて閉じただけとなっておりました。
(3年前のブログで、対応してないらしいことが書いてあるけど変わっていますように)
Resourcesフォルダの中のアイコンファイルを置き換えるという荒技のアップルスクリプトを作ったのですが、
これだと部分的にしかアイコンが変更されず(Finderのカラムでは前のままでプレビューでは変更されているなど)
結局「情報を見る」にアイコンをペーストする方法でしかきれいに変更されませんでした。面倒なので、
>「情報を見る」にアイコンをペーストする
をアップルスクリプト化したいのですが、情報を見る、のアイコンを触る方法がまるっきりわかりませんでした
tell application "Finder"
set icon of application "test.app" to icon of file “test.jpg”
end tell
としたら
application ¥"test.app¥" をicon of file ¥”test.jpg¥"に設定できません
と叱られました。それで後半の icon of を外したら
application ¥"test.app¥" をfile ¥”test.jpg¥"に設定できません
と叱られました。そりゃそうだと思いますがこれ以上どうしたらよいかわかりませんでした。
すみませんがお分かりになる方がおられましたらよろしくご指導をお願いいたします。
ちなみに記録してみたら「情報を見る」ウインドウを開いて閉じただけとなっておりました。
(3年前のブログで、対応してないらしいことが書いてあるけど変わっていますように)
39名称未設定
2017/05/02(火) 00:38:54.24ID:+RCS7gyN0 これ真似ればできるんじゃねー
ttp://hints.macworld.com/article.php?story=20091111215845472
ttp://hints.macworld.com/article.php?story=20091111215845472
40名称未設定
2017/05/02(火) 00:45:32.50ID:MGTeBfHu0 リソースフォルダのアイコンを変えるので問題ないはずだけど
アイコンを変えた時は
確かFinder を再起動しないとダメじゃなかった?
今パソコンつけていないから試してないけど。
アイコンを変えた時は
確かFinder を再起動しないとダメじゃなかった?
今パソコンつけていないから試してないけど。
41名称未設定
2017/05/02(火) 08:57:31.97ID:XpJQQkcz0 キャッシュされてるから入れ替えただけではすぐには反映しないね
4338
2017/05/03(水) 01:15:28.08ID:kB+u14Ex044名称未設定
2017/05/03(水) 01:38:13.88ID:lZ95FE0B0 ググると最近のOSだと再起動ぐらいじゃダメで
キャッシュを捨ててパソコンを再起動させないといけないみたいで
みんな結構苦労しているみたいだね、失礼しました
キャッシュを捨ててパソコンを再起動させないといけないみたいで
みんな結構苦労しているみたいだね、失礼しました
45名称未設定
2017/05/03(水) 18:45:26.04ID:AvL5ISgt0 keystroke以外の方法でSafari操作しようと思ったらやっぱJavaScript勉強しないといけないのかな
46名称未設定
2017/05/03(水) 22:04:10.28ID:hvMVl1Ss0 何がしたいかによるとしか
普通のコマンドだって色々あるぞ
普通のコマンドだって色々あるぞ
47名称未設定
2017/05/14(日) 04:20:39.78ID:Xn9zYPgm0 最新OS(10.12.4)でDockのメニューがスクリプトエディタだけおかしいのは俺だけ?
標準的なメニュー項目(すべてのウインドウを表示、隠す、終了)が無い
標準的なメニュー項目(すべてのウインドウを表示、隠す、終了)が無い
4947
2017/05/14(日) 22:23:09.93ID:Xn9zYPgm0 OS再起動したら治りまつた
Dock側の不具合かな
Dock側の不具合かな
50名称未設定
2017/06/29(木) 14:10:14.66ID:J/hivcen0 JXAもこのスレでいいの?
今どちらを覚えようか悩んでる状態
Java Scriptは元々ある程度書けるっていうのと、↓のサイトの
http://blog.s0014.com/posts/2016-08-04-osxjs1/
> 僕は元々AppleScript自体がほとんど分からない状態だったけど、どうやらAppleはOSXのスクリプティングをAppleScriptからJavaScriptに置き換えたいらしいです。
の記述を読んで、それが本当ならAppleScriptわざわざ覚えるのがもったいない気がして
逆に、AppleScript覚えた方が良いメリットなどあれば教えてもらえると嬉しいです!
今どちらを覚えようか悩んでる状態
Java Scriptは元々ある程度書けるっていうのと、↓のサイトの
http://blog.s0014.com/posts/2016-08-04-osxjs1/
> 僕は元々AppleScript自体がほとんど分からない状態だったけど、どうやらAppleはOSXのスクリプティングをAppleScriptからJavaScriptに置き換えたいらしいです。
の記述を読んで、それが本当ならAppleScriptわざわざ覚えるのがもったいない気がして
逆に、AppleScript覚えた方が良いメリットなどあれば教えてもらえると嬉しいです!
51名称未設定
2017/06/29(木) 20:30:08.91ID:wGpou5sn0 AppleScriptは近いうちになくなる、いや、なくなるのはJavaScriptだ、というのは憶測でしかなく、今のところどちらも外れている状態
AppleScriptよりJXAのほうが高機能なので、迷わず今日からJXAでコーディングするべし
AppleScriptよりJXAのほうが高機能なので、迷わず今日からJXAでコーディングするべし
52名称未設定
2017/06/29(木) 21:37:09.00ID:LYx24vpp0 Mac最近使い出して、JavaScript書ける人ならば、JXAでいいんじゃないの
そのサイトにも書いてあるけど
まだ使ってる人が少ないから例文が少なくJXAに翻訳するのが面倒なくらいで
俺は過去の資産があるからまだAppleScriptのまま行くけども
そのサイトにも書いてあるけど
まだ使ってる人が少ないから例文が少なくJXAに翻訳するのが面倒なくらいで
俺は過去の資産があるからまだAppleScriptのまま行くけども
53名称未設定
2017/06/29(木) 21:42:41.83ID:/CPdHPEY0 JXAってJavaScriptだしセキュリティ的にどうなのって思っちゃうけど
さすがにappleが考慮してないわけ無いか
さすがにappleが考慮してないわけ無いか
55名称未設定
2017/06/30(金) 14:23:54.30ID:/aRyw0p60 >>53
ちょっとイミフ
Javascriptのセキュリティ的にって?ブラウザ上/ネットワークで(勝手に)ダウンロードして実行が問題であって、Javascriptそのものの脆弱性ってなんかあったっけ?
ちょっとイミフ
Javascriptのセキュリティ的にって?ブラウザ上/ネットワークで(勝手に)ダウンロードして実行が問題であって、Javascriptそのものの脆弱性ってなんかあったっけ?
56名称未設定
2017/06/30(金) 14:27:08.26ID:/aRyw0p60 あー、JavascriptだからブラウザのJavascriptでJXAがってことか
ブラウザで動くJavascriptとはそこは別物だろう
ブラウザで動くJavascriptとはそこは別物だろう
57名称未設定
2017/06/30(金) 14:39:34.15ID:/aRyw0p60 ああー、デバッガでSafariのWeb Inspectorが利用される/使えるのか
ローカルファイル実行の例外もしくはスクリプトエディタとのアプリケーション連携なだけかもしれないが、ちょっと危険な香りはするな。Safari(WebKit)が理解しているという点は
ローカルファイル実行の例外もしくはスクリプトエディタとのアプリケーション連携なだけかもしれないが、ちょっと危険な香りはするな。Safari(WebKit)が理解しているという点は
58名称未設定
2017/06/30(金) 22:27:49.30ID:oZysuePQ0 俺も>>55のように思ったんだが、ASだって危険な処理やらそうと思えばできるし
JSであることが問題になるのってどういう場面だ?
JSであることが問題になるのってどういう場面だ?
59名称未設定
2017/07/01(土) 15:53:24.34ID:E8Kr2aZd0 Webでいたずらかな。
ローカルのセキュリティはASの方がやばそうだが、いろいろ穴は塞がれ、そして不便になった。
ローカルのセキュリティはASの方がやばそうだが、いろいろ穴は塞がれ、そして不便になった。
60名称未設定
2017/07/12(水) 16:39:40.28ID:M6Ixi3bA0 mac標準メモアプリを一括で書き出す方法を調べていたら下記スクリプトを書かれている方がいました。
多分書き出してくれるものだと思うのですが
自分は読み解けないのでどういう指令のものなのか教えて頂けると助かります。
count=0; sqlite3 Library/Containers/com.apple.Notes/Data/Library/Notes/NotesV4.storedata 'select ZHTMLSTRING from ZNOTEBODY' | while read line; do echo $line > note$count; ((count++)); done
多分書き出してくれるものだと思うのですが
自分は読み解けないのでどういう指令のものなのか教えて頂けると助かります。
count=0; sqlite3 Library/Containers/com.apple.Notes/Data/Library/Notes/NotesV4.storedata 'select ZHTMLSTRING from ZNOTEBODY' | while read line; do echo $line > note$count; ((count++)); done
61名称未設定
2017/07/12(水) 17:01:31.17ID:99ZCzng50 このスレと全然関係ないじゃん
62名称未設定
2017/07/12(水) 17:38:19.59ID:M6Ixi3bA0 すみません、ターミナルコマンドだったようです。
63名称未設定
2017/07/16(日) 01:52:12.56ID:z5psAnZY0 app = Application.currentApplication()
app.includeStandardAdditions = true
outputFolder = app.pathTo("desktop",{from:"user domain"}) + "/Notes"
kRAWMarker = 'BEGIN_OF_RAW'
kShellScript = 'sqlite3 "$HOME/Library/Containers/com.apple.Notes/Data/Library/Notes/NotesV6.storedata" ¥'select "' + kRAWMarker + '", ZHTMLSTRING from ZNOTEBODY¥''
notes = app.doShellScript(kShellScript).split(kRAWMarker +'|')
notes.shift()
notes.forEach(function (anItem, index) {
filePath = $(outputFolder + "/Item " + index + ".txt").stringByStandardizingPath
error = $()
$(anItem).writeToFileAtomicallyEncodingError(filePath, true, $.NSUTF8StringEncoding, error)
if(error && error.code)
app.displayDialog(ObjC.unwrap(filePath) + "¥n¥n" + ObjC.unwrap(error.localizedDescription))
})
app.includeStandardAdditions = true
outputFolder = app.pathTo("desktop",{from:"user domain"}) + "/Notes"
kRAWMarker = 'BEGIN_OF_RAW'
kShellScript = 'sqlite3 "$HOME/Library/Containers/com.apple.Notes/Data/Library/Notes/NotesV6.storedata" ¥'select "' + kRAWMarker + '", ZHTMLSTRING from ZNOTEBODY¥''
notes = app.doShellScript(kShellScript).split(kRAWMarker +'|')
notes.shift()
notes.forEach(function (anItem, index) {
filePath = $(outputFolder + "/Item " + index + ".txt").stringByStandardizingPath
error = $()
$(anItem).writeToFileAtomicallyEncodingError(filePath, true, $.NSUTF8StringEncoding, error)
if(error && error.code)
app.displayDialog(ObjC.unwrap(filePath) + "¥n¥n" + ObjC.unwrap(error.localizedDescription))
})
64名称未設定
2017/07/16(日) 08:53:23.47ID:F1ckUwJ00 なんか微妙
メモアプリはスクリプタブルなのに
メモアプリはスクリプタブルなのに
65名称未設定
2017/07/21(金) 21:48:47.83ID:diQFvHvD0 勉強がてらJXAで昔書いたスクリプトを書き換えてみたりしたんだけど
出来たーと思っても、日本語文字化けしてるじゃんとか
Aのアプリだと問題ないのにBのアプリだと動くけどエラー吐いてるぞとか
情報が少なくてトラブった時の解決策が見つからなくて厳しかった
なんでAppleScriptでいいや
出来たーと思っても、日本語文字化けしてるじゃんとか
Aのアプリだと問題ないのにBのアプリだと動くけどエラー吐いてるぞとか
情報が少なくてトラブった時の解決策が見つからなくて厳しかった
なんでAppleScriptでいいや
66名称未設定
2017/07/22(土) 00:45:46.79ID:0kGQ4Eo+0 StackOverflowとか結構ヒットするけどなあ
日本語の情報はほとんどないけど
日本語の情報はほとんどないけど
67名称未設定
2017/07/26(水) 00:59:45.52ID:jAD80pxK0 mac でなんかやるには Python が最強って結論が出たわ。
最悪なのは 🍏 アップルスクリプト 🍎
アップルスクリプトは継続性が怪しいし、学習環境が悪い。
本とかほとんどない。
アップルスクリプトは連携させる外部のモジュールとかがないのも辛い。
Python だとワード、エクセル、pdf とかお手軽に操作、読み書きできる。
ウェブページのDLとかめちゃ簡単。
最悪なのは 🍏 アップルスクリプト 🍎
アップルスクリプトは継続性が怪しいし、学習環境が悪い。
本とかほとんどない。
アップルスクリプトは連携させる外部のモジュールとかがないのも辛い。
Python だとワード、エクセル、pdf とかお手軽に操作、読み書きできる。
ウェブページのDLとかめちゃ簡単。
68名称未設定
2017/07/26(水) 01:32:37.46ID:qeGztfLS0 ガチ言語と比べて頂いてありがとうございました
69名称未設定
2017/07/26(水) 11:28:50.31ID:qArLzfXh0 あほだな〜賢い人は py と AS その他の両刀よ。適材適所
70名称未設定
2017/07/26(水) 12:11:11.52ID:bK5NkiHw0 JXAにすると10.9以下に対応できなくなるから
古めのOSでも同じScript使いたいという場合に困るか
古めのOSでも同じScript使いたいという場合に困るか
71名称未設定
2017/07/26(水) 15:37:45.56ID:iyxVTdve0 >>67
AppleScriptのメリットって、
入力ダイアログや選択ダイアログとかの
インターフェースが一瞬で作れるところじゃない?
Dockに登録したアイコンをクリックすると実行される簡易アプリや、
ファイルドロップで実行されるドロップレットもすぐ作れるし。
内部処理はPythonなりRubyなり、使いたいライブラリが揃ってる
言語に投げちゃえるのもAppleScriptの大きな特徴。
そのへんをまだわかってないようなら、
do shell scriptを調べてみると幸せになれるかも。
AppleScriptのメリットって、
入力ダイアログや選択ダイアログとかの
インターフェースが一瞬で作れるところじゃない?
Dockに登録したアイコンをクリックすると実行される簡易アプリや、
ファイルドロップで実行されるドロップレットもすぐ作れるし。
内部処理はPythonなりRubyなり、使いたいライブラリが揃ってる
言語に投げちゃえるのもAppleScriptの大きな特徴。
そのへんをまだわかってないようなら、
do shell scriptを調べてみると幸せになれるかも。
72名称未設定
2017/07/26(水) 17:51:28.15ID:eB8bopkn0 Pythonと背反というわけではないよな。
うまく組み合わせればウハウハ。
うまく組み合わせればウハウハ。
73名称未設定
2017/07/26(水) 19:58:24.34ID:IWtuH9B10 pythonなんてマシンにインストールしてるのはコンピューターキモオタだけだよ。
74名称未設定
2017/07/26(水) 20:04:24.88ID:bK5NkiHw0 OSXユーザー全員キモオタ宣言いただきました
75名称未設定
2017/07/26(水) 21:29:12.32ID:Kee1Lxsd0 Perl PHP Python Ruby Java JavaScript AppleScript
これだけデフォルトで入ってるんだっけ?
まあキモオタかもね
これだけデフォルトで入ってるんだっけ?
まあキモオタかもね
76名称未設定
2017/07/27(木) 18:05:21.27ID:kevaGaCM0 今Javaは自分でインストールしないと無いんじゃない?
77名称未設定
2017/08/31(木) 05:03:23.13ID:nYdEYsJP0 アプリケーション形式で保存したものを起動時にcontrolキー押してると確認ダイアログ出るけどこれ無効にできないのかねえ
78名称未設定
2017/08/31(木) 09:04:57.61ID:ZsSruYs40 方法は知らんけど、なんでcontrol押して起動したいのかを知りたい。
79名称未設定
2017/08/31(木) 09:37:21.27ID:q7binzaZ0 controlキー押さなければダイアログ出ないってことを知らないんじゃないの?
80名称未設定
2017/08/31(木) 10:11:04.35ID:TbHNu8N70 control+クリックとかemacs風キー操作とかしてて、裏でスケジュール起動されるとかじゃないの
81名称未設定
2017/08/31(木) 17:37:16.14ID:uv9FJb930 キーボードが壊れていてControlが常に押された状態になっているのです
82名称未設定
2017/08/31(木) 17:49:27.84ID:TbHNu8N70 なんだそのクソみたいな便乗
83名称未設定
2017/08/31(木) 17:56:00.69ID:p9bPGsK+0 ビンジョー
84名称未設定
2017/08/31(木) 17:58:14.24ID:8crVxHW10 システム環境設定のキーボードのところに
修飾キーっていうボタンがあるから
そこをクリックして
コントロールをアクション無しに設定すれば
コントロールキーを無効に出来るよ
壊れてるなら使えなくしても問題ないでしょ
修飾キーっていうボタンがあるから
そこをクリックして
コントロールをアクション無しに設定すれば
コントロールキーを無効に出来るよ
壊れてるなら使えなくしても問題ないでしょ
86名称未設定
2017/08/31(木) 23:50:33.84ID:q7binzaZ0 俺が本人なんだが
87名称未設定
2017/09/01(金) 19:59:35.86ID:AsewW5Hc0 真の>>77だけどw
理由は、アプリ起動にショートカット付ける系のアプリでcontrolキーが割り当てられなかったりするから
まあどうしても割り当てたかったら、スクリプト実行するだけの.appバンドルを自分で作ればいいんだけど
できればアプリ形式でそのままできたほうがいいなーと思って
理由は、アプリ起動にショートカット付ける系のアプリでcontrolキーが割り当てられなかったりするから
まあどうしても割り当てたかったら、スクリプト実行するだけの.appバンドルを自分で作ればいいんだけど
できればアプリ形式でそのままできたほうがいいなーと思って
88名称未設定
2017/09/23(土) 00:28:29.83ID:qrnvJJOc0 A
set lst to 2
if lst = 2 then
display dialog "中止"
end if
B
set lst to {1, 2}
repeat with i in lst
display dialog "中止"
end repeat
C
set lst to {1, 2}
repeat with i in lst
if i = 2 then
display dialog "中止"
end if
end repeat
--ここからメインの処理
質問です
A,Bは機能するのにCが動かないのはなぜでしょうか?
それとメインの処理の前にリストをチェックしてリストにあった場合処理を中止したいのですが、
Cでdisplay dialog でキャンセルを押せば中止されるのですが
中止する前に別なダイアログを表示させてから中止するような場合はどうすればいいでしょうか?
よろしくお願いします。
set lst to 2
if lst = 2 then
display dialog "中止"
end if
B
set lst to {1, 2}
repeat with i in lst
display dialog "中止"
end repeat
C
set lst to {1, 2}
repeat with i in lst
if i = 2 then
display dialog "中止"
end if
end repeat
--ここからメインの処理
質問です
A,Bは機能するのにCが動かないのはなぜでしょうか?
それとメインの処理の前にリストをチェックしてリストにあった場合処理を中止したいのですが、
Cでdisplay dialog でキャンセルを押せば中止されるのですが
中止する前に別なダイアログを表示させてから中止するような場合はどうすればいいでしょうか?
よろしくお願いします。
89名称未設定
2017/09/23(土) 01:51:01.56ID:oE2fSdGf0 >>88
repeat内にiが2かどうか判断する処理しかないじゃない。
end repeatをメインの処理より後にしないと。
display alert
なら「OK」ボタンしかでないからその後に
returnとか
repeat with i in {1, 2, 3, 4}
if i as integer = 3 then
display alert "中止"
return
end if
--メイン処理
display dialog "メイン処理"
end repeat
repeat内にiが2かどうか判断する処理しかないじゃない。
end repeatをメインの処理より後にしないと。
display alert
なら「OK」ボタンしかでないからその後に
returnとか
repeat with i in {1, 2, 3, 4}
if i as integer = 3 then
display alert "中止"
return
end if
--メイン処理
display dialog "メイン処理"
end repeat
90名称未設定
2017/09/23(土) 04:17:22.60ID:m1CA2BF10 https://developer.apple.com/library/content/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-128481
AppleScript Language Guide > Control Statements Reference > repeat Statements
> repeat with loopVariable (in list) から
> the value of the variable is a reference to the first item in list, in the second iteration, it is a reference to the second item in list, and so on.
→ ループ中、変数はリストの項目のreferenceである。
> To access the actual value of an item in the list, rather than a reference to the item, use the contents of property:
→ 値を利用するには contents of とする。→ contents of i
> This technique is especially important when performing a comparison, as you typically want to test whether the value of a list item matches another value.
→ 比較を行うときに特に重要。
> You can also use list variables directly in expressions, which may result in an implicit coercion from an object reference to a specific data type.
→ 式の中では特定のデータ型に変換され直接使える。 i + 0 とか
AppleScript Language Guide > Control Statements Reference > repeat Statements
> repeat with loopVariable (in list) から
> the value of the variable is a reference to the first item in list, in the second iteration, it is a reference to the second item in list, and so on.
→ ループ中、変数はリストの項目のreferenceである。
> To access the actual value of an item in the list, rather than a reference to the item, use the contents of property:
→ 値を利用するには contents of とする。→ contents of i
> This technique is especially important when performing a comparison, as you typically want to test whether the value of a list item matches another value.
→ 比較を行うときに特に重要。
> You can also use list variables directly in expressions, which may result in an implicit coercion from an object reference to a specific data type.
→ 式の中では特定のデータ型に変換され直接使える。 i + 0 とか
91名称未設定
2017/09/23(土) 07:18:19.41ID:qrnvJJOc092名称未設定
2017/09/23(土) 22:27:10.77ID:oE2fSdGf0 set lst to {1, 2, 3, 4}
repeat with i in lst
end repeat
i
結果=>item 4 of {1, 2, 3, 4}
なるほど参照。
set lst to {1, 2, 3, 4}
set item 4 of lst to 14
lst
結果=>{1, 2, 3, 14}
そりゃそうだね。
set lst to {1, 2, 3, 4}
repeat with i in lst
set i to i + 10
end repeat
lst
結果=>{1, 2, 3, 4}
自分が思ってた参照と違う。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
repeat with i in lst
end repeat
i
結果=>item 4 of {1, 2, 3, 4}
なるほど参照。
set lst to {1, 2, 3, 4}
set item 4 of lst to 14
lst
結果=>{1, 2, 3, 14}
そりゃそうだね。
set lst to {1, 2, 3, 4}
repeat with i in lst
set i to i + 10
end repeat
lst
結果=>{1, 2, 3, 4}
自分が思ってた参照と違う。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
93名称未設定
2017/09/23(土) 22:55:23.02ID:IBOjc3/u094名称未設定
2017/09/24(日) 00:06:47.63ID:96tAYODX0 >>93
ありがとうございます
フォルダの中身を処理するスクリプトを書いていて
中身をまず先に全部チェックして問題があったら取り除いて
問題が無くなってから一斉処理するものを考えてました
exit repeat でも試してみます!
ありがとうございます
フォルダの中身を処理するスクリプトを書いていて
中身をまず先に全部チェックして問題があったら取り除いて
問題が無くなってから一斉処理するものを考えてました
exit repeat でも試してみます!
95名称未設定
2017/09/24(日) 17:23:54.15ID:CfSbM5kK0 >>92
参照を数値で置き換えているんだろう。
set lst to {1, 2, 3, 4}
repeat with i in lst
set contents of i to contents of i + 10
end repeat
lst
でどうかな。
参照を数値で置き換えているんだろう。
set lst to {1, 2, 3, 4}
repeat with i in lst
set contents of i to contents of i + 10
end repeat
lst
でどうかな。
96名称未設定
2017/09/25(月) 00:06:57.00ID:lK9q1Hxq0 >>94
それ再帰的に何度もフォルダ内をrepeatしてファイルを移動なり削除なりするってことだよね
それはかなり非効率的(同じファイルを何度も評価する)だから
1度のrepeatで問題あったファイルはパスでリストなりに保存して行って
全部のファイルをチェックし終わったら移動or削除リストを処理するようにした方が良いんじゃないかな
それ再帰的に何度もフォルダ内をrepeatしてファイルを移動なり削除なりするってことだよね
それはかなり非効率的(同じファイルを何度も評価する)だから
1度のrepeatで問題あったファイルはパスでリストなりに保存して行って
全部のファイルをチェックし終わったら移動or削除リストを処理するようにした方が良いんじゃないかな
97名称未設定
2017/11/27(月) 15:51:30.59ID:UfjHgS1L0 QLabというソフトでApplescriptが使えるのでファイル指定の一括変更をやってみたいのですが、
ファイル名の一部をファイルパス内に入れる表記方法がわかりません
「cue」に対して対象ファイルをパスで指定する部分です
リスト内で指定しているのは事前に用意してあるファイル群の先頭の文字列です
各数字に対して01_A.aif、01_B.aif、01_C.aifといった感じで大量にあります
set File_A to choose from list {"01","02","03"}
set file target of cue"01" to "ファイルパス/「File_Aで選択した文字列」_A.aif"
set file target of cue"02" to "ファイルパス/「File_Aで選択した文字列」_B.aif"
set file target of cue"03" to "ファイルパス/「File_Aで選択した文字列」_C.aif"
File_Aで02を選択すると02のA、B、Cが割り振られてほしいんですがどう書いたら良いんでしょうか
ファイル名の一部をファイルパス内に入れる表記方法がわかりません
「cue」に対して対象ファイルをパスで指定する部分です
リスト内で指定しているのは事前に用意してあるファイル群の先頭の文字列です
各数字に対して01_A.aif、01_B.aif、01_C.aifといった感じで大量にあります
set File_A to choose from list {"01","02","03"}
set file target of cue"01" to "ファイルパス/「File_Aで選択した文字列」_A.aif"
set file target of cue"02" to "ファイルパス/「File_Aで選択した文字列」_B.aif"
set file target of cue"03" to "ファイルパス/「File_Aで選択した文字列」_C.aif"
File_Aで02を選択すると02のA、B、Cが割り振られてほしいんですがどう書いたら良いんでしょうか
98名称未設定
2017/11/27(月) 17:29:56.00ID:MxIY0UcX0 単なる文字列結合、
"ファイルパス/" & File_A & "_A.aif"
でいいんじゃないの。必要なら POSIX path of 付けて
POSIX path of ("ファイルパス/" & File_A & "_A.aif")
"ファイルパス/" & File_A & "_A.aif"
でいいんじゃないの。必要なら POSIX path of 付けて
POSIX path of ("ファイルパス/" & File_A & "_A.aif")
99名称未設定
2017/11/27(月) 17:33:26.90ID:MxIY0UcX0 POSIX path of は意味ないか。POSIX file の方か、必要ならは
POSIX file ("ファイルパス/" & File_A & "_A.aif")
POSIX file ("ファイルパス/" & File_A & "_A.aif")
100名称未設定
2017/11/27(月) 18:49:54.82ID:UfjHgS1L0 できました!
&はクォーテーション内に書くんですね
&はクォーテーション内に書くんですね
101名称未設定
2017/11/27(月) 19:26:59.63ID:MxIY0UcX0 外だけどね
102名称未設定
2017/11/27(月) 19:55:08.77ID:UfjHgS1L0 あぁ、クォーテーションで囲ったパスに挟まれてるのか
理解しました
理解しました
103名称未設定
2017/11/27(月) 20:15:20.28ID:MxIY0UcX0 パスというか文字列だけどね。File_A も文字列(変数)、"..."も文字列(定数)
文字列 & 文字列 & 文字列
でしかないよ
文字列 & 文字列 & 文字列
でしかないよ
104wata
2017/12/10(日) 11:53:09.80ID:VyM05FE50 こんなんできたらなーっていうのなんですけど。
アップルスクリプトっていろんな
アプリケーションの制御ができるじゃないですか。
アシスタントスクリプトみたいなものって作れるものなんでしょうか?
数秒ごとか、それよりも短い時間でループしてアクセスして、
具体的には現在アクティブになっているアプリケーションの
例えば選択しているオブジェクトの種類を取得して
その種類で予め登録した、複数のスクリプトを並べて実行しやすいように出してくれるような。
登録が手間かもしれませんが、一度登録してしまえばルーチンワークには楽かな。
数秒ごとにアプリにアクセスするから重くなるので非現実的なのかな。
スクリプトの提案にGUI使えたらいいなと思ったんですが、、notificationとかつかえるのかな
フォルダに細かく分けてスクリプトを入れといて、そのパスを登録してしまえばFinderからフォルダウィンドウを開けば楽なのかな。
いややっぱり、重くて使いものにならないのかな。。。
アップルスクリプトっていろんな
アプリケーションの制御ができるじゃないですか。
アシスタントスクリプトみたいなものって作れるものなんでしょうか?
数秒ごとか、それよりも短い時間でループしてアクセスして、
具体的には現在アクティブになっているアプリケーションの
例えば選択しているオブジェクトの種類を取得して
その種類で予め登録した、複数のスクリプトを並べて実行しやすいように出してくれるような。
登録が手間かもしれませんが、一度登録してしまえばルーチンワークには楽かな。
数秒ごとにアプリにアクセスするから重くなるので非現実的なのかな。
スクリプトの提案にGUI使えたらいいなと思ったんですが、、notificationとかつかえるのかな
フォルダに細かく分けてスクリプトを入れといて、そのパスを登録してしまえばFinderからフォルダウィンドウを開けば楽なのかな。
いややっぱり、重くて使いものにならないのかな。。。
105wata
2017/12/10(日) 12:10:52.19ID:VyM05FE50 自分がどれだけ仕事に集中しているのか監視してもらうスクリプトを書いてて
現実的にできそうかなと思った次第です。
下のがそれです。アプレット書き出しで、オプションは終了しないにチェック入れたら使えると思います。
できたログを眺めていてうまく拾えていない箇所は、おそらくmacがスリープしたからかななんと思います。
宅ファイルにアップしましたので、気になった方はみていただけるとありがたいです。
https://free.filesend.to/filedn_infoindex?rp=e25cbf030cad39b2fbeec2de1edd394o
現実的にできそうかなと思った次第です。
下のがそれです。アプレット書き出しで、オプションは終了しないにチェック入れたら使えると思います。
できたログを眺めていてうまく拾えていない箇所は、おそらくmacがスリープしたからかななんと思います。
宅ファイルにアップしましたので、気になった方はみていただけるとありがたいです。
https://free.filesend.to/filedn_infoindex?rp=e25cbf030cad39b2fbeec2de1edd394o
106名称未設定
2017/12/10(日) 13:58:23.42ID:qGzyW+jE0 そういうのはobjcで書いた方が柔軟性あって楽だよ
わざわざスクリプト言語で縛りプレイする必要ない
わざわざスクリプト言語で縛りプレイする必要ない
107名称未設定
2017/12/10(日) 13:59:23.13ID:qGzyW+jE0 もちろん他のアプリケーションを操作する部分は
applescriptで書けば良いけど
マネージャーまでapplescriptで書く必要はないって事ねb
applescriptで書けば良いけど
マネージャーまでapplescriptで書く必要はないって事ねb
108名称未設定
2017/12/11(月) 21:57:21.82ID:hlnB+ZGT0 何度も提案されては消えたアイデアだね。
嫌いじゃないけど、大変すぎる。
嫌いじゃないけど、大変すぎる。
109名称未設定
2018/01/14(日) 15:13:48.90ID:XdTiug1c0 充電が80%になったら通知してくれるCharge CheckというAppleScriptアプリを作ってくれている人がいるけど
OSX10.6でも同じようなの作れる?
そもそも10.6では無理?
OSX10.6でも同じようなの作れる?
そもそも10.6では無理?
110名称未設定
2018/01/14(日) 15:55:07.63ID:UXK1jNFW0 簡易的なのは割とすぐ作れるんじゃないの
バッテリー情報は do shell script "pmset -g batt" 等で取得
通知はGrowlで
バッテリー情報は do shell script "pmset -g batt" 等で取得
通知はGrowlで
111名称未設定
2018/01/14(日) 20:21:13.67ID:XdTiug1c0 >>110
ググってこんな感じのしか見つけられなかった
set batteryPercent to do shell script "pmset -g batt | awk '/InternalBattery/ { sub(/;/, \"\"); print $2 }'"
display dialog "Battery is " & batteryPercent & " charged." buttons {"OK"} default button "OK"
なんかできそうだけど、自分には作れないや
どうもありがとう
ググってこんな感じのしか見つけられなかった
set batteryPercent to do shell script "pmset -g batt | awk '/InternalBattery/ { sub(/;/, \"\"); print $2 }'"
display dialog "Battery is " & batteryPercent & " charged." buttons {"OK"} default button "OK"
なんかできそうだけど、自分には作れないや
どうもありがとう
112名称未設定
2018/01/15(月) 12:50:15.73ID:8aMEURZz0 on idle
return 60
end idle
で挟んで、diplay dialogの前の行に
if batteryPercent > 80 then
後の行に
quit
end if
挿入する。
return 60
end idle
で挟んで、diplay dialogの前の行に
if batteryPercent > 80 then
後の行に
quit
end if
挿入する。
113名称未設定
2018/01/15(月) 22:01:42.13ID:1GAnzEgZ0 >>112
ありがとう
これでいいのかな?
on idle
set batteryPercent to do shell script "pmset -g batt | awk '/InternalBattery/ { sub(/;/, \"\"); print $2 }'"
if batteryPercent > 80 then
display dialog "Battery is " & batteryPercent & " charged." buttons {"OK"} default button "OK"
quit
end if
return 60
end idle
実行して充電してみたけど80%すぎてもなにも出てこなかった
なにか根本的に間違ってるのかな…
ありがとう
これでいいのかな?
on idle
set batteryPercent to do shell script "pmset -g batt | awk '/InternalBattery/ { sub(/;/, \"\"); print $2 }'"
if batteryPercent > 80 then
display dialog "Battery is " & batteryPercent & " charged." buttons {"OK"} default button "OK"
quit
end if
return 60
end idle
実行して充電してみたけど80%すぎてもなにも出てこなかった
なにか根本的に間違ってるのかな…
114名称未設定
2018/01/15(月) 22:02:45.38ID:1GAnzEgZ0 試しにon idleで検索して3秒後に音が鳴る(たぶん)やってみたけど
on idle
beep
return 3
end idle
反応がなかった
初心者ですまない
on idle
beep
return 3
end idle
反応がなかった
初心者ですまない
115名称未設定
2018/01/15(月) 23:08:14.67ID:kX+AUH5H0 on idle
は、アプリケーションを実行したときでしか動かない。しかも、起動中しか動かない。スクリプトを、
ファイルフォーマット: アプリケーション
ハンドラの実行後に終了しない
で保存して、保存された .app を起動すれば、そのシンプルなのでも動く
は、アプリケーションを実行したときでしか動かない。しかも、起動中しか動かない。スクリプトを、
ファイルフォーマット: アプリケーション
ハンドラの実行後に終了しない
で保存して、保存された .app を起動すれば、そのシンプルなのでも動く
116名称未設定
2018/01/16(火) 11:10:15.19ID:YivhleEe0117名称未設定
2018/01/27(土) 14:19:06.01ID:/A7SfRfh0 友達や知人が一人もいないので、電話がかかってきた経験がない。
通話の着信音も聞いたことがない(鳴らない電話)。
手元のiPhoneはスマートフォンと呼ばれているが、
果たして本当に電話機なのか怪しいとさえ考え始めた。
そこで自分に電話(FaceTimeオーディオだけど)をかける。
スクリプトは以下の通り。
set phoneNum to "自分の電話番号"
do shell script "open facetime-audio://" & quoted form of phoneNum
tell application "System Events"
repeat while not (button "発信" of window 1 of application process "FaceTime" exists)
delay 1
end repeat
click button "発信" of window 1 of application process "FaceTime"
end tell
Automatorを使い上記をカレンダーアクションとして保存する。
該当ファイル(.appファイル)に「コンピュータの制御を許可」を
与えておけば、カレンダー.app内で通知時に同アクションを開く
設定にすることで、好きなタイミングで電話がかかってくる(予定調和)。
また電話をかけたりかけなかったりというスクリプトにして
launchdから定期実行しても良い(予期せぬ出会い)。
set rNum to random number from 1 to 10
if rNum < 3 then
さっきのスクリプト
end if
iPhone側には着信履歴(FaceTimeオーディオだけど)が残る。
「あいつしょっちゅう電話してきてうるせぇな」という気分を
満喫できる(リアル生活の充足)。
通話の着信音も聞いたことがない(鳴らない電話)。
手元のiPhoneはスマートフォンと呼ばれているが、
果たして本当に電話機なのか怪しいとさえ考え始めた。
そこで自分に電話(FaceTimeオーディオだけど)をかける。
スクリプトは以下の通り。
set phoneNum to "自分の電話番号"
do shell script "open facetime-audio://" & quoted form of phoneNum
tell application "System Events"
repeat while not (button "発信" of window 1 of application process "FaceTime" exists)
delay 1
end repeat
click button "発信" of window 1 of application process "FaceTime"
end tell
Automatorを使い上記をカレンダーアクションとして保存する。
該当ファイル(.appファイル)に「コンピュータの制御を許可」を
与えておけば、カレンダー.app内で通知時に同アクションを開く
設定にすることで、好きなタイミングで電話がかかってくる(予定調和)。
また電話をかけたりかけなかったりというスクリプトにして
launchdから定期実行しても良い(予期せぬ出会い)。
set rNum to random number from 1 to 10
if rNum < 3 then
さっきのスクリプト
end if
iPhone側には着信履歴(FaceTimeオーディオだけど)が残る。
「あいつしょっちゅう電話してきてうるせぇな」という気分を
満喫できる(リアル生活の充足)。
118名称未設定
2018/01/27(土) 15:44:23.56ID:Z3ZqkQIR0 (´>ω<`) つらいのぅ〜
119名称未設定
2018/01/27(土) 22:49:09.78ID:eOSJEmKf0 いい発表だった
120名称未設定
2018/01/31(水) 17:15:08.29ID:RWzYK2TV0 メッセージは遅れる?
121名称未設定
2018/01/31(水) 17:15:58.14ID:QG7bLxOR0 遅れる
122名称未設定
2018/01/31(水) 17:29:10.56ID:+M/lBDyQ0 何分くらい?
123名称未設定
2018/02/01(木) 07:31:17.86ID:x8RNVB090 メッセージは送れますか、(ㆀ˘・з・˘)
124名称未設定
2018/02/01(木) 12:24:05.77ID:08iVOOBW0 送れる
125名称未設定
2018/02/01(木) 13:18:03.93ID:+AZgGj040 >>115
Cocoa API使うと大丈夫そうな
スリープの邪魔要因は詳しくはわからんが、アクティビティモニタで 非スリープ がon idleだと はい にころころ変わるな。Cocoa API直接だと変わらない
use AppleScript version "2.4"
use framework "Foundation"
use scripting additions
current application's NSTimer's scheduledTimerWithTimeInterval:3 target:me selector:"timerFired:" userInfo:(missing value) repeats:yes
on timerFired:theTimer
beep
end timerFired:
(いきなりCocoa APIとかとは思うが、ほぼ一行&ほぼ定型みたいな感じなので)
Cocoa API使うと大丈夫そうな
スリープの邪魔要因は詳しくはわからんが、アクティビティモニタで 非スリープ がon idleだと はい にころころ変わるな。Cocoa API直接だと変わらない
use AppleScript version "2.4"
use framework "Foundation"
use scripting additions
current application's NSTimer's scheduledTimerWithTimeInterval:3 target:me selector:"timerFired:" userInfo:(missing value) repeats:yes
on timerFired:theTimer
beep
end timerFired:
(いきなりCocoa APIとかとは思うが、ほぼ一行&ほぼ定型みたいな感じなので)
127名称未設定
2018/02/01(木) 13:44:39.11ID:DX8LljYV0 元質問者は10.6だよ
自分の実験に作ったんならあれだけど
自分の実験に作ったんならあれだけど
128名称未設定
2018/02/01(木) 15:08:48.12ID:+AZgGj040 どうも。ぬぁにぃいw
なるほど、それじゃだめだな。どうも
なるほど、それじゃだめだな。どうも
129名称未設定
2018/02/04(日) 17:23:20.73ID:iafplOJZ0 こんにちわ、ヒントもしくは検索語句を教えてください。
──────────前提
古いMac mini Serverを眠らせておくのはもったいないので、
24節気を表示させようとしています。
AppleScriptのアプリを作って、毎日0:00に再起動させ、
起動項目として呼び出します。
24節気画像はキャドでおのおの作り、プレビュー.appを最大化して
各節気ごとに表示させます。
──────────ver
MacOSX Server 10.6.8
──────────AppleScript
--current dateをMMDD形式にする。
set M to month of (current date) as number
set MM to "0" & M --ひと桁月の桁揃え。
set MM to strings -1 thru -2 of MM --下から二桁をとる
set D to day of (current date)
set DD to "0" & D --ひとけたの桁揃え。
set DD to strings -1 thru -2 of DD --下から二桁をとる
set the24SekkiNum to MM & DD
if the24SekkiNum is "0204" then --このパターンでないとコンパイルできない
display dialog "立春" --ダミー
--ここにスクリーンショット等を最大化表示のコマンドを呼び出す。
else
--他の24節気を表示させる。
end if
──────────前提
古いMac mini Serverを眠らせておくのはもったいないので、
24節気を表示させようとしています。
AppleScriptのアプリを作って、毎日0:00に再起動させ、
起動項目として呼び出します。
24節気画像はキャドでおのおの作り、プレビュー.appを最大化して
各節気ごとに表示させます。
──────────ver
MacOSX Server 10.6.8
──────────AppleScript
--current dateをMMDD形式にする。
set M to month of (current date) as number
set MM to "0" & M --ひと桁月の桁揃え。
set MM to strings -1 thru -2 of MM --下から二桁をとる
set D to day of (current date)
set DD to "0" & D --ひとけたの桁揃え。
set DD to strings -1 thru -2 of DD --下から二桁をとる
set the24SekkiNum to MM & DD
if the24SekkiNum is "0204" then --このパターンでないとコンパイルできない
display dialog "立春" --ダミー
--ここにスクリーンショット等を最大化表示のコマンドを呼び出す。
else
--他の24節気を表示させる。
end if
130名称未設定
2018/02/04(日) 17:23:57.74ID:iafplOJZ0 改行が多い。といわれたので。
という感じで。
太陽 黄経の計算が自分のスキルではできないので,
国立天文台の24節気一覧表から2018年の日付を取り、
春分だったら”0204”としてAppleScriptの結果と同じ場合”春分”の
画像を呼び出して表示させます。
──────────問題/疑問
春分から清明まで日にちがあるのでその間の処理をどうしようかと。
直近のデータを記憶(この場合は”0204”)させて表示させるとか。
エラーが出たら直近のデータを見ろ。というコマンドがあるかどうか知りたいと思います。
という感じで。
太陽 黄経の計算が自分のスキルではできないので,
国立天文台の24節気一覧表から2018年の日付を取り、
春分だったら”0204”としてAppleScriptの結果と同じ場合”春分”の
画像を呼び出して表示させます。
──────────問題/疑問
春分から清明まで日にちがあるのでその間の処理をどうしようかと。
直近のデータを記憶(この場合は”0204”)させて表示させるとか。
エラーが出たら直近のデータを見ろ。というコマンドがあるかどうか知りたいと思います。
131名称未設定
2018/02/04(日) 17:29:56.29ID:9fmbODdW0 はい。(´・ω・`)
132名称未設定
2018/02/04(日) 18:51:09.73ID:LFznGo0p0 >エラーが出たら直近のデータを見ろ。というコマンドがあるかどうか知りたいと思います。
そういう風に組んどけばいい
そういう風に組んどけばいい
133名称未設定
2018/02/04(日) 22:46:28.75ID:iuBSBdB20 冒頭で
prop aDay: “”
としておいて、本文では
try
set aDay to getDay()
end try
かな?
エラーがなければ値が更新される。
的外れな回答ならごめん。
prop aDay: “”
としておいて、本文では
try
set aDay to getDay()
end try
かな?
エラーがなければ値が更新される。
的外れな回答ならごめん。
134103
2018/02/05(月) 00:12:51.77ID:JlLAapt60 try文も難しいなぁ。と考えていたところ、
ひょっとしてと、
if the24SekkiNum ≥ "0204" then
display dialog "立春"
とやってみたところ、”0205”で”立春”と表示されました。
一年ごとに書き変えますので、これでいいかと。
大小の判定をstringsでできたのに驚きました。
ヒントありがとうございました。
ひょっとしてと、
if the24SekkiNum ≥ "0204" then
display dialog "立春"
とやってみたところ、”0205”で”立春”と表示されました。
一年ごとに書き変えますので、これでいいかと。
大小の判定をstringsでできたのに驚きました。
ヒントありがとうございました。
135130
2018/02/05(月) 00:13:29.94ID:JlLAapt60 いけね、130でした。
136名称未設定
2018/02/09(金) 01:06:53.81ID:DJQSVNnB0 ☆ 私たち日本人の、日本国憲法を改正しましょう。現在、
衆議員と参議院の両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
衆議員と参議院の両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆
137名称未設定
2018/02/09(金) 11:51:11.78ID:SUprxS5R0 保守
138名称未設定
2018/04/01(日) 10:20:19.58ID:gXYcv3aN0 今日SierraからHigh Sierraにしんだけど、スクリプトメニューから実行した時、
アプリケーション形式じゃないとdisplay notification動作しなくなってる
アプリケーション形式じゃないとdisplay notification動作しなくなってる
139名称未設定
2018/04/01(日) 10:35:44.10ID:gXYcv3aN0 んー、2台あるうちの1台ではscptでも動作してる
ただどっちもsound nameは効いてない
ただどっちもsound nameは効いてない
140名称未設定
2018/04/01(日) 11:39:55.41ID:gXYcv3aN0 10.13.4 Combo Update入れて再起動したらscptでも通知自体は出るようになった
141名称未設定
2018/04/10(火) 21:18:44.21ID:CDZivbba0 applescript 初心者です
safari > 環境設定 > 一般 > ホームページ
のURLを設定したいのですがどうすればよいのかわかりません
every UI Elements で調べても環境設定...までしか見れなくて困ってます
safari > 環境設定 > 一般 > ホームページ
のURLを設定したいのですがどうすればよいのかわかりません
every UI Elements で調べても環境設定...までしか見れなくて困ってます
142名称未設定
2018/04/10(火) 21:53:37.79ID:EQJZ4INE0 一般を開いた状態での構造はこういう感じのようだけどSafari 11.1
tell application "System Events"
tell application process "Safari"
tell window "一般"
tell group 1
tell group 1
tell text field "ホームページ:"
value
end tell
end tell
end tell
end tell
end tell
end tell
tell application "System Events"
tell application process "Safari"
tell window "一般"
tell group 1
tell group 1
tell text field "ホームページ:"
value
end tell
end tell
end tell
end tell
end tell
end tell
143名称未設定
2018/04/10(火) 21:56:44.50ID:EQJZ4INE0 Xcode入れてそこからAccessibility Inspector使った方が楽かもよ
そのためだけに5GBとかダウンロードするのもアレだけど
そのためだけに5GBとかダウンロードするのもアレだけど
144141
2018/04/10(火) 22:17:15.31ID:CDZivbba0 皆さんありがとうございます
色々試して調べてみます
色々試して調べてみます
145名称未設定
2018/04/18(水) 08:15:41.27ID:8eLIIhnA0 HighSierra+Xcode9.3にしたところ、昔作った自作のAppleScriptObjcアプリがエラーするようになりデバッグしようとしています。
NSDictionaryの引数がどうのというエラーです。HighSierraでのバグらしく、スクリプト側の書き換えが必要だとか。
これのxcode プロジェクトを開いてAppleScriptのファイルを編集したのですが、
CleanしてBuild+runしても、症状が変わらずソースの編集が反映されない様に見えます。
久々でASOCの編集で諸々忘れているので、
どこをチェックすべきかコメント頂けますでしょうか。
NSDictionaryの引数がどうのというエラーです。HighSierraでのバグらしく、スクリプト側の書き換えが必要だとか。
これのxcode プロジェクトを開いてAppleScriptのファイルを編集したのですが、
CleanしてBuild+runしても、症状が変わらずソースの編集が反映されない様に見えます。
久々でASOCの編集で諸々忘れているので、
どこをチェックすべきかコメント頂けますでしょうか。
146名称未設定
2018/04/18(水) 10:52:46.18ID:AAas5iZN0147名称未設定
2018/04/18(水) 20:35:57.17ID:K9ubVgDS0 145です。直りました。
AppleScriptのコメント化の文法勘違いでした
単にコンパイル通ってなかっただけの様です( ´△`)
ブランクがあると厳しいな。
AppleScriptのコメント化の文法勘違いでした
単にコンパイル通ってなかっただけの様です( ´△`)
ブランクがあると厳しいな。
148名称未設定
2018/04/19(木) 00:29:35.09ID:/8p2JHg70 Project Builder&Interface Builder AppleScript―Mac OS Xアプリケーション開発技法 Mac OS Xアプリケーション開発技法
そういやこの間古本屋じゃない書店で売ってて笑った
何年前のだよ
そういやこの間古本屋じゃない書店で売ってて笑った
何年前のだよ
149名称未設定
2018/04/26(木) 04:31:37.60ID:FIwH5oI80 最近用語説明見てなかったけどいつの間にかASCII characterとASCII numberがcharacter idとidに置き換わってる
151名称未設定
2018/05/06(日) 20:37:36.24ID:ozaP+Ecf0 アプリで保存したスクリプトを
スクリプトエディタの開くダイアログで開いて修正しても
動作が修正されていないので
パッケージを開くから中のスクリプトを開くと
修正前のスクリプトのままでした
開くダイアログやドラッグドロップした時に
エディタは何を修正しているんですか?
スクリプトエディタの開くダイアログで開いて修正しても
動作が修正されていないので
パッケージを開くから中のスクリプトを開くと
修正前のスクリプトのままでした
開くダイアログやドラッグドロップした時に
エディタは何を修正しているんですか?
152名称未設定
2018/05/06(日) 20:58:50.83ID:mfbWGI0z0 コンパイルエラーにでもなってたんじゃないの
153名称未設定
2018/05/06(日) 21:27:19.64ID:ozaP+Ecf0 ありがとうございます
自分のmacが不調なんですね
よく見たらmain.scptの他にmain.rtfという
ファイルが出来てました
自分のmacが不調なんですね
よく見たらmain.scptの他にmain.rtfという
ファイルが出来てました
154名称未設定
2018/05/06(日) 21:33:58.10ID:oQzqsfAw0 それはリッチテキストやで
155名称未設定
2018/05/06(日) 22:15:04.68ID:eFrAD1aL0 試すのめんどいんで applescript main.scpt main.rtf でググったw
ちょっと古いけど https://jp.tidbits.com/TidBITS-jp-1137.html#lnk4
ちょっと古いけど https://jp.tidbits.com/TidBITS-jp-1137.html#lnk4
156名称未設定
2018/05/06(日) 22:49:51.14ID:ozaP+Ecf0157名称未設定
2018/05/07(月) 06:50:35.80ID:SSE/IZDj0 実行後に終了しない.appだと、
アプリ動作中にmain.scptを修正しても、
アプリ終了→アプリ再起動、ってやると
修正前のスクリプトに戻っちゃったような…
アプリ動作中にmain.scptを修正しても、
アプリ終了→アプリ再起動、ってやると
修正前のスクリプトに戻っちゃったような…
158名称未設定
2018/05/08(火) 03:57:17.42ID:eQvzgAXd0 戻っちゃわないような...
159名称未設定
2018/05/08(火) 09:12:08.14ID:4fXEfzZn0 どっちやねん!!!
160名称未設定
2018/05/08(火) 11:02:36.52ID:yoJVCH6G0 すいません。昔、AppleScriptのソースの中身をSpotlightで検索するためのプラグインがあったように思うのですが、まだどこかに落ちていないでしょうか?
161名称未設定
2018/05/08(火) 12:24:23.20ID:+P6mKPZa0 ググったら 「ちまちまとMacをいじるブログ | SpotlightでAppleScriptファイルの内容を ...」 があって、そこの google-toolbox-for-mac のリンク先 https://github.com/google/google-toolbox-for-mac
バージョン 1.6.0 に含まれてるようだった
バージョン 2.0.0 で構成変わったようでぱっと見にないんでわからない
最初の「ちまちまと〜」のページはググってくれ
fc2のblogだからか、リンク貼ったらNGワードで書けない
バージョン 1.6.0 に含まれてるようだった
バージョン 2.0.0 で構成変わったようでぱっと見にないんでわからない
最初の「ちまちまと〜」のページはググってくれ
fc2のblogだからか、リンク貼ったらNGワードで書けない
162名称未設定
2018/05/08(火) 21:45:22.72ID:By+Xekyi0 Wed Sep 09 2015 00:53:47 GMT+0900
に、
Kill off the Spotlight and Xcode plugins as they haven't been maintained.
で、消されたよう。そこの一つ前まで遡ればか、現在はビルドは提供されていないので、1.6の入っているのを使うだね
に、
Kill off the Spotlight and Xcode plugins as they haven't been maintained.
で、消されたよう。そこの一つ前まで遡ればか、現在はビルドは提供されていないので、1.6の入っているのを使うだね
163名称未設定
2018/05/08(火) 21:52:54.51ID:By+Xekyi0 2008/08/21 に追加されてそれから何も変更されずっていう、マジほっぽらかし(まあ、変える必要がない完成度/機能性の少なさなんだろけど)なので、
1.6のでも全く同じではあるな(ビルドしたXcodeが古いってだけで。それもあんま関係ないだろう)
1.6のでも全く同じではあるな(ビルドしたXcodeが古いってだけで。それもあんま関係ないだろう)
164名称未設定
2018/06/23(土) 20:41:34.77ID:4D4GIS+V0 Finderでフォルダの表示を切り替える行為を記録したのですが実行するとエラーが出てしまいます。
記録で書かれた内容なので違うとも思えないのですが、どのように書き直せば狙い通りに動くでしょうか?
MacOSX 10.8.5
やりたいこと:Finderでリスト表示フォルダのソート順を違う物から作成日の新しい順に切り替える
(多数のフォルダを一括でリネームしたらソート順がデフォになってしまったのをrepeatで一気に直すつもりです)
記録された内容:
tell application "Finder"
activate
set sort column of list view options of Finder window 1 to creation date column
set sort direction of column id creation date column of list view options of Finder window 1 to normal
end tell
set sort column of list viewの行で
error "Finder でエラーが起きました:ソート列にするには、その列が可視状態である必要があります。" number -10000
と言われてしまいます。
作成日は可視状態です。
よろしくお願いします。
記録で書かれた内容なので違うとも思えないのですが、どのように書き直せば狙い通りに動くでしょうか?
MacOSX 10.8.5
やりたいこと:Finderでリスト表示フォルダのソート順を違う物から作成日の新しい順に切り替える
(多数のフォルダを一括でリネームしたらソート順がデフォになってしまったのをrepeatで一気に直すつもりです)
記録された内容:
tell application "Finder"
activate
set sort column of list view options of Finder window 1 to creation date column
set sort direction of column id creation date column of list view options of Finder window 1 to normal
end tell
set sort column of list viewの行で
error "Finder でエラーが起きました:ソート列にするには、その列が可視状態である必要があります。" number -10000
と言われてしまいます。
作成日は可視状態です。
よろしくお願いします。
165名称未設定
2018/06/23(土) 21:53:57.52ID:dl6jfKi60 記述が足りない。10.8はさすがにだが同じだろう
set sort column of list view options of Finder window 1 to column creation date column of list view options of Finder window 1
(sort column に設定してもダイレクトには変わらないので、一度ウィンドウを閉じて開いてが常套手段なのかな)
set sort column of list view options of Finder window 1 to column creation date column of list view options of Finder window 1
(sort column に設定してもダイレクトには変わらないので、一度ウィンドウを閉じて開いてが常套手段なのかな)
166164
2018/06/24(日) 17:22:04.27ID:ncIqQlQ00 >>165
回答ありがとうございます。
試したところ、同じエラーが出て上手く行きませんでした・・・。
ちょっと感情的になり、そんなに言うなら(意味がないけど)入れてやるわ!って以下を先に入れたら上手く動きました。
set visible of column id creation date column of list view options of Finder window 1 to true
ASは現状をチェックしない、という事ならソレはソレで何で最初ので動かないのか腑に落ちませんが
何とか動いたので良かったです。
お手を煩わせてすみませんでした。
回答ありがとうございます。
試したところ、同じエラーが出て上手く行きませんでした・・・。
ちょっと感情的になり、そんなに言うなら(意味がないけど)入れてやるわ!って以下を先に入れたら上手く動きました。
set visible of column id creation date column of list view options of Finder window 1 to true
ASは現状をチェックしない、という事ならソレはソレで何で最初ので動かないのか腑に落ちませんが
何とか動いたので良かったです。
お手を煩わせてすみませんでした。
167名称未設定
2018/06/24(日) 19:03:16.31ID:Vmg1bVKi0 GJ!
168名称未設定
2018/07/05(木) 17:27:56.62ID:HQ3dQZRQ0 set the clipboard to "A" & return & "B"
returnは未だにCRなのか
returnは未だにCRなのか
169名称未設定
2018/07/05(木) 17:52:41.89ID:PoXKaBtJ0 そらそうだろ
170名称未設定
2018/07/05(木) 21:59:10.93ID:0Y7iJzAh0 まあ、今時改行がCRでないと困るというのは皆無だからLFにしちゃっていいとは思うけど
もよほど特殊(?)でもないとCRでもLFでもどっちでもいいようにして(必要なら適時変換して)成り立ってしまってるので変える必要もないってとこか
もよほど特殊(?)でもないとCRでもLFでもどっちでもいいようにして(必要なら適時変換して)成り立ってしまってるので変える必要もないってとこか
171名称未設定
2018/07/12(木) 00:46:26.76ID:MYN0DAfb0 最近MavericksからSierraにアップデートしたのですが、loadしたスクリプトへのtellがうまく動かないことがあります。
何か仕様が変わっていますか?
何か仕様が変わっていますか?
172名称未設定
2018/07/12(木) 03:17:52.67ID:B39vhWEN0173名称未設定
2018/07/12(木) 09:01:45.92ID:+OderRzd0 JXAからアドビのjs呼び出す事ってできないんでしょうか?
色々試したけどわかりませんでした。もしできるなら引数の渡し方も併せて教えてください。
色々試したけどわかりませんでした。もしできるなら引数の渡し方も併せて教えてください。
174名称未設定
2018/07/14(土) 09:51:12.53ID:xTJCq1RB0 POSIX file aPath と aPath as POSIX fileで挙動が違うのですが、こういうものですか?
175名称未設定
2018/07/24(火) 21:30:22.03ID:hEIqPkjW0 >>173
どのアドビのjsのことを言っているのか。とりあえずPhotoshop CS6なんぞだとして
Javascriptを動かしているエンジン(及びその環境/仕組み)が違うから直接は無理だろう。Photoshop CS6はAppleScriptに対応していて当然のようにJXAでソレを使え、その中にdo javascriptなんぞがあるようなのでそれでだろう
具体的に動く方法とかは、
http://blog.kanemu.net/2008/02/applescriptadobejavascript.html
なんぞとか、PhotoshopのAppleScriptでdo javascriptをググってJXAに書き換えればわかるだろう
>>174
違ったような気もする、違ったことがあるような気もする。が、なんだったかなあ。
POSIX file "/Users/hoge/Desktop/hoge.jsx"
/Users/hoge/Desktop/hoge.jsx" as POSIX file
いちおう、得られる結果は同じだな。
class of POSIX file "/Users/hoge/Desktop/hoge.jsx"
class of (/Users/hoge/Desktop/hoge.jsx" as POSIX file)
としても得られる結果は同じようだが、POSIX file ~ の方はMacintoshパスに書き換えられるから挙動は違うな。まあ、そんなもんということで
どのアドビのjsのことを言っているのか。とりあえずPhotoshop CS6なんぞだとして
Javascriptを動かしているエンジン(及びその環境/仕組み)が違うから直接は無理だろう。Photoshop CS6はAppleScriptに対応していて当然のようにJXAでソレを使え、その中にdo javascriptなんぞがあるようなのでそれでだろう
具体的に動く方法とかは、
http://blog.kanemu.net/2008/02/applescriptadobejavascript.html
なんぞとか、PhotoshopのAppleScriptでdo javascriptをググってJXAに書き換えればわかるだろう
>>174
違ったような気もする、違ったことがあるような気もする。が、なんだったかなあ。
POSIX file "/Users/hoge/Desktop/hoge.jsx"
/Users/hoge/Desktop/hoge.jsx" as POSIX file
いちおう、得られる結果は同じだな。
class of POSIX file "/Users/hoge/Desktop/hoge.jsx"
class of (/Users/hoge/Desktop/hoge.jsx" as POSIX file)
としても得られる結果は同じようだが、POSIX file ~ の方はMacintoshパスに書き換えられるから挙動は違うな。まあ、そんなもんということで
176173
2018/07/25(水) 09:46:58.52ID:AQuCr0Br0 >>175
基本イラレ、インデザインですが、今まで作成したjsxファイルを使ってshellやアプリ間の連携をさせたいので。
今まではASでやっていたのですが、JXAで書けるなら色々とラクなので。
以下のスクリプトを試しましたが、下2つは動作しません。
INDD = Application("Adobe InDesign CC 2018");
INDD.includeStandardAdditions = true;
INDD.displayAlert('alert("Hello from the other side")');
INDD.doJavaScript('alert("Hello from the other side")');
INDD.doScript('/Users/hoge/Desktop/hello.jsx');
基本イラレ、インデザインですが、今まで作成したjsxファイルを使ってshellやアプリ間の連携をさせたいので。
今まではASでやっていたのですが、JXAで書けるなら色々とラクなので。
以下のスクリプトを試しましたが、下2つは動作しません。
INDD = Application("Adobe InDesign CC 2018");
INDD.includeStandardAdditions = true;
INDD.displayAlert('alert("Hello from the other side")');
INDD.doJavaScript('alert("Hello from the other side")');
INDD.doScript('/Users/hoge/Desktop/hello.jsx');
177名称未設定
2018/07/25(水) 10:21:49.37ID:CBkLGNxW0 そもそも用語説明ではどう説明されてんのかと
178名称未設定
2018/07/25(水) 18:47:48.83ID:G7md3iPc0 >>176
なんだ、AppleScriptをJXAに書き換えられないってだけか
Adobeの公開しているAppleScriptドキュメントではInDesignはdo scriptのようだけど、公開しているドキュメントが古くて新しいのはdo javascriptもサポートしてんのか??
と、しょーーーーがないから試用版入れてみたら... InDesignにdo javascriptなんてないやんっ!
そもそもAppleScriptでできてたやっていたのかとすら疑わしいとすら思うぞ、>>177の言うとおり用語説明にちゃんと書いてあるやんだし
用語説明がわからない(わからいづらいのはわかる)、AppleScriptをJXAに書き換えるのがわからない(わかりづらいのはわかる)けどな
なんだ、AppleScriptをJXAに書き換えられないってだけか
Adobeの公開しているAppleScriptドキュメントではInDesignはdo scriptのようだけど、公開しているドキュメントが古くて新しいのはdo javascriptもサポートしてんのか??
と、しょーーーーがないから試用版入れてみたら... InDesignにdo javascriptなんてないやんっ!
そもそもAppleScriptでできてたやっていたのかとすら疑わしいとすら思うぞ、>>177の言うとおり用語説明にちゃんと書いてあるやんだし
用語説明がわからない(わからいづらいのはわかる)、AppleScriptをJXAに書き換えるのがわからない(わかりづらいのはわかる)けどな
179名称未設定
2018/07/25(水) 19:03:15.38ID:WKdQ5Y7+0 何がしょうがないのかよくわからない
180名称未設定
2018/07/25(水) 19:14:57.66ID:G7md3iPc0 最後力尽きてた。ってのならわかるけどな
>>176
ググっての do script には、後ろに language javascript ってあって値がないオプション?かと思ったら、javascript が/の部分が値やん
INDD.doScript( theScript, { language: "javascript" } );
で、動くだろう、動いた。theScript は javascript文字列でもファイルパス文字列でも
とりあえず language javascript ということにしとけw
>>176
ググっての do script には、後ろに language javascript ってあって値がないオプション?かと思ったら、javascript が/の部分が値やん
INDD.doScript( theScript, { language: "javascript" } );
で、動くだろう、動いた。theScript は javascript文字列でもファイルパス文字列でも
とりあえず language javascript ということにしとけw
182名称未設定
2018/07/25(水) 19:19:47.42ID:3O+dxvTs0 日本語でおk
183名称未設定
2018/07/25(水) 19:25:41.74ID:G7md3iPc0 小説ぐらい読もうな。そしたら読めるようになると思うぞwたぶん
ラノベじゃなくてな
ラノベじゃなくてな
184名称未設定
2018/07/25(水) 19:36:40.52ID:3O+dxvTs0 アスペの文章は理解出来ない
185名称未設定
2018/07/25(水) 19:41:03.31ID:G7md3iPc0 スレ内容に関係ないことだけに沸くねえ。関係ないというか無内容のレスをって、いろいろ可哀想な人ってのだけはわかるけどさ
186173
2018/07/26(木) 10:39:52.37ID:caNfuuYP0 >>178
わざわざ試用版まで入れてありがとうございます。
用語説明の見方(使い方)は全然わかっていません。ネットでサンプルを探して目的にあった書き方を探してる感じです。
INDD.doScript( theScript, { language: "javascript" } );で動きました。
しかし、今度は引数の渡し方がわかりません。
下の様な書き方では駄目でした。parametersをargumentsにしても同じでした。
INDD.doScript(Path('/Users/hage/Desktop/hello.jsx'), { language: "javascript",parameters:[1,2]});
わざわざ試用版まで入れてありがとうございます。
用語説明の見方(使い方)は全然わかっていません。ネットでサンプルを探して目的にあった書き方を探してる感じです。
INDD.doScript( theScript, { language: "javascript" } );で動きました。
しかし、今度は引数の渡し方がわかりません。
下の様な書き方では駄目でした。parametersをargumentsにしても同じでした。
INDD.doScript(Path('/Users/hage/Desktop/hello.jsx'), { language: "javascript",parameters:[1,2]});
187名称未設定
2018/07/26(木) 11:44:52.58ID:fO/SjuSt0 なんかさあ、当てずっぽうに書いて動かないだ駄目だ繰り返してるだけじゃん
もっと事実を調べなさいよ
もっと事実を調べなさいよ
188名称未設定
2018/07/26(木) 16:03:48.28ID:skM+7rGt0 >>186
>用語説明の見方(使い方)は全然わかっていません
まあ、わからないでもない
>ネットでサンプルを探して目的にあった書き方を探してる
まあ、間違ってはいない。
が、
>今度は引数の渡し方がわかりません...parameters:
なんでそうなる。どうして、用語説明の見方(使い方)は全然わかってないからネットでサンプルを探して目的にあった書き方を探して、から、用語説明の見方をわかる努力にならないのか
だから、>>187と言われるんだよ。俺も全く同じに思う
用語説明にパラメータも載ってるでしょ。parameters:なんてないでしょ。InDesignの用語説明のはJavascript表記が出ないようだけど、AppleScriptからJavascript表記にはほぼ機械的にだよ。さあ、用語説明を見てみよう&これから用語説明をまずはみよう
>用語説明の見方(使い方)は全然わかっていません
まあ、わからないでもない
>ネットでサンプルを探して目的にあった書き方を探してる
まあ、間違ってはいない。
が、
>今度は引数の渡し方がわかりません...parameters:
なんでそうなる。どうして、用語説明の見方(使い方)は全然わかってないからネットでサンプルを探して目的にあった書き方を探して、から、用語説明の見方をわかる努力にならないのか
だから、>>187と言われるんだよ。俺も全く同じに思う
用語説明にパラメータも載ってるでしょ。parameters:なんてないでしょ。InDesignの用語説明のはJavascript表記が出ないようだけど、AppleScriptからJavascript表記にはほぼ機械的にだよ。さあ、用語説明を見てみよう&これから用語説明をまずはみよう
189173
2018/07/26(木) 17:18:35.05ID:caNfuuYP0 用語説明を見てwithArgumentsとしてみましたが、やっぱり駄目です。
書き方も合っているかわからないので2通り試してみましたが駄目でした。
NDD.doScript(Path('/Users/hage/Desktop/hello.jsx'), {language: "javascript",withArguments:[1,2]});
INDD.doScript(Path('/Users/hage/Desktop/hello.jsx'), {language: "javascript"},{withArguments:[1,2]});
書き方も合っているかわからないので2通り試してみましたが駄目でした。
NDD.doScript(Path('/Users/hage/Desktop/hello.jsx'), {language: "javascript",withArguments:[1,2]});
INDD.doScript(Path('/Users/hage/Desktop/hello.jsx'), {language: "javascript"},{withArguments:[1,2]});
190名称未設定
2018/07/26(木) 17:45:37.71ID:skM+7rGt0 /Users/hage/Desktop/hello.jsx
の受け側がちゃんとしてんの?InDesign消したからめんどくさいなめんどくさいなめんどくさいなあw まあ、見てみるよ
の受け側がちゃんとしてんの?InDesign消したからめんどくさいなめんどくさいなめんどくさいなあw まあ、見てみるよ
191名称未設定
2018/07/26(木) 18:23:40.12ID:skM+7rGt0 一番目のでええやん...それじゃAppleScriptで同じように書いても駄目って話だろう
もー、>>187のまんまやんっ
site:www.adobe.com InDesign AppleScript
で、ググって、ドキュメントを読めっ!(日本語訳ドキュメントがあるし、目的のとこがとてもみつけやすいだろに)
ドキュメント読んでもとかドキュメントどこにとかならわかるが、そこを省いてってありえないぞ
(まだ付き合ってもいいけど、ちゃんと終わりなら終わりって言ってね。InDesign消すから。無応答だと1日後に消す)
もー、>>187のまんまやんっ
site:www.adobe.com InDesign AppleScript
で、ググって、ドキュメントを読めっ!(日本語訳ドキュメントがあるし、目的のとこがとてもみつけやすいだろに)
ドキュメント読んでもとかドキュメントどこにとかならわかるが、そこを省いてってありえないぞ
(まだ付き合ってもいいけど、ちゃんと終わりなら終わりって言ってね。InDesign消すから。無応答だと1日後に消す)
192名称未設定
2018/07/27(金) 00:14:05.40ID:wnC7e1nR0 ハイシエラでプレビューのHEIF変換機能を利用してシステムフォトライブラリのJPGとPNGをHEIF化出来ますか?
193名称未設定
2018/07/27(金) 01:15:30.85ID:03yX7pFC0 プレビューってAppleScriptに対応してないだろ
Automatorのアクションに何か用意してあるかもしれないけど
Automatorのアクションに何か用意してあるかもしれないけど
194名称未設定
2018/07/27(金) 08:08:35.51ID:y2NdpSAD0 http://www.macotakara.jp/blog/mac_os_x/entry-34719.html
らしい。sipsコマンドも変換はまだらしい。クリックとかSystem Eventで地道にPreviewを操作すればできないことはないかなあ
https://eclecticlight.co/2017/10/20/converttoheif-a-contributed-script-and-automator-workflow-to-convert-jpeg-images-to-heif/comment-page-1/
こんなのあった。まるっきりただのシェルスクリプトだけだが
変換なんぞffmpegを使ってる。必要なコマンド(バイナリのffmpegとwriterapp/シェルスクリプトのconvertToHEIF)はWorkflow(パッケージ)に同梱されているのでまんまWorkflowとして動くのだろう
らしい。sipsコマンドも変換はまだらしい。クリックとかSystem Eventで地道にPreviewを操作すればできないことはないかなあ
https://eclecticlight.co/2017/10/20/converttoheif-a-contributed-script-and-automator-workflow-to-convert-jpeg-images-to-heif/comment-page-1/
こんなのあった。まるっきりただのシェルスクリプトだけだが
変換なんぞffmpegを使ってる。必要なコマンド(バイナリのffmpegとwriterapp/シェルスクリプトのconvertToHEIF)はWorkflow(パッケージ)に同梱されているのでまんまWorkflowとして動くのだろう
195173
2018/07/27(金) 09:04:33.81ID:GlNa7yiZ0 >>191
すみません。パスがダミーのままでした。(;^_^A
できました。何度もありがとうございました。助かりました。
おかげでjxaも少し理解しました。asをjsに置き換えて使ってる感じなんですね。
すみません。パスがダミーのままでした。(;^_^A
できました。何度もありがとうございました。助かりました。
おかげでjxaも少し理解しました。asをjsに置き換えて使ってる感じなんですね。
196名称未設定
2018/08/06(月) 01:13:49.55ID:/TKVSQZZ0 小人よりこっちなので
-- AppleScript
set theResult to {}
set savedDemimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to "/"
repeat with theURL in input
set theItems to every text item of theURL
set theResult to theResult & ((items 4 thru -1 of theItems) as string)
end repeat
set AppleScript's text item delimiters to savedDemimiters
return theResult
-- AppleScript
set theResult to {}
set savedDemimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to "/"
repeat with theURL in input
set theItems to every text item of theURL
set theResult to theResult & ((items 4 thru -1 of theItems) as string)
end repeat
set AppleScript's text item delimiters to savedDemimiters
return theResult
197名称未設定
2018/08/06(月) 01:14:31.49ID:/TKVSQZZ0 -- AppleScriptObjC
use framework "Foundation"
set theResult to {}
set regex to current application's NSRegularExpression's regularExpressionWithPattern:"^[^/]*//[^/]*/" options:0 |error|:(missing value)
repeat with theURL in input
set theResult to theResult & {(regex's stringByReplacingMatchesInString:theURL options:0 range:{location:0, |length|:(length of theURL)} withTemplate:"") as text}
end repeat
return theResult
use framework "Foundation"
set theResult to {}
set regex to current application's NSRegularExpression's regularExpressionWithPattern:"^[^/]*//[^/]*/" options:0 |error|:(missing value)
repeat with theURL in input
set theResult to theResult & {(regex's stringByReplacingMatchesInString:theURL options:0 range:{location:0, |length|:(length of theURL)} withTemplate:"") as text}
end repeat
return theResult
198名称未設定
2018/08/06(月) 01:15:15.41ID:/TKVSQZZ0 // JXA ObjC
theResult = [];
regex = $.NSRegularExpression.regularExpressionWithPatternOptionsError('^[^/]*//[^/]*/', 0, $());
input.forEach(function ( theURL ) {
theResult.push(regex.stringByReplacingMatchesInStringOptionsRangeWithTemplate(theURL, 0, $.NSMakeRange(0, theURL.length), '').js);
});
return theResult;
theResult = [];
regex = $.NSRegularExpression.regularExpressionWithPatternOptionsError('^[^/]*//[^/]*/', 0, $());
input.forEach(function ( theURL ) {
theResult.push(regex.stringByReplacingMatchesInStringOptionsRangeWithTemplate(theURL, 0, $.NSMakeRange(0, theURL.length), '').js);
});
return theResult;
199名称未設定
2018/08/06(月) 01:15:40.96ID:/TKVSQZZ0 // JXA っ(ていうかただのJavaScript)
theResult = [];
input.forEach(function ( theURL ) {
theResult.push(theURL.replace(/^[^/]*¥/¥/[^/]*¥//, ''));
});
return theResult
theResult = [];
input.forEach(function ( theURL ) {
theResult.push(theURL.replace(/^[^/]*¥/¥/[^/]*¥//, ''));
});
return theResult
200名称未設定
2018/08/06(月) 17:22:44.19ID:D9/5MFlz0 本人不在でやっても仕方ないと思うが
201名称未設定
2018/08/06(月) 18:35:19.86ID:/TKVSQZZ0 元に本人はいないからw 単に「発表」的なです
202名称未設定
2018/08/09(木) 14:46:28.17ID:KT1Ue3i80 BathyScaphe向け、画像をimgurに上げるスクリプト
macOS Sierra 10.12.6で作成したもの
・~/Library/Application Support/BathyScaphe/Scripts/ に置く
・実行するとファイルを開くダイアログが出るので、画像を一つ選ぶ
・書き込みウインドウが前面に出ていれば、画像のリンクをテキストの最後に付ける
なければダイアログにリンクを表示する
・上げた画像を削除するようなら、ターミナルでたとえば
log show --info --style syslog --predicate 'eventMessage contains "X DELETE"' --last 1d
して表示されるcurl以降、行末の ' までをそのまま実行する
== スクリプトここから
-- ref. https://apidocs.imgur.com
property apiUrl : "https://api.imgur.com/3/image"
property authHead : " -H 'Authorization: Client-ID cc2c5a0c5e345d1'"
use framework "Foundation"
use scripting additions
set imgUrl to ""
set imgFile to choose file of type {"public.image"} default location (path to desktop) without multiple selections allowed
set {imgData, |error|} to current application's NSData's dataWithContentsOfFile:imgFile options:0 |error|:(reference)
if imgData is missing value then
displayError(|error|'s localizedDescription as string)
end if
set base64Data to (imgData's base64EncodedStringWithOptions:0) as string
try
set respJson to do shell script "curl " & apiUrl & authHead & " -F image=" & quoted form of base64Data
set respRec to run script "JSON.parse(" & quoted form of respJson & ");" in "JavaScript"
on error |error|
displayError(|error|)
end try
macOS Sierra 10.12.6で作成したもの
・~/Library/Application Support/BathyScaphe/Scripts/ に置く
・実行するとファイルを開くダイアログが出るので、画像を一つ選ぶ
・書き込みウインドウが前面に出ていれば、画像のリンクをテキストの最後に付ける
なければダイアログにリンクを表示する
・上げた画像を削除するようなら、ターミナルでたとえば
log show --info --style syslog --predicate 'eventMessage contains "X DELETE"' --last 1d
して表示されるcurl以降、行末の ' までをそのまま実行する
== スクリプトここから
-- ref. https://apidocs.imgur.com
property apiUrl : "https://api.imgur.com/3/image"
property authHead : " -H 'Authorization: Client-ID cc2c5a0c5e345d1'"
use framework "Foundation"
use scripting additions
set imgUrl to ""
set imgFile to choose file of type {"public.image"} default location (path to desktop) without multiple selections allowed
set {imgData, |error|} to current application's NSData's dataWithContentsOfFile:imgFile options:0 |error|:(reference)
if imgData is missing value then
displayError(|error|'s localizedDescription as string)
end if
set base64Data to (imgData's base64EncodedStringWithOptions:0) as string
try
set respJson to do shell script "curl " & apiUrl & authHead & " -F image=" & quoted form of base64Data
set respRec to run script "JSON.parse(" & quoted form of respJson & ");" in "JavaScript"
on error |error|
displayError(|error|)
end try
203202のつづき
2018/08/09(木) 14:46:58.04ID:KT1Ue3i80 if success of respRec then
set imgUrl to link of |data| of respRec
set imgDelUrl to apiUrl & "/" & deleteHash of |data| of respRec
current application's NSLog("image uploaded to " & imgUrl & "; to delete, do curl -X DELETE " & imgDelUrl & authHead)
else
displayError(|error| of |data| of respRec)
end if
tell application "BathyScaphe"
if (count of documents) is not 0 and class of front document is reply document then
set text of front document to text of front document & imgUrl
return
end if
end tell
display dialog imgUrl buttons {"Cancel", "Copy to Clipboard"} default button 2 cancel button 1
set the clipboard to imgUrl
on displayError(|error|)
display dialog |error| buttons {"OK"} default button 1 cancel button 1
end displayError
== スクリプトここまで
set imgUrl to link of |data| of respRec
set imgDelUrl to apiUrl & "/" & deleteHash of |data| of respRec
current application's NSLog("image uploaded to " & imgUrl & "; to delete, do curl -X DELETE " & imgDelUrl & authHead)
else
displayError(|error| of |data| of respRec)
end if
tell application "BathyScaphe"
if (count of documents) is not 0 and class of front document is reply document then
set text of front document to text of front document & imgUrl
return
end if
end tell
display dialog imgUrl buttons {"Cancel", "Copy to Clipboard"} default button 2 cancel button 1
set the clipboard to imgUrl
on displayError(|error|)
display dialog |error| buttons {"OK"} default button 1 cancel button 1
end displayError
== スクリプトここまで
204名称未設定
2018/08/09(木) 15:06:34.83ID:vFbNol+B0205名称未設定
2018/08/09(木) 15:07:15.92ID:vFbNol+B0 おーすげえ!こんなの書ける人尊敬する!
206名称未設定
2018/08/09(木) 18:01:53.48ID:mufzrc0b0 すげえ!
おっぱい
おっぱい
207名称未設定
2018/08/09(木) 20:18:39.12ID:413UzQ5n0 もういいやらしいけどw、
-[NSAppleEventDescriptor getFileSystemRepresentation:maxLength:]: unrecognized selector sent to instance 0x610000426ba0
なんのこっちゃだが、NSData's dataWithContentsOfFile: でかな?ググったところでは
古いのだとimgFile を適正に POSIX Path な NSString に変換してない/できないとかかなあ
set {imgData, |error|} to current application's NSData's dataWithContentsOfFile:(POSIX path of imgFile) options:0 |error|:(reference)
でとか
-[NSAppleEventDescriptor getFileSystemRepresentation:maxLength:]: unrecognized selector sent to instance 0x610000426ba0
なんのこっちゃだが、NSData's dataWithContentsOfFile: でかな?ググったところでは
古いのだとimgFile を適正に POSIX Path な NSString に変換してない/できないとかかなあ
set {imgData, |error|} to current application's NSData's dataWithContentsOfFile:(POSIX path of imgFile) options:0 |error|:(reference)
でとか
208202
2018/08/10(金) 10:02:41.65ID:2JR4DTyh0 修正ありがとう
10.10を復元して、現象とその修正後の動作OKを確認しましたわ
10.10を復元して、現象とその修正後の動作OKを確認しましたわ
210名称未設定
2018/08/10(金) 10:55:36.98ID:soT9aK2E0 10.10だとエラーになってたから
211202, 208
2018/08/10(金) 10:57:21.03ID:2JR4DTyh0 あー、IDが変わってしまったw
214名称未設定
2018/08/10(金) 18:04:22.41ID:SWETQyVl0 500kくらいのでエラるので、なんでかなーと思ったら引数が大きすぎると
じゃ、標準入力で受け取るように&だったらbase64化はコマンドでかなと思ったら、curlはbase64化もしてくれるだった
set {imgData, |error|} 〜
から
set respJson to do shell script "curl "
を
set respJson to do shell script "curl " & apiUrl & authHead & " -F image=@" & quoted form of (POSIX path of imgFile)
もしくは
set respJson to do shell script "cat " & quoted form of (POSIX path of imgFile) & " | curl " & apiUrl & authHead & " -F image=@-"
でいいみたい
じゃ、標準入力で受け取るように&だったらbase64化はコマンドでかなと思ったら、curlはbase64化もしてくれるだった
set {imgData, |error|} 〜
から
set respJson to do shell script "curl "
を
set respJson to do shell script "curl " & apiUrl & authHead & " -F image=@" & quoted form of (POSIX path of imgFile)
もしくは
set respJson to do shell script "cat " & quoted form of (POSIX path of imgFile) & " | curl " & apiUrl & authHead & " -F image=@-"
でいいみたい
215名称未設定
2018/08/10(金) 21:44:52.39ID:t4AHFPON0 もう、こんなのはAppleScriptじゃないよ。
216名称未設定
2018/08/10(金) 23:23:47.26ID:UadeuJbL0 AppleScriptObjC
名前にAppleScript付いてるけど全然AppleScriptじゃないし
名前にAppleScript付いてるけど全然AppleScriptじゃないし
217名称未設定
2018/08/11(土) 11:50:13.71ID:Q2Fo4sRd0 俺の知らないことだからってだけでよう文句言えるw AppleScriptだよ、どう見たって
Base64を作らなくてもいいならその嫌ってるObjCのとこなんて無いじゃん。唯一NSLogが残るくらいか。「AppleScriptじゃない」と言えるほど純粋AppleScriptをすらわかってなさげ
Base64を作らなくてもいいならその嫌ってるObjCのとこなんて無いじゃん。唯一NSLogが残るくらいか。「AppleScriptじゃない」と言えるほど純粋AppleScriptをすらわかってなさげ
218名称未設定
2018/08/11(土) 13:27:25.65ID:2/YlJDew0 いい年して顔真っ赤にしながらレスなんて恥ずかしいよ
219名称未設定
2018/08/11(土) 17:14:05.05ID:iBkCFSt30220名称未設定
2018/08/11(土) 17:34:21.50ID:Q2Fo4sRd0 >>219
何を言いたいのかわからないなあ。それじゃ、do shell scriptでシェルスクリプトも書いちゃダメなの?do javascript でJavaScript書いちゃダメなの?同じだよ。純粋AppleScriptでできないからソレを使うだけけど、AppleScriptはAppleScript、メインは
超高級言語wだから、current application's とかくっそめんどくさかったりするから、やっぱそこもAppleScriptだろう
何を言いたいのかわからないなあ。それじゃ、do shell scriptでシェルスクリプトも書いちゃダメなの?do javascript でJavaScript書いちゃダメなの?同じだよ。純粋AppleScriptでできないからソレを使うだけけど、AppleScriptはAppleScript、メインは
超高級言語wだから、current application's とかくっそめんどくさかったりするから、やっぱそこもAppleScriptだろう
221名称未設定
2018/08/11(土) 17:53:11.47ID:Q2Fo4sRd0 そんな唐突にAppleScriptじゃないとか、AppleScriptは超高級言語でそういう記法じゃない(?)とか言える感覚が全くわからんので、具体的に
例えば、
set {imgData, |error|} to current application's NSData's dataWithContentsOfFile:imgFile options:0 |error|:(reference)
が
set imgData to current application's NSData's dataWithContentsOfFile_options_error( imgFile, 0, |error| )
もしくは
set imgData to dataWithContentsOfFile_options_error( imgFile, 0, |error| ) of NSData of current application
だったらいいの?全然変わらんと思うけど超高級言語云々では。てかObjective-C記法の方がその超高級言語に近いんじゃないかとさえ思えるけど
例えば、
set {imgData, |error|} to current application's NSData's dataWithContentsOfFile:imgFile options:0 |error|:(reference)
が
set imgData to current application's NSData's dataWithContentsOfFile_options_error( imgFile, 0, |error| )
もしくは
set imgData to dataWithContentsOfFile_options_error( imgFile, 0, |error| ) of NSData of current application
だったらいいの?全然変わらんと思うけど超高級言語云々では。てかObjective-C記法の方がその超高級言語に近いんじゃないかとさえ思えるけど
223名称未設定
2018/08/11(土) 17:54:56.45ID:Q2Fo4sRd0 >>222
いや、その美意識で同じことを書いてみてよ。美意識...よくまあなんていうか...正直キモいのでわからなくていいです
いや、その美意識で同じことを書いてみてよ。美意識...よくまあなんていうか...正直キモいのでわからなくていいです
224名称未設定
2018/08/11(土) 19:46:41.17ID:n+eFXxpk0 別人だけど、ジジイもとい初期のASからいじってたせいか、何となくどちらの言っていることも分かる気がする。
自然言語記述は、最初の頃は頑張ってたけど、途中で挫折した感じだったなあって笑
自然言語記述は、最初の頃は頑張ってたけど、途中で挫折した感じだったなあって笑
225名称未設定
2018/08/11(土) 19:56:04.30ID:IuAs9oMp0 AppleScript好きだからあえて言うけど言語の試用が時代にあってないよね
扱える桁数とかさ
扱える桁数とかさ
226名称未設定
2018/08/11(土) 19:56:50.13ID:IuAs9oMp0 仕様ね
Appleに改善しようという気が全くない
Appleに改善しようという気が全くない
227名称未設定
2018/08/11(土) 20:25:17.52ID:Q2Fo4sRd0 オリジナルは「使える」ので自分用ライブラリにしてた。できる限り元のまま(敬意を込めて)でとしたが、まあ全く原型は無くなってしまったw
https://paste2.org/ZCaVK6vt
File Type UTI を比較するのがない(探せない)ので
do shell script でエラー文字列が得られない(探せない)ので
curlで得られるのがそれなら、じゃ、これでparseでええやん
ってことで、全文AppleScriptObjCにしたぞw
よくわからん美意識とかどうでもいいー、それも具体性ゼロなんてクソだっw
AppleScriptからCocoa呼べるなんて最高じゃん、なんでもできそうで。まあ、AppleScriptの記法はめんどくさいからJXAの方がと傾いているが、それでもAppleScriptも好き
https://paste2.org/ZCaVK6vt
File Type UTI を比較するのがない(探せない)ので
do shell script でエラー文字列が得られない(探せない)ので
curlで得られるのがそれなら、じゃ、これでparseでええやん
ってことで、全文AppleScriptObjCにしたぞw
よくわからん美意識とかどうでもいいー、それも具体性ゼロなんてクソだっw
AppleScriptからCocoa呼べるなんて最高じゃん、なんでもできそうで。まあ、AppleScriptの記法はめんどくさいからJXAの方がと傾いているが、それでもAppleScriptも好き
228名称未設定
2018/08/11(土) 20:31:32.83ID:Nx8nl+xo0 綺麗に書けるならそれに越したことはないけど純ASだけでなんでもできるわけじゃないんだからしゃーない
「ASObjCだと読みやすいAS的記法からだいぶ変わっちゃうね」ってだけの話でしょ
文句つけてるor噛みついてるような発言に取れなくもないけどそんなイライラしなさんな
AppleはもうASに力入れてないでしょ
むしろいつ廃止しようか様子見してるぐらいじゃない?
個人的にはSwiftコード実行できるにして欲しいけど
do shell script "printf 'print(¥"Hello¥")' | swift"
で呼べなくもないけど立ち上がりが遅いし出力に余計なのが含まれるし使えるとは言い難い
「ASObjCだと読みやすいAS的記法からだいぶ変わっちゃうね」ってだけの話でしょ
文句つけてるor噛みついてるような発言に取れなくもないけどそんなイライラしなさんな
AppleはもうASに力入れてないでしょ
むしろいつ廃止しようか様子見してるぐらいじゃない?
個人的にはSwiftコード実行できるにして欲しいけど
do shell script "printf 'print(¥"Hello¥")' | swift"
で呼べなくもないけど立ち上がりが遅いし出力に余計なのが含まれるし使えるとは言い難い
229名称未設定
2018/08/11(土) 20:37:48.56ID:Q2Fo4sRd0230名称未設定
2018/08/11(土) 20:52:39.39ID:Nx8nl+xo0 JXAすら「全然使われてねえ作るんじゃなかった」って思ってそうな気もするが
set imgData to contents of imgFile
set base64Data to base64 of imgData
こんなふうに、他の言語のメソッド呼び出してる感なく書ければいいなってことじゃないのかね
set imgData to contents of imgFile
set base64Data to base64 of imgData
こんなふうに、他の言語のメソッド呼び出してる感なく書ければいいなってことじゃないのかね
231名称未設定
2018/08/11(土) 21:00:51.55ID:Q2Fo4sRd0 ググったら、AppleScriptの頃より使われている気がするけどね。さすがJavaScriptの方を元々使ってた人が多いのかと思ってたけど
それは「言語」としてサポートしていたらのでしょ。てか、そうだとしたら、サブルーチンどうしてんだろ?AppleScriptらしくないと嫌な思いしながら書いて使ってるのかなあ??
OSAXでもやればできるんじゃないのかなあ。OSAXはよく知らんが。ナイナイものねだりというか、文句言うくらいだったらOSAX作れよって感じかな。んなの作らなくても使えるだけで最高だけどな、俺は
なんか勝手な思いで勝手に文句だけ言っているだけにしか見えないなあ
それは「言語」としてサポートしていたらのでしょ。てか、そうだとしたら、サブルーチンどうしてんだろ?AppleScriptらしくないと嫌な思いしながら書いて使ってるのかなあ??
OSAXでもやればできるんじゃないのかなあ。OSAXはよく知らんが。ナイナイものねだりというか、文句言うくらいだったらOSAX作れよって感じかな。んなの作らなくても使えるだけで最高だけどな、俺は
なんか勝手な思いで勝手に文句だけ言っているだけにしか見えないなあ
232名称未設定
2018/08/11(土) 21:37:13.19ID:oXbzerTj0 日本語AppleScriptの時代を知っているが、あれから比べたら全く別の言語みたいなもの。
別の言語を習得するのはもうきつい年代になった。
別の言語を習得するのはもうきつい年代になった。
233名称未設定
2018/08/11(土) 21:56:31.04ID:DWdhQaCx0 >>231
横から突然すみません
お詳しそうなので、宜しければ別スレで解決できなかった質問にご回答いただきたいのですが、
iMacに外部ディスプレイを繋げていて、そのディスプレイでWEBブラウザ経由で映画を観る際に
iMac本体側のディスプレイをOFFにしたいのですがどうやれば良いでしょうか?
真っ黒な画面だと明るさがあるので駄目なんです
AppleScriptは全くの初心者ですが‥‥
iMac Late 2015, Sierraです
外部ディスプレイはminiDPで繋いでます
横から突然すみません
お詳しそうなので、宜しければ別スレで解決できなかった質問にご回答いただきたいのですが、
iMacに外部ディスプレイを繋げていて、そのディスプレイでWEBブラウザ経由で映画を観る際に
iMac本体側のディスプレイをOFFにしたいのですがどうやれば良いでしょうか?
真っ黒な画面だと明るさがあるので駄目なんです
AppleScriptは全くの初心者ですが‥‥
iMac Late 2015, Sierraです
外部ディスプレイはminiDPで繋いでます
234名称未設定
2018/08/11(土) 22:00:59.85ID:IuAs9oMp0 ■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
235名称未設定
2018/08/11(土) 22:01:06.60ID:Q2Fo4sRd0 なんか変なの来た...w
236名称未設定
2018/08/11(土) 22:02:19.20ID:IuAs9oMp0 草生やして楽しそうだね
237名称未設定
2018/08/11(土) 22:02:43.71ID:Q2Fo4sRd0 楽しいていうか困惑
238名称未設定
2018/08/11(土) 22:04:03.61ID:IuAs9oMp0 なら生やすの止めた方がいいね
239名称未設定
2018/08/11(土) 22:05:15.03ID:Q2Fo4sRd0 そんなに気にすんなw
240名称未設定
2018/08/11(土) 22:07:16.37ID:IuAs9oMp0 意味なく草生やすな
ウザいので
ウザいので
241名称未設定
2018/08/11(土) 22:08:08.54ID:Q2Fo4sRd0 気にしすぎw
242名称未設定
2018/08/11(土) 22:09:50.93ID:Q2Fo4sRd0 そんなんじゃすぐに煽られるような5chでどうすんねんって思うけどな
それとそんな細かいことうだうだとお前はお母さんかっていうw
それとそんな細かいことうだうだとお前はお母さんかっていうw
243名称未設定
2018/08/11(土) 22:10:08.81ID:IuAs9oMp0 ID: :Q2Fo4sRd0
これで説得力ないことがよくわかったね
関わるのもウザいのと同じことだからでこれで最後
これで説得力ないことがよくわかったね
関わるのもウザいのと同じことだからでこれで最後
244名称未設定
2018/08/11(土) 22:10:56.04ID:Q2Fo4sRd0 自分の文句には説得力があったらしいw
245名称未設定
2018/08/12(日) 08:54:08.42ID:hC36oMXg0 AppleScriptに期待し過ぎじゃないの知らないからかもしれないけど
https://egg.5ch.net/test/read.cgi/mac/1485917995/724-
https://egg.5ch.net/test/read.cgi/mac/1485917995/724-
246233
2018/08/12(日) 11:38:29.52ID:2zZ9jlN20247名称未設定
2018/08/12(日) 17:35:05.02ID:NuNpmwk20 教える側がアスペだと教わる側も大変だ
248名称未設定
2018/08/13(月) 10:16:03.52ID:UTOw6PAr0 お前が教えてやれよw
249名称未設定
2018/08/13(月) 11:19:21.24ID:XeQ2t/PX0250名称未設定
2018/08/13(月) 14:56:07.52ID:kBD5kebK0 ks
251名称未設定
2018/08/15(水) 12:05:21.71ID:10A72j8V0 Finder上のフォルダに対してdo shell script でxxx.pyを実行するスクリプトを作ってFinderのツールバーに登録して実行してみると、
最前面がFinderからPythonのスクリプトに一旦切り替ってそのあとFinderに戻りました。
機能しているので問題ないのですが、Finderが最前面のままで処理できるような書き方ってあったりしますか?
よろしくお願いします。
最前面がFinderからPythonのスクリプトに一旦切り替ってそのあとFinderに戻りました。
機能しているので問題ないのですが、Finderが最前面のままで処理できるような書き方ってあったりしますか?
よろしくお願いします。
252名称未設定
2018/08/15(水) 13:45:52.02ID:+4Zl7rCP0 アプリ形式にしてるなら、Info.plistに
<key>LSUIElement</key>
<true/>
加えればいけたぽいけど
<key>LSUIElement</key>
<true/>
加えればいけたぽいけど
254名称未設定
2018/10/02(火) 04:21:25.77ID:+tE6D5jE0 俺ブックマークMojave注意事項
https://latenightsw.com/mojave-brings-in-big-security-changes/
https://latenightsw.com/mojave-brings-in-big-security-changes/
255名称未設定
2018/10/16(火) 10:38:59.02ID:3t2jis0j0 意外と若かった
https://twitter.com/cdespinosa/status/1047880387349770241
On this day 25 years ago, Apple introduced AppleScript, a system and application automation system and language.
It’s still shipping in Mojave and is one of the oldest code bases in continual use in macOS. Happy birthday, AppleScript!
https://twitter.com/5chan_nel (5ch newer account)
https://twitter.com/cdespinosa/status/1047880387349770241
On this day 25 years ago, Apple introduced AppleScript, a system and application automation system and language.
It’s still shipping in Mojave and is one of the oldest code bases in continual use in macOS. Happy birthday, AppleScript!
https://twitter.com/5chan_nel (5ch newer account)
256名称未設定
2018/10/20(土) 16:08:12.73ID:0cFAYEEo0 ここまで長かったなあ。
日本語AppleScriptから今のCocoaベースのスクリプトは想像もつかなかった。
日本語AppleScriptから今のCocoaベースのスクリプトは想像もつかなかった。
257名称未設定
2018/10/21(日) 21:45:44.85ID:TPOtjsO20 > 在日の親は、子供を朝鮮幼稚園・朝鮮学校に入れたいっていうのが多いのよ。
> 日本人からすると、なんでだろうって思うけど、日本人の学校では、民族の誇りを持った教育がしてもらえないんだそうだ。
> よく分からないけど、済州島の流刑者の白丁が大阪に密入国して住み着いたじゃ誇りが持てないけど、
> 日本人に強制連行された被害者なら誇りが持てる、とかそういう事かな??
>
> 市原市の能満は昔から市街化調整区域で、新規の建物は造れないことになっている。
> そのため土地が安く、日本の法律を無視した在日が、次々と移り住んできた。
> そこで問題になったのが、朝鮮学校だ。なかなか許可が下りず、一番近くても千葉市にしかない。
> そこで在日居住区の能満内にあった、能満幼稚園・市原小・市原中・緑高の保育士や教師を、朝鮮化する事を考えた。
> 今では在日幼稚園の保育士は全て朝鮮帰化人で、在日の父兄からの絶大な支持を受けている。
> 遠くからでも、わざわざ在日幼稚園に入園させたいという在日の親は、後を絶たない。
> この在日幼稚園卒園者はほぼ朝鮮系の帰化人と在日だ。
> 日本人からすると、なんでだろうって思うけど、日本人の学校では、民族の誇りを持った教育がしてもらえないんだそうだ。
> よく分からないけど、済州島の流刑者の白丁が大阪に密入国して住み着いたじゃ誇りが持てないけど、
> 日本人に強制連行された被害者なら誇りが持てる、とかそういう事かな??
>
> 市原市の能満は昔から市街化調整区域で、新規の建物は造れないことになっている。
> そのため土地が安く、日本の法律を無視した在日が、次々と移り住んできた。
> そこで問題になったのが、朝鮮学校だ。なかなか許可が下りず、一番近くても千葉市にしかない。
> そこで在日居住区の能満内にあった、能満幼稚園・市原小・市原中・緑高の保育士や教師を、朝鮮化する事を考えた。
> 今では在日幼稚園の保育士は全て朝鮮帰化人で、在日の父兄からの絶大な支持を受けている。
> 遠くからでも、わざわざ在日幼稚園に入園させたいという在日の親は、後を絶たない。
> この在日幼稚園卒園者はほぼ朝鮮系の帰化人と在日だ。
258名称未設定
2018/10/31(水) 01:08:37.57ID:5LHTA+eS0 テキストをコピって、その文中に出てくる二つの数字(数字A・数字B)を使って
計算させるApplescriptを作りました。
あちこちのサイト見て作った簡単なものでして、
当初は数字の出てくる位置と桁が決まっていたので
クリップボード内00文字目〜00文字目(数字A)と00文字目〜00文字目(数字B)を指定してました。
set 数字A to characters 5 thru 7 of NmLpLcSPpLc as text
set 数字B to characters 8 thru 10 of NmLpLcSPpLc as text
しかしこれではすぐに使い辛くなりました。
そこでこれを何桁でもどの位置に出てきても使えるように
「先に出てくる数字」「後に出てくる数字」みたいに
位置と桁を固定せず指定する方法を教えてください。
計算させるApplescriptを作りました。
あちこちのサイト見て作った簡単なものでして、
当初は数字の出てくる位置と桁が決まっていたので
クリップボード内00文字目〜00文字目(数字A)と00文字目〜00文字目(数字B)を指定してました。
set 数字A to characters 5 thru 7 of NmLpLcSPpLc as text
set 数字B to characters 8 thru 10 of NmLpLcSPpLc as text
しかしこれではすぐに使い辛くなりました。
そこでこれを何桁でもどの位置に出てきても使えるように
「先に出てくる数字」「後に出てくる数字」みたいに
位置と桁を固定せず指定する方法を教えてください。
259名称未設定
2018/10/31(水) 02:04:58.42ID:2A490WkA0 NmLpLcSPpLc
なんだこの呪文みたいな変数名は
なんだこの呪文みたいな変数名は
260名称未設定
2018/10/31(水) 02:08:22.68ID:w0lLlxVj0 >>258
ざっくりと
on pickupNumbers from sourceString
set numbersString to do shell script "echo " & quoted form of sourceString & " | sed -e 's/[^0-9][^0-9]*/ /g;s/^ *//;s/ *$//'"
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to {" ", return}
set numberItems to text items of numbersString
set AppleScript's text item delimiters to savedDelimiters
return numberItems
end pickupNumbers
set theNumbers to pickupNumbers from the clipboard
item 1 of theNumbers
item 2 of theNumbers
item -1 of theNumbers
ざっくりと
on pickupNumbers from sourceString
set numbersString to do shell script "echo " & quoted form of sourceString & " | sed -e 's/[^0-9][^0-9]*/ /g;s/^ *//;s/ *$//'"
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to {" ", return}
set numberItems to text items of numbersString
set AppleScript's text item delimiters to savedDelimiters
return numberItems
end pickupNumbers
set theNumbers to pickupNumbers from the clipboard
item 1 of theNumbers
item 2 of theNumbers
item -1 of theNumbers
261名称未設定
2018/10/31(水) 03:00:44.18ID:EBY8pLWp0 javascriptでmacアプリ操縦できるんかい!便利すぎワロタwwwww
何で今まで知らんかったんだ俺。
アップルももっと宣伝しろや!
何で今まで知らんかったんだ俺。
アップルももっと宣伝しろや!
262名称未設定
2018/10/31(水) 07:02:45.78ID:w0lLlxVj0263名称未設定
2018/10/31(水) 10:20:22.09ID:EecYNdku0 >>258
>>260はたぶん現段階では意味がわからなさすぎるだろうから
asは諦めてJXA(javascript)にしたらいいよ。asのみでそれをやるとかなりややこしい。
JXAはサンプルとか少なくて苦労するだろうけど、単独で使う分にはjavascriptだから。
app = Application.currentApplication()
app.includeStandardAdditions = true
str = app.theClipboard()
nums=str.match(/¥d+/g)
sum=getSum(nums)
function getSum(ary){
s=0
for (var i=0; i<ary.length; i++){
s=s+parseInt(ary[i])
}
return s
}
>>260はたぶん現段階では意味がわからなさすぎるだろうから
asは諦めてJXA(javascript)にしたらいいよ。asのみでそれをやるとかなりややこしい。
JXAはサンプルとか少なくて苦労するだろうけど、単独で使う分にはjavascriptだから。
app = Application.currentApplication()
app.includeStandardAdditions = true
str = app.theClipboard()
nums=str.match(/¥d+/g)
sum=getSum(nums)
function getSum(ary){
s=0
for (var i=0; i<ary.length; i++){
s=s+parseInt(ary[i])
}
return s
}
265名称未設定
2018/10/31(水) 11:28:34.38ID:EecYNdku0266名称未設定
2018/11/01(木) 13:41:26.79ID:tDuq1l2w0 質問です
デスクトップにあるファイルを全て取得してリストに格納する場合
tell application "Finder"
set theList to every file of desktop
end tell
こうするとファイル名順のリストになると思うのですが、これを作成日時順にすることは可能でしょうか?
デスクトップにあるファイルを全て取得してリストに格納する場合
tell application "Finder"
set theList to every file of desktop
end tell
こうするとファイル名順のリストになると思うのですが、これを作成日時順にすることは可能でしょうか?
267名称未設定
2018/11/01(木) 13:53:42.13ID:JGEC5ORU0 set theList to every file sort by creation date of desktop
でできたっぽい
でできたっぽい
268名称未設定
2018/11/01(木) 18:58:11.38ID:tDuq1l2w0269名称未設定
2018/11/03(土) 04:40:35.41ID:MI1Joi0x0 かつてAppleScriptの日本語バージョンがあったんですね
使ったことありますか? 使ってみたかったなあ
使ったことありますか? 使ってみたかったなあ
270名称未設定
2018/11/03(土) 14:35:07.08ID:AewTmxnd0271名称未設定
2018/11/03(土) 15:26:19.53ID:4JGEp5/z0 日本語表現は実用性があるとは言い難かった。
非純正アプリはほとんどが日本語表現がないため、結局ちゃんぽんになってしまい、快適ではなかった。
非純正アプリはほとんどが日本語表現がないため、結局ちゃんぽんになってしまい、快適ではなかった。
272名称未設定
2018/11/10(土) 22:57:17.33ID:DhCPvyoL0 あそっか、アプリの方も対応しないといけないのか
直ぐに消えたのも納得です、ありがとうございました
でも、ちょっと使ってみたかった
直ぐに消えたのも納得です、ありがとうございました
でも、ちょっと使ってみたかった
273名称未設定
2018/11/13(火) 01:03:26.10ID:VllV+WTz0275sage
2018/11/18(日) 07:33:20.44ID:eQLKwBbw0 macOS Mojaveにしたところ,Safariで
ダウンロードしたpdfファイルをSafariの
虫眼鏡でアクセス(Finder上に表示)しようとすると
自作したappleScriptが実行されてしまいます。
10年以上前に作成したappleScriptで
今までは,こんな動作はしませんでした。
回避策はございますか?
ダウンロードしたpdfファイルをSafariの
虫眼鏡でアクセス(Finder上に表示)しようとすると
自作したappleScriptが実行されてしまいます。
10年以上前に作成したappleScriptで
今までは,こんな動作はしませんでした。
回避策はございますか?
276名称未設定
2018/11/18(日) 08:12:14.67ID:T5+J33Nx0 ナゾ&キモいな
フォルダアクションが設定&動いているっぽいが、Mojaveで急にとか??とりあえず見てみる
フォルダアクションが設定&動いているっぽいが、Mojaveで急にとか??とりあえず見てみる
277名称未設定
2018/11/18(日) 10:12:37.48ID:qFTANg+J0 AppleScriptが関係あるのかないのかわからんけど、それにしても状況をもっと絞った方がいいのではないか
他のpdfは?
他の種類の書類は?
ダウンロード先のフォルダとそのスクリプトとの関係、配置は?
他のpdfは?
他の種類の書類は?
ダウンロード先のフォルダとそのスクリプトとの関係、配置は?
278名称未設定
2018/11/18(日) 10:56:30.55ID:p936fZ460 >>275
>Safariの
>虫眼鏡でアクセス(Finder上に表示)
うちのSafariではそもそもそれがわからんw
ファイルのダウンロード先をデスクトップにしているので
とうぜんpdfファイルもデスクトップに置かれてるだけ
ツールバーをカスタマイズ、のところを見ても虫眼鏡などないw
ふだんSafari使ってないからこれ以上わからん
>Safariの
>虫眼鏡でアクセス(Finder上に表示)
うちのSafariではそもそもそれがわからんw
ファイルのダウンロード先をデスクトップにしているので
とうぜんpdfファイルもデスクトップに置かれてるだけ
ツールバーをカスタマイズ、のところを見ても虫眼鏡などないw
ふだんSafari使ってないからこれ以上わからん
279名称未設定
2018/11/18(日) 11:05:53.52ID:qFTANg+J0 ダウンロードのポップアップウインドウと思ってたけど
設定で項目を自動削除とかにしてると普段はツールバーに出てない
設定で項目を自動削除とかにしてると普段はツールバーに出てない
280275
2018/11/18(日) 18:31:11.73ID:eQLKwBbw0 みなさま,コメントをありがとうございます。
>>277
>他のpdfは?
Safariでダウンロードした全てのpdfで発生します。
Finder上でそのpdfをダブルクリックすると,普通に
アプリの「プレビュー」が開き,アップルスクリプトは
起動しません。
>他の種類の書類は?
映像ファイルをよくダウンロードしますが,映像ファイルであれば
Safariのダウンロードリストのファイル名の横にある虫眼鏡を
クリックすれば,Finder上に表示できます。これがpdfだと
特定のアップルスクリプトが起動してしまいます。
>ダウンロード先のフォルダとそのスクリプトとの関係、配置は?
ダウンロード先のフォルダはDownloads(昔からのデフォルト)です。
起動してしまうアップルスクリプはApplicationsフォルダーに
入っています。そのアップルスクリプをFinder上でダブルクリックすると
正常な動作(複数のフォルダーを開いて,Finderの指定位置に移動)を
実行します。
10年前に作成したアップルスクリプトは,自宅のMacと職場のMacに入れて
10年間,更新していません。自宅と職場のMacを別々にmacOS Mojaveに
バージョンアップしたところ,両方のmacで上記の同じ問題が発生しました。
>>277
>他のpdfは?
Safariでダウンロードした全てのpdfで発生します。
Finder上でそのpdfをダブルクリックすると,普通に
アプリの「プレビュー」が開き,アップルスクリプトは
起動しません。
>他の種類の書類は?
映像ファイルをよくダウンロードしますが,映像ファイルであれば
Safariのダウンロードリストのファイル名の横にある虫眼鏡を
クリックすれば,Finder上に表示できます。これがpdfだと
特定のアップルスクリプトが起動してしまいます。
>ダウンロード先のフォルダとそのスクリプトとの関係、配置は?
ダウンロード先のフォルダはDownloads(昔からのデフォルト)です。
起動してしまうアップルスクリプはApplicationsフォルダーに
入っています。そのアップルスクリプをFinder上でダブルクリックすると
正常な動作(複数のフォルダーを開いて,Finderの指定位置に移動)を
実行します。
10年前に作成したアップルスクリプトは,自宅のMacと職場のMacに入れて
10年間,更新していません。自宅と職場のMacを別々にmacOS Mojaveに
バージョンアップしたところ,両方のmacで上記の同じ問題が発生しました。
281名称未設定
2018/11/18(日) 21:29:31.37ID:x89nB3Lq0 AppleScript使いなら、その不具合を逆手にとるべし!
勝手に起動してしまうスクリプトの中身を、
「Downloadフォルダの中で最新のPDFファイルをプレビューで開く」
って内容に書き換えちゃえ
勝手に起動してしまうスクリプトの中身を、
「Downloadフォルダの中で最新のPDFファイルをプレビューで開く」
って内容に書き換えちゃえ
282名称未設定
2018/11/18(日) 23:58:16.34ID:KI7XpZB+0 そんなことやりたい訳じゃないだろ馬鹿馬鹿しい
283275
2018/11/19(月) 08:37:59.88ID:aQYaMYht0 スクリプト名は00finder2.app,内容はこんな感じです:
tell application "Finder"
activate
close every window
make new Finder window
set bounds of Finder window 1 to {0, 0, 1080, 400}
set position of Finder window 1 to {0, 0}
make new Finder window
set bounds of Finder window 1 to {0, 0, 1080, 400}
set position of Finder window 1 to {0, 420}
(以下省略)
スクリプト名の最初の00を削除しても,同様の問題が発生します。
スクリプトを別のフォルダーに置いても,同様の問題が発生します。
スクリプトをゴミ箱に移動すると,問題は発生せずに,ダウンロードしたpdfファイルが
Finder上に表示されます(正常な動作)。
使用環境はmacOS Mojave 10.4.1, Safari Version 12.0.1
tell application "Finder"
activate
close every window
make new Finder window
set bounds of Finder window 1 to {0, 0, 1080, 400}
set position of Finder window 1 to {0, 0}
make new Finder window
set bounds of Finder window 1 to {0, 0, 1080, 400}
set position of Finder window 1 to {0, 420}
(以下省略)
スクリプト名の最初の00を削除しても,同様の問題が発生します。
スクリプトを別のフォルダーに置いても,同様の問題が発生します。
スクリプトをゴミ箱に移動すると,問題は発生せずに,ダウンロードしたpdfファイルが
Finder上に表示されます(正常な動作)。
使用環境はmacOS Mojave 10.4.1, Safari Version 12.0.1
284275
2018/11/19(月) 08:51:18.87ID:aQYaMYht0 スクリプト名は00finder2.appの内容をコピーして,新しい
appleScriptファイルを作成し,別の名前を付け,元の00finder2.appを
ゴミ箱に移動したところ,問題は解決できました。
ただ,問題の発生の原因はわかりませんが。
appleScriptファイルを作成し,別の名前を付け,元の00finder2.appを
ゴミ箱に移動したところ,問題は解決できました。
ただ,問題の発生の原因はわかりませんが。
285名称未設定
2018/11/19(月) 10:05:08.69ID:SmQ2Gv2t0 AppleScriptのアプリとかアプレットとか書いた方がいいよねと思うわ
Info.plistが狂ってたかなんかじゃないの CFBundleIdentifier とか CFBundleSignature とか
それかMojaveは使ったことないから変わってるかわからないけどLaunchServicesのDBが狂ってた
Info.plistが狂ってたかなんかじゃないの CFBundleIdentifier とか CFBundleSignature とか
それかMojaveは使ったことないから変わってるかわからないけどLaunchServicesのDBが狂ってた
286名称未設定
2018/11/19(月) 13:01:04.84ID:51CbbUAG0 世の中狂ってる
287名称未設定
2018/11/19(月) 13:25:22.10ID:feFxtWev0 ああ、そうだな
288名称未設定
2018/12/06(木) 11:35:14.24ID:pXZOuPXA0 最近書き始めた初心者です
文字列処理してる時、tell application finder 〜でくくった中で
offset of〜を書くと、ログではエラー吐いてtell current application に飛ばされてますよね
処理が止まるエラーにはならないんですが、ログが汚く長くなるので回避できるならしたいのですが、何か手法はありますか?
文字列処理してる時、tell application finder 〜でくくった中で
offset of〜を書くと、ログではエラー吐いてtell current application に飛ばされてますよね
処理が止まるエラーにはならないんですが、ログが汚く長くなるので回避できるならしたいのですが、何か手法はありますか?
289名称未設定
2018/12/06(木) 12:26:15.81ID:zmYpw3wN0 なぜスクリプト例を書かないか
290名称未設定
2018/12/06(木) 12:28:34.45ID:zmYpw3wN0 あ、いいやw
291名称未設定
2018/12/06(木) 12:32:49.86ID:zmYpw3wN0 とりあえず先頭に
use scripting additions
入れたら出なくなった
これで試した
set msg to "tell application finder"
tell application "Finder"
offset of "finder" in msg
end tell
--> error number -10004
use scripting additions
入れたら出なくなった
これで試した
set msg to "tell application finder"
tell application "Finder"
offset of "finder" in msg
end tell
--> error number -10004
292名称未設定
2018/12/06(木) 12:39:50.05ID:5stFhJjG0293名称未設定
2018/12/06(木) 13:13:10.96ID:/2BqwjjI0 例を示していただきありがとうございます
OSは10.13です
ただ今出先なので、試せる環境に戻りましたらやってみたいと思います
OSは10.13です
ただ今出先なので、試せる環境に戻りましたらやってみたいと思います
294名称未設定
2018/12/06(木) 19:11:12.56ID:ZB9JhEHI0 >>291
ありがとうございました。何となく引っかかっていたのでスッキリしました。
ありがとうございました。何となく引っかかっていたのでスッキリしました。
295名称未設定
2018/12/08(土) 04:57:44.18ID:OsXKkkYC0 エラーの出るところを
tell me
end tell
で囲う
tell me
end tell
で囲う
296名称未設定
2018/12/08(土) 09:43:09.05ID:Q2Unigq80 それもまたよかろう
297名称未設定
2018/12/08(土) 23:14:27.71ID:FECiCgaZ0298sage
2018/12/10(月) 11:00:43.24ID:mNpt5IAA0 javascriptで'QuickTime Player’を制御するコマンドを書き始めました。
var quickTimePlayer = Application('QuickTime Player');
quickTimePlayer.activate()
これで最後に開いていた複数の動画が開けました。次に,これをルーブ再生させます。
delay(2)
var lenX = quickTimePlayer.documents.length
for (i = 0; i < lenX; i++){
var test = quickTimePlayer.documents[i];
test.play();
test.looping = true;
}
最後に,この動画(複数)Finder上の指定の場所に移動させたいのですが
どのように書けばよろしいでしょうか?
var quickTimePlayer = Application('QuickTime Player');
quickTimePlayer.activate()
これで最後に開いていた複数の動画が開けました。次に,これをルーブ再生させます。
delay(2)
var lenX = quickTimePlayer.documents.length
for (i = 0; i < lenX; i++){
var test = quickTimePlayer.documents[i];
test.play();
test.looping = true;
}
最後に,この動画(複数)Finder上の指定の場所に移動させたいのですが
どのように書けばよろしいでしょうか?
299名称未設定
2018/12/10(月) 11:23:51.28ID:gAIj8poC0 quickTimePlayer = Application('QuickTime Player')
finder = Application('finder')
homedir = Application('System Events').users[0].homeDirectory()
desktop =Path (homedir+'/Desktop')
f= Path (quickTimePlayer.documents[0].file())
finder.move(f,{to:desktop,replacing:false})
finder = Application('finder')
homedir = Application('System Events').users[0].homeDirectory()
desktop =Path (homedir+'/Desktop')
f= Path (quickTimePlayer.documents[0].file())
finder.move(f,{to:desktop,replacing:false})
300298
2018/12/10(月) 19:29:17.30ID:mNpt5IAA0 >>299
スクリプトをありとうございます。私の説明が悪かったことを
お詫び申し上げます。
やりたい作業は,quickTimePlayer.documents[0]を
モニタースクリーンの{0, 0}の位置に,quickTimePlayer.documents[1]を
{720,0}に,quickTimePlayer.documents[2]を{0,480}に,
quickTimePlayer.documents[3]を{720,480}に移動させるような
ことです。
お手数をかけて申し訳ありませんでした。
スクリプトをありとうございます。私の説明が悪かったことを
お詫び申し上げます。
やりたい作業は,quickTimePlayer.documents[0]を
モニタースクリーンの{0, 0}の位置に,quickTimePlayer.documents[1]を
{720,0}に,quickTimePlayer.documents[2]を{0,480}に,
quickTimePlayer.documents[3]を{720,480}に移動させるような
ことです。
お手数をかけて申し訳ありませんでした。
301名称未設定
2018/12/10(月) 23:11:31.03ID:lqAuC0EH0 位置とサイズ情報(bounds)はwindowが持ってるからそっち使うんじゃないの
ob = quickTimePlayer.windows[0].bounds()
quickTimePlayer.windows[0].bounds = {x:0, y:0, width:ob.width, height:ob.height}
等々
ob = quickTimePlayer.windows[0].bounds()
quickTimePlayer.windows[0].bounds = {x:0, y:0, width:ob.width, height:ob.height}
等々
302298
2018/12/11(火) 04:02:12.21ID:tNqI8RCK0 >>301
>位置とサイズ情報(bounds)はwindow
“bounds”を使うんですね!
本当にありがとうございました。
ずっと”position”という言葉で検索していたため
正解が見つかりませんでした。
ご教示いただいたwidth:ob.widthというような書き方は
全く知りませんでした。Script EditorのDictionaryにも
width:ob.widthに関する解説はないですよね?
自分でも勉強したいのですが,これを解説している
ページや書籍などはございますか?
>位置とサイズ情報(bounds)はwindow
“bounds”を使うんですね!
本当にありがとうございました。
ずっと”position”という言葉で検索していたため
正解が見つかりませんでした。
ご教示いただいたwidth:ob.widthというような書き方は
全く知りませんでした。Script EditorのDictionaryにも
width:ob.widthに関する解説はないですよね?
自分でも勉強したいのですが,これを解説している
ページや書籍などはございますか?
303名称未設定
2018/12/11(火) 12:13:29.08ID:QaN2g9Yw0 ごめんね
いつも適当にやってるし、JavaScriptで書くことも滅多にないしで、まともな説明も紹介もできないよ
エディタの下側、ログを表示>返された値、を見ると 〜.bounds() 実行結果が {"x":20, "y":38, "width":700, "height":705} 形式で返ってた、だから元の値を維持するのに . (ドット)表記を使ってみた
ここ↓は読んだりするけど
https://developer.apple.com/library/archive/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/OSX10-10.html
それと、positionやsizeはSystem Events経由で得られる
Application('System Events').applicationProcesses['QuickTime Player'].windows[0].position()
自分はAppleScript非対応のアプリで使うことがあるけどPreviewとか
いつも適当にやってるし、JavaScriptで書くことも滅多にないしで、まともな説明も紹介もできないよ
エディタの下側、ログを表示>返された値、を見ると 〜.bounds() 実行結果が {"x":20, "y":38, "width":700, "height":705} 形式で返ってた、だから元の値を維持するのに . (ドット)表記を使ってみた
ここ↓は読んだりするけど
https://developer.apple.com/library/archive/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/OSX10-10.html
それと、positionやsizeはSystem Events経由で得られる
Application('System Events').applicationProcesses['QuickTime Player'].windows[0].position()
自分はAppleScript非対応のアプリで使うことがあるけどPreviewとか
304名称未設定
2018/12/11(火) 12:16:17.47ID:QaN2g9Yw0 >だから元の値を維持するのに . (ドット)表記を使ってみた
別にこれ聞かれたんじゃなかったね、無視してちょ
別にこれ聞かれたんじゃなかったね、無視してちょ
305名称未設定
2018/12/11(火) 12:33:44.54ID:7MKZiNAb0306298
2018/12/11(火) 23:25:54.84ID:tNqI8RCK0 >>305
>特にjsの機能を使いたい訳じゃなければ
過去5年間に自作したプログラムでの
appleScriptの使用率は1%以下。
そのため,appleScriptの基本的なループや
条件処理なども完全に忘れてしまっている。
現在使用しているプログラムは主にjavascriptと
python。使い慣れたjavascriptだとスクリプトの
90%以上が簡単に書き上げられるが
最後のmacOS特有のコマンドでお手上げでした。
>特にjsの機能を使いたい訳じゃなければ
過去5年間に自作したプログラムでの
appleScriptの使用率は1%以下。
そのため,appleScriptの基本的なループや
条件処理なども完全に忘れてしまっている。
現在使用しているプログラムは主にjavascriptと
python。使い慣れたjavascriptだとスクリプトの
90%以上が簡単に書き上げられるが
最後のmacOS特有のコマンドでお手上げでした。
307名称未設定
2018/12/12(水) 09:46:23.78ID:Vt3ZJFcS0 js書き慣れてる割には;入れたり入れなかったりまちまちだな。
308名称未設定
2018/12/12(水) 10:51:51.10ID:pEW5eCYS0309名称未設定
2018/12/12(水) 11:14:18.54ID:f2LM9iRz0 >>304 でその前も全部無視したんじゃね
どう入れたらどういうフォーマットやねんって、言う通りbounds() 実行結果が〜なんぞのgetterで出してみりゃだいたいわかるよね
どう入れたらどういうフォーマットやねんって、言う通りbounds() 実行結果が〜なんぞのgetterで出してみりゃだいたいわかるよね
310名称未設定
2018/12/13(木) 03:07:11.52ID:Yo74efIG0 達人は298の時点でスルー決定していた予感
311298
2018/12/14(金) 10:00:07.79ID:2l/2lhQa0 //複数の動画を大画面モニターに表示して,重ならないように
//並べて,音声を消し,ループ再生するjavascript #1
var pathX = "/Users/Tanabe/Movies/";
var yHeight2 = 480;
var xWidth2 = 850;
var quickTimePlayer = Application('QuickTime Player');
quickTimePlayer.activate();
var lenX = quickTimePlayer.documents.length;
//前に開いていた動画を閉じる
if(lenX > 0){
___for (i = 0; i < lenX; i++){
_____quickTimePlayer.documents[0].stop();
____ quickTimePlayer.documents[0].close();
___}
}
//次のtrue以下のコマンドを実行しないと,エラーが出る!?
if(true){
___quickTimePlayer.quit();
___quickTimePlayer = Application('QuickTime Player');
___quickTimePlayer.activate();
}
//次に続く…
//並べて,音声を消し,ループ再生するjavascript #1
var pathX = "/Users/Tanabe/Movies/";
var yHeight2 = 480;
var xWidth2 = 850;
var quickTimePlayer = Application('QuickTime Player');
quickTimePlayer.activate();
var lenX = quickTimePlayer.documents.length;
//前に開いていた動画を閉じる
if(lenX > 0){
___for (i = 0; i < lenX; i++){
_____quickTimePlayer.documents[0].stop();
____ quickTimePlayer.documents[0].close();
___}
}
//次のtrue以下のコマンドを実行しないと,エラーが出る!?
if(true){
___quickTimePlayer.quit();
___quickTimePlayer = Application('QuickTime Player');
___quickTimePlayer.activate();
}
//次に続く…
312298
2018/12/14(金) 10:00:39.50ID:2l/2lhQa0 //311の続き
var listX = ["08.m2v", "09.m2v", "12.mov", "13.mov", "14.mov", "15.mov", "01.mov", "02.m2v", "07.m2v"];
var lenMov = listX.length;
var qtX = 0;
var qtY = 0;
for (i = 0; i < lenMov; i++){
___fullPath = pathX + listX[i];
___qtMov = quickTimePlayer.open(fullPath);
___ob = quickTimePlayer.windows[0].bounds();
___console.log("333: " + qtMov.name());
___qtY = parseInt(i / 3) * yHeight2;
___qtX += xWidth2;
___qtX %= (xWidth2 * 3);
___qtY %= (yHeight2 * 3);
___quickTimePlayer.windows[0].bounds = {x:qtX, y:qtY, width:ob.width, height:ob.height};
___qtMov.play();
___qtMov.looping = true;
___qtMov.audioVolume = 0;
}
var listX = ["08.m2v", "09.m2v", "12.mov", "13.mov", "14.mov", "15.mov", "01.mov", "02.m2v", "07.m2v"];
var lenMov = listX.length;
var qtX = 0;
var qtY = 0;
for (i = 0; i < lenMov; i++){
___fullPath = pathX + listX[i];
___qtMov = quickTimePlayer.open(fullPath);
___ob = quickTimePlayer.windows[0].bounds();
___console.log("333: " + qtMov.name());
___qtY = parseInt(i / 3) * yHeight2;
___qtX += xWidth2;
___qtX %= (xWidth2 * 3);
___qtY %= (yHeight2 * 3);
___quickTimePlayer.windows[0].bounds = {x:qtX, y:qtY, width:ob.width, height:ob.height};
___qtMov.play();
___qtMov.looping = true;
___qtMov.audioVolume = 0;
}
313298
2018/12/14(金) 10:17:27.42ID:2l/2lhQa0 >>307
>js書き慣れてる割には;
言いたかったのは,>>312 の
var lenMov = listX.length;
for (i = 0; i < lenMov; i++){
qtY = parseInt(i / 3) * yHeight2;
qtX %= (xWidth2 * 3);
のループや,実数を整数変換,剰余などのコマンドが
javascriptであれば直ぐに書けるのですが,純正AppleScriptだと
いちいちネットを検索しないと無理,ということです。
>>299
今回は使用しませんでしたが
Path (quickTimePlayer.documents[0].file())
finder.move(f,{to:desktop,replacing:false})
というような書き方ができることを知って,驚きました。
自分ではこのような複雑なスクリプトを書けませんが
意味ははっきりと理解できます。
時間を使ってスクリプトを作成していただき
本当に感謝しております。
>js書き慣れてる割には;
言いたかったのは,>>312 の
var lenMov = listX.length;
for (i = 0; i < lenMov; i++){
qtY = parseInt(i / 3) * yHeight2;
qtX %= (xWidth2 * 3);
のループや,実数を整数変換,剰余などのコマンドが
javascriptであれば直ぐに書けるのですが,純正AppleScriptだと
いちいちネットを検索しないと無理,ということです。
>>299
今回は使用しませんでしたが
Path (quickTimePlayer.documents[0].file())
finder.move(f,{to:desktop,replacing:false})
というような書き方ができることを知って,驚きました。
自分ではこのような複雑なスクリプトを書けませんが
意味ははっきりと理解できます。
時間を使ってスクリプトを作成していただき
本当に感謝しております。
314298
2018/12/14(金) 10:34:15.37ID:2l/2lhQa0315298
2018/12/17(月) 08:28:58.67ID:6ayU5alI0 >>311
>//次のtrue以下のコマンドを実行しないと,エラーが出る!?
上記の”You don't have permission"エラーには最後まで悩まされましたが,
>>299
のスクリプトを何度か読み返して,Path (…)を実行することで
「true以下のコマンドを実行」しなくても,”permission”エラーを回避することができました。
ネットで検索すると,AppleScriptで書く場合には
set srcFileRef to (open POSIX file srcFileString)
で”permission”エラーが回避できるところまでは調べられましたが
それをjavascriptでどう書きなおすのかが,分かりませんでした。
スクリプト >>299 は,本当に役に立ちました!
貴重なスクリプトを提供していただき,ありがとうございました。
>//次のtrue以下のコマンドを実行しないと,エラーが出る!?
上記の”You don't have permission"エラーには最後まで悩まされましたが,
>>299
のスクリプトを何度か読み返して,Path (…)を実行することで
「true以下のコマンドを実行」しなくても,”permission”エラーを回避することができました。
ネットで検索すると,AppleScriptで書く場合には
set srcFileRef to (open POSIX file srcFileString)
で”permission”エラーが回避できるところまでは調べられましたが
それをjavascriptでどう書きなおすのかが,分かりませんでした。
スクリプト >>299 は,本当に役に立ちました!
貴重なスクリプトを提供していただき,ありがとうございました。
316名称未設定
2018/12/28(金) 13:16:28.09ID:iV1mosCl0 Location Helperを使わない逆geocodingのやり方が分かる方はいますか?
317名称未設定
2018/12/28(金) 14:14:34.28ID:jhzLnqgc0 https://itunes.apple.com/us/app/location-helper-for-applescript/id488536386?mt=12
これを使わずに、macOS(Cocoa) APIを使ってなの?もしくはGoogleGoogle Maps APIなんぞを使ってとか?
これを使わずに、macOS(Cocoa) APIを使ってなの?もしくはGoogleGoogle Maps APIなんぞを使ってとか?
318名称未設定
2018/12/28(金) 14:27:55.99ID:YnoMIWXv0 Google map APIを簡単に使えるようにするのがそのソフトらしいのだけれど、APIの有料化云々で使えなくなったのです。
macOSにもlocation managerなるAPIがあるらしいのですが、cocoaに慣れていないのでうまく呼び出せません。
やりたいことは、緯度経度から住所への変換です。
macOSにもlocation managerなるAPIがあるらしいのですが、cocoaに慣れていないのでうまく呼び出せません。
やりたいことは、緯度経度から住所への変換です。
319名称未設定
2018/12/28(金) 14:47:39.40ID:xq4jQ5B10 CoreLocationについてはここ http://piyocast.com/as/archives/tag/cllocationmanager 参照すればいい
320名称未設定
2018/12/28(金) 14:50:51.72ID:jhzLnqgc0 残念ながら CLGeocoder reverseGeocodeLocation の結果を返してくれるのはBlocks(クロージャ、無名関数)しかなかった。セレクタ(メソッド)に返してくれるのもあればよかったんだけどね。もしくは、AppleScriptObjC/JXAがBlocksをサポートしてくれれば
Xcodeでそんなコマンド/ヘルパーアプリを書く、swiftコマンド使ってでSwiftをスクリプト的に書く、Google Maps APIを自分で使う
あたりかなあ
Xcodeでそんなコマンド/ヘルパーアプリを書く、swiftコマンド使ってでSwiftをスクリプト的に書く、Google Maps APIを自分で使う
あたりかなあ
321名称未設定
2018/12/28(金) 14:57:42.48ID:jhzLnqgc0 >>319 みたく、メソッド(デリゲート)で返してくれればいいのに、「逆」も。まあ、Objective-C/SwiftだったらBlocksとメソッド両方あったらどっち使うと言ったらBlocksを使う、Blocksしか使わないけどw
AppleScriptObjC/JXAがBlocksをサポートしてくれれば、いやしてくれw
AppleScriptObjC/JXAがBlocksをサポートしてくれれば、いやしてくれw
322名称未設定
2018/12/28(金) 15:05:52.63ID:YnoMIWXv0 つまり現状では難しいということでしょうか。
Cocoaをよくわかっていないので、紹介先も半分くらいしか理解できませんでした。
Cocoaをよくわかっていないので、紹介先も半分くらいしか理解できませんでした。
323名称未設定
2018/12/28(金) 15:24:56.62ID:jhzLnqgc0 ああ、「逆」も じゃなく、「Geocoding」も か。「正」もBlocksしかないので、CLGeocoderのやろうwは
>>322
ちょっと難しいかなあ。Cocoaをちょっと勉強すればいいんじゃないのとは思わなくもないけどw
Google Maps APIならWeb APIというある意味一般的なのを使ってだけど(単にhttp呼び出し/取得)。準備とか面倒かもだけど
>>322
ちょっと難しいかなあ。Cocoaをちょっと勉強すればいいんじゃないのとは思わなくもないけどw
Google Maps APIならWeb APIというある意味一般的なのを使ってだけど(単にhttp呼び出し/取得)。準備とか面倒かもだけど
324名称未設定
2018/12/28(金) 15:53:18.02ID:jhzLnqgc0 >APIの有料化云々で使えなくなった
のじゃなくて、(API) Keyless での Google Maps API 利用はできなくなったね
Keyless access to Google Maps Platform is deprecated. Please use an API key 〜
Location Helperのサンプルに
-- These commands use 'Core Location'
ってあるのに、なんでそこがGoogle Maps APIなのかと思ったら、Location Helperの最新最後が出た時には、CLGeocoderなんて存在しなかったあたりっぽい
で、自分でAPI Key取得すれば、
https://stackoverflow.com/questions/52727698/google-reverse-geocode-multiple-coordinates-with-one-api-call
なんぞでできるよ(たぶん)。app_id= や app_code= なんぞがAPI Key(確かたぶん)。自分で取得した値にすれば動くだろう
のじゃなくて、(API) Keyless での Google Maps API 利用はできなくなったね
Keyless access to Google Maps Platform is deprecated. Please use an API key 〜
Location Helperのサンプルに
-- These commands use 'Core Location'
ってあるのに、なんでそこがGoogle Maps APIなのかと思ったら、Location Helperの最新最後が出た時には、CLGeocoderなんて存在しなかったあたりっぽい
で、自分でAPI Key取得すれば、
https://stackoverflow.com/questions/52727698/google-reverse-geocode-multiple-coordinates-with-one-api-call
なんぞでできるよ(たぶん)。app_id= や app_code= なんぞがAPI Key(確かたぶん)。自分で取得した値にすれば動くだろう
325名称未設定
2018/12/28(金) 16:03:06.41ID:jhzLnqgc0 よくみたら
batch.geocoder.api.here.com
って、ナゾのサイトだったw まあ、それで(API Keyはそのサイトのなのかな)。Google Maps APIも同じようなのがたぶんあるだろう
batch.geocoder.api.here.com
って、ナゾのサイトだったw まあ、それで(API Keyはそのサイトのなのかな)。Google Maps APIも同じようなのがたぶんあるだろう
326名称未設定
2018/12/28(金) 18:01:48.64ID:jhzLnqgc0 Google Maps API のはこれ
https://developers.google.com/maps/documentation/geocoding/intro#reverse-exampleintro#ReverseGeocoding
単にkey= に取得したAPI Keyを入れればいいんじゃね
コマンドでできるか(許可とかなんとかウザいwの対応するためにはヘルパーアプリじゃなきゃかな)と試したらコマンドでできた
https://ideone.com/0We7Hg
$ hogehoge 35.1707 136.8826
2018-12-28 17:33:56.830 YYYY[462:4851] 住所:(
2018-12-28 17:33:56.830 YYYY[462:4851] 〒450-0002
2018-12-28 17:33:56.830 YYYY[462:4851] 愛知県名古屋市中村区
2018-12-28 17:33:56.830 YYYY[462:4851] 名駅1丁目1
2018-12-28 17:33:56.830 YYYY[462:4851] )
な感じ。たったこれだけでいいんだからAppleScriptObjC/JXAでBlocksが使えれば/CLGeocoderのやろうがセレクタにも返してくれれば、AppleScriptObjC/JXAで完結するのにぃ
https://developers.google.com/maps/documentation/geocoding/intro#reverse-exampleintro#ReverseGeocoding
単にkey= に取得したAPI Keyを入れればいいんじゃね
コマンドでできるか(許可とかなんとかウザいwの対応するためにはヘルパーアプリじゃなきゃかな)と試したらコマンドでできた
https://ideone.com/0We7Hg
$ hogehoge 35.1707 136.8826
2018-12-28 17:33:56.830 YYYY[462:4851] 住所:(
2018-12-28 17:33:56.830 YYYY[462:4851] 〒450-0002
2018-12-28 17:33:56.830 YYYY[462:4851] 愛知県名古屋市中村区
2018-12-28 17:33:56.830 YYYY[462:4851] 名駅1丁目1
2018-12-28 17:33:56.830 YYYY[462:4851] )
な感じ。たったこれだけでいいんだからAppleScriptObjC/JXAでBlocksが使えれば/CLGeocoderのやろうがセレクタにも返してくれれば、AppleScriptObjC/JXAで完結するのにぃ
327名称未設定
2019/01/28(月) 09:09:40.38ID:5kzQRvO50 display alertをtimeoutさせない方法って無いですよね?
ググるとwith timeout of 〜 secondsすればいいとかあるけど、Mojaveだとこれやってもgiving up afterやっても2分でtimeoutしちゃう
ググるとwith timeout of 〜 secondsすればいいとかあるけど、Mojaveだとこれやってもgiving up afterやっても2分でtimeoutしちゃう
328名称未設定
2019/01/28(月) 09:27:13.85ID:5kzQRvO50 あ、activateしてからdisplay alertすればtimeoutしなかった
背後でdisplay alertしたときだけ2分でtimeoutするのか…変な仕様だな
背後でdisplay alertしたときだけ2分でtimeoutするのか…変な仕様だな
329名称未設定
2019/01/28(月) 17:14:26.26ID:qPnOw4hI0 AppleScriptの骨幹のApple Eventの仕様かな。Apple Eventのリクエストしてからそれのレスポンスが返るまでのタイムアウトがちょうど2分らしい、エラーメッセージもそういうメッセージ
バックグラウンドだとレスポンス返すとこまでは動かない(=displayまではしてない)からかな
バックグラウンドだとレスポンス返すとこまでは動かない(=displayまではしてない)からかな
330名称未設定
2019/01/28(月) 17:26:07.90ID:qPnOw4hI0 Apple Event timeout error はハンドリングできるので、activateがウザい(他になんかしているときに勝手にアクティベートされるのはウザい)からしたくなければ、timeout なら display alert を再び/繰り返すかなあ
331298
2019/02/09(土) 08:31:44.76ID:48/L+ULp0 >>299
file()メソッドを使わせていただきましたので,その報告です。
複数のQuickTime動画を大型モニター4画面で同時自動再生(>>311,312,315)しています。
開いている複数の動画のパスを次のようなスクリプトで取得して保存しておきます。
このようなリストを複数作成しておけば
そのリストに指定された複数の動画を同時に開いて同時に再生できるので便利です。
var quickTimePlayer = Application('QuickTime Player');
quickTimePlayer.activate()
delay(2)
lenMov = quickTimePlayer.documents.length
console.log("333: " + lenMov)
for (i = 0; i < lenMov; i++){
___console.log(quickTimePlayer.documents[i].file())
}
file()メソッドを使わせていただきましたので,その報告です。
複数のQuickTime動画を大型モニター4画面で同時自動再生(>>311,312,315)しています。
開いている複数の動画のパスを次のようなスクリプトで取得して保存しておきます。
このようなリストを複数作成しておけば
そのリストに指定された複数の動画を同時に開いて同時に再生できるので便利です。
var quickTimePlayer = Application('QuickTime Player');
quickTimePlayer.activate()
delay(2)
lenMov = quickTimePlayer.documents.length
console.log("333: " + lenMov)
for (i = 0; i < lenMov; i++){
___console.log(quickTimePlayer.documents[i].file())
}
332名称未設定
2019/03/02(土) 03:11:39.45ID:4RgGEeXD0 画像ファイルの画像サイズを得てみる
// Image Events
ImageEvents = Application("Image Events");
function IEImageWidth(path) {
let image, dimensions;
if((image = ImageEvents.open(path)) == null)
return undefined;
dimensions = image.dimensions();
image.close();
return (dimensions.length == 0 ? undefined : dimensions[1]);
}
// Image Events
ImageEvents = Application("Image Events");
function IEImageWidth(path) {
let image, dimensions;
if((image = ImageEvents.open(path)) == null)
return undefined;
dimensions = image.dimensions();
image.close();
return (dimensions.length == 0 ? undefined : dimensions[1]);
}
333名称未設定
2019/03/02(土) 03:12:19.87ID:4RgGEeXD0 // Spotlightのメタデータ。AppleScript(JXA)ではサポートしてない(?)のでシェルで
app = Application.currentApplication();
app.includeStandardAdditions = true
function SSMDImageWidth(path) {
let result = app.doShellScript("mdls -name kMDItemPixelWidth '" +
path.replace(/'/g, "\\'") +
"' 2>/dev/null | awk 'NF==3&&/^kMDItemPixelWidth/{if($3 != \"(null)\") print $3; exit 0;}'");
return (result.length == 0 ? undefined : Number(result));
}
app = Application.currentApplication();
app.includeStandardAdditions = true
function SSMDImageWidth(path) {
let result = app.doShellScript("mdls -name kMDItemPixelWidth '" +
path.replace(/'/g, "\\'") +
"' 2>/dev/null | awk 'NF==3&&/^kMDItemPixelWidth/{if($3 != \"(null)\") print $3; exit 0;}'");
return (result.length == 0 ? undefined : Number(result));
}
334名称未設定
2019/03/02(土) 03:12:51.19ID:4RgGEeXD0 // Spotlightのメタデータ。Cocoa API直接
ObjC.import("CoreServices");
function MDImageWidth(path) {
let result = undefined;
let item, attributes;
if((item = $.MDItemCreate($.kCFAllocatorDefault, path)).isNil())
return result;
if(!(attributes = $.MDItemCopyAttributes(item, ["kMDItemPixelWidth"])).isNil()){
if((result = attributes.js["kMDItemPixelWidth"]) != undefined)
result = result.js;
$.CFRelease(attributes);
}
$.CFRelease(item);
return result;
}
ObjC.import("CoreServices");
function MDImageWidth(path) {
let result = undefined;
let item, attributes;
if((item = $.MDItemCreate($.kCFAllocatorDefault, path)).isNil())
return result;
if(!(attributes = $.MDItemCopyAttributes(item, ["kMDItemPixelWidth"])).isNil()){
if((result = attributes.js["kMDItemPixelWidth"]) != undefined)
result = result.js;
$.CFRelease(attributes);
}
$.CFRelease(item);
return result;
}
335名称未設定
2019/03/02(土) 03:19:58.16ID:4RgGEeXD0 function run(input, parameters) {
result = [];
input.forEach(item => {
if((width = IEImageWidth/SSMDImageWidth/MDImageWidth(item.toString())) == undefined)
return;
result.push(width);
});
return result;
}
IEImageWidth:おっそ、まあ、画像ファイルを開いてなんちゃらやってだからこんなもんか
SSMDImageWidth:んー、おっそ。んー?
MDImageWidth:ゲロ速い。SSMDImageWidthから少しは速くなればいいかなと思ったら、ゲロ速い。SSMDImageWidthはいちいちシェル起動するからとかか
C関数まんま使えるのか、すげーな、AppleScriptObjC。BlocksもJavascriptのクロージャがそのまんま使えるのを最近知った。鬼金やな
鬼らしく、ミスったら簡単にScript Editor/Automatorクラッシュする/させることできるけどw
result = [];
input.forEach(item => {
if((width = IEImageWidth/SSMDImageWidth/MDImageWidth(item.toString())) == undefined)
return;
result.push(width);
});
return result;
}
IEImageWidth:おっそ、まあ、画像ファイルを開いてなんちゃらやってだからこんなもんか
SSMDImageWidth:んー、おっそ。んー?
MDImageWidth:ゲロ速い。SSMDImageWidthから少しは速くなればいいかなと思ったら、ゲロ速い。SSMDImageWidthはいちいちシェル起動するからとかか
C関数まんま使えるのか、すげーな、AppleScriptObjC。BlocksもJavascriptのクロージャがそのまんま使えるのを最近知った。鬼金やな
鬼らしく、ミスったら簡単にScript Editor/Automatorクラッシュする/させることできるけどw
336名称未設定
2019/03/05(火) 10:49:12.91ID:AAVk5UnP0 [Mojave以降] AppleScript製アプリのアクセス許可のダイアログが毎回出るのを防ぐ
ttps://mac-tegaki.com/trouble-shooting/applescript-app-ask-permission-every-time.html
まだHigh Sierraなんですが
こんなの見かけたけどめんどいですね
ttps://mac-tegaki.com/trouble-shooting/applescript-app-ask-permission-every-time.html
まだHigh Sierraなんですが
こんなの見かけたけどめんどいですね
337名称未設定
2019/03/05(火) 12:28:37.92ID:+Yw6Dqc90 許可したら システム環境設定 > プライバシ に登録されて「毎回」は出ないハズだよ
自動登録時にアクセス許可するアプリのチェックが付いてないとかじゃないのかな「毎回」は
だが、SIPもそうだが面倒なことが増えるねえ
自動登録時にアクセス許可するアプリのチェックが付いてないとかじゃないのかな「毎回」は
だが、SIPもそうだが面倒なことが増えるねえ
338名称未設定
2019/03/05(火) 13:07:26.36ID:+Yw6Dqc90 あら、確かに「毎回」出てくる。だがしかし、書かれているようなややこやしいことではなさげかな?単にチェックするとこタイミングが変ってことじゃないのかなあ
・ベタがき
・on run
で、tell application "Another Application" すると、許可してるのに「毎回」聞きやがる
・on idle
で、tell application "Another Application" すると、最初に聞かれるが、許可すると2度目以降聞かれない
感じ。on idleではなくてもrun終わった後のどこか(標準ハンドラってなにかあったかなあ)の時点でならばっぽいかなあ、いや、単なるバグじゃないのかと
・ベタがき
・on run
で、tell application "Another Application" すると、許可してるのに「毎回」聞きやがる
・on idle
で、tell application "Another Application" すると、最初に聞かれるが、許可すると2度目以降聞かれない
感じ。on idleではなくてもrun終わった後のどこか(標準ハンドラってなにかあったかなあ)の時点でならばっぽいかなあ、いや、単なるバグじゃないのかと
339名称未設定
2019/03/05(火) 22:57:30.53ID:azgzqLfF0340名称未設定
2019/03/19(火) 23:16:10.19ID:6rhIpSKL0 最近興味もったんだけど、ShellScriptとどうちがうの?
まったく別もの?
まったく別もの?
341名称未設定
2019/03/20(水) 00:30:14.28ID:MPMHipPd0 似たようなもんだしまったく別ものでもある。何をするかによるね
perl(など)がShellScriptとどうちがうの?と聞いているようなもんだね。答えづらい問いだねw
perl(など)がShellScriptとどうちがうの?と聞いているようなもんだね。答えづらい問いだねw
342名称未設定
2019/03/20(水) 05:10:34.36ID:+Z1ho9s70 Entanglerってアプリいいね
343名称未設定
2019/03/20(水) 18:13:32.31ID:/i8VCt340 なにそれ
344名称未設定
2019/03/20(水) 18:21:50.77ID:MPMHipPd0 http://entanglerapp.com
これだろな
https://www.macupdate.com/app/mac/49255/entangler
https://itunes.apple.com/jp/app/entangler/id680030301?mt=12
Launch Automator actions and script on your Mac from your iPhone
ネタ的にこのスレにふさわしいと思うが、from your iPhone はびみょー、俺的に
これだろな
https://www.macupdate.com/app/mac/49255/entangler
https://itunes.apple.com/jp/app/entangler/id680030301?mt=12
Launch Automator actions and script on your Mac from your iPhone
ネタ的にこのスレにふさわしいと思うが、from your iPhone はびみょー、俺的に
345名称未設定
2019/03/20(水) 18:51:40.15ID:PnbuvbRk0 FaceTimeをペットカメラ代わりにしようと思ったんだけど、受け側のMacの自動応答がどうやっても出来なかったんだよね
なのでメールをトリガーにして、AS使ってMacからかけようと思ったんだけど、メール送るのめんどくて他の方法探してたら見つけた
問題なく動作してるよ
なのでメールをトリガーにして、AS使ってMacからかけようと思ったんだけど、メール送るのめんどくて他の方法探してたら見つけた
問題なく動作してるよ
346名称未設定
2019/03/23(土) 11:59:14.33ID:XBdRsdKw0 初心者です
スクリーンセーバーの稼働開始時間を簡単に変更したくて、
ネットでそれらしいScript探してきたんですが、実行して見たらエラーが出てしまいました
コードの修正方法わかればお知らせください
コードとエラー内容は添付のイメージの通りです。
https://i.imgur.com/ci09d9g.png
スクリーンセーバーの稼働開始時間を簡単に変更したくて、
ネットでそれらしいScript探してきたんですが、実行して見たらエラーが出てしまいました
コードの修正方法わかればお知らせください
コードとエラー内容は添付のイメージの通りです。
https://i.imgur.com/ci09d9g.png
347名称未設定
2019/03/23(土) 12:05:51.98ID:4RgCPhsh0 OSバージョンを明らかに
それとスクリプトはどこにある
それとスクリプトはどこにある
348名称未設定
2019/03/23(土) 12:16:42.15ID:XBdRsdKw0 早速のレスありがとう
OSは Mojave 10.4.3
ソースは誰かのブログだと思うけど
http://nyoro2.net/wp/?p=93
です。
そうそう、「初心者」というのはAppleScriptが初心者という事で
Macは10年以上使ってます
OSは Mojave 10.4.3
ソースは誰かのブログだと思うけど
http://nyoro2.net/wp/?p=93
です。
そうそう、「初心者」というのはAppleScriptが初心者という事で
Macは10年以上使ってます
349名称未設定
2019/03/23(土) 12:51:05.16ID:4RgCPhsh0 OS聞いといたくせにこっちはMojaveじゃないんだけど、この↓スクリプトを
tell application "System Events"
tell process "System Preferences"
entire contents of window 1
end tell
end tell
・デスクトップ側を選んで実行 →結果にUIエレメントが普通にずらずら〜っと出る
・スクリーンセーバ側を選んで実行 →結果に何も出ない、空 {}
になったからAppleScriptでは無理なのかも
UI Browserでも検出されない
で、System Eventsの用語説明を開くとscreen saverがあるから、UI操作じゃなくて直接設定するんじゃない
tell application "System Events"
set delay interval of screen saver preferences to 10 * minutes
end tell
とかで変更できるようだけど
tell application "System Events"
tell process "System Preferences"
entire contents of window 1
end tell
end tell
・デスクトップ側を選んで実行 →結果にUIエレメントが普通にずらずら〜っと出る
・スクリーンセーバ側を選んで実行 →結果に何も出ない、空 {}
になったからAppleScriptでは無理なのかも
UI Browserでも検出されない
で、System Eventsの用語説明を開くとscreen saverがあるから、UI操作じゃなくて直接設定するんじゃない
tell application "System Events"
set delay interval of screen saver preferences to 10 * minutes
end tell
とかで変更できるようだけど
350名称未設定
2019/03/23(土) 13:39:30.92ID:oXMaMgqy0 Mojaveでなくても(Sierraでも)すでに動かないスクリプトだね
https://www.youtube.com/watch?v=JKVdbktENb0&feature=youtu.be&t=41
こんなUIの時のスクリプトだろね。開始時間設定するスライダーなんて無くなったので、エラーで出ている通り
ポップアップメニューに(及びグルーピング)変わってるのでそれに対応すれば動くようにできるだろうけど、>>349の最後のがあるんだからそれを使う方が簡単確実だろね
>>349
チラっとググってdefaultsコマンドでってのがあってそれでいいじゃんと思ってたが、System Eventsであるのねええ
https://www.youtube.com/watch?v=JKVdbktENb0&feature=youtu.be&t=41
こんなUIの時のスクリプトだろね。開始時間設定するスライダーなんて無くなったので、エラーで出ている通り
ポップアップメニューに(及びグルーピング)変わってるのでそれに対応すれば動くようにできるだろうけど、>>349の最後のがあるんだからそれを使う方が簡単確実だろね
>>349
チラっとググってdefaultsコマンドでってのがあってそれでいいじゃんと思ってたが、System Eventsであるのねええ
351名称未設定
2019/03/23(土) 15:29:06.24ID:XBdRsdKw0 >>349
レスありがとうございました
おかげで、希望通りの操作ができる以下のスクリプトが書けました
set delayTime to 0
tell application "System Events"
set delayTime to delay interval of screen saver preferences
if delayTime = 0 then
set delay interval of screen saver preferences to 300
set msg to "スクリーンセーバー開始は5分間後"
else
set delay interval of screen saver preferences to 0
set msg to "スクリーンセーバーはOFF"
end if
end tell
display dialog msg
レスありがとうございました
おかげで、希望通りの操作ができる以下のスクリプトが書けました
set delayTime to 0
tell application "System Events"
set delayTime to delay interval of screen saver preferences
if delayTime = 0 then
set delay interval of screen saver preferences to 300
set msg to "スクリーンセーバー開始は5分間後"
else
set delay interval of screen saver preferences to 0
set msg to "スクリーンセーバーはOFF"
end if
end tell
display dialog msg
352351
2019/03/23(土) 15:34:03.21ID:XBdRsdKw0 ありゃ、レスが1行おきになってしまった
Twinkleのレスのレビューでコード部分が1行で繋がってしまったので改行入れたら1行おきになってしまった
Twinkleのバグだったか
Twinkleのレスのレビューでコード部分が1行で繋がってしまったので改行入れたら1行おきになってしまった
Twinkleのバグだったか
353名称未設定
2019/03/28(木) 10:48:32.04ID:AaFTaDr40 作成し直しというか別名で保存しないとダークモードで動作してくれないのね
354名称未設定
2019/03/28(木) 10:58:52.77ID:+up6tGkS0 レスそのままの意味でのではそうでもないけど
355名称未設定
2019/04/19(金) 20:44:26.97ID:V4x/CTV/0 >>316
https://pastecode.xyz/view/be96be14
JXAなscrpをAppleScriptからScript Libraryとして読めない呼べないのはよしとしよう(まだでそのうちに使えるようになるんでしょ?)
load script でどうせなら、JavaScriptのソース部分だけテキストで返してくれればいいのに
run script in "JavaScript" で with parameter は使えないのか??のくせに run() は実行するしようとするのね(いや、その方がいいんだろうけど)
もうちょっとあとちょっとツメてほしいとこ
https://pastecode.xyz/view/be96be14
JXAなscrpをAppleScriptからScript Libraryとして読めない呼べないのはよしとしよう(まだでそのうちに使えるようになるんでしょ?)
load script でどうせなら、JavaScriptのソース部分だけテキストで返してくれればいいのに
run script in "JavaScript" で with parameter は使えないのか??のくせに run() は実行するしようとするのね(いや、その方がいいんだろうけど)
もうちょっとあとちょっとツメてほしいとこ
356名称未設定
2019/04/19(金) 21:16:01.95ID:po87l5Oa0 > まだでそのうちに使えるようになるんでしょ?
とうに開発チームも解散されられたし、そういうことにはならんのじゃないの
とうに開発チームも解散されられたし、そういうことにはならんのじゃないの
357名称未設定
2019/04/19(金) 21:24:54.86ID:V4x/CTV/0 そういう息を吐くように嘘はいらんから
358名称未設定
2019/04/19(金) 21:37:21.43ID:po87l5Oa0 どうせあてになんないよ
iOSと共通に使えない機能なんか開発リソース縮小されてんだから
iOSと共通に使えない機能なんか開発リソース縮小されてんだから
359名称未設定
2019/04/19(金) 21:48:34.03ID:V4x/CTV/0 そういう妄想自分はそう思うだけのもいらんから(なに後退してるねんw)
iWorkでもちょっとは前進したみたいだけど。ちょっとだけだけどなw
iWorkでもちょっとは前進したみたいだけど。ちょっとだけだけどなw
360watarie
2019/04/20(土) 20:01:10.76ID:2MHI6VMA0 空のスクリプトオブジェクトを呼び出すと
スタックオーバフローで続けることができなくなるようです。
どなたか何故そうなるのか教えて頂けませんでしょうか?
tell test to run--これがエラーします
script test
end script
test2()--これはエラーしません
on test2()
end test2
スタックオーバフローで続けることができなくなるようです。
どなたか何故そうなるのか教えて頂けませんでしょうか?
tell test to run--これがエラーします
script test
end script
test2()--これはエラーしません
on test2()
end test2
361watarie
2019/04/20(土) 20:17:51.66ID:2MHI6VMA0 先程の質問なんですが
scriptの中に
何かを記述するか
runハンドラを入れるとうまくいきました。
なにか入れないとrunハンドラが発生しないのでしょうか・・・
つまらないことを聞いてすみません。
scriptの中に
何かを記述するか
runハンドラを入れるとうまくいきました。
なにか入れないとrunハンドラが発生しないのでしょうか・・・
つまらないことを聞いてすみません。
362名称未設定
2019/04/20(土) 20:28:16.57ID:yLj5TBgV0 load script でも run script でもスクリプトとして空なのはダメっぽい
run ハンドラ入れなくても、何かスクリプトとして一行でもあればいいっぽい
スタックオーバフローは空であるかどうかのチェックをせずになんかぐるぐるしてスタックオーバーフローにっぽいけど、まあ、エラーにはしてるんだからw
script は空ではダメってだけ(それで困ることはない、もしくは on error で引っかかる)でいいんじゃね
run ハンドラ入れなくても、何かスクリプトとして一行でもあればいいっぽい
スタックオーバフローは空であるかどうかのチェックをせずになんかぐるぐるしてスタックオーバーフローにっぽいけど、まあ、エラーにはしてるんだからw
script は空ではダメってだけ(それで困ることはない、もしくは on error で引っかかる)でいいんじゃね
363名称未設定
2019/04/20(土) 22:03:53.08ID:yLj5TBgV0 ああ、間違えたかな
load script は空でも読めそう
run script 及び、load script での run は、空コメント
--
2文字(3文字?)でもあれば、エラーにならない(ある意味ナゾw)
script ~
end script
run の場合、実行すべき文が無ければなにか彷徨ってスタックオーバーフローかな
on で別のハンドラとかがちゃんとあってもスタックオーバーフロー。on run でなくても実行すべき文が一行があればそうならない、それが例えリテラル
0
一文字だとしても(まあ、リターン文のようなもんだろけど)
load script は空でも読めそう
run script 及び、load script での run は、空コメント
--
2文字(3文字?)でもあれば、エラーにならない(ある意味ナゾw)
script ~
end script
run の場合、実行すべき文が無ければなにか彷徨ってスタックオーバーフローかな
on で別のハンドラとかがちゃんとあってもスタックオーバーフロー。on run でなくても実行すべき文が一行があればそうならない、それが例えリテラル
0
一文字だとしても(まあ、リターン文のようなもんだろけど)
364watarie
2019/04/22(月) 18:27:46.90ID:b5k8dtsU0 ご返答くださいまして有り難うございました。
まさかこんなに早く回答いただけるなんて思ってもいませんでした。
自分の中で腑に落ちました。
本当にありがとうございました。
まさかこんなに早く回答いただけるなんて思ってもいませんでした。
自分の中で腑に落ちました。
本当にありがとうございました。
365watarie
2019/04/22(月) 18:35:20.23ID:b5k8dtsU0 すみません。又質問なのですが^^;
下のrun scriptで最後にmeを付けないとdialog()が動かないようです。
meはこの作られる予定のスクリプト自身を指すのは分かるのですが、
最後にそれを入れないとハンドラが動かない理由をどなたか知りませんでしょうか?
run script "
on dialog(naiyou)
display dialog naiyou
end
me
"
result's dialog("テスト")
下のrun scriptで最後にmeを付けないとdialog()が動かないようです。
meはこの作られる予定のスクリプト自身を指すのは分かるのですが、
最後にそれを入れないとハンドラが動かない理由をどなたか知りませんでしょうか?
run script "
on dialog(naiyou)
display dialog naiyou
end
me
"
result's dialog("テスト")
366名称未設定
2019/04/22(月) 19:08:24.33ID:HEwjvD6Z0 run script ~
なので、あくまでも以下のスクリプトを実行 するにすぎない
meが無けれななにも実行しないとのと同じ
me があることによって run script の実行結果として(たまたま) run script で実行中の自身の scriptオブジェクト が返ることになり、その scriptオブジェクト 対して存在する dialog ハンドラを呼んでいるから動くってとこかな
その使い方が真っ当かどうかはわからんw イレギュラーっぽい感じがするけどね
なので、あくまでも以下のスクリプトを実行 するにすぎない
meが無けれななにも実行しないとのと同じ
me があることによって run script の実行結果として(たまたま) run script で実行中の自身の scriptオブジェクト が返ることになり、その scriptオブジェクト 対して存在する dialog ハンドラを呼んでいるから動くってとこかな
その使い方が真っ当かどうかはわからんw イレギュラーっぽい感じがするけどね
367名称未設定
2019/04/22(月) 19:17:42.98ID:HEwjvD6Z0 スクリプトな文字列からscriptオブジェクトを作る文は用意されてないのか??
だったら、その手法はその目的ではアリなのか
だったら、その手法はその目的ではアリなのか
368watarie
2019/04/22(月) 20:36:27.87ID:b5k8dtsU0 set aList to {{_name:"watarie", _age:39}, {_name:"tanaka", _age:30}, {_name:"sugita", _age:25}, {_name:"watanabe", _age:25}}
theWhose(aList, "wata", "_name")
on theWhose(aList, _keyValue, _keyAsText) --1.レコードのリスト 2.絞り込みたい内容 3.key値をテキストにしたもの
set resultList to {}
repeat with i from 1 to (length of aList)
run script "
on getValue(itemI)
return |" & _keyAsText & "| of itemI
end
me
"
result's getValue(item i of aList)
if _keyValue is in result then set end of resultList to item i of aList
end repeat
return resultList
end theWhose
theWhose(aList, "wata", "_name")
on theWhose(aList, _keyValue, _keyAsText) --1.レコードのリスト 2.絞り込みたい内容 3.key値をテキストにしたもの
set resultList to {}
repeat with i from 1 to (length of aList)
run script "
on getValue(itemI)
return |" & _keyAsText & "| of itemI
end
me
"
result's getValue(item i of aList)
if _keyValue is in result then set end of resultList to item i of aList
end repeat
return resultList
end theWhose
369watarie
2019/04/22(月) 20:37:37.10ID:b5k8dtsU0 レコードのリストでwhoseみたいなことがしたいと思っていまして。
自分で調べながら作ったのですがどうしてもmeだけが腑に落ちませんでした。
理解できないと覚えられないタチで^^;;;
ご教示ありがとうございました!
自分で調べながら作ったのですがどうしてもmeだけが腑に落ちませんでした。
理解できないと覚えられないタチで^^;;;
ご教示ありがとうございました!
370watarie
2019/04/22(月) 20:45:17.24ID:b5k8dtsU0 run scriptで最後にmeを使わなければ、ただの実行結果が返り値になって
meを使うとscirptオブジェクトそのものが返って、その中に含まれているハンドラも動くようになると言う感じで良いでしょうか?(・・;
meを使うとscirptオブジェクトそのものが返って、その中に含まれているハンドラも動くようになると言う感じで良いでしょうか?(・・;
371名称未設定
2019/04/22(月) 21:17:35.66ID:HEwjvD6Z0 run script ~
だから、結果を返す(こともできる or ある意味勝手に返す、最後のどうであれ文の結果のなにがしら。>>363の最後も同じことそゆこと)。最後に
me
なので、実行している自身の scriptオブジェクト を返すことになる(最後に return me としたいとこだが、ルート(?)レベルで return は書けない)
呼び出し側は返ってきたたのが(どうであれ)scriptオブジェクト なので、以後、scriptオブジェクト に対しての(load script や script で宣言した scriptオブジェクト と同じ)
set dialogScriptObject to run script "
on dialog(naiyou)
display dialog naiyou
end
on run
return me
end run"
set dialogScriptObject to load script "dialogScriptObject.scpt"
script dialogScriptObject
on dialog(naiyou)
display dialog naiyou
end dialog
end script
dialogScriptObject's dialog("テスト")
おなじこと(ほぼ)
だから、結果を返す(こともできる or ある意味勝手に返す、最後のどうであれ文の結果のなにがしら。>>363の最後も同じことそゆこと)。最後に
me
なので、実行している自身の scriptオブジェクト を返すことになる(最後に return me としたいとこだが、ルート(?)レベルで return は書けない)
呼び出し側は返ってきたたのが(どうであれ)scriptオブジェクト なので、以後、scriptオブジェクト に対しての(load script や script で宣言した scriptオブジェクト と同じ)
set dialogScriptObject to run script "
on dialog(naiyou)
display dialog naiyou
end
on run
return me
end run"
set dialogScriptObject to load script "dialogScriptObject.scpt"
script dialogScriptObject
on dialog(naiyou)
display dialog naiyou
end dialog
end script
dialogScriptObject's dialog("テスト")
おなじこと(ほぼ)
372watarie
2019/04/22(月) 21:31:45.72ID:b5k8dtsU0 うわわわ。すごく分かります。
returnということだったんですね〜
出口まで案内していただき、ありがとうございます!
当方飲み込み悪いんで今回めっちゃ勉強になりました!
run scriptでできることの幅が広がりそうです。
有り難うございました!^^
returnということだったんですね〜
出口まで案内していただき、ありがとうございます!
当方飲み込み悪いんで今回めっちゃ勉強になりました!
run scriptでできることの幅が広がりそうです。
有り難うございました!^^
373名称未設定
2019/04/23(火) 19:32:11.04ID:njFtA4nd0 return meはトップレベルで書けないなんてルールあったかな?
まあ、トラブりたくなければ
on run
end run
は省略しない方がいい。
まあ、トラブりたくなければ
on run
end run
は省略しない方がいい。
374名称未設定
2019/04/23(火) 20:30:20.52ID:k/h6+in70 今はベタでreturn書けるようになったのか。昔は書けなかったーエラーになったような気がしてた
もしかしたらJavaScriptと混同してただけかもしれないが、AppleScriptもそうだった気がするんだけどな
もしかしたらJavaScriptと混同してただけかもしれないが、AppleScriptもそうだった気がするんだけどな
375名称未設定
2019/04/23(火) 22:39:43.23ID:dhicO9pL0 >>360
>tell test to run--これがエラーします
>
>script test
>end script
この場合、testは親スクリプトのrunを継承しているから、自分自身を無限に呼び出しているのかな?
それがload scriptとの違いかもしれない。
>tell test to run--これがエラーします
>
>script test
>end script
この場合、testは親スクリプトのrunを継承しているから、自分自身を無限に呼び出しているのかな?
それがload scriptとの違いかもしれない。
376watarie
2019/04/25(木) 19:14:00.13ID:oOLbKuUl0 度々すみません。
次はillustratorの絡みなんですけど場所違いでしたらすみません。
アクションを削除するコマンドが辞書にあったので使おうとしているのですが
エラーが起こってしまい進めません。
tell application "Adobe Illustrator"
tell current document
load action action file path POSIX file saveFile--ファイルパスの変数です。これはうまくいきました。
unload action action file path "アクションのセット名"--ここでつまずきます
end tell
end tell
因みに辞書は
unload action v : unloads an action into action palette
unload action
action file path text : Name of the set to be unloaded
action file path text : Name of the action to be unloaded
エラー内容は
error "Adobe Illustratorでエラーが起きました: Illegal argument - argument 1
- Required value is missing" number 1242
辞書の引数名が間違ってると思うのですが・・・
どなたかご存知ありませんでしょうか?
次はillustratorの絡みなんですけど場所違いでしたらすみません。
アクションを削除するコマンドが辞書にあったので使おうとしているのですが
エラーが起こってしまい進めません。
tell application "Adobe Illustrator"
tell current document
load action action file path POSIX file saveFile--ファイルパスの変数です。これはうまくいきました。
unload action action file path "アクションのセット名"--ここでつまずきます
end tell
end tell
因みに辞書は
unload action v : unloads an action into action palette
unload action
action file path text : Name of the set to be unloaded
action file path text : Name of the action to be unloaded
エラー内容は
error "Adobe Illustratorでエラーが起きました: Illegal argument - argument 1
- Required value is missing" number 1242
辞書の引数名が間違ってると思うのですが・・・
どなたかご存知ありませんでしょうか?
377watarie
2019/04/25(木) 20:20:58.05ID:oOLbKuUl0 いつもありがとうございます。 376の件で
javascriptにて方法を見つけられましたのでお知らせします。
tell application "Adobe Illustrator"
tell current document
load action action file path POSIX file saveFile
do javascript "
unloadAction('セット名','')
"--javascriptならできたのでこれで回避します。
end tell
end tell
以上です。お騒がせしました。^^;
javascriptにて方法を見つけられましたのでお知らせします。
tell application "Adobe Illustrator"
tell current document
load action action file path POSIX file saveFile
do javascript "
unloadAction('セット名','')
"--javascriptならできたのでこれで回避します。
end tell
end tell
以上です。お騒がせしました。^^;
378名称未設定
2019/05/05(日) 19:02:24.41ID:C1jHmsWF0 複数また単体jpgファイルを放り込むとImageOptimが起動、
ImageOptimの自動処理としてexifデータ削除後、ImageOptimを閉じる。
というものをautomatorやapplescriptで書いてますが、
automatorではアプリケーションを終了指示が無視され、
applescriptではImageOptimが処理を開始する前に終了命令が実行されてしまいます。
どなたか方法を教えてください。
ImageOptimの自動処理としてexifデータ削除後、ImageOptimを閉じる。
というものをautomatorやapplescriptで書いてますが、
automatorではアプリケーションを終了指示が無視され、
applescriptではImageOptimが処理を開始する前に終了命令が実行されてしまいます。
どなたか方法を教えてください。
379名称未設定
2019/05/05(日) 19:17:19.87ID:ZMil4/BF0 どう書いたのか上げてくれると答えやすいと思う
380名称未設定
2019/05/05(日) 19:51:19.10ID:ZMil4/BF0 ざっくりと
set theFiles {"/Users/.../File1.jpg", "/Users/.../File2.jpg", "/Users/.../File3.jpg"}
tell application "ImageOptim" to open theFiles
tell application "System Events"
tell window "ImageOptim" of process "ImageOptim"
repeat
if not (exists busy indicator 1) then
delay 1
if not (exists busy indicator 1) then exit repeat
end if
delay 1
end repeat
end tell
end tell
tell application "ImageOptim" to quit
set theFiles {"/Users/.../File1.jpg", "/Users/.../File2.jpg", "/Users/.../File3.jpg"}
tell application "ImageOptim" to open theFiles
tell application "System Events"
tell window "ImageOptim" of process "ImageOptim"
repeat
if not (exists busy indicator 1) then
delay 1
if not (exists busy indicator 1) then exit repeat
end if
delay 1
end repeat
end tell
end tell
tell application "ImageOptim" to quit
381名称未設定
2019/05/05(日) 20:46:53.94ID:L/9i61t+0 >>378
自分も同じことをAppleScriptでグラコンと組み合わせてやってる。
Automatorでやるんだったらこんな感じだと思う。
https://www.macorz.com/example/rea.png
自分も同じことをAppleScriptでグラコンと組み合わせてやってる。
Automatorでやるんだったらこんな感じだと思う。
https://www.macorz.com/example/rea.png
382名称未設定
2019/05/05(日) 23:22:53.58ID:C1jHmsWF0383watarie
2019/05/11(土) 19:13:16.25ID:hz1ihtRj0 知ってる人は知ってると思いますが、偶然見つけたのでお知らせします。
ハンドラからrunハンドラの変数を使うときは、引数に入れなくても、
my 変数としたらうまくいきました。
set aaa to 1
test()
on test()
display dialog my aaa
end test
いちいち引数に詰め込んでたけど開放されそうです。
ただ、引数の良いところが使えないので使い分けると良いかもしれません。
ハンドラからrunハンドラの変数を使うときは、引数に入れなくても、
my 変数としたらうまくいきました。
set aaa to 1
test()
on test()
display dialog my aaa
end test
いちいち引数に詰め込んでたけど開放されそうです。
ただ、引数の良いところが使えないので使い分けると良いかもしれません。
384名称未設定
2019/05/11(土) 19:37:44.28ID:px/tgCTS0385名称未設定
2019/05/12(日) 09:49:47.09ID:MriXhlWP0386名称未設定
2019/05/13(月) 11:21:47.88ID:bti+YmC00 screenセーバーの開始を5分後とOFFを切り替えるスクリプト作ったんだけど、
Dockのiconに現在の設定をバッジで表示しようとして、ネットで調べて追記してみたけど上手くいかない
どなたか解決策を教えてください
コードとエラーは添付の通り
https://i.imgur.com/6nNHZ0U.png
Dockのiconに現在の設定をバッジで表示しようとして、ネットで調べて追記してみたけど上手くいかない
どなたか解決策を教えてください
コードとエラーは添付の通り
https://i.imgur.com/6nNHZ0U.png
387名称未設定
2019/05/13(月) 11:48:16.30ID:fAgZmDit0388名称未設定
2019/05/13(月) 12:03:59.96ID:AwyTd4670 エラーメッセージに書いてあるとおりの、shodDockBadge: が tell application "System Events" の(スコープの)外にあるのでわかりませんっていう
shodDockBadge: があるとこの me/my を付ける明示する
showDockBadge_("5") of me
か
me's showDockBadge:"5"
か
my showDockBadge:"5"
っていう。上のネタとちょっと被ってるね偶然にも
shodDockBadge: があるとこの me/my を付ける明示する
showDockBadge_("5") of me
か
me's showDockBadge:"5"
か
my showDockBadge:"5"
っていう。上のネタとちょっと被ってるね偶然にも
389名称未設定
2019/05/13(月) 12:12:32.60ID:AwyTd4670 showDockBadge: ハンドラはObjective-C形式なのに、なんで呼び出し側が(古い)関数(AppleScriptユーザ関数ハンドラ?)形式やねんと思ったら、勝手にObjective-C形式になるのね
Objective-C形式は、いつでもどこもで me's か my は必要だった。そりゃそうか
Objective-C形式は、いつでもどこもで me's か my は必要だった。そりゃそうか
390名称未設定
2019/05/13(月) 12:19:12.65ID:AwyTd4670 勝手に変わるのはハンドラ定義、また、いつでもどこも me's / my が必要なのはObjective-C形式で呼び出す場合
showDockBadge_("5")
で呼び出す場合は、スコープでme/myになる場合はme/myはいらない(というか省略可能という方が正しいのか)
showDockBadge_("5")
で呼び出す場合は、スコープでme/myになる場合はme/myはいらない(というか省略可能という方が正しいのか)
391名称未設定
2019/05/13(月) 12:28:48.56ID:AwyTd4670392名称未設定
2019/05/13(月) 16:48:50.02ID:bti+YmC00 >>388
早速のレスありがとうございます。
AppleScriptは初心者で変更前のスクリプトもここで助けてもらって書きました。
教えていただいた方法で一歩は進んだのですが、今度はshowDockBadge関数でsetBadgeLabelなんてメッソド無いよみたいなエラーとなりました。
ネットにあったバッジに項目を表示するスクリプトを実行しても同じエラーとなります。AppleScriptのバージョンの問題でしょうかね?
私の環境はMojaveでAppleScriptは2.7です。
・参考にしてるHP
http://piyocast.com/as/archives/914
・HPにあるSampleスクリプトの実行結果
https://i.imgur.com/TP44nM7.png
・修正後の私のスクリプトの実行結果
https://i.imgur.com/0orKTYh.png
早速のレスありがとうございます。
AppleScriptは初心者で変更前のスクリプトもここで助けてもらって書きました。
教えていただいた方法で一歩は進んだのですが、今度はshowDockBadge関数でsetBadgeLabelなんてメッソド無いよみたいなエラーとなりました。
ネットにあったバッジに項目を表示するスクリプトを実行しても同じエラーとなります。AppleScriptのバージョンの問題でしょうかね?
私の環境はMojaveでAppleScriptは2.7です。
・参考にしてるHP
http://piyocast.com/as/archives/914
・HPにあるSampleスクリプトの実行結果
https://i.imgur.com/TP44nM7.png
・修正後の私のスクリプトの実行結果
https://i.imgur.com/0orKTYh.png
393名称未設定
2019/05/13(月) 17:35:12.09ID:mbqTpx2r0 最初から参考にしたページ出しとけっちゅーねん毎度毎度
394名称未設定
2019/05/13(月) 18:12:17.79ID:AwyTd4670 >>392
とりあえず、Mojaveで問題なく動いている。Mojaveアップデートしてなかったからアップデート中
>setBadgeLabelなんてメッソド無いよみたい
AppleScript実現するための内部オブジェクトに対して isEqualToString: を呼ぼうとしている
本来Objective-Cの文字列クラス(NSString)であるべきインスタンスがなんか違うインスタンス(AppleScript実現するための内部オブジェクト)になっているという。とかなんとか、内部のどこかで
そのAppleScriptではそんなインスタンス間違いしてそうにしそうに見えないけどなあ
とりあえず、Mojaveで問題なく動いている。Mojaveアップデートしてなかったからアップデート中
>setBadgeLabelなんてメッソド無いよみたい
AppleScript実現するための内部オブジェクトに対して isEqualToString: を呼ぼうとしている
本来Objective-Cの文字列クラス(NSString)であるべきインスタンスがなんか違うインスタンス(AppleScript実現するための内部オブジェクト)になっているという。とかなんとか、内部のどこかで
そのAppleScriptではそんなインスタンス間違いしてそうにしそうに見えないけどなあ
395名称未設定
2019/05/13(月) 18:41:55.39ID:AwyTd4670 10.14.4 にしてみたが、何も問題なく動いているね。その参考にしてるHPのサンプルは
おま環かなあ。Mac再起動、新しいユーザを作ってそっちでどうなのとかかなあ
おま環かなあ。Mac再起動、新しいユーザを作ってそっちでどうなのとかかなあ
396名称未設定
2019/05/13(月) 18:42:27.18ID:bti+YmC00 >>394
レスありがとうございます。
お手数おかけしてしまいすみません
原因は不明ですがとりあえず解決しました
誤って、スクリプトエディタを終了してしまったので、再起動して再度実行してみたら、どちらのスクリプトも上手く行きました。
AppleScript奥が深い
レスありがとうございます。
お手数おかけしてしまいすみません
原因は不明ですがとりあえず解決しました
誤って、スクリプトエディタを終了してしまったので、再起動して再度実行してみたら、どちらのスクリプトも上手く行きました。
AppleScript奥が深い
397名称未設定
2019/05/14(火) 05:30:46.51ID:cZFEsQrI0 このスレってなんでお上品なんだよ?
オッパイとかちんことかまんことか全然出てこないのな
なんなんだよ?
ほんとはそういうの好きなくせに
そうだろ?
オッパイとかちんことかまんことか全然出てこないのな
なんなんだよ?
ほんとはそういうの好きなくせに
そうだろ?
398名称未設定
2019/05/15(水) 01:54:40.38ID:ELX00/ds0 say "おっぱい" using "Kyoko" volume 1
Otoyaは下手だな"おぱい"
Otoyaは下手だな"おぱい"
399名称未設定
2019/06/18(火) 16:01:33.37ID:zFJXUthD0 質問です
ファインダーのサイドバーに特定のファイルやフォルダを置くコマンドはありますでしょうか
やりたいことは
1. 毎日1個、名前が日付のディレクトリを作る、今日だったら「190618」
2. 最新の日付のフォルダを「today」という名前で参照出来るようにする
3. このtodayフォルダを、ファインダーのサイドバーに置く
です
1と2は以下のシェルをlaunchdで0時に行っています
#!/bin/bash
tmp=`date +%y%m%d` # 日付文字列作る
mkdir "$tmp" # 日付フォルダ作る
unlink ./today # シンボリックリンクtodayをいったん消す
ln -s ./today "$tmp" # 改めて日付フォルダにシンボリックリンク
で、このシンボリックリンクtodayを今は手動でドラッグして
ファインダーのサイドバー、よく使う項目の一番下に置いています
一度置くと暫くは保つのですが、日をまたぐと
サイドバーからtodayが消えてしまうことがしばしば起こります
※消える理由がよくわかっていません
※上記シェルが動いてtodayが更新されるときに、何らかの条件で消える?
ので、明示的&自動的にファインダーのサイドバーに設置したいのですが
やりようはありますでしょうか?
ファインダーのサイドバーに特定のファイルやフォルダを置くコマンドはありますでしょうか
やりたいことは
1. 毎日1個、名前が日付のディレクトリを作る、今日だったら「190618」
2. 最新の日付のフォルダを「today」という名前で参照出来るようにする
3. このtodayフォルダを、ファインダーのサイドバーに置く
です
1と2は以下のシェルをlaunchdで0時に行っています
#!/bin/bash
tmp=`date +%y%m%d` # 日付文字列作る
mkdir "$tmp" # 日付フォルダ作る
unlink ./today # シンボリックリンクtodayをいったん消す
ln -s ./today "$tmp" # 改めて日付フォルダにシンボリックリンク
で、このシンボリックリンクtodayを今は手動でドラッグして
ファインダーのサイドバー、よく使う項目の一番下に置いています
一度置くと暫くは保つのですが、日をまたぐと
サイドバーからtodayが消えてしまうことがしばしば起こります
※消える理由がよくわかっていません
※上記シェルが動いてtodayが更新されるときに、何らかの条件で消える?
ので、明示的&自動的にファインダーのサイドバーに設置したいのですが
やりようはありますでしょうか?
400名称未設定
2019/06/18(火) 17:09:40.77ID:aXQlV97M0401名称未設定
2019/06/18(火) 18:10:40.02ID:tu09u4QW0 シンボリックリンク削除、作り直しではなくて
ln -nfs
でリンク先を変更したら上手く行かないのかな?
ln -nfs
でリンク先を変更したら上手く行かないのかな?
403名称未設定
2019/06/21(金) 00:17:41.23ID:A429MNsG0 UI Scriptingで、手前のアプリのうち、手前になってないWindowを手前にしたい場合はどうすればいいのでしょう?
clickもselectもダメでした
tell application id "com.apple.systemevents"
tell (first application process that frontmost is true)
--↓特定の条件に見合ったウインドウを手前にしたい
tell (first window that name starts with "Google" and subrole is "AXStandardWindow")
click --ダメ
select --ダメ
end tell
end tell
end tell
clickもselectもダメでした
tell application id "com.apple.systemevents"
tell (first application process that frontmost is true)
--↓特定の条件に見合ったウインドウを手前にしたい
tell (first window that name starts with "Google" and subrole is "AXStandardWindow")
click --ダメ
select --ダメ
end tell
end tell
end tell
404名称未設定
2019/06/21(金) 00:55:00.86ID:rNJQTnSo0 ちょっと試したところ
perform action "AXRaise"
perform action "AXRaise"
405名称未設定
2019/06/21(金) 02:49:05.98ID:A429MNsG0 それで行けました!
ググったらAXPressとかAXShowMenuとか色々あるんですね
ありがとうございます
ググったらAXPressとかAXShowMenuとか色々あるんですね
ありがとうございます
406名称未設定
2019/07/28(日) 20:54:03.37ID:coviUxk00 質問です
tell application "アプリ名" to activate
tell application "System Events" to key code 53
delay 1
tell application "アプリ名" to quit
上記で、ある特定のアプリをフルスクリーンを解除してから終了させるときに、
フルスクリーンになってる場合だけ、2行目のescを押すようにしたいんだけど、
どう書けばいいでしょうか?
if (現在フルスクリーンの状態←どう書くのかわからない…) then
みたいなので、できますか?
macos10.12
tell application "アプリ名" to activate
tell application "System Events" to key code 53
delay 1
tell application "アプリ名" to quit
上記で、ある特定のアプリをフルスクリーンを解除してから終了させるときに、
フルスクリーンになってる場合だけ、2行目のescを押すようにしたいんだけど、
どう書けばいいでしょうか?
if (現在フルスクリーンの状態←どう書くのかわからない…) then
みたいなので、できますか?
macos10.12
407名称未設定
2019/07/28(日) 21:08:36.79ID:P72Ob8Tn0 ウィンドウがフルスクリーンなのかは
tell application "Finder" to set screenBounds to bounds of window of desktop
tell application "なにか"
if bounds of window どれか is screenBounds then
// フルスクリーン
end if
end tell
っていう。どこかで書いてあったのを使ってる
tell application "Finder" to set screenBounds to bounds of window of desktop
tell application "なにか"
if bounds of window どれか is screenBounds then
// フルスクリーン
end if
end tell
っていう。どこかで書いてあったのを使ってる
409名称未設定
2019/07/28(日) 21:34:58.58ID:P72Ob8Tn0 System Events の process の window だと attribute "AXFullScreen" が状態及びそこを書き換えればいいだけだね
System Events の process の windows は他のスペースやフルスクリーンのが入ってないけど、>>406のようにアクティブにするならこっちの方がかな
tell application "System Events"
tell front window of process "アプリ名"
if value of attribute "AXFullScreen" then set value of attribute "AXFullScreen" to false
end tell
end tell
確認でやった、実行するごとに行き来
tell application "System Events"
tell front window of process "Script Editor"
set value of attribute "AXFullScreen" to not value of attribute "AXFullScreen"
end tell
end tell
>>408
うん
System Events の process の windows は他のスペースやフルスクリーンのが入ってないけど、>>406のようにアクティブにするならこっちの方がかな
tell application "System Events"
tell front window of process "アプリ名"
if value of attribute "AXFullScreen" then set value of attribute "AXFullScreen" to false
end tell
end tell
確認でやった、実行するごとに行き来
tell application "System Events"
tell front window of process "Script Editor"
set value of attribute "AXFullScreen" to not value of attribute "AXFullScreen"
end tell
end tell
>>408
うん
411名称未設定
2019/07/28(日) 22:02:04.30ID:coviUxk00 試しにテキストエディットでやってみたけど、
全体で、これであってます?
tell application "TextEdit" to activate
tell application "System Events"
tell front window of process "TextEdit"
if value of attribute "AXFullScreen" then set value of attribute "AXFullScreen" to false
tell application "System Events" to key code 53
delay 1
tell application "TextEdit" to quit
end tell
end tell
フルスクリーンの状態で実行したら、以下のエラーが出ました
error "System Eventsでエラーが起きました: window 1 of process ¥"TextEdit¥"を取り出すことはできません。正しくないインデックスです。" number -1719 from window 1 of process "TextEdit"
でもフルスクリーンじゃない状態で実行しても、escが空振りしてる音がするので、たぶん違うんですよね?…
全体で、これであってます?
tell application "TextEdit" to activate
tell application "System Events"
tell front window of process "TextEdit"
if value of attribute "AXFullScreen" then set value of attribute "AXFullScreen" to false
tell application "System Events" to key code 53
delay 1
tell application "TextEdit" to quit
end tell
end tell
フルスクリーンの状態で実行したら、以下のエラーが出ました
error "System Eventsでエラーが起きました: window 1 of process ¥"TextEdit¥"を取り出すことはできません。正しくないインデックスです。" number -1719 from window 1 of process "TextEdit"
でもフルスクリーンじゃない状態で実行しても、escが空振りしてる音がするので、たぶん違うんですよね?…
413名称未設定
2019/07/28(日) 22:22:54.68ID:P72Ob8Tn0 >>411
のために、下の Script Editor のを付けたのに...w
>System Events の process の windows は他のスペースやフルスクリーンのが入ってない
からじゃないの
tell application "TextEdit" to activate
を実行して実際にアクティブになるまでは「間」がある。delayでも入れる(本当はちゃんとアクティブになるまでの方がいいが)
if value of attribute "AXFullScreen" then set value of attribute "AXFullScreen" to false
で、フルスクリーンだったらフルスクリーンをやめるなので、
tell application "System Events" to key code 53
はいらない
これでいいんじゃないの
tell application "TextEdit" to activate
delay 1
tell application "System Events"
tell front window of process "TextEdit"
if value of attribute "AXFullScreen" then set value of attribute "AXFullScreen" to false
end tell
end tell
delay 1
tell application "TextEdit" to quit
>>412
ウィンドウは複数ありえあるのでどのウィンドウというのが必要でしょ
順番の番号や名前やidなどで指定する
window 1 とか front window とか window "名称未設定" とか window id "123456" とか
のために、下の Script Editor のを付けたのに...w
>System Events の process の windows は他のスペースやフルスクリーンのが入ってない
からじゃないの
tell application "TextEdit" to activate
を実行して実際にアクティブになるまでは「間」がある。delayでも入れる(本当はちゃんとアクティブになるまでの方がいいが)
if value of attribute "AXFullScreen" then set value of attribute "AXFullScreen" to false
で、フルスクリーンだったらフルスクリーンをやめるなので、
tell application "System Events" to key code 53
はいらない
これでいいんじゃないの
tell application "TextEdit" to activate
delay 1
tell application "System Events"
tell front window of process "TextEdit"
if value of attribute "AXFullScreen" then set value of attribute "AXFullScreen" to false
end tell
end tell
delay 1
tell application "TextEdit" to quit
>>412
ウィンドウは複数ありえあるのでどのウィンドウというのが必要でしょ
順番の番号や名前やidなどで指定する
window 1 とか front window とか window "名称未設定" とか window id "123456" とか
414名称未設定
2019/07/28(日) 22:44:09.63ID:coviUxk00 >>413
ありがとうございます
やりたかった動作ができました
>if value of attribute "AXFullScreen" then set value of attribute "AXFullScreen" to false
>で、フルスクリーンだったらフルスクリーンをやめるなので、
>のために、下の Script Editor のを付けたのに...w
そういうことなんですね、意味がわかりました
勉強になります
もっとあちこち検索して勉強します
どうもありがとうございました!
ありがとうございます
やりたかった動作ができました
>if value of attribute "AXFullScreen" then set value of attribute "AXFullScreen" to false
>で、フルスクリーンだったらフルスクリーンをやめるなので、
>のために、下の Script Editor のを付けたのに...w
そういうことなんですね、意味がわかりました
勉強になります
もっとあちこち検索して勉強します
どうもありがとうございました!
415名称未設定
2019/08/04(日) 09:45:26.29ID:jKsWsrz50 情報パネルにある「このアプリケーションで開く」ってAppleScriptで変更するにはどうしたらいいですか?
すべてを変更ではなく指定のアプリのみを変更したいです。
いろいろ回って切り貼りしてこんな風にしてみたのですが
tell application "System Events"
set FilePath to "/Users/user1/Desktop/Photo001.JPG"
set AppName to (path to application "Adobe Photoshop CC 2019") as text
set default application of disk item FilePath to AppName
end tell
どなたかよろしくお願いします。
あと、Automatorでなら一発なのはわかりました。
すべてを変更ではなく指定のアプリのみを変更したいです。
いろいろ回って切り貼りしてこんな風にしてみたのですが
tell application "System Events"
set FilePath to "/Users/user1/Desktop/Photo001.JPG"
set AppName to (path to application "Adobe Photoshop CC 2019") as text
set default application of disk item FilePath to AppName
end tell
どなたかよろしくお願いします。
あと、Automatorでなら一発なのはわかりました。
416名称未設定
2019/08/04(日) 10:12:16.05ID:06lM6iV50 こんなんで出来ちゃったぽいけど
set aFile to (((path to desktop) as string) & "test.txt") as alias
set anApp to path to application "CotEditor"
tell application "System Events"
set default application of aFile to anApp
end tell
set aFile to (((path to desktop) as string) & "test.txt") as alias
set anApp to path to application "CotEditor"
tell application "System Events"
set default application of aFile to anApp
end tell
417名称未設定
2019/08/04(日) 11:09:27.69ID:jKsWsrz50 ありがとうございます!
やっぱり変数の型とかの問題ですかね。よく理解しないまま試行錯誤してもうまくいかないですね
たすかりました
やっぱり変数の型とかの問題ですかね。よく理解しないまま試行錯誤してもうまくいかないですね
たすかりました
418名称未設定
2019/08/23(金) 08:36:05.82ID:WiRlxCdl0 Numbersの日付時刻のフォーマットを変更したいのですが、ググってもなかなか見つけられません、できないもんでしょうか?
419名称未設定
2019/08/23(金) 08:44:50.96ID:v+hKUxy00 結局システム環境設定の書式と連動してんじゃないの
調べてないけど
調べてないけど
420名称未設定
2019/08/23(金) 12:50:16.09ID:su+ym9RY0 カスタムフォーマット使えばシステム環境設定の書式を外れてわりと自由にかな
だがしかし、Numbers 5.1 だとカスタムフォーマットを指定すると取得すらできないので、カスタムフォーマットがAppleScriptに対応してないぽい
新し目最新だとどうなのかなあ
tell application "Numbers"
format of cell "A1" of table 1 of sheet 1 of document 1
end tell
でエラらなきゃ対応してる=できるんじゃないのかな。カスタムフォーマットを作るもあるが、対応してなきゃ一度Numbersで手動で作っておいてでも
だがしかし、Numbers 5.1 だとカスタムフォーマットを指定すると取得すらできないので、カスタムフォーマットがAppleScriptに対応してないぽい
新し目最新だとどうなのかなあ
tell application "Numbers"
format of cell "A1" of table 1 of sheet 1 of document 1
end tell
でエラらなきゃ対応してる=できるんじゃないのかな。カスタムフォーマットを作るもあるが、対応してなきゃ一度Numbersで手動で作っておいてでも
421名称未設定
2019/08/26(月) 08:01:27.03ID:8zmCsz9X0 ありがとうございます。
試してみます。
試してみます。
422名称未設定
2019/08/26(月) 19:08:45.07ID:C4Wo5j3h0 試してみました、標準の日付と時刻を選択して実行すると【date and time】が出力されますが、
カスタムフォーマットを設定して実行すると【"Numbersでエラーが起きました: AppleEventのハンドラで誤りが起きました。" number -10000】となってしまいました。
yyyy/MM/dd hh:mm:ss を設定したいだけなのに・・・残念です。
カスタムフォーマットを設定して実行すると【"Numbersでエラーが起きました: AppleEventのハンドラで誤りが起きました。" number -10000】となってしまいました。
yyyy/MM/dd hh:mm:ss を設定したいだけなのに・・・残念です。
423名称未設定
2019/11/05(火) 21:39:48.23ID:Vcy9rGGf0 スクリプトをアプリケーションとして保存して
補助のシェルスクリプトをアプレット内に一緒に格納する場合
パスをどのように書けばいいんでしたっけ?
確か出来たと思うんですが見つかりません、よろしくお願いします
補助のシェルスクリプトをアプレット内に一緒に格納する場合
パスをどのように書けばいいんでしたっけ?
確か出来たと思うんですが見つかりません、よろしくお願いします
424名称未設定
2019/11/05(火) 22:25:59.50ID:Vcy9rGGf0 & POSIX path of (path to me) & "Contents/Resources/abc.sh
すいません、これで出来ました。
もっとシンプルに出来た気がしたんですが思い違いだったのかな?
すいません、これで出来ました。
もっとシンプルに出来た気がしたんですが思い違いだったのかな?
425名称未設定
2019/11/05(火) 22:46:49.96ID:XHVSwj5L0 path to resource "abc.sh"
で、Resoucesの下を探してあったら返してくれる
で、Resoucesの下を探してあったら返してくれる
426名称未設定
2019/11/06(水) 00:00:21.25ID:Z4lzSU3E0427名称未設定
2019/11/06(水) 00:07:10.83ID:Z4lzSU3E0 あっ、出来ました!
ありがとうございました
ありがとうございました
428名称未設定
2019/11/08(金) 11:41:22.05ID:u7OnL8t/0 AppleScriptObjCで、独自のcompare:メソッドを持ってNSMutableArrayのsortUsingSelector:"compare:"でソートできる
NSObjectサブクラスを作れないかなと思ったのですが、下記を実行すると
-[NSObject compare:]: unrecognized selector sent to instance 0x600003f81d60
というエラーになってしまいます。
MyObjectのインスタンスの作り方が悪いのかなという気もしますが、どう変えればいいのかどなたか分かりませんでしょうか?
use framework "Foundation"
script MyObject
property parent : class "NSObject"
on compare:other
return (current application's NSOrderedSame)
end compare:
end script
set myObj to (my MyObject)'s new
myObj's compare:1
NSObjectサブクラスを作れないかなと思ったのですが、下記を実行すると
-[NSObject compare:]: unrecognized selector sent to instance 0x600003f81d60
というエラーになってしまいます。
MyObjectのインスタンスの作り方が悪いのかなという気もしますが、どう変えればいいのかどなたか分かりませんでしょうか?
use framework "Foundation"
script MyObject
property parent : class "NSObject"
on compare:other
return (current application's NSOrderedSame)
end compare:
end script
set myObj to (my MyObject)'s new
myObj's compare:1
429名称未設定
2019/11/09(土) 08:03:40.24ID:tAjv1YLo0 可能ならスクリプトオブジェクトから出してみたら?
前にdelegateメソッド使おうと、それと似たように書こうとして上手く行かず、結局メインスクリプトにメソッド直書きして使ってる
前にdelegateメソッド使おうと、それと似たように書こうとして上手く行かず、結局メインスクリプトにメソッド直書きして使ってる
430名称未設定
2019/11/09(土) 12:45:17.13ID:rGyy4J8Y0 XcodeでのAppleScriptObjCでも、
set myObj to (my MyObject)'s new
myObj's className は NSObject で、適正なクラスのインスタンスは作られてない(ある意味なんでやねんだけど)
set myObj to current application's NSClassFromString("MyObject")'s new
だと、className はちゃんと MyObject になっている
Script Editor でだと NSClassFromString("MyObject") は NULL でそんなクラス知らんがな的な
Objective-C と AppleScriptObjC のクラス書き換え簡単だよ説明は Xcode ででしかないかなあ、スクリプトとの結合依存関係ブリッジ加減(?)は難しいだろうからしょうがないとか?
set myObj to (my MyObject)'s new
myObj's className は NSObject で、適正なクラスのインスタンスは作られてない(ある意味なんでやねんだけど)
set myObj to current application's NSClassFromString("MyObject")'s new
だと、className はちゃんと MyObject になっている
Script Editor でだと NSClassFromString("MyObject") は NULL でそんなクラス知らんがな的な
Objective-C と AppleScriptObjC のクラス書き換え簡単だよ説明は Xcode ででしかないかなあ、スクリプトとの結合依存関係ブリッジ加減(?)は難しいだろうからしょうがないとか?
431名称未設定
2019/11/09(土) 22:16:53.21ID:yYy5/yUz0 無理矢理に Script Editor で NSObjectのサブクラスを作ってインスタンスを作る方法
NSObjectのサブクラスを別のファイルにして、フォルダに収める(バンドルにする。スクリプトバンドルではない)
MyAppleScriptObjCClasses.bundle
- MyAppleScriptObjCClasses.scpt
もしくは
MyAppleScriptObjCClasses.bundle
- Contents
-- Resources
--- MyAppleScriptObjCClasses.scpt
(Bundleとしては下の方がそれっぽいが、面倒だったら上でも可)
(current application's NSBundle's alloc()'s initWithPath:"/path/to/MyAppleScriptObjCClasses.bundle")'s loadAppleScriptObjectiveCScripts()
を呼べば、読み込まれて、NSObjectのサブクラスと認識される。ので、
current application's NSClassFromString("MyBundledSubClass")'s new()
でインスタンスが作れ、以後いろいろできる
だが、一度実行すると2度目はない。再実行は Script Editor は終了(クラッシュ)するので、再度 Script Editor を起動しての
Script Editor では AppleScriptObjCでのサブクラスの作成は対応してない、ありものをいろいろ使えるのが便利ってとこかな
NSObjectのサブクラスを別のファイルにして、フォルダに収める(バンドルにする。スクリプトバンドルではない)
MyAppleScriptObjCClasses.bundle
- MyAppleScriptObjCClasses.scpt
もしくは
MyAppleScriptObjCClasses.bundle
- Contents
-- Resources
--- MyAppleScriptObjCClasses.scpt
(Bundleとしては下の方がそれっぽいが、面倒だったら上でも可)
(current application's NSBundle's alloc()'s initWithPath:"/path/to/MyAppleScriptObjCClasses.bundle")'s loadAppleScriptObjectiveCScripts()
を呼べば、読み込まれて、NSObjectのサブクラスと認識される。ので、
current application's NSClassFromString("MyBundledSubClass")'s new()
でインスタンスが作れ、以後いろいろできる
だが、一度実行すると2度目はない。再実行は Script Editor は終了(クラッシュ)するので、再度 Script Editor を起動しての
Script Editor では AppleScriptObjCでのサブクラスの作成は対応してない、ありものをいろいろ使えるのが便利ってとこかな
432名称未設定
2019/11/09(土) 22:19:33.59ID:yYy5/yUz0 ああ、拡張子 .bundle でなくてもいいよ
Finderでも見た目フォルダのままの特に決まった拡張子を付けてない単なるフォルダでも
Finderでも見た目フォルダのままの特に決まった拡張子を付けてない単なるフォルダでも
433名称未設定
2019/11/09(土) 23:23:17.18ID:ys/xCavs0 NSBundle loadAppleScriptObjectiveCScripts
を使ってのはいちおう正規かな。Script Editor で使って作っても問題はないかな
unload もしくは reload することは想定していず、プロセスとしては一度きり=2度目はクラッシュというだけの
一度呼ぶだけでは Script Editor はクラッシュしないし、Script Editor での全然関係ない別のスクリプトでもロードされたサブクラスは使えるってとこから
を使ってのはいちおう正規かな。Script Editor で使って作っても問題はないかな
unload もしくは reload することは想定していず、プロセスとしては一度きり=2度目はクラッシュというだけの
一度呼ぶだけでは Script Editor はクラッシュしないし、Script Editor での全然関係ない別のスクリプトでもロードされたサブクラスは使えるってとこから
434名称未設定
2019/11/10(日) 00:21:47.06ID:llER4Nxu0 ああ、そもそも NSBundle でバンドルをロードすること自体が Script Editor で想定してないサポートされてないのかな??
NSBundle initWithPath:
自体が1度きりのような??
NSBundle initWithPath:
自体が1度きりのような??
435名称未設定
2019/11/10(日) 03:42:31.95ID:e0I7Oe/u0 >>428 ですが皆様ありがとうございます。とても勉強になりました。
私のほうでも色々やったので、長くなりますが書いておきます。
元々やろうとしたことは、単にstringのlistを、数字表記を考慮して(ObjC的に言うとNSCaseInsensitiveSearch,NSNumericSearchで)ソートしたいだけでした。
が、そもそもAppleScriptって他の言語にある、2要素の比較ロジックだけを自作して配列をソートさせる手段が用意されてなさそうなので、同じような汎用ソート処理が作れないかなと思って>>428に至っていたところでした。
で、新規インスタンスを作る方法ですが
https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/conceptual/ASLR_script_objects.html
のInitializing Script Objectsにあるようなハンドラで返す方法にすれば、とりあえず作れてるような動きにはなりました。
compare:も呼べました。(compare:内でエラーになりますがそれはまた別の話…)
use framework "Foundation"
on makeMyObject()
script MyObject
property parent : class "NSObject"
on compare:other
return (current application's NSOrderedSame)
end compare:
end script
end makeMyObject
set myObj to makeMyObject()
log (current application's NSString's stringWithFormat_("%@", myObj)) as string --※A
myObj's compare:1
私のほうでも色々やったので、長くなりますが書いておきます。
元々やろうとしたことは、単にstringのlistを、数字表記を考慮して(ObjC的に言うとNSCaseInsensitiveSearch,NSNumericSearchで)ソートしたいだけでした。
が、そもそもAppleScriptって他の言語にある、2要素の比較ロジックだけを自作して配列をソートさせる手段が用意されてなさそうなので、同じような汎用ソート処理が作れないかなと思って>>428に至っていたところでした。
で、新規インスタンスを作る方法ですが
https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/conceptual/ASLR_script_objects.html
のInitializing Script Objectsにあるようなハンドラで返す方法にすれば、とりあえず作れてるような動きにはなりました。
compare:も呼べました。(compare:内でエラーになりますがそれはまた別の話…)
use framework "Foundation"
on makeMyObject()
script MyObject
property parent : class "NSObject"
on compare:other
return (current application's NSOrderedSame)
end compare:
end script
end makeMyObject
set myObj to makeMyObject()
log (current application's NSString's stringWithFormat_("%@", myObj)) as string --※A
myObj's compare:1
436名称未設定
2019/11/10(日) 03:43:14.21ID:e0I7Oe/u0 教えて頂いたloadAppleScriptObjectiveCScriptsですが、私の環境(macOS 10.14.6)ではクラッシュしませんした。
use framework "Foundation"
-- bundle内のMyObject.scptには上記のscript MyObject〜end scriptだけ書いてある
set bundle to current application's NSBundle's bundleWithPath:"/path/to/MyObject.bundle"
bundle's loadAppleScriptObjectiveCScripts()
set myObj to current application's MyObject's new()
log (current application's NSString's stringWithFormat_("%@", myObj)) as string --※B
myObj's compare:1
気になった点として※Aのlogだと
<BAGenericObject @0x6000034ebe60: OSAID(2) ComponentInstance(0x820008)>
となるのに対し、※Bのlogだと
<MyObject @0x6000034fc140: OSAID(6) ComponentInstance(0x82000a)>
となります。全く同じ内容のscript objectでも、スクリプトエディタで書いた場合は内部的には別物のようですね。
(ちなみに、一度loadAppleScriptObjectiveCScriptsしてしまうと、スクリプトエディタを再起動するまで※Aの方も※Bと同じlog内容になるので、注意が必要)
use framework "Foundation"
-- bundle内のMyObject.scptには上記のscript MyObject〜end scriptだけ書いてある
set bundle to current application's NSBundle's bundleWithPath:"/path/to/MyObject.bundle"
bundle's loadAppleScriptObjectiveCScripts()
set myObj to current application's MyObject's new()
log (current application's NSString's stringWithFormat_("%@", myObj)) as string --※B
myObj's compare:1
気になった点として※Aのlogだと
<BAGenericObject @0x6000034ebe60: OSAID(2) ComponentInstance(0x820008)>
となるのに対し、※Bのlogだと
<MyObject @0x6000034fc140: OSAID(6) ComponentInstance(0x82000a)>
となります。全く同じ内容のscript objectでも、スクリプトエディタで書いた場合は内部的には別物のようですね。
(ちなみに、一度loadAppleScriptObjectiveCScriptsしてしまうと、スクリプトエディタを再起動するまで※Aの方も※Bと同じlog内容になるので、注意が必要)
437名称未設定
2019/11/10(日) 03:44:18.93ID:e0I7Oe/u0 で次にNSMutableArrayでのソートですが、以下のように書いてみましたが、※Cと※Dのlogが全く同じなので、sortUsingSelector:が動作してくれていないようでした。
SortElementを外部に書いてloadAppleScriptObjectiveCScriptsする方法でも試してみましたが、ソートされないという点は同じでした。
sort_list({"BBBBB", "Z", "QQQ", "EE", "AAAAAAA"})
use framework "Foundation"
on makeSortElement(val)
script SortElement
property parent : class "NSObject"
property rawValue : val
on compare:other
--文字数の短い順でソートするようにしてみる
set l to count of rawValue
set r to count of (other's rawValue)
if l = r then return (current application's NSOrderedSame)
if l < r then return (current application's NSOrderedAscending)
return (current application's NSOrderedDescending)
end compare:
end script
return SortElement
end makeSortElement
SortElementを外部に書いてloadAppleScriptObjectiveCScriptsする方法でも試してみましたが、ソートされないという点は同じでした。
sort_list({"BBBBB", "Z", "QQQ", "EE", "AAAAAAA"})
use framework "Foundation"
on makeSortElement(val)
script SortElement
property parent : class "NSObject"
property rawValue : val
on compare:other
--文字数の短い順でソートするようにしてみる
set l to count of rawValue
set r to count of (other's rawValue)
if l = r then return (current application's NSOrderedSame)
if l < r then return (current application's NSOrderedAscending)
return (current application's NSOrderedDescending)
end compare:
end script
return SortElement
end makeSortElement
438名称未設定
2019/11/10(日) 03:44:50.45ID:e0I7Oe/u0 --続き
on sort_list(in_list)
--NSMutableArray<SortElement>を作成
set ns_arr to current application's NSMutableArray's arrayWithCapacity:0
repeat with v in in_list
(ns_arr's addObject:(my makeSortElement(v)))
end repeat
--ソート
log (current application's NSString's stringWithFormat_("%@", ns_arr)) as string --※C
ns_arr's sortUsingSelector:"compare:"
log (current application's NSString's stringWithFormat_("%@", ns_arr)) as string --※D
--元の要素のlistに戻してreturn
set out_list to {}
repeat with se in (ns_arr as list)
set end of out_list to contents of se's rawValue
end repeat
return out_list --順番が変わってない
end sort_list
on sort_list(in_list)
--NSMutableArray<SortElement>を作成
set ns_arr to current application's NSMutableArray's arrayWithCapacity:0
repeat with v in in_list
(ns_arr's addObject:(my makeSortElement(v)))
end repeat
--ソート
log (current application's NSString's stringWithFormat_("%@", ns_arr)) as string --※C
ns_arr's sortUsingSelector:"compare:"
log (current application's NSString's stringWithFormat_("%@", ns_arr)) as string --※D
--元の要素のlistに戻してreturn
set out_list to {}
repeat with se in (ns_arr as list)
set end of out_list to contents of se's rawValue
end repeat
return out_list --順番が変わってない
end sort_list
439名称未設定
2019/11/10(日) 03:46:21.75ID:e0I7Oe/u0 結局、独自のcompare:でソートできないかという試みはもう疲れたので、この辺でやめておき、
AppleScriptでクイックソートするコードを拾ってきて、比較の部分だけハンドラに出しておくという方法にしました。
is_equalとis_ascendingのハンドラを書き換えれば何でも好きなようにソートできるはずです。
script quicksort
on do(_list)
if (count of _list) ≤ 0 then return _list
sort(_list, 1, count of _list)
return _list
end do
----------http://www.codecodex.com/wiki/Quicksort#AppleScript
on sort(_array, _left, _right)
set i to _left
set j to _right
set v to item ((_left + _right) div 2) of _array --pivot
repeat while (j > i)
--repeat while (item i of _array < v)
repeat while is_ascending(item i of _array, v)
set i to i + 1
end repeat
--repeat while (item j of _array > v)
repeat while is_descending(item j of _array, v)
set j to j - 1
end repeat
if (not i > j) then
tell _array to set {item i, item j} to {item j, item i} --swap
set i to i + 1
set j to j - 1
end if
end repeat
AppleScriptでクイックソートするコードを拾ってきて、比較の部分だけハンドラに出しておくという方法にしました。
is_equalとis_ascendingのハンドラを書き換えれば何でも好きなようにソートできるはずです。
script quicksort
on do(_list)
if (count of _list) ≤ 0 then return _list
sort(_list, 1, count of _list)
return _list
end do
----------http://www.codecodex.com/wiki/Quicksort#AppleScript
on sort(_array, _left, _right)
set i to _left
set j to _right
set v to item ((_left + _right) div 2) of _array --pivot
repeat while (j > i)
--repeat while (item i of _array < v)
repeat while is_ascending(item i of _array, v)
set i to i + 1
end repeat
--repeat while (item j of _array > v)
repeat while is_descending(item j of _array, v)
set j to j - 1
end repeat
if (not i > j) then
tell _array to set {item i, item j} to {item j, item i} --swap
set i to i + 1
set j to j - 1
end if
end repeat
440名称未設定
2019/11/10(日) 03:47:01.96ID:e0I7Oe/u0 --続き
if (_left < j) then sort(_array, _left, j)
if (_right > i) then sort(_array, i, _right)
end sort
on is_descending(_left, _right)
return (not is_equal(_left, _right)) and (not is_ascending(_left, _right))
end is_descending
----------通常の比較処理
(*on is_equal(_left, _right)
return _left = _right
end is_equal
on is_ascending(_left, _right)
return _left < _right
end is_ascending*)
----------文字列のNSCaseInsensitiveSearch,NSNumericSearchでの比較処理
use framework "Foundation"
on is_equal(_left, _right)
return string_compare(_left, _right) is (current application's NSOrderedSame)
end is_equal
on is_ascending(_left, _right)
return string_compare(_left, _right) is (current application's NSOrderedAscending)
end is_ascending
on string_compare(_str, _other)
set opt to (current application's NSCaseInsensitiveSearch as integer) + (current application's NSNumericSearch as integer)
return (current application's NSString's stringWithString:_str)'s compare:_other options:opt
end string_compare
end script
quicksort's do({"a20", "A2", "A100", "a3"}) --→{"A2", "a3", "a20", "A100"}
if (_left < j) then sort(_array, _left, j)
if (_right > i) then sort(_array, i, _right)
end sort
on is_descending(_left, _right)
return (not is_equal(_left, _right)) and (not is_ascending(_left, _right))
end is_descending
----------通常の比較処理
(*on is_equal(_left, _right)
return _left = _right
end is_equal
on is_ascending(_left, _right)
return _left < _right
end is_ascending*)
----------文字列のNSCaseInsensitiveSearch,NSNumericSearchでの比較処理
use framework "Foundation"
on is_equal(_left, _right)
return string_compare(_left, _right) is (current application's NSOrderedSame)
end is_equal
on is_ascending(_left, _right)
return string_compare(_left, _right) is (current application's NSOrderedAscending)
end is_ascending
on string_compare(_str, _other)
set opt to (current application's NSCaseInsensitiveSearch as integer) + (current application's NSNumericSearch as integer)
return (current application's NSString's stringWithString:_str)'s compare:_other options:opt
end string_compare
end script
quicksort's do({"a20", "A2", "A100", "a3"}) --→{"A2", "a3", "a20", "A100"}
441名称未設定
2019/11/10(日) 11:26:12.79ID:llER4Nxu0 BAGenericObjectの場合、compare: に入ってきてなくない?
セレクタの存在チェックはしているが、呼んではいない返り値はmissing valueというナゾな動きのような、引数ありセレクタの場合
on foo()
return "HOGE"
end hoge
on bar:baz
return "BARBAZ"
end bar:
という単純なメソッド追加して、
(ns_arr's objectAtIndex:0)'s foo()
(ns_arr's objectAtIndex:0)'s bar:"baz"
と単純に呼んでも。んー??
MyObjectの場合、rawValue に入っているのが AppleScriptの(文字列クラス)オブジェクト ではないっぽい(NSTaggedPointerString?)
try
on error
end try
で囲むと count of で実行エラーが発生してるかな。Can’t get «class ocid» id «data ていう
途中で実行中止してるのになんでスルーやねんだけど
set l to count of (rawValue as text)
set r to count of (other's rawValue as text)
で求めた結果にはなるねえ
やっぱ Script Editor での NSObject のサブクラスはナゾが多いわな
(JXAだと、sortedArrayUsingComparator: が使えてサブクラス作る必要もないんだけどね、ソートだけなら。いかんせん、AppleScriptと相互にとかできねーけど)
セレクタの存在チェックはしているが、呼んではいない返り値はmissing valueというナゾな動きのような、引数ありセレクタの場合
on foo()
return "HOGE"
end hoge
on bar:baz
return "BARBAZ"
end bar:
という単純なメソッド追加して、
(ns_arr's objectAtIndex:0)'s foo()
(ns_arr's objectAtIndex:0)'s bar:"baz"
と単純に呼んでも。んー??
MyObjectの場合、rawValue に入っているのが AppleScriptの(文字列クラス)オブジェクト ではないっぽい(NSTaggedPointerString?)
try
on error
end try
で囲むと count of で実行エラーが発生してるかな。Can’t get «class ocid» id «data ていう
途中で実行中止してるのになんでスルーやねんだけど
set l to count of (rawValue as text)
set r to count of (other's rawValue as text)
で求めた結果にはなるねえ
やっぱ Script Editor での NSObject のサブクラスはナゾが多いわな
(JXAだと、sortedArrayUsingComparator: が使えてサブクラス作る必要もないんだけどね、ソートだけなら。いかんせん、AppleScriptと相互にとかできねーけど)
442名称未設定
2019/11/10(日) 11:36:45.20ID:llER4Nxu0 ああ、JavascriptだとデフォでArray.prototype.sort()があったか
443名称未設定
2019/11/10(日) 11:44:22.10ID:llER4Nxu0 ああ、NSTaggedPointerString = NSString か
リアルNSObjectのインスタンス内へなので、第乳児に暗黙的にNSStringに変換という、まあ、そうなっても不思議ではないってとこか
リアルNSObjectのインスタンス内へなので、第乳児に暗黙的にNSStringに変換という、まあ、そうなっても不思議ではないってとこか
444名称未設定
2019/11/10(日) 11:46:28.69ID:llER4Nxu0 第乳児...なんやねんw。代入時
だらだらと、すまん。おわりおわりw
だらだらと、すまん。おわりおわりw
445名称未設定
2019/11/14(木) 03:30:22.38ID:o1jiInHj0 >>436
AppleScriptでのインスタンスの生成だとObjCのオブジェクトではなくてあくまでもAppleScriptのscript object «script SortElement»ができているだけだね
script objectをObjCのAPIに渡すときにブリッジオブジェクトBAGenericObjectに変換されている
変換時にObjCのMyObjectクラスが認識できないから適当もしくは中途半端なObjCのブッリッジクラスのインスタンスができてる感じかな
AppleScriptでのインスタンスの生成だとObjCのオブジェクトではなくてあくまでもAppleScriptのscript object «script SortElement»ができているだけだね
script objectをObjCのAPIに渡すときにブリッジオブジェクトBAGenericObjectに変換されている
変換時にObjCのMyObjectクラスが認識できないから適当もしくは中途半端なObjCのブッリッジクラスのインスタンスができてる感じかな
446名称未設定
2019/11/14(木) 13:18:41.43ID:Vr2Aed230447名称未設定
2019/11/14(木) 13:54:16.45ID:pcy7Pjtv0 こんな感じ?
tell application "System Events"
tell application process "SystemUIServer"
tell menu bar 1
tell item 1 of (every menu bar item whose accessibility description is "“ディスプレイ”メニュー")
click
delay 0.2
click menu item "iPad Pro" of menu 1
end tell
end tell
end tell
end tell
tell application "System Events"
tell application process "SystemUIServer"
tell menu bar 1
tell item 1 of (every menu bar item whose accessibility description is "“ディスプレイ”メニュー")
click
delay 0.2
click menu item "iPad Pro" of menu 1
end tell
end tell
end tell
end tell
448名称未設定
2019/11/14(木) 14:19:33.37ID:Vr2Aed230449名称未設定
2019/11/14(木) 15:59:50.15ID:F3fMWxRM0 横から
is "“ディスプレイ”メニュー"
を
contains "ディスプレイ"
is "“ディスプレイ”メニュー"
を
contains "ディスプレイ"
450名称未設定
2019/11/20(水) 09:40:00.58ID:C7VATYi90451名称未設定
2019/11/20(水) 15:25:51.92ID:Mak1iuzW0 tell application "System Events"
tell process "SystemUIServer"
menu bar 1's menu bar items's attribute "AXDescription"'s value
end tell
end tell
いま、ミラーリング使える環境にいないのでわかんないけど
上の奴実行するとメニューエクストラのアイテム名がわかる
tell process "SystemUIServer"
menu bar 1's menu bar items's attribute "AXDescription"'s value
end tell
end tell
いま、ミラーリング使える環境にいないのでわかんないけど
上の奴実行するとメニューエクストラのアイテム名がわかる
452名称未設定
2019/11/20(水) 15:40:58.14ID:Mak1iuzW0 あー、画像みると
click menu item "iPad Pro" of menu 1
のところがハイライトされてるからエラーが起きてるのそこだね
click menu item 5 of menu 1
とか書き換えてみる
click menu item "iPad Pro" of menu 1
のところがハイライトされてるからエラーが起きてるのそこだね
click menu item 5 of menu 1
とか書き換えてみる
453名称未設定
2019/11/23(土) 18:49:42.33ID:DZHL0hyg0 超初心者でネット見ながら勉強中です。
とりあえずロト7の番号生成スクリプト(1〜37の数字からランダムに7つの数字を抽出)をなるだけ簡潔に作ろうと以下のようにしてみたのですが、もっとシンプルにできるでしょうか?
また、数字のリストを小さい順にソートするにはどうすればいいでしょうか?
よろしくお願いします。
set {num, numList} to {0, {}}
repeat 39 times
set numList to numList & num
set num to num + 1
end repeat
set selectNumList to {}
repeat 7 times
set num to num - 1
set randomNum to random number from 2 to num
set selectNum to item randomNum of numList
set selectNumList to selectNumList & selectNum
set numList to (items 1 thru (randomNum - 1) of numList) & (items (randomNum + 1) thru -1 of numList)
end repeat
return selectNumList
とりあえずロト7の番号生成スクリプト(1〜37の数字からランダムに7つの数字を抽出)をなるだけ簡潔に作ろうと以下のようにしてみたのですが、もっとシンプルにできるでしょうか?
また、数字のリストを小さい順にソートするにはどうすればいいでしょうか?
よろしくお願いします。
set {num, numList} to {0, {}}
repeat 39 times
set numList to numList & num
set num to num + 1
end repeat
set selectNumList to {}
repeat 7 times
set num to num - 1
set randomNum to random number from 2 to num
set selectNum to item randomNum of numList
set selectNumList to selectNumList & selectNum
set numList to (items 1 thru (randomNum - 1) of numList) & (items (randomNum + 1) thru -1 of numList)
end repeat
return selectNumList
454名称未設定
2019/11/23(土) 21:21:22.91ID:T4pLpryV0 ソート部分はとりあえずJavaScriptでw
on sortNumList(numList)
set currASTID to AppleScript's text item delimiters
set AppleScript's text item delimiters to ","
set numList to numList as string
set AppleScript's text item delimiters to currASTID
run script "numList = [" & numList & "]; numList.sort((a, b) => a - b)" in "JavaScript"
end sortNumList
としといて、
my sortNumList(selectNumList)
とか
on sortNumList(numList)
set currASTID to AppleScript's text item delimiters
set AppleScript's text item delimiters to ","
set numList to numList as string
set AppleScript's text item delimiters to currASTID
run script "numList = [" & numList & "]; numList.sort((a, b) => a - b)" in "JavaScript"
end sortNumList
としといて、
my sortNumList(selectNumList)
とか
455名称未設定
2019/11/23(土) 23:20:28.56ID:oW3zFR9P0 単に行数少ないアルゴリズム的には工夫もなんもないよ版
use framework "Foundation"
use scripting additions
set theNumbers to {}
repeat while (count of theNumbers) is not 7
set theNumber to random number from 1 to 37
if theNumber is not in theNumbers then set theNumbers to theNumbers & {theNumber}
end repeat
set sortedNumbers to ((current application's NSArray's arrayWithArray:theNumbers)'s sortedArrayUsingSelector:"compare:") as list
37のうちの7だとダブる確率は少ない初期化の39(37でいいんじゃないの?)ループ無いぶん速い場合もあるかな。速度は不定でもあるし元々のようなのを考えるけど
use framework "Foundation"
use scripting additions
set theNumbers to {}
repeat while (count of theNumbers) is not 7
set theNumber to random number from 1 to 37
if theNumber is not in theNumbers then set theNumbers to theNumbers & {theNumber}
end repeat
set sortedNumbers to ((current application's NSArray's arrayWithArray:theNumbers)'s sortedArrayUsingSelector:"compare:") as list
37のうちの7だとダブる確率は少ない初期化の39(37でいいんじゃないの?)ループ無いぶん速い場合もあるかな。速度は不定でもあるし元々のようなのを考えるけど
456名称未設定
2019/11/24(日) 15:51:03.91ID:alTbaGem0457名称未設定
2019/11/28(木) 15:43:44.30ID:KGTFiqUA0 なーんかいつの間にかFinderでレインボーカーソル出ることが多くなったなーと思ったらフォルダアクション設定したせいだった
フォルダ5つぐらいにごく短いスクリプト割り当てただけだったんだけど
ゴミ箱に割り当てたせいかな
フォルダ5つぐらいにごく短いスクリプト割り当てただけだったんだけど
ゴミ箱に割り当てたせいかな
458名称未設定
2019/11/28(木) 16:01:29.06ID:T72ZmuSy0 因果関係は知らんけど、ゴミ箱はログイン時に作り直されることがあるからあんまよくないんじゃないの
459名称未設定
2019/12/11(水) 20:59:41.50ID:WbxCu4h80 pathcontrolの使い方がわかりません。
解説ページなどあれば紹介していただきたいので、よろしくお願いいたします。
解説ページなどあれば紹介していただきたいので、よろしくお願いいたします。
460名称未設定
2019/12/11(水) 21:18:49.30ID:CgOE9puJ0 なんのこっちゃと思ったらCocoaの?(NSPathControl)
だとしたら、
AppleScript pathcontrol
でググったのでいいんじゃないの。ある意味お馴染みのサイトの
だとしたら、
AppleScript pathcontrol
でググったのでいいんじゃないの。ある意味お馴染みのサイトの
461名称未設定
2019/12/12(木) 22:37:35.22ID:tfaxyOsK0 保存しておいたファイルパスがquoted formのPOSIX pathでした。
非quoted formならHFS形式に直せるのですが、quoted formだとうまく直せません。
方法はありますか?
非quoted formならHFS形式に直せるのですが、quoted formだとうまく直せません。
方法はありますか?
462名称未設定
2019/12/12(木) 22:54:13.61ID:TJMsdlxn0 もっといい方法ありそうな気もするけど
set quoted_path to quoted form of "/Users/ore/Desktop/ab'cd"
set posix_path to (do shell script "dirname " & quoted_path) & "/" & (do shell script "basename " & quoted_path)
log (posix_path as POSIX file)
set quoted_path to quoted form of "/Users/ore/Desktop/ab'cd"
set posix_path to (do shell script "dirname " & quoted_path) & "/" & (do shell script "basename " & quoted_path)
log (posix_path as POSIX file)
464名称未設定
2019/12/27(金) 11:35:13.67ID:I6nW7LYs0 宛名職人と連絡先.appを同期したら
佐藤 太郎 様
鈴木 次郎 様
山田 花子 先生
と言った感じで全てに敬称が付与されてしまいました。
そこでAppleScriptで削除を試みるもうまく動きません。
tell application "Contacts"
set theList to selection
repeat with i in theList
set suffix of i to missing value
end repeat
end tell
値としては取れているし、実際値も変更されているようなのですが、
アプリケーション上の表記が変更されない状況です。
何か間違ってます?
佐藤 太郎 様
鈴木 次郎 様
山田 花子 先生
と言った感じで全てに敬称が付与されてしまいました。
そこでAppleScriptで削除を試みるもうまく動きません。
tell application "Contacts"
set theList to selection
repeat with i in theList
set suffix of i to missing value
end repeat
end tell
値としては取れているし、実際値も変更されているようなのですが、
アプリケーション上の表記が変更されない状況です。
何か間違ってます?
465名称未設定
2019/12/27(金) 12:18:18.28ID:LsMuj50Q0 save を入れる必要あるみたいよ
467名称未設定
2019/12/30(月) 18:44:59.16ID:1IerWe6O0 質問失礼致します。
Chromeのとあるサイトに画像のアップロードを自動化したいのですが、画像アップロードボタンをクリックすると画像選択ダイアログが表示されるのですが、これはどうやって操作すれば良いのでしょうか?
Chromeのとあるサイトに画像のアップロードを自動化したいのですが、画像アップロードボタンをクリックすると画像選択ダイアログが表示されるのですが、これはどうやって操作すれば良いのでしょうか?
468名称未設定
2019/12/30(月) 20:40:49.30ID:FYTkl10n0 set filePath to "/Users/yourname/Desktop/hoge.png"
tell application "System Events" to tell process "Chrome"
set openDialog to a reference to sheet 1 of front window
set openButton to a reference to button 1 of openDialog
set gotoFolderDialog to a reference to sheet 1 of sheet 1 of front window
set goButton to a reference to button 1 of gotoFolderDialog
repeat while not (exists openDialog)
delay 0.1
end repeat
keystroke "/"
repeat while not (exists gotoFolderDialog)
delay 0.1
end repeat
set value of combo box 1 of gotoFolderDialog to filePath
click goButton
repeat while (exists gotoFolderDialog) or not enabled of openButton
delay 0.1
end repeat
click openButton
end tell
tell application "System Events" to tell process "Chrome"
set openDialog to a reference to sheet 1 of front window
set openButton to a reference to button 1 of openDialog
set gotoFolderDialog to a reference to sheet 1 of sheet 1 of front window
set goButton to a reference to button 1 of gotoFolderDialog
repeat while not (exists openDialog)
delay 0.1
end repeat
keystroke "/"
repeat while not (exists gotoFolderDialog)
delay 0.1
end repeat
set value of combo box 1 of gotoFolderDialog to filePath
click goButton
repeat while (exists gotoFolderDialog) or not enabled of openButton
delay 0.1
end repeat
click openButton
end tell
469名称未設定
2019/12/31(火) 08:06:23.74ID:M2yPiiu20 アプリ形式で保存したスクリプトのpropertyが保存されないのがあるのはなんなんなん
470名称未設定
2019/12/31(火) 12:25:52.53ID:pH0B5LMq0 >>469
アプリ形式で保存したあと、そのアプリのパッケージを開いて
main.scptを直接修正するとダメになった経験が…
自分の場合、アプリ実行時に読み込むファイルを、
シンボリックリンクの形で
パッケージ内のResourcesに置いているケースで、
main.scptを直接修正すると、毎回この状況になる
大もとのスクリプトの名前を変えて、
新規にアプリ形式で保存し直すとなおる
(同じ名前で.appを作り直すとダメだった)
アプリ形式で保存したあと、そのアプリのパッケージを開いて
main.scptを直接修正するとダメになった経験が…
自分の場合、アプリ実行時に読み込むファイルを、
シンボリックリンクの形で
パッケージ内のResourcesに置いているケースで、
main.scptを直接修正すると、毎回この状況になる
大もとのスクリプトの名前を変えて、
新規にアプリ形式で保存し直すとなおる
(同じ名前で.appを作り直すとダメだった)
471名称未設定
2020/01/05(日) 14:10:06.50ID:hVEfgoTG0 >>470
> main.scptを直接修正する
特にそういうことはしてなかったんですけどねー と、思ったけど自分で作ったサービスから、
do shell script "open -b 'com.apple.ScriptEditor2' " & |スクリプトへのパス|
で開いてたのでもしかするとそれが悪さしてたのかも…
> 新規にアプリ形式で保存し直すとなおる
> (同じ名前で.appを作り直すとダメだった)
これで治りました(&確かに同じ名前だと治らない)
ありがとうございます
> main.scptを直接修正する
特にそういうことはしてなかったんですけどねー と、思ったけど自分で作ったサービスから、
do shell script "open -b 'com.apple.ScriptEditor2' " & |スクリプトへのパス|
で開いてたのでもしかするとそれが悪さしてたのかも…
> 新規にアプリ形式で保存し直すとなおる
> (同じ名前で.appを作り直すとダメだった)
これで治りました(&確かに同じ名前だと治らない)
ありがとうございます
472名称未設定
2020/01/05(日) 21:14:45.75ID:pcMnH8Hm0 お前ら、なんでそのアプリをスクリプトエディタで開いて直さないの
473471
2020/01/06(月) 00:23:01.47ID:FpKUEwtY0 アプリだからダブルクリックだと実行になっちゃうし、「このアプリケーションで開く」も使えない。
ドラッグアンドドロップはちょっと面倒。なのでAutomatorでサービスを作った。
on run {input, parameters}
tell application id "com.apple.finder"
repeat with i in input
try
set i to (original item of i) as alias
end try
if (name of i) ends with ".app" then
set bundle_id to (id of i)
set i_path to (quoted form of (POSIX path of i))
if bundle_id starts with "com.apple.ScriptEditor.id." then
do shell script "open -b 'com.apple.ScriptEditor2' " & i_path
else if bundle_id starts with "com.apple.automator." then
--tell application id "com.apple.Automator" to open i --書いてあるだけでAutomatorが起動してしまう
do shell script "open -b 'com.apple.Automator' " & i_path
end if
end if
end repeat
end tell
return 0
end run
ドラッグアンドドロップはちょっと面倒。なのでAutomatorでサービスを作った。
on run {input, parameters}
tell application id "com.apple.finder"
repeat with i in input
try
set i to (original item of i) as alias
end try
if (name of i) ends with ".app" then
set bundle_id to (id of i)
set i_path to (quoted form of (POSIX path of i))
if bundle_id starts with "com.apple.ScriptEditor.id." then
do shell script "open -b 'com.apple.ScriptEditor2' " & i_path
else if bundle_id starts with "com.apple.automator." then
--tell application id "com.apple.Automator" to open i --書いてあるだけでAutomatorが起動してしまう
do shell script "open -b 'com.apple.Automator' " & i_path
end if
end if
end repeat
end tell
return 0
end run
474名称未設定
2020/01/06(月) 01:14:49.34ID:jkH1ijcX0 ドラッグアンドドロップはちょっと面倒って発想はあんまなかったな
ファイルまたはフォルダ 検索対象: Finder.app
Finder項目を開く
このアプリケーションで開く: スクリプトエディタ.app
の1アクションだけでいいような
なだけならアレなので、AppleScriptアプリケーションだけにするフィルタ AppleScriptを実行 アクションを Finder項目を開くの前にとか。無くても開けないフォルダやファイル指定されてもスクリプトエディタでエラーになるだけだけど
いや、このままだと、scptもscpdもapplescriptも同じく開けるからこのままでいいかw
ファイルまたはフォルダ 検索対象: Finder.app
Finder項目を開く
このアプリケーションで開く: スクリプトエディタ.app
の1アクションだけでいいような
なだけならアレなので、AppleScriptアプリケーションだけにするフィルタ AppleScriptを実行 アクションを Finder項目を開くの前にとか。無くても開けないフォルダやファイル指定されてもスクリプトエディタでエラーになるだけだけど
いや、このままだと、scptもscpdもapplescriptも同じく開けるからこのままでいいかw
475名称未設定
2020/01/06(月) 02:01:13.20ID:jkH1ijcX0 on run {input, parameters}
set theResult to {}
tell application "Finder"
repeat with theItem in input
if kind of theItem is "Script bundle" or ¬
(kind of theItem is in {"Application", "Script", "Text"} and creator type of theItem is in {"aplt", "ToyS"}) then set end of theResult to theItem as alias
end repeat
end tell
return theResult
end run
Script bundle は AppleScript の scpd ぐらいだろう、たぶん
app は aplt、scp 及び applescript は Toys、creatorはcreatorは無くすとかあったから怪しいけど
set theResult to {}
tell application "Finder"
repeat with theItem in input
if kind of theItem is "Script bundle" or ¬
(kind of theItem is in {"Application", "Script", "Text"} and creator type of theItem is in {"aplt", "ToyS"}) then set end of theResult to theItem as alias
end repeat
end tell
return theResult
end run
Script bundle は AppleScript の scpd ぐらいだろう、たぶん
app は aplt、scp 及び applescript は Toys、creatorはcreatorは無くすとかあったから怪しいけど
476名称未設定
2020/01/06(月) 09:34:31.52ID:bPekrp180 >>472
自分の場合は、アプリ形式で保存したものを
スクリプトエディタで開けるの知らなかった…
だから、Finderで.appを選択した状態で実行すると、
.app/Contents/Resources/Scripts/main.scpt
を開いてくれるAutomatorのサービス作って、
それ使って開いてました…
自分の場合は、アプリ形式で保存したものを
スクリプトエディタで開けるの知らなかった…
だから、Finderで.appを選択した状態で実行すると、
.app/Contents/Resources/Scripts/main.scpt
を開いてくれるAutomatorのサービス作って、
それ使って開いてました…
477名称未設定
2020/01/06(月) 13:44:37.41ID:BPSQGBVw0 > 自分の場合は、アプリ形式で保存したものを
> スクリプトエディタで開けるの知らなかった…
先入観ってやつだな
アプリケーションをダブルクリックで開けることを知らない人もいる
DockかLaunchPadからしか開けないと思ってたらしい
> スクリプトエディタで開けるの知らなかった…
先入観ってやつだな
アプリケーションをダブルクリックで開けることを知らない人もいる
DockかLaunchPadからしか開けないと思ってたらしい
478名称未設定
2020/01/10(金) 00:49:21.46ID:F6V63bMg0 最近になってXCodeを使い始めました。
ところが単純なPOSIX path変換がうまくいきません。
set aFile to POSIX file aPath
みたいなものなんですが。
ところが単純なPOSIX path変換がうまくいきません。
set aFile to POSIX file aPath
みたいなものなんですが。
479名称未設定
2020/01/10(金) 01:49:00.77ID:B5706WgS0 XcodeのAppleScript Appでは、
POSIX file "POSIX形式ぱすぅ"
alias "HFS形式ぱすぅ"
文/コマンドは「使えない」かな。返ってくるオブジェクトがなんにもできないscriptオブジェクト
"POSIX形式ぱすぅ" as POSIX file
"HFS形式ぱすぅ" as alias
で、いつも通りのオブジェクト(file, alias)になるので、以後いつも通りいろいろ
POSIX file "POSIX形式ぱすぅ"
alias "HFS形式ぱすぅ"
文/コマンドは「使えない」かな。返ってくるオブジェクトがなんにもできないscriptオブジェクト
"POSIX形式ぱすぅ" as POSIX file
"HFS形式ぱすぅ" as alias
で、いつも通りのオブジェクト(file, alias)になるので、以後いつも通りいろいろ
480名称未設定
2020/01/10(金) 08:55:41.20ID:F6V63bMg0 ありがとうございます!
481名称未設定
2020/01/23(木) 19:27:00.52ID:IJm3Un4C0 Safariネタから。QRコードはmacOS 10.10から対応してるやん、めっちゃ簡単やん、一つの画像に複数あってもでめっちゃ賢いやん
use framework "Foundation"
use framework "CoreImage"
set imageDataList to {}
repeat with theItem in current application's NSPasteboard's generalPasteboard's pasteboardItems
set imageData to (theItem's dataForType:"public.png")
if imageData is missing value then set imageData to (theItem's dataForType:"public.tiff")
if imageData is not missing value then set end of imageDataList to imageData
end repeat
set messages to {}
set theDetector to current application's CIDetector's detectorOfType:(current application's CIDetectorTypeQRCode) context:(missing value) options:(missing value)
repeat with theItem in imageDataList
set theImage to (current application's CIImage's imageWithData:theItem)
if theImage is not missing value then
repeat with theItem in (theDetector's featuresInImage:theImage)
set end of messages to (theItem's messageString() as text)
end repeat
end if
end repeat
messages
とりあえず、クリップボードにコピられた画像から
で、Automatorでサービス作れるやんと思ったら、イメージデータを渡してくれるのは無かったのだった
use framework "Foundation"
use framework "CoreImage"
set imageDataList to {}
repeat with theItem in current application's NSPasteboard's generalPasteboard's pasteboardItems
set imageData to (theItem's dataForType:"public.png")
if imageData is missing value then set imageData to (theItem's dataForType:"public.tiff")
if imageData is not missing value then set end of imageDataList to imageData
end repeat
set messages to {}
set theDetector to current application's CIDetector's detectorOfType:(current application's CIDetectorTypeQRCode) context:(missing value) options:(missing value)
repeat with theItem in imageDataList
set theImage to (current application's CIImage's imageWithData:theItem)
if theImage is not missing value then
repeat with theItem in (theDetector's featuresInImage:theImage)
set end of messages to (theItem's messageString() as text)
end repeat
end if
end repeat
messages
とりあえず、クリップボードにコピられた画像から
で、Automatorでサービス作れるやんと思ったら、イメージデータを渡してくれるのは無かったのだった
482名称未設定
2020/01/24(金) 22:47:27.32ID:7gY887yl0483名称未設定
2020/01/25(土) 02:27:19.50ID:1fVv5LlJ0 なるほどw
484名称未設定
2020/01/31(金) 13:37:19.07ID:hSNWYVwE0 Xcodeでbuild settingをreleaseにしても、スクリプトが実行専用になりません。
どこかに設定とかありますか?
どこかに設定とかありますか?
485名称未設定
2020/01/31(金) 14:59:25.41ID:YQASqwBw0 プロジェクトのオプションにSave as Execute-Onlyがある。デフォルトでReleaseもNoなのでYesに
Project Navigator (View > Navigators > Show Project Navigator) で、プロジェクト選んで、PROJECT か TARGET 選んで、Build Settings を選ぶ
Save as Execute-Only で検索/絞り込みする。OSA Compile のオプションなので、osa で検索/絞り込みでもいい
Project Navigator (View > Navigators > Show Project Navigator) で、プロジェクト選んで、PROJECT か TARGET 選んで、Build Settings を選ぶ
Save as Execute-Only で検索/絞り込みする。OSA Compile のオプションなので、osa で検索/絞り込みでもいい
486名称未設定
2020/01/31(金) 16:22:35.35ID:hSNWYVwE0 ありがとうございます。
大変助かりました。
大変助かりました。
487名称未設定
2020/02/01(土) 18:48:04.20ID:6o+Qiku40 に読みがなを手作業で付ける必要に迫られて、Jedit-Xにそんなメニューがあったなと思い出し、
久々に書いてみた。なんかもっと上手い手段もありそうだけど。
to Kanji2Kana(str)
set repList to {{"一", "いち"}, {"二", "に"}, {"三", "さん"}, {"四", "よん"}, {"五", "ご"}, ¬
{"六", "ろく"}, {"七", "なな"}, {"八", "はち"}, {"九", "きゅう"}, {"十", "じゅう"}}
set {workspace, myLF} to {"作業場", ASCII character (10)}
tell application "Jedit X"
if (not (document workspace exists)) then
set name of (make new document with properties {encoding:"Unicode (UTF-8)"}) to workspace
tell window workspace to set bounds to {0, 0, 400, 100}
end if
tell document workspace
set selected text to str
kanji to yomi
repeat with i in repList
if (item 1 of i is in selected text) then replaceAll string item 1 of i to item 2 of i
end repeat
set yomi to selected text
set selected text to ""
end tell
end tell
return yomi
end Kanji2Kana
久々に書いてみた。なんかもっと上手い手段もありそうだけど。
to Kanji2Kana(str)
set repList to {{"一", "いち"}, {"二", "に"}, {"三", "さん"}, {"四", "よん"}, {"五", "ご"}, ¬
{"六", "ろく"}, {"七", "なな"}, {"八", "はち"}, {"九", "きゅう"}, {"十", "じゅう"}}
set {workspace, myLF} to {"作業場", ASCII character (10)}
tell application "Jedit X"
if (not (document workspace exists)) then
set name of (make new document with properties {encoding:"Unicode (UTF-8)"}) to workspace
tell window workspace to set bounds to {0, 0, 400, 100}
end if
tell document workspace
set selected text to str
kanji to yomi
repeat with i in repList
if (item 1 of i is in selected text) then replaceAll string item 1 of i to item 2 of i
end repeat
set yomi to selected text
set selected text to ""
end tell
end tell
return yomi
end Kanji2Kana
488名称未設定
2020/02/02(日) 03:03:52.91ID:mWTQTSzg0 >>487
うちの環境だと、
tell document workspace を
tell document 1 にしないと動かなかったです
あと、repeatの部分は、漢数字を含む場合に
set sList to {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十"}
set rList to {"いち", "に", "さん", "よん", "ご", "ろく", "なな", "はち", "きゅう", "じゅう"}
multiReplace strings sList to rList
って書くと一発で終わっていいかも…
(multiReplace はJedit Xのコマンド)
ところで、to Kanji2Kana(str) なんて書き方ができるんですね
on Kanji2Kana(str) しか知らなかったです
うちの環境だと、
tell document workspace を
tell document 1 にしないと動かなかったです
あと、repeatの部分は、漢数字を含む場合に
set sList to {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十"}
set rList to {"いち", "に", "さん", "よん", "ご", "ろく", "なな", "はち", "きゅう", "じゅう"}
multiReplace strings sList to rList
って書くと一発で終わっていいかも…
(multiReplace はJedit Xのコマンド)
ところで、to Kanji2Kana(str) なんて書き方ができるんですね
on Kanji2Kana(str) しか知らなかったです
489名称未設定
2020/02/02(日) 15:07:49.59ID:yRK9DEd+0490名称未設定
2020/02/08(土) 15:39:29.23ID:Vxob91U30 Script editorではread命令の引数にPOSIX pathを使えるが、XcodeではHFS pathでなければならない。
正しいでしょうか?
正しいでしょうか?
491名称未設定
2020/02/08(土) 16:48:55.44ID:Tx4PMeh20 アップルに聞け
仕様の細かいとこが重要なら
仕様の細かいとこが重要なら
493名称未設定
2020/02/08(土) 19:03:35.69ID:Ugr8AgWU0 仕様の細かいとこが重要ならアップルに聞け
の方が良くない?
の方が良くない?
494名称未設定
2020/02/09(日) 00:01:17.25ID:qoXdz+Pj0 キモ
495名称未設定
2020/02/09(日) 00:09:45.13ID:qoXdz+Pj0496名称未設定
2020/02/09(日) 00:54:29.83ID:Rj6imeeY0 そうです。
497名称未設定
2020/02/09(日) 01:04:08.02ID:ttHO+gbo0 read自体にパスは関係ないでしょ??
というのは置いていおいて、XcodeでもPOSX pathでもHFS pathでもどっちでもだけど
open for access "POSIX/path"
open for access ":HFS:path"
open for access ("POSIX/path" as POSIX file)
open for access (":HFS:path" as alias)
Xcodeでもどれでもオッケーのようだけど
XcodeのはどっちかというとPOSIXが良くてHFSがダメなのがあったような気がしないでもない
というのは置いていおいて、XcodeでもPOSX pathでもHFS pathでもどっちでもだけど
open for access "POSIX/path"
open for access ":HFS:path"
open for access ("POSIX/path" as POSIX file)
open for access (":HFS:path" as alias)
Xcodeでもどれでもオッケーのようだけど
XcodeのはどっちかというとPOSIXが良くてHFSがダメなのがあったような気がしないでもない
498名称未設定
2020/02/09(日) 01:17:40.04ID:ttHO+gbo0 使ったことがない知らない使い方
read (alias, file)
なんてあるみたいだけど、動くのか??エラるだけだけど
set fileRef to open for access (path string, alias, file)
read fileRef
close access fileRef
での話ね>>497
read (alias, file)
なんてあるみたいだけど、動くのか??エラるだけだけど
set fileRef to open for access (path string, alias, file)
read fileRef
close access fileRef
での話ね>>497
499名称未設定
2020/02/09(日) 01:42:57.16ID:ttHO+gbo0 >使ったことがない知らない使い方〜エラるだけだけど
暗黙的の opened for access な file reference number が使われるのね。なんらかのタイミングで開きっぱの場合にファイル終端のままでエラるのか
>>497
>read自体にパスは関係ないでしょ??
なんぞをなかったことに
で、Xcodeでも
read "POSIX/path"
でも読めるねえ
暗黙的の opened for access な file reference number が使われるのね。なんらかのタイミングで開きっぱの場合にファイル終端のままでエラるのか
>>497
>read自体にパスは関係ないでしょ??
なんぞをなかったことに
で、Xcodeでも
read "POSIX/path"
でも読めるねえ
500名称未設定
2020/02/09(日) 10:15:16.24ID:Rj6imeeY0 >>497
ありがとうございます。
おまかんなのかもしれません。
>XcodeのはどっちかというとPOSIXが良くてHFSがダメなのがあったような気がしないでもない
そう思っていたらエラーに見舞われたので確認したのですが、思い違いだったかもしれません。
ありがとうございます。
おまかんなのかもしれません。
>XcodeのはどっちかというとPOSIXが良くてHFSがダメなのがあったような気がしないでもない
そう思っていたらエラーに見舞われたので確認したのですが、思い違いだったかもしれません。
501名称未設定
2020/02/09(日) 10:24:00.99ID:Rj6imeeY0 >>498
>read (alias, file)
>なんてあるみたいだけど、動くのか??エラるだけだけど
経験的には、一度もopen accessしていないファイルならいけたような。
一度open accessすると、そのアプリからそのファイルはopen accessがないと読めなくなります。
アプリを再起動すると、open accessなしでもreadできるようになります。
システムのバージョンとかにもよるかもしれませんので、間違っていたらご容赦。
>read (alias, file)
>なんてあるみたいだけど、動くのか??エラるだけだけど
経験的には、一度もopen accessしていないファイルならいけたような。
一度open accessすると、そのアプリからそのファイルはopen accessがないと読めなくなります。
アプリを再起動すると、open accessなしでもreadできるようになります。
システムのバージョンとかにもよるかもしれませんので、間違っていたらご容赦。
502名称未設定
2020/02/09(日) 14:36:08.68ID:teDSMg7h0 エラるメッセージが ファイルの最後やで だったので、よくわからんが面倒だから
try
close access (path string, alias, file)
end try
と最初にやってしまえば読めるようにはなったことはなったかな
try
close access (path string, alias, file)
end try
と最初にやってしまえば読めるようにはなったことはなったかな
503名称未設定
2020/02/09(日) 23:55:57.19ID:Rj6imeeY0 なるほど。
すると
>>501
>一度open accessすると、そのアプリからそのファイルはopen accessがないと読めなくなります。
というのは、何らかのミスでcloseできなかった開きっぱなしのファイルだった可能性もあるかも。
すると
>>501
>一度open accessすると、そのアプリからそのファイルはopen accessがないと読めなくなります。
というのは、何らかのミスでcloseできなかった開きっぱなしのファイルだった可能性もあるかも。
504名称未設定
2020/03/04(水) 14:29:38.48ID:OV73e7Nn0 >>490
read コマンドはスクリプティング機能追加のコマンドだから、AppleScript を実行するアプリケーションには関係ないはず。
read コマンドはスクリプティング機能追加のコマンドだから、AppleScript を実行するアプリケーションには関係ないはず。
505名称未設定
2020/03/10(火) 08:26:34.15ID:AczjZNiX0 同じコマンドでもASOCかそうでないかで微妙に動作が違うことがあるから、呼び出されるフレームワークが違うとかなんかあるかもしれない。
しかし与えるパラメータの形式は同じように思える。
しかし与えるパラメータの形式は同じように思える。
506名称未設定
2020/04/15(水) 01:08:18.42ID:yKvYwJ1a0 do shell script に変数を渡す時にフォルダ名とかにスペースが入っていてもエラーが起きないようにしたくて
do shell script "'" & thescript & "'"としてみたところ一応機能しているようですがこれであってますか? よろしくお願いします
do shell script "'" & thescript & "'"としてみたところ一応機能しているようですがこれであってますか? よろしくお願いします
508名称未設定
2020/04/15(水) 05:28:27.26ID:7PV92REg0 それで一応機能してるって、thescriptが引数の無いコマンドだけだとしか思えない
まずはシェルスクリプトの基本を勉強した方がいいんじゃないか?
まずはシェルスクリプトの基本を勉強した方がいいんじゃないか?
509名称未設定
2020/04/15(水) 11:21:38.15ID:PmO4TyiH0 動いてるならいいじゃない
でもたぶんPOSIXパスだけをquoted form of ~てするのが一般的
でもたぶんPOSIXパスだけをquoted form of ~てするのが一般的
510名称未設定
2020/04/15(水) 13:56:08.43ID:l4T0qiYI0 POSIXパスだけじゃなく AppleScriptの変数の値(文字列)のままで の単位でじゃね
511名称未設定
2020/04/15(水) 14:24:53.24ID:5P0amQj80 フォルダ名とかに、書いてるからパスのことかと思ったんだけど違うの?
例文だと変数名も相まってスクリプトごと括ってるように見えるけど
例文だと変数名も相まってスクリプトごと括ってるように見えるけど
512名称未設定
2020/04/15(水) 15:00:28.26ID:l4T0qiYI0 条件を限定すれば別に>>506でもいいだろけどな
なんの条件かは単なるコマンドへのフルパスそれも主にスペース対策(スペース以外にも有効だが ' には未対応)だけというのだけかな
単にAppleScript変数に収めたコマンドのフルパスだけの話ならだが、本当にそれだけなのか??という
do shell script で渡すのは単なる文字列、それをどう解釈するかはシェル(今は今もbashかな、まだ)
なので、シェルの特性(?)を知ってちゃんと使うべきとこに quoted form を使うべきかな
(ディレクトリ名ファイル名で ' なんて使うことはないつうても、せっかくあるんだしそれで全て(?)解決するんだし)
なんの条件かは単なるコマンドへのフルパスそれも主にスペース対策(スペース以外にも有効だが ' には未対応)だけというのだけかな
単にAppleScript変数に収めたコマンドのフルパスだけの話ならだが、本当にそれだけなのか??という
do shell script で渡すのは単なる文字列、それをどう解釈するかはシェル(今は今もbashかな、まだ)
なので、シェルの特性(?)を知ってちゃんと使うべきとこに quoted form を使うべきかな
(ディレクトリ名ファイル名で ' なんて使うことはないつうても、せっかくあるんだしそれで全て(?)解決するんだし)
514名称未設定
2020/04/23(木) 22:25:58.12ID:3OHx3yFj0 AppleScriptObjC で property で cocoa クラスを宣言する際に、
property ClassName : class "ClassName"
というやり方と、
property ClassName : a reference to current application's ClassName
というやり方の二つを見かけるけど、効果に違いがあるのかな?
どちらがいいとか、あるのかな?
property ClassName : class "ClassName"
というやり方と、
property ClassName : a reference to current application's ClassName
というやり方の二つを見かけるけど、効果に違いがあるのかな?
どちらがいいとか、あるのかな?
515名称未設定
2020/04/23(木) 23:20:35.96ID:gA6WI9pm0 文、AppleScript実行文中としては、
class "NSObject"
と
(a reference to) current application's NSObject
は明らかに違う(上はAppleScript(ラッパー)オブジェクト、下はObjectve-Cオブジェクト)が、クラス宣言のそこでは同じじゃね
current application's NSLog("%@", me's |class|()'s superclass())
で見ると同じ結果だから。AppleScript(ラッパー)オブジェクトでなんかやってるかもしれんが
テンプレートもうそうだし、短い class "NSObject" の方でいいんじゃね
class "NSObject"
と
(a reference to) current application's NSObject
は明らかに違う(上はAppleScript(ラッパー)オブジェクト、下はObjectve-Cオブジェクト)が、クラス宣言のそこでは同じじゃね
current application's NSLog("%@", me's |class|()'s superclass())
で見ると同じ結果だから。AppleScript(ラッパー)オブジェクトでなんかやってるかもしれんが
テンプレートもうそうだし、短い class "NSObject" の方でいいんじゃね
516名称未設定
2020/04/24(金) 10:11:13.35ID:ynQpl+IX0 >>515
いまのところ、
property ClassName : class "ClassName"
を、簡便という理由で使っているけど、
Apple のメーリングリストだと、
property ClassName : a refrence to current application's ClassName
という書き方の方がよく見かける。
わざわざ、冗長な書き方が普及しているこということは、こう書くことに何かメリットがあるのではないか?と思いまして。
いまのところ、
property ClassName : class "ClassName"
を、簡便という理由で使っているけど、
Apple のメーリングリストだと、
property ClassName : a refrence to current application's ClassName
という書き方の方がよく見かける。
わざわざ、冗長な書き方が普及しているこということは、こう書くことに何かメリットがあるのではないか?と思いまして。
517名称未設定
2020/04/24(金) 10:40:13.44ID:r5NsGPcY0 単に親クラスを指定するだけだし、superclassを見る限り作りたいObjective-Cのクラスとしては何も変わらないから、気にすんな
単に気持ち悪いというなんか拘りだけだったり、単に純粋AppleScriptでのクラス作る場合でのに合わせた方向でとかかもね
単に気持ち悪いというなんか拘りだけだったり、単に純粋AppleScriptでのクラス作る場合でのに合わせた方向でとかかもね
518名称未設定
2020/04/24(金) 10:54:50.14ID:r5NsGPcY0 Script Editor で、current application's をいちいち書くのがめんどくさい場合、
property NSString : a refrence to current application's NSString
とかするようだが、a refrence to が必要、無ければエラーになる
Xcodeでのクラス宣言時の
property parent : current application's NSObject
a refrence to は必要なさげ、無くてもエラーにならないちゃんと実行する
ことから、Script EditorでAppleScriptObjCに慣れた人かな?
property NSString : a refrence to current application's NSString
とかするようだが、a refrence to が必要、無ければエラーになる
Xcodeでのクラス宣言時の
property parent : current application's NSObject
a refrence to は必要なさげ、無くてもエラーにならないちゃんと実行する
ことから、Script EditorでAppleScriptObjCに慣れた人かな?
519名称未設定
2020/04/24(金) 10:57:41.34ID:r5NsGPcY0 あー、
property ClassName :
って、
property parent :
間違いだろと思ってたが(クラスを宣言って言ってるから)、まさか、めんどくさいからの方??
property ClassName :
って、
property parent :
間違いだろと思ってたが(クラスを宣言って言ってるから)、まさか、めんどくさいからの方??
520名称未設定
2020/04/24(金) 15:26:10.55ID:eWyPhZfo0 クラス宣言中のではなく、単に面倒だから変数に入れるって方みたいだな
parent a reference to current application's でググってもでないとこから
だったら、結論として好きにしろきにすんなw
そのpropertyでの目的は、いちいち current application's ClassName's と書くのが面倒だから、そこまで(それが指すオブジェクト)をクラス名と同名の変数に入れてしまえってだけ(クラスを宣言とはちょっと違うだろう)
current application's ClassName をだから、a reference to current application's ClassNameになるのはまあ自然かな
a reference to は不要だが付けなきゃ許してくれないからだけかな、なんでか。下記にある通り実行文ではいらないよう
(また、俺は property で current application を変数に入れて、S' ClassNames's ...とかしたこともあるが、current applicationまでだったら a reference to はいらない)
current application's ClassName's ...
を
set theClass to current application's ClassName
theClass's ...
と、同じ。current application's ClassName にするのは普通でしょ?
で、property での、a reference to current application's ClassName の代わりに class "NSObject" は、まあ全く同じだな
use framework "AppKit"
property classClass : class "NSApplication"
property referenceClass : a reference to current application's NSApplication
log (current application's NSString's stringWithFormat_("%p", classClass) as text)
log (current application's NSString's stringWithFormat_("%p", classClass) as text)
log (current application's NSString's stringWithFormat_("%p", current application's NSClassFromString("NSApplication")) as text)
オブジェクトのポインタ(オブジェクトが存在するメモリ)が全く同じ
parent a reference to current application's でググってもでないとこから
だったら、結論として好きにしろきにすんなw
そのpropertyでの目的は、いちいち current application's ClassName's と書くのが面倒だから、そこまで(それが指すオブジェクト)をクラス名と同名の変数に入れてしまえってだけ(クラスを宣言とはちょっと違うだろう)
current application's ClassName をだから、a reference to current application's ClassNameになるのはまあ自然かな
a reference to は不要だが付けなきゃ許してくれないからだけかな、なんでか。下記にある通り実行文ではいらないよう
(また、俺は property で current application を変数に入れて、S' ClassNames's ...とかしたこともあるが、current applicationまでだったら a reference to はいらない)
current application's ClassName's ...
を
set theClass to current application's ClassName
theClass's ...
と、同じ。current application's ClassName にするのは普通でしょ?
で、property での、a reference to current application's ClassName の代わりに class "NSObject" は、まあ全く同じだな
use framework "AppKit"
property classClass : class "NSApplication"
property referenceClass : a reference to current application's NSApplication
log (current application's NSString's stringWithFormat_("%p", classClass) as text)
log (current application's NSString's stringWithFormat_("%p", classClass) as text)
log (current application's NSString's stringWithFormat_("%p", current application's NSClassFromString("NSApplication")) as text)
オブジェクトのポインタ(オブジェクトが存在するメモリ)が全く同じ
521名称未設定
2020/04/24(金) 15:35:36.03ID:eWyPhZfo0 current application's ClassName と、class "ClassName" で明確に違うのは、
じゃあ、class "ClassName" も current application's ClassName と同じように、
(class "ClassName")'s ...
と、実行文で一文にできるだろと思ったら、そうはいかない、エラーになる
Script Editorでは、
set theClass to class "ClassName"
theClass's ...
と一度変数に入れなくてはならず(?)、
Xcodeでは、class "ClassName" がまともなオブジェクトを返さない(AppDelegateのメソッド内で行うと、なんであれAppDelegateを返す。上にあるラッパーというのは間違い)
current application's ClassName の代わりなら、 a refrence to current application's ClassName の方が自然
だが、propertyでは指す/返すオブジェクトは全く同じなので、短い方が良かったら class "ClassName" でも問題ないだろう
ということで、好きにしろ気にすんなってとこで
じゃあ、class "ClassName" も current application's ClassName と同じように、
(class "ClassName")'s ...
と、実行文で一文にできるだろと思ったら、そうはいかない、エラーになる
Script Editorでは、
set theClass to class "ClassName"
theClass's ...
と一度変数に入れなくてはならず(?)、
Xcodeでは、class "ClassName" がまともなオブジェクトを返さない(AppDelegateのメソッド内で行うと、なんであれAppDelegateを返す。上にあるラッパーというのは間違い)
current application's ClassName の代わりなら、 a refrence to current application's ClassName の方が自然
だが、propertyでは指す/返すオブジェクトは全く同じなので、短い方が良かったら class "ClassName" でも問題ないだろう
ということで、好きにしろ気にすんなってとこで
522名称未設定
2020/04/24(金) 15:37:43.76ID:eWyPhZfo0 >>520
間違い
log (current application's NSString's stringWithFormat_("%p", classClass) as text)
log (current application's NSString's stringWithFormat_("%p", classClass) as text)
正しい
log (current application's NSString's stringWithFormat_("%p", classClass) as text)
log (current application's NSString's stringWithFormat_("%p", referenceClass) as text)
間違い
log (current application's NSString's stringWithFormat_("%p", classClass) as text)
log (current application's NSString's stringWithFormat_("%p", classClass) as text)
正しい
log (current application's NSString's stringWithFormat_("%p", classClass) as text)
log (current application's NSString's stringWithFormat_("%p", referenceClass) as text)
523名称未設定
2020/04/24(金) 15:58:55.59ID:ynQpl+IX0 >>522
いろいろコメントありがとう。
でも、
property ClassName : class "ClassName"
と
property ClassName : a refrence to current application's ClassName
で得られるクラスをポインタで比較するのはあんまり意味ないかなと思う。
前者は Apple のドキュメントにあり、後者は大量のサンプルコードが出回っていおり、
同じものが得られるのはわかっているわけですから。
二つの違う書き方で AppleScript と Cocoa の間の birdge が微妙に違ってくることはありうるのじゃないかしら?
それぞれの場合の副作用とかオーバヘッドとかの情報が得られれば、と思っていました。
それぞれの場合の速度を比較などしてみましたが、有意な差はなさそうでした。
いろいろコメントありがとう。
でも、
property ClassName : class "ClassName"
と
property ClassName : a refrence to current application's ClassName
で得られるクラスをポインタで比較するのはあんまり意味ないかなと思う。
前者は Apple のドキュメントにあり、後者は大量のサンプルコードが出回っていおり、
同じものが得られるのはわかっているわけですから。
二つの違う書き方で AppleScript と Cocoa の間の birdge が微妙に違ってくることはありうるのじゃないかしら?
それぞれの場合の副作用とかオーバヘッドとかの情報が得られれば、と思っていました。
それぞれの場合の速度を比較などしてみましたが、有意な差はなさそうでした。
524名称未設定
2020/04/24(金) 15:58:59.82ID:eWyPhZfo0 雑学的な訂正
>>521
(class "ClassName")'s ...
と、実行文で一文にできるだろと思ったら、そうはいかない、エラーになる
Script Editorでは、
set theClass to class "ClassName"
theClass's ...
と一度変数に入れなくてはならず
(get class "ClassName")'s ...
で可能だった。こういう変態的なとこがいいなAppleScriptは(わかった時に嬉しい変態的な意味で)w
>>521
(class "ClassName")'s ...
と、実行文で一文にできるだろと思ったら、そうはいかない、エラーになる
Script Editorでは、
set theClass to class "ClassName"
theClass's ...
と一度変数に入れなくてはならず
(get class "ClassName")'s ...
で可能だった。こういう変態的なとこがいいなAppleScriptは(わかった時に嬉しい変態的な意味で)w
525名称未設定
2020/04/24(金) 16:08:56.05ID:eWyPhZfo0 >>523
ちょっと意味がわからんな
ポインタが指すオブジェクトがClassNameクラスそのものではない、何かラッパーなとか?
そのために、最後のを付けたんだけどなあ。AppleScriptが介入する余地がないCore(?)的な。純粋にObjective-Cのオブジェクトだよ、全部
で、アドレスが独特なので、システム関係は変わった位置にマッピングされてObjective-Cプロジェクトでも同じかな?と思った見たら、全く同じだった
ということで、その見解は誤りと言っておこう。全く同じなので変わらないのは当たり前だね
ちょっと意味がわからんな
ポインタが指すオブジェクトがClassNameクラスそのものではない、何かラッパーなとか?
そのために、最後のを付けたんだけどなあ。AppleScriptが介入する余地がないCore(?)的な。純粋にObjective-Cのオブジェクトだよ、全部
で、アドレスが独特なので、システム関係は変わった位置にマッピングされてObjective-Cプロジェクトでも同じかな?と思った見たら、全く同じだった
ということで、その見解は誤りと言っておこう。全く同じなので変わらないのは当たり前だね
526名称未設定
2020/04/24(金) 16:37:58.76ID:eWyPhZfo0 ああ、最終的になObjective-Cのオブジェクトは同じでも、AppleScript上/中ではなんかラッパーされてるんじゃないの?とかか
せいぜいAppleScriptの変数型が違うとかだろうが、そんなことないよAppleScriptObjC全般で
Objective-Cオブジェクトを包んだ変数、それは共通の一つだろう、あっても。Objevtive-Cオブジェクトが同じだったら、変数の型も同じ内容も全く同じなんだから変わるわけがないわな
せいぜいAppleScriptの変数型が違うとかだろうが、そんなことないよAppleScriptObjC全般で
Objective-Cオブジェクトを包んだ変数、それは共通の一つだろう、あっても。Objevtive-Cオブジェクトが同じだったら、変数の型も同じ内容も全く同じなんだから変わるわけがないわな
527名称未設定
2020/04/24(金) 17:32:37.41ID:ynQpl+IX0 >>526
「AppleScriptObjC全般でObjective-Cオブジェクトを包んだ変数、それは共通の一つだろう」
この推測には、同意します。
しかし、それに辿り着く手続きは複数あるかもしれませんね。
明らかに入口は複数あります。どの入口から入るのが一番の確実かつ近道なのか、興味ないですか?
「AppleScriptObjC全般でObjective-Cオブジェクトを包んだ変数、それは共通の一つだろう」
この推測には、同意します。
しかし、それに辿り着く手続きは複数あるかもしれませんね。
明らかに入口は複数あります。どの入口から入るのが一番の確実かつ近道なのか、興味ないですか?
528名称未設定
2020/04/24(金) 23:30:26.79ID:yFmvkdtt0 辿り着くってイミフ、入り口ってどこのどこへの??
シンプルにObjective-Cオブジェクトを包んだ変数その型だってAppleScriptの
class of での、AppleScript言語の(内部オブジェクトクラス
興味あるのに自分で調べる手立てはなに??
シンプルにObjective-Cオブジェクトを包んだ変数その型だってAppleScriptの
class of での、AppleScript言語の(内部オブジェクトクラス
興味あるのに自分で調べる手立てはなに??
529名称未設定
2020/04/28(火) 19:14:15.33ID:nVdZ/wiz0 こんなの、もうAppleScriptじゃないな...
530名称未設定
2020/04/28(火) 20:34:21.22ID:Htc5L4tn0 解説本でも出す気なのかもしれんぜ
531名称未設定
2020/04/28(火) 21:29:12.29ID:D8UlzbWr0 Objective-CなCocoa(OSのAPI)を直接使うんだからこんなのになるのは当たり前、
違うアプローチは前からあったが今時話にも上がらなくなってしまったろう、そのAppleScriptらしいのは
AppleScriptらしいアプローチのは、作るのではなく使う側でしかないんだろう
こんなのAppleScriptではないというのはこれも無縁な話だろう、どうせやらないんだから
違うアプローチは前からあったが今時話にも上がらなくなってしまったろう、そのAppleScriptらしいのは
AppleScriptらしいアプローチのは、作るのではなく使う側でしかないんだろう
こんなのAppleScriptではないというのはこれも無縁な話だろう、どうせやらないんだから
532名称未設定
2020/04/28(火) 22:58:33.39ID:FwS0bZUI0533名称未設定
2020/04/29(水) 00:45:17.92ID:0jaqUaGm0 property ClassName : class "ClassName"
↑
これだとTerminalからosascriptで実行する(osascript xxx.applescript)際にエラーとなる。
a refrence to...だとエラーにならない。
↑
これだとTerminalからosascriptで実行する(osascript xxx.applescript)際にエラーとなる。
a refrence to...だとエラーにならない。
534名称未設定
2020/04/29(水) 12:48:34.76ID:rStQpknl0 >>533
有益な情報をありがとう。
property ClassName : class "ClassName"
でも、osacompile で script ファイルを作ることはできるね。
そして、いちど script ファイルにしてしまえば、osascript で実行できるね。
なぜか、ソースコードをダイレクトに実行する場合だけエラーが起きるね。
不思議だ!
有益な情報をありがとう。
property ClassName : class "ClassName"
でも、osacompile で script ファイルを作ることはできるね。
そして、いちど script ファイルにしてしまえば、osascript で実行できるね。
なぜか、ソースコードをダイレクトに実行する場合だけエラーが起きるね。
不思議だ!
535名称未設定
2020/04/29(水) 17:32:25.77ID:0jaqUaGm0 >>534
osascript xxx.scptだと完走はするもののstderrに
osascript: couldn't save changes to script xxx.scpt: error -1763.
とエラーが出力される。
osascript xxx.scptだと完走はするもののstderrに
osascript: couldn't save changes to script xxx.scpt: error -1763.
とエラーが出力される。
536名称未設定
2020/04/29(水) 20:33:08.58ID:rStQpknl0 >>535
トップレベルで ObjC のオブジェクトを変数に入れているね。
あってる?
もしそうなら、osascript じゃなくても、スクリプトエディタで実行しても同じエラーが起きる。
トップレベルの変数は保存される。そして、ObjC のオブジェクトは保存できない。
だから変更を保存できない、というエラーがおきる。
スクリプトをユーザー定義のハンドラの中に入れてやれば、エラーが起きなくなるよ。
トップレベルで ObjC のオブジェクトを変数に入れているね。
あってる?
もしそうなら、osascript じゃなくても、スクリプトエディタで実行しても同じエラーが起きる。
トップレベルの変数は保存される。そして、ObjC のオブジェクトは保存できない。
だから変更を保存できない、というエラーがおきる。
スクリプトをユーザー定義のハンドラの中に入れてやれば、エラーが起きなくなるよ。
537名称未設定
2020/04/29(水) 21:07:53.96ID:0jaqUaGm0 あってる。なるほど、ユーザー定義のハンドラに入れたら大丈夫だった。ありがとう。
538名称未設定
2020/06/15(月) 17:41:53.83ID:/Jq7K7r+0 初心者です
現在開いているsafariのページのソースを取得→ソース.txtのようなファイルにテキストとして書き出す、ということをやろうとしています。
get source of document 1 でソースの値自体は取得できましたがここからテキスト書き出す方法がわかりません
内容は今のところ↓ですがソースの値?を文字列に変換できないからかエラーが出ます
as string や as «class utf8» などを使ってみたのですが変わらず
上手くいく時もありますがテキストではなくデータとして保存されてしまっているのか日本語が文字化けしていたりします
何かいい方法はないでしょうか?
tell application "Safari"
open location "https://google.com"
delay 2
try
get the source of document 1
on error
beep 2
return
end try
end tell
set theSource to source of document 1
writeString("〜/Desktop/ソース.txt", theSource)
on writeString(theFile, theString)
open for access theFile with write permission
try
set eof theFile to 0
write theString to theFile
end try
close access theFile
end writeString
現在開いているsafariのページのソースを取得→ソース.txtのようなファイルにテキストとして書き出す、ということをやろうとしています。
get source of document 1 でソースの値自体は取得できましたがここからテキスト書き出す方法がわかりません
内容は今のところ↓ですがソースの値?を文字列に変換できないからかエラーが出ます
as string や as «class utf8» などを使ってみたのですが変わらず
上手くいく時もありますがテキストではなくデータとして保存されてしまっているのか日本語が文字化けしていたりします
何かいい方法はないでしょうか?
tell application "Safari"
open location "https://google.com"
delay 2
try
get the source of document 1
on error
beep 2
return
end try
end tell
set theSource to source of document 1
writeString("〜/Desktop/ソース.txt", theSource)
on writeString(theFile, theString)
open for access theFile with write permission
try
set eof theFile to 0
write theString to theFile
end try
close access theFile
end writeString
539名称未設定
2020/06/15(月) 19:22:28.43ID:62s7vEVu0 write theString to theFile
を
write theString as «class utf8» to theFile
で行けてるぽいけど
を
write theString as «class utf8» to theFile
で行けてるぽいけど
540名称未設定
2020/06/15(月) 21:23:11.91ID:/Jq7K7r+0 >>539
ありがとうございます
その部分を変えただけではダメでしたが、変えた上で
set theSource to source of document 1
を削除し
get the source of document 1
を
set theSource to (source of document 1)
に変えてやればできるようになりました
ただサイトによって、例えば阿部寛のHPは
as «class utf8»でなくas textでやる必要があったり
今度は逆にas textだと文字化けするサイトが出てきたりいろいろと使い分けなくてはならないようですね
いずれにせよ目的は果たせました
ありがとうございました
ありがとうございます
その部分を変えただけではダメでしたが、変えた上で
set theSource to source of document 1
を削除し
get the source of document 1
を
set theSource to (source of document 1)
に変えてやればできるようになりました
ただサイトによって、例えば阿部寛のHPは
as «class utf8»でなくas textでやる必要があったり
今度は逆にas textだと文字化けするサイトが出てきたりいろいろと使い分けなくてはならないようですね
いずれにせよ目的は果たせました
ありがとうございました
541名称未設定
2020/06/20(土) 11:56:01.98ID:h6Q8xKx60 catalinaのQuickTime Playerなのですが、
GUIでは、録画の赤ぽっちボタンの右の下向き>で、映像と音声の入力ソースを選択しますが、
これをApple Scriptでコントロールする方法をご存知ないでしょうか。
具体的にやりたいことは、QuickTime Player起動後に、新規ムービー収録のウインドウを開いて、
特定の入力ソースを自動で選択するところまで自動でやって欲しいのですが。
GUIでは、録画の赤ぽっちボタンの右の下向き>で、映像と音声の入力ソースを選択しますが、
これをApple Scriptでコントロールする方法をご存知ないでしょうか。
具体的にやりたいことは、QuickTime Player起動後に、新規ムービー収録のウインドウを開いて、
特定の入力ソースを自動で選択するところまで自動でやって欲しいのですが。
542名称未設定
2020/06/20(土) 13:51:41.00ID:34L9HvGk0 current microphone に設定するだけのはずが、screen recording (の場合に返す document で)しか対応してないやんけって話?
tell application "QuickTime Player"
set theDocument to new screen recording
set current microphone of theDocument to (audio recording device "Built-in Line Input")
end tell
tell application "QuickTime Player"
set theDocument to new screen recording
set current microphone of theDocument to (audio recording device "Built-in Line Input")
end tell
543名称未設定
2020/06/20(土) 19:14:30.62ID:h6Q8xKx60 レスありがとうございます。
言葉足らずですみません。
Macと同じネットワークにAppleTVがあり、AppleTVの画面を新規ムービー収録のウインドウに表示したいと思い、
tell application "QuickTime Player"
set newMovieRecording to new movie recording
tell application "System Events" to tell process "QuickTime Player"
click button 3 of window 1
click menu item "Apple TV 4G" of menu 1 of button 3 of window 1
end tell
end tell
みたいのを作り始めたのですが、いろいろ問題があって、System Eventsを使うのをやめて
set current camera of newMovieRecording to "Apple TV 4G"
set current microphone of newMovieRecording to "Apple TV 4G"
のようにしてもうまくいかないもので、ソースの指定方法のアドバイスをいただけないかと思いました。
言葉足らずですみません。
Macと同じネットワークにAppleTVがあり、AppleTVの画面を新規ムービー収録のウインドウに表示したいと思い、
tell application "QuickTime Player"
set newMovieRecording to new movie recording
tell application "System Events" to tell process "QuickTime Player"
click button 3 of window 1
click menu item "Apple TV 4G" of menu 1 of button 3 of window 1
end tell
end tell
みたいのを作り始めたのですが、いろいろ問題があって、System Eventsを使うのをやめて
set current camera of newMovieRecording to "Apple TV 4G"
set current microphone of newMovieRecording to "Apple TV 4G"
のようにしてもうまくいかないもので、ソースの指定方法のアドバイスをいただけないかと思いました。
544名称未設定
2020/06/20(土) 23:42:42.39ID:IoUCNbBk0 Catalinaじゃないけど、
current camera, current microphone は screen recording でしか対応してない。audio recording なんて current microphone プロパティにアクセスすらエラーになる
Catalina も同じだったら、System Events ででしかできないんじゃね
current camera, current microphone は screen recording でしか対応してない。audio recording なんて current microphone プロパティにアクセスすらエラーになる
Catalina も同じだったら、System Events ででしかできないんじゃね
545名称未設定
2020/06/21(日) 04:20:55.63ID:FnFKZRI70 そうしたら、おそらくCatalinaでも対応してなさそうですね。
レスありがとうございます。
レスありがとうございます。
546名称未設定
2020/06/23(火) 01:52:23.47ID:52ZesAHA0 AppleScriptでは対応してないが、選択されたデバイスは記憶してる=Preferenceに入ってる
defaultsコマンド(NSUserDefaults)を使えば、QuickTIme Playerを起動してても、その変更は反映される(けど、Recordingウィンドウがすでにあるとそこのメニューには反映されないそこまではしてない)
ので、do shell script (もしくはAppleScriptObjC/JXAで NSUserDefaults) で、Preferenceのその値を直接書き換えてしまえば一応できるかな
tell application "QuickTime Player"
do shell script "defaults write com.apple.QuickTimePlayerX MGDeviceRecordingDocumentViewControllerAudioDeviceSelectionUniqueID '設定したいデバイス'"
new movie recording
end tell
設定したいデバイス は設定したいデバイスを選んで、
defaults read com.apple.QuickTimePlayerX MGDeviceRecordingDocumentViewControllerAudioDeviceSelectionUniqueID
defaultsコマンド(NSUserDefaults)を使えば、QuickTIme Playerを起動してても、その変更は反映される(けど、Recordingウィンドウがすでにあるとそこのメニューには反映されないそこまではしてない)
ので、do shell script (もしくはAppleScriptObjC/JXAで NSUserDefaults) で、Preferenceのその値を直接書き換えてしまえば一応できるかな
tell application "QuickTime Player"
do shell script "defaults write com.apple.QuickTimePlayerX MGDeviceRecordingDocumentViewControllerAudioDeviceSelectionUniqueID '設定したいデバイス'"
new movie recording
end tell
設定したいデバイス は設定したいデバイスを選んで、
defaults read com.apple.QuickTimePlayerX MGDeviceRecordingDocumentViewControllerAudioDeviceSelectionUniqueID
547名称未設定
2020/06/27(土) 19:48:13.98ID:ER4MrTJG0 スレチでしたら申し訳ないのですがBashの中でAppleScriptを使ってダイアログ表示させたいです
VAR=太郎
osascript -e "
display \"$VARです\"
"
「太郎です」と表示させるべくこんな感じで書いてみたのですが表示が文字化けしてしまいます
\"$VAR です\" のように$VARとの間に空白を開けると文字化けは起きません
バグなのかやり方が悪いのかどちらでしょうか?
High Sierraで10.13.4です
VAR=太郎
osascript -e "
display \"$VARです\"
"
「太郎です」と表示させるべくこんな感じで書いてみたのですが表示が文字化けしてしまいます
\"$VAR です\" のように$VARとの間に空白を開けると文字化けは起きません
バグなのかやり方が悪いのかどちらでしょうか?
High Sierraで10.13.4です
548名称未設定
2020/06/27(土) 20:51:05.02ID:ER4MrTJG0 すいません訂正です
displayではなく
display dialogです
displayではなく
display dialogです
549名称未設定
2020/06/27(土) 21:37:46.20ID:mA5FUaV90 そらやり方だろう
仮にバグだとしたって今更直される訳ない
うまいこと回避しないと
仮にバグだとしたって今更直される訳ない
うまいこと回避しないと
550名称未設定
2020/06/27(土) 23:10:23.62ID:p3Uu/mSU0 ${VAR}
のようにかっこで括ってみては
のようにかっこで括ってみては
551名称未設定
2020/06/28(日) 06:02:46.10ID:Lqw/TMAF0552名称未設定
2020/06/28(日) 06:30:21.29ID:Lqw/TMAF0 hoge.sh
VAR=太郎
osascript -e "\"$VARです\""
osascript -e "
use framework \"Foundation\"
(((current application's NSString's stringWithString:\"$VARです\")'s dataUsingEncoding:(current application's NSUTF8StringEncoding))'s |description|()) as text
"
$ ksh hoge.sh
§™ÈÉéß„Åô
<c382c2a7 e284a2c3 88c389c3 a9c39fe2 809ec385 c3b4>
kshの化け方がわかりやすい、素直な化け方。UTF-8文字列を1バイト文字列(Latin-1か何か)としてUTF-8に変換という
bashの化け方はちょっとイミフだな
まあ、どっちにしろAppleScript側の問題ではなくシェルの問題だな
VAR=太郎
osascript -e "\"$VARです\""
osascript -e "
use framework \"Foundation\"
(((current application's NSString's stringWithString:\"$VARです\")'s dataUsingEncoding:(current application's NSUTF8StringEncoding))'s |description|()) as text
"
$ ksh hoge.sh
§™ÈÉéß„Åô
<c382c2a7 e284a2c3 88c389c3 a9c39fe2 809ec385 c3b4>
kshの化け方がわかりやすい、素直な化け方。UTF-8文字列を1バイト文字列(Latin-1か何か)としてUTF-8に変換という
bashの化け方はちょっとイミフだな
まあ、どっちにしろAppleScript側の問題ではなくシェルの問題だな
553名称未設定
2020/06/28(日) 09:19:04.44ID:E5CKrqll0 10.12.6だけど化けなかったわ bash
10.15.5でも化けない bash dash ksh zsh
一応観測報告
10.15.5でも化けない bash dash ksh zsh
一応観測報告
554名称未設定
2020/06/28(日) 10:19:26.04ID:XMUPxPbc0 547です
シェルの問題なのですね
ですがみなさんのアドバイス通り${VAR}にしたら問題なく表示されました
これでやっていきます
ありがとうございました
シェルの問題なのですね
ですがみなさんのアドバイス通り${VAR}にしたら問題なく表示されました
これでやっていきます
ありがとうございました
555名称未設定
2020/07/09(木) 01:08:32.40ID:Y6CASR9H0 放り込んだ"ファイル名.拡張子"と同名のファイルを全ディスクから探して
変更日の新旧問わず放り込んだそれにすべて置換する、
というスクリプトをご存じないでしょうか。。
同一ファイル名の書類を見つけ出してリスト化というのはあるようなのですが。
確認ダイヤログ不要で、とにかく放り込むと置換できたら嬉しいのですが。
よろしくお願いします。
変更日の新旧問わず放り込んだそれにすべて置換する、
というスクリプトをご存じないでしょうか。。
同一ファイル名の書類を見つけ出してリスト化というのはあるようなのですが。
確認ダイヤログ不要で、とにかく放り込むと置換できたら嬉しいのですが。
よろしくお願いします。
556名称未設定
2020/07/09(木) 01:21:58.19ID:6ePdx8Rv0 そんな怖いスクリプトは作りたくないなあ。
557名称未設定
2020/07/09(木) 01:31:00.51ID:HqkbsCQZ0 知らない
558名称未設定
2020/07/09(木) 03:41:14.93ID:iXt8nw3m0 mdfindあたり使えばそんな難しくはなさそう
560名称未設定
2020/07/09(木) 13:34:59.83ID:3NOhzex20 rubyとか言い出すならfindコマンドじゃね
最速は多分>>558、AppleScriptObjC使えばAppleScriptでも最速になるだろう
最速は多分>>558、AppleScriptObjC使えばAppleScriptでも最速になるだろう
561名称未設定
2020/07/09(木) 16:11:14.56ID:Y6CASR9H0 >>555です。こちらのスクリプトで同名同種類ファイルをリストから選択、最新のもので更新できますが、
1、放り込んだ物に全置換
2、確認不要で全書置換
できませんでしょうか、、
on synchronize by keyFilePath
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set thePaths to text items of (do shell script "fname=\"$(basename " & quoted form of keyFilePath & ")\";export LANG=ja_JP.UTF-8; mdfind 'kMDItemDisplayName == \"'\"$fname\"'\"' | while read path; do [ -f \"$path\" ] && [ -r \"$path\" ] && [ -w \"$path\" ] && ls -lT \"$path\"; done | awk 'NF<10{next} { date=sprintf( \"%s%02s%02d%s\", $9, $6, $7, $8 ); for(i=1; i<10 ; i++) $i=\"\";sub(\"^ *\",\"\");print date, $0}' | sort -r | cut -d ' ' -f 2-")
set AppleScript's text item delimiters to savedDelimiters
if not ((count of thePaths) > 1) then return
1、放り込んだ物に全置換
2、確認不要で全書置換
できませんでしょうか、、
on synchronize by keyFilePath
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set thePaths to text items of (do shell script "fname=\"$(basename " & quoted form of keyFilePath & ")\";export LANG=ja_JP.UTF-8; mdfind 'kMDItemDisplayName == \"'\"$fname\"'\"' | while read path; do [ -f \"$path\" ] && [ -r \"$path\" ] && [ -w \"$path\" ] && ls -lT \"$path\"; done | awk 'NF<10{next} { date=sprintf( \"%s%02s%02d%s\", $9, $6, $7, $8 ); for(i=1; i<10 ; i++) $i=\"\";sub(\"^ *\",\"\");print date, $0}' | sort -r | cut -d ' ' -f 2-")
set AppleScript's text item delimiters to savedDelimiters
if not ((count of thePaths) > 1) then return
562名称未設定
2020/07/09(木) 16:11:48.29ID:Y6CASR9H0 set sourcePath to first item of thePaths
try
set destinationPaths to choose from list items 2 thru -1 of thePaths OK button name "Copy" with title "Update the same name files" with prompt "Copy “" & sourcePath & "” to:" with multiple selections allowed
if (count of destinationPaths) is 0 then return
on error
return
end try
try
set AppleScript's text item delimiters to ASCII character 10 -- 10 was LF
set quotedDestinationPaths to quoted form of (destinationPaths as text)
set AppleScript's text item delimiters to savedDelimiters
set theResult to do shell script "echo " & quotedDestinationPaths & "| while read path; do cp " & quoted form of sourcePath & " \"$path\"; done"
on error
return
end try
end synchronize
on open droppedItems
if (count of droppedItems) is 0 then return
synchronize by POSIX path of item 1 of droppedItems
end open
try
set destinationPaths to choose from list items 2 thru -1 of thePaths OK button name "Copy" with title "Update the same name files" with prompt "Copy “" & sourcePath & "” to:" with multiple selections allowed
if (count of destinationPaths) is 0 then return
on error
return
end try
try
set AppleScript's text item delimiters to ASCII character 10 -- 10 was LF
set quotedDestinationPaths to quoted form of (destinationPaths as text)
set AppleScript's text item delimiters to savedDelimiters
set theResult to do shell script "echo " & quotedDestinationPaths & "| while read path; do cp " & quoted form of sourcePath & " \"$path\"; done"
on error
return
end try
end synchronize
on open droppedItems
if (count of droppedItems) is 0 then return
synchronize by POSIX path of item 1 of droppedItems
end open
563名称未設定
2020/07/09(木) 16:14:16.46ID:qaiBURwd0 自分でいいように直せよ
565名称未設定
2020/07/09(木) 23:48:33.47ID:3NOhzex20 なんで?
シェルスクリプトでいいだろ(by 知ってる俺w)だろけど、何をしたいかわかってないようだな
シェルスクリプトでいいだろ(by 知ってる俺w)だろけど、何をしたいかわかってないようだな
566名称未設定
2020/07/10(金) 21:41:05.59ID:SwzS/c2K0567名称未設定
2020/07/11(土) 00:51:59.91ID:2cTMSLIj0 指名指定すんな、あつかましいw
教えてくれでなくて書いてくれだろな
教えてくれでなくて書いてくれだろな
568名称未設定
2020/07/11(土) 01:12:41.33ID:2cTMSLIj0 on synchronize by sourcePath
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set destinationPaths to text items of (do shell script "originPath=" & quoted form of sourcePath & "; mdfind 'kMDItemFSName == \"'\"$(basename \"$originPath\")\"'\"' | while read path; do [ \"$path\" != \"$originPath\" ] && [ -f \"$path\" ] && [ -r \"$path\" ] && [ -w \"$path\" ] && echo \"$path\"; done | sort")
set AppleScript's text item delimiters to savedDelimiters
if (count of destinationPaths) is 0 then return
try
set destinationPaths to choose from list destinationPaths OK button name "Copy" with title "Update the same name files" with prompt "Copy “" & sourcePath & "” to:" default items destinationPaths with multiple selections allowed
if (count of destinationPaths) is 0 then return
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set destinationPaths to text items of (do shell script "originPath=" & quoted form of sourcePath & "; mdfind 'kMDItemFSName == \"'\"$(basename \"$originPath\")\"'\"' | while read path; do [ \"$path\" != \"$originPath\" ] && [ -f \"$path\" ] && [ -r \"$path\" ] && [ -w \"$path\" ] && echo \"$path\"; done | sort")
set AppleScript's text item delimiters to savedDelimiters
if (count of destinationPaths) is 0 then return
try
set destinationPaths to choose from list destinationPaths OK button name "Copy" with title "Update the same name files" with prompt "Copy “" & sourcePath & "” to:" default items destinationPaths with multiple selections allowed
if (count of destinationPaths) is 0 then return
569名称未設定
2020/07/11(土) 01:12:52.08ID:2cTMSLIj0 on error
return
end try
try
set AppleScript's text item delimiters to ASCII character 10 -- 10 was LF
set quotedDestinationPaths to quoted form of (destinationPaths as text)
set AppleScript's text item delimiters to savedDelimiters
set theResult to do shell script "echo " & quotedDestinationPaths & "| while read path; do cp " & quoted form of sourcePath & " \"$path\"; done"
on error
return
end try
end synchronize
on open droppedItems
if (count of droppedItems) is 0 then return
synchronize by POSIX path of item 1 of droppedItems
end open
return
end try
try
set AppleScript's text item delimiters to ASCII character 10 -- 10 was LF
set quotedDestinationPaths to quoted form of (destinationPaths as text)
set AppleScript's text item delimiters to savedDelimiters
set theResult to do shell script "echo " & quotedDestinationPaths & "| while read path; do cp " & quoted form of sourcePath & " \"$path\"; done"
on error
return
end try
end synchronize
on open droppedItems
if (count of droppedItems) is 0 then return
synchronize by POSIX path of item 1 of droppedItems
end open
570名称未設定
2020/07/11(土) 01:16:37.14ID:2cTMSLIj0 ちょっとテストしたみただけで、よくはテストはしてない
つまらんから確認不要はとりあえず無視。 echo の代わりに cp にすればいいだけだけど=synchronize は do shell script 一行だけになるだけだけど
つまらんから確認不要はとりあえず無視。 echo の代わりに cp にすればいいだけだけど=synchronize は do shell script 一行だけになるだけだけど
571名称未設定
2020/07/11(土) 01:45:18.77ID:2cTMSLIj0 ああ、
sourcePath & "; mdfind
は
sourcePath & "; export LANG=ja_JP.UTF-8; mdfind
LANG=ja_JP.UTF-8 は必要なんかな
sourcePath & "; mdfind
は
sourcePath & "; export LANG=ja_JP.UTF-8; mdfind
LANG=ja_JP.UTF-8 は必要なんかな
573名称未設定
2020/07/11(土) 09:58:46.16ID:6DSpvrrV0 >>571
自動でリスト内全選択になっただけでも大変助かりました。流石に確認なしに以下アクションはシステム的に危険なんでしょうか。。本当に感謝です。あなたは神様です。ありがとうざいます。
自動でリスト内全選択になっただけでも大変助かりました。流石に確認なしに以下アクションはシステム的に危険なんでしょうか。。本当に感謝です。あなたは神様です。ありがとうざいます。
574名称未設定
2020/07/11(土) 10:26:54.84ID:6DSpvrrV0 いただいたスクリプト内の、リスト表示、確認部分を削除すればそのまま置換されました。。本当にお手数おかけしました。。
575名称未設定
2020/07/11(土) 16:06:46.88ID:HMfLglAV0 結局、そう言い出すだろうなと、そうしてた
教えてくれなんて自分で勉強するつもりが全くないくせに簡単に教えてくれなんて言うな
気がついただけマシだが、これからちゃんと一から勉強しろよw
教えてくれなんて自分で勉強するつもりが全くないくせに簡単に教えてくれなんて言うな
気がついただけマシだが、これからちゃんと一から勉強しろよw
576名称未設定
2020/07/11(土) 16:19:40.44ID:D2eEglfZ0 全部書いてもらった奴がいちいちその後調べる訳ねーだろ
577名称未設定
2020/07/11(土) 16:35:15.08ID:HMfLglAV0 お前に言ってない
文句つけるだけのは、お前が気にしてる嫌ってるのとそう変わらんな
文句つけるだけのは、お前が気にしてる嫌ってるのとそう変わらんな
578名称未設定
2020/07/11(土) 18:25:24.76ID:+kwq3R/90 せいぜい得意がってろ
580名称未設定
2020/07/12(日) 00:05:51.70ID:NYpKP6zd0 何で荒れるんだよ
581名称未設定
2020/08/03(月) 22:59:17.79ID:WKkr5BIF0 AppleScript関係なかったら申し訳ないけど
SystemEventsでショートカットとか使ってGUIアプリを操作するスクリプトがある
これで長時間作業するので、ディスプレイだけオフ、システムだけは起動という風にしたいんだけど上手くいかない
とりあえずホットキーとかで四隅にマウス移動させてディスプレイオフとかいうの使ってみたけどSystemEventsのエラーが出たりそもそも操作が行われなかったりする
ディスプレイが起動してる時は正常に動くからスクリプト自体は問題ないはず
何かいい方法ない?
SystemEventsでショートカットとか使ってGUIアプリを操作するスクリプトがある
これで長時間作業するので、ディスプレイだけオフ、システムだけは起動という風にしたいんだけど上手くいかない
とりあえずホットキーとかで四隅にマウス移動させてディスプレイオフとかいうの使ってみたけどSystemEventsのエラーが出たりそもそも操作が行われなかったりする
ディスプレイが起動してる時は正常に動くからスクリプト自体は問題ないはず
何かいい方法ない?
582名称未設定
2020/08/04(火) 02:26:01.82ID:eqZ8mut20 モニターの電源を切る、iMacとか一体型だったら諦めるかできるならそれで
tell application "TextEdit"
activate
end tell
delay 5 -- (この間に ディスプレイをスリープ)
tell application "System Events"
keystroke "acvv" using command down
end tell
動かない。ビープ音が鳴る
tell application "TextEdit"
activate
end tell
delay 5 -- (この間に ディスプレイをスリープ)
tell application "System Events"
keystroke "acvv" using command down
end tell
動かない。ビープ音が鳴る
583名称未設定
2020/08/04(火) 02:26:08.62ID:eqZ8mut20 delay 5 -- (この間に ディスプレイをスリープ)
tell application "System Events" to tell process "TextEdit"
UI elements of front window
end tell
一応取得はできる。じゃあってことで、
tell application "TextEdit"
activate
end tell
delay 5 -- (この間に ディスプレイをスリープ)
tell application "System Events" to tell process "TextEdit"
tell first menu of menu bar item "Edit" of first menu bar
click menu item "Select All"
click menu item "Copy"
click menu item "Paste"
click menu item "Paste"
end tell
end tell
NOP無視っぽい
スリーンセーバー起動でも同じようなもん
スリーンセーバー動作的には対象としたいアプリがアクティベートになってない=keystrokeは当然そのアプリに行かない(ビープ音からはまさしくかな)しGUI Scriptingではアクティブではないから無視という普通の動作(Windowに対しては機能したかな)
ディスプレイスリープもスリーンセーバー起動時と同じようなことか
tell application "System Events" to tell process "TextEdit"
UI elements of front window
end tell
一応取得はできる。じゃあってことで、
tell application "TextEdit"
activate
end tell
delay 5 -- (この間に ディスプレイをスリープ)
tell application "System Events" to tell process "TextEdit"
tell first menu of menu bar item "Edit" of first menu bar
click menu item "Select All"
click menu item "Copy"
click menu item "Paste"
click menu item "Paste"
end tell
end tell
NOP無視っぽい
スリーンセーバー起動でも同じようなもん
スリーンセーバー動作的には対象としたいアプリがアクティベートになってない=keystrokeは当然そのアプリに行かない(ビープ音からはまさしくかな)しGUI Scriptingではアクティブではないから無視という普通の動作(Windowに対しては機能したかな)
ディスプレイスリープもスリーンセーバー起動時と同じようなことか
584名称未設定
2020/08/04(火) 02:41:56.62ID:eqZ8mut20 System Events のキーイベント送信はプロセスに対してではなく、OSとして受け取って振り分け
macOSのAPIで特定のプロセスに送ることがそういえば可能だったかなと思ったら、あった
https://stackoverflow.com/questions/21878987/mac-send-key-event-to-background-window
AppleScriptObjCで頑張ればできるかもしれない。もしくはそんなコマンドとかあるかな
(メニューバーってアクティブなアプリななのしかダメなんじゃないかと思ったが、上記のstackoberflowのはまさしくだからイケるのか...?)
macOSのAPIで特定のプロセスに送ることがそういえば可能だったかなと思ったら、あった
https://stackoverflow.com/questions/21878987/mac-send-key-event-to-background-window
AppleScriptObjCで頑張ればできるかもしれない。もしくはそんなコマンドとかあるかな
(メニューバーってアクティブなアプリななのしかダメなんじゃないかと思ったが、上記のstackoberflowのはまさしくだからイケるのか...?)
585名称未設定
2020/08/04(火) 02:44:32.19ID:eqZ8mut20 >上記のstackoberflowのはまさしく
いや違った、Command+Q じゃなく単に Q を送るだけか。失礼
いや違った、Command+Q じゃなく単に Q を送るだけか。失礼
586名無し募集中。。。
2020/08/04(火) 04:00:45.65ID:e7kbVOQe0 fast user switchingしても裏で動いてるから
別ユーザー側で画面を消したらいいよ
別ユーザー側で画面を消したらいいよ
587名称未設定
2020/08/04(火) 04:27:45.67ID:eqZ8mut20 fast user switchingかあ
アクティブ状態は維持されてるのかな?されてるよう。思わぬとこだなあ
アクティブ状態は維持されてるのかな?されてるよう。思わぬとこだなあ
588名称未設定
2020/08/04(火) 04:54:02.09ID:6HzZzT0x0 もうJavaScriptでよくね?
590名称未設定
2020/08/04(火) 08:26:19.37ID:UmQvxL8c0 外付けモニタなら、モニタの電源ボタンを押すだけだけどね。
591名称未設定
2020/08/04(火) 09:23:17.02ID:JbnubkiD0 天才あらわる
592名称未設定
2020/08/04(火) 13:19:02.29ID:z6f4Eeyp0 つよい
593名称未設定
2020/08/21(金) 11:28:03.58ID:QR52ANsL0 OS 10.11です。
JXA(AS)でディスク作成フォルダって作成できますか?
できればPythonからディスク作成フォルダが作成できればベストなのですが。
JXA(AS)でディスク作成フォルダって作成できますか?
できればPythonからディスク作成フォルダが作成できればベストなのですが。
594名称未設定
2020/08/21(金) 11:47:17.55ID:tLFxZAx40 単に拡張子 fpbf が付いてるだけのフォルダ(ディレクトリ)を作ればいいだけじゃね
595名称未設定
2020/08/21(金) 12:00:29.71ID:QR52ANsL0 本当だw。できました。ありがとうございます。
pythonでも可能かやってみます。
FINDER = Application( "Finder" )
FINDER.includeStandardAdditions = true
container = FINDER.pathTo( "desktop", {from:"user domain"} )
var destinationFolder = FINDER.make({
new: "folder", at: container,
withProperties: { name: "disk.fpbf" }
});
pythonでも可能かやってみます。
FINDER = Application( "Finder" )
FINDER.includeStandardAdditions = true
container = FINDER.pathTo( "desktop", {from:"user domain"} )
var destinationFolder = FINDER.make({
new: "folder", at: container,
withProperties: { name: "disk.fpbf" }
});
596名称未設定
2020/08/21(金) 13:09:22.87ID:CSp20R8z0 pythonでも普通にできました
import os
theDir = os.path.dirname(__file__)+"/disk.fpbf"
newdir = os.makedirs(theDir)
import os
theDir = os.path.dirname(__file__)+"/disk.fpbf"
newdir = os.makedirs(theDir)
597名称未設定
2020/08/22(土) 22:48:10.71ID:465lLDh20 なんでAppleScriptで書かないんだ?
598名称未設定
2020/09/25(金) 11:54:13.06ID:iIR7upFs0 Xcode12にしてもASアプリはARM化されないみたいですね。
599名称未設定
2020/09/25(金) 16:20:30.48ID:qJrBvDjr0 Xcodeでも別にネイティブコードにコンパイルされるわけではないし(本体はあくまでもscpt)、アプリケーションバンドル内(Contents/MacOS)のは単にインタプリタを起動してるだけでしょ
インタプリタを起動っても実行ファイルではなく、OSフレームワーク内のFrameworkとしてあってAPIを呼び出しての
ARM MacではAPI内=インタプリタはARMネイティブだろからほぼ全く影響/違いはないんじゃね
インタプリタを起動してるだけなんだからARMネイティブすりゃいいだろというのはあるが、まあ、上記の通りほぼ全く影響はないからかもしくはまだ視野に入ってないからまだ手付かずなんだろ
もしくは、今回のエミュレータはなんかARMネイティブコードにコンバートもするそうなので、インタプリタを起動してるだけぐらいならそれで済んでしまいそうだな
インタプリタを起動っても実行ファイルではなく、OSフレームワーク内のFrameworkとしてあってAPIを呼び出しての
ARM MacではAPI内=インタプリタはARMネイティブだろからほぼ全く影響/違いはないんじゃね
インタプリタを起動してるだけなんだからARMネイティブすりゃいいだろというのはあるが、まあ、上記の通りほぼ全く影響はないからかもしくはまだ視野に入ってないからまだ手付かずなんだろ
もしくは、今回のエミュレータはなんかARMネイティブコードにコンバートもするそうなので、インタプリタを起動してるだけぐらいならそれで済んでしまいそうだな
600名称未設定
2020/09/26(土) 04:54:40.07ID:EmnrkzgY0 ああ、
XcodeでAppleScriptアプリでのContents/MacOSの元はプロジェクトにあるやんけっ
ただのちっちゃな main.m
Contents/MacOS内のネイティブ実行ファイルにもフツーにARM分も付くんじゃないの。単にデフォのbuild settingsがそうなってないだけで、簡単にいつも通りに設定変えるだけで
チラっととしか見てないが、
https://developer.apple.com/documentation/xcode/building_a_universal_macos_binary
フツーにいつも通り/今まで通りに「複数のアーキテクチャーで」を選ぶ/設定するだけだな
Xcode 12まだ使えないから思いと違うとこがあるかもしれんが、ARM対応っても今まで通りで変わってなさそ
XcodeでAppleScriptアプリでのContents/MacOSの元はプロジェクトにあるやんけっ
ただのちっちゃな main.m
Contents/MacOS内のネイティブ実行ファイルにもフツーにARM分も付くんじゃないの。単にデフォのbuild settingsがそうなってないだけで、簡単にいつも通りに設定変えるだけで
チラっととしか見てないが、
https://developer.apple.com/documentation/xcode/building_a_universal_macos_binary
フツーにいつも通り/今まで通りに「複数のアーキテクチャーで」を選ぶ/設定するだけだな
Xcode 12まだ使えないから思いと違うとこがあるかもしれんが、ARM対応っても今まで通りで変わってなさそ
601名称未設定
2020/09/26(土) 04:58:09.70ID:EmnrkzgY0 Xcode12にしても 〜 ARM化されない
ってのは、既存のプロジェクトかな、もしかしたら
それだったら尚更勝手にはならないだろう。Build SettingsをちょちょいっとするだけでARM化されるだろう
ってのは、既存のプロジェクトかな、もしかしたら
それだったら尚更勝手にはならないだろう。Build SettingsをちょちょいっとするだけでARM化されるだろう
602名称未設定
2020/09/26(土) 08:51:00.47ID:HQVjumix0 とりあえずまっさらな新規プロジェクトで作成してもダメだった。
既存のプロジェクトにアーキテクチャゴニョゴニョしてもダメだった。
まあ、Appleの説明だといけるはずなので、やり方が悪いのかも。
既存のプロジェクトにアーキテクチャゴニョゴニョしてもダメだった。
まあ、Appleの説明だといけるはずなので、やり方が悪いのかも。
603名称未設定
2020/09/27(日) 17:10:00.73ID:6zvKztBs0 しばらく前は動いてたと思うけど
do shell script "tmutil disable" with administrator privileges
がOS 10.15.7でエラーを返す。
tmutil: disable requires Full Disk Access privileges.
To allow this operation, select Full Disk Access in the Privacy
tab of the Security & Privacy preference pane, and add Terminal
to the list of applications which are allowed Full Disk Access.
ターミナルやスクリプトエディタや保存したアプリにフルディスクアクセスを与えても変わらず。
do shell script "tmutil disable" with administrator privileges
がOS 10.15.7でエラーを返す。
tmutil: disable requires Full Disk Access privileges.
To allow this operation, select Full Disk Access in the Privacy
tab of the Security & Privacy preference pane, and add Terminal
to the list of applications which are allowed Full Disk Access.
ターミナルやスクリプトエディタや保存したアプリにフルディスクアクセスを与えても変わらず。
604名称未設定
2020/10/15(木) 18:18:58.59ID:NQgPzUV+0 do shell script "pbpaste" がなんか化けると思ったら ~/.CFUserTextEncoding 削除しちゃってた
まだ使ってんのねこれ
まだ使ってんのねこれ
605名称未設定
2020/10/15(木) 18:57:59.97ID:weI/PnQJ0 というより、LANGが設定されてないのが主な原因/do shell scriptらしい原因じゃないの
.CFUserTextEncodingがあろうがなかろうが中身が日本語設定じゃなかろうが、
do shell script "LANG=ja_JP.UTF-8 pbpaste"
で化けなさそうだけど
.CFUserTextEncodingがあろうがなかろうが中身が日本語設定じゃなかろうが、
do shell script "LANG=ja_JP.UTF-8 pbpaste"
で化けなさそうだけど
606名称未設定
2020/10/15(木) 20:06:59.99ID:weI/PnQJ0 do shell script "osascript -e 'the clipboard'"
では化けない。do shell script で起動されるシェル全体のことではなくて、pbpaste固有のことか
と思ったら、man に書いてあっった。LANGに依存する、無かったら standard C encoding とみなすって。そりゃ化けるわな(Terminal上でも同じく同じように化ける)
.CFUserTextEncodingの記述はないが、まあ、LANGが無くてもの保険のうちか
では化けない。do shell script で起動されるシェル全体のことではなくて、pbpaste固有のことか
と思ったら、man に書いてあっった。LANGに依存する、無かったら standard C encoding とみなすって。そりゃ化けるわな(Terminal上でも同じく同じように化ける)
.CFUserTextEncodingの記述はないが、まあ、LANGが無くてもの保険のうちか
607名称未設定
2020/10/15(木) 20:19:18.21ID:NQgPzUV+0 確かに.CFUserTextEncoding無しでもLANG設定すれば化けませんでした
もしかしてdefaults readが化けるのもこれかな?と思ったけどこっちは別なようでした(ターミナルでも化ける)
もしかしてdefaults readが化けるのもこれかな?と思ったけどこっちは別なようでした(ターミナルでも化ける)
608名称未設定
2020/10/15(木) 22:08:48.09ID:AcZwlXt70 文字化け じゃなくて エスケープされる じゃないの
defaultsはそういうもんっぽいかな
plutilやPlistBuddy使えば
AppleScript関係ない、いや、do shell script もあまり関係ないコマンド特有の話だな
AppleScriptらしくはAppleScriptObjC使えばかな。あっさりだし文字化けなんて関係ないだろう
(確かAppleScriptにPropery Listのサポートそのものがあったがあれはものすごく使いづらかったような)
defaultsはそういうもんっぽいかな
plutilやPlistBuddy使えば
AppleScript関係ない、いや、do shell script もあまり関係ないコマンド特有の話だな
AppleScriptらしくはAppleScriptObjC使えばかな。あっさりだし文字化けなんて関係ないだろう
(確かAppleScriptにPropery Listのサポートそのものがあったがあれはものすごく使いづらかったような)
609名称未設定
2020/10/19(月) 11:09:48.76ID:kxp2hD9n0 Catalinaで、メニューバーに出してるスクリプトメニューが時々消えてることがある
610名称未設定
2020/11/03(火) 08:08:05.83ID:3IpYfRMd0611名称未設定
2020/11/23(月) 13:54:16.83ID:KJHD4iIZ0 全然、詳しくないんですけど
起動ディスクを切り替えて再起動するAppleSprictの作成は可能でしょうか?
いま、OSをBig SurにUpdateしようと思ってるんですが
その時に外付のStorageにBig surをインストールして内蔵のStorageからアプリやデータを移しながら稼働確認をしようとしてます
完全にBig surに移行できるまではCatalinaで起動したり、Big surで起動したりの起動ディスクの切り替えが結構頻度で発生するのでone clickでできるようなApplescript は作れないかと思ってます
スクリンセーバーの開始時間を5分⇄OFFで切り替えるスクリプトは書いたことあります。ただ殆どこのスレで教えてもらいましたが
起動ディスクを切り替えて再起動するAppleSprictの作成は可能でしょうか?
いま、OSをBig SurにUpdateしようと思ってるんですが
その時に外付のStorageにBig surをインストールして内蔵のStorageからアプリやデータを移しながら稼働確認をしようとしてます
完全にBig surに移行できるまではCatalinaで起動したり、Big surで起動したりの起動ディスクの切り替えが結構頻度で発生するのでone clickでできるようなApplescript は作れないかと思ってます
スクリンセーバーの開始時間を5分⇄OFFで切り替えるスクリプトは書いたことあります。ただ殆どこのスレで教えてもらいましたが
612名称未設定
2020/11/23(月) 14:18:30.13ID:YBfcTY0v0 ちょっと古いけどこういうの真似ればできるんちゃう
https://www.macworld.com/article/2867276/how-to-easily-switch-between-startup-volumes.html
https://www.macworld.com/article/2867276/how-to-easily-switch-between-startup-volumes.html
613名称未設定
2020/11/23(月) 18:07:36.54ID:KJHD4iIZ0 >>612
Thank you!
同じようなこと考えるやつはいるんだな
だけどやってみたら残念ながら上手くいかなかったよ
Catalina環境で試したらCatalina(Macintosh HD)を指定しての実行は上手く再起動したけど
Big surでの再起動は外付のStorageがマウントできないというエラーになってしまったキチンとBig surの入ってる外付Volumeの名前を指定してるつもりなんだけどなー
もちろんシステム環境設定で起動ディスクを変更すればBig surで再起動はできてる
エラーの内容は添付参照して
https://i.imgur.com/KI1AURS.png
https://i.imgur.com/oq0s04j.png
Thank you!
同じようなこと考えるやつはいるんだな
だけどやってみたら残念ながら上手くいかなかったよ
Catalina環境で試したらCatalina(Macintosh HD)を指定しての実行は上手く再起動したけど
Big surでの再起動は外付のStorageがマウントできないというエラーになってしまったキチンとBig surの入ってる外付Volumeの名前を指定してるつもりなんだけどなー
もちろんシステム環境設定で起動ディスクを変更すればBig surで再起動はできてる
エラーの内容は添付参照して
https://i.imgur.com/KI1AURS.png
https://i.imgur.com/oq0s04j.png
614名称未設定
2020/11/24(火) 04:21:41.81ID:n+9Nxo0V0 人が変わったような言葉遣いに吹いた
615名称未設定
2020/11/24(火) 13:16:00.08ID:VB6lUz0y0 な。どういう神経なのか不思議
616名称未設定
2020/11/25(水) 09:05:37.80ID:pD+t9Rr+0 すごくフレンドリーな人だね
かわいい
かわいい
617名称未設定
2020/11/25(水) 16:35:48.73ID:8PAHHaeP0 キモ
本人かと思わせるぐらいないな。やはり本人かw
本人かと思わせるぐらいないな。やはり本人かw
618名称未設定
2021/01/03(日) 13:26:59.46ID:UCgs6e4/0 OS10.15.7、Safari14.0.2です
AppleScriptでユーザエージェントを切り替えたいのですがうまく動作しません
試しにテストとして
tell application "System Events"
tell process "Safari"
click menu item "新規ウインドウ" of menu "ファイル" of menu bar 1
end tell
end tell
とすると新規ウィンドウが開きます
click menu item "スタイルを無効にする" of menu "開発" of menu bar 1
でスタイルは無効になります
click menu item "このページをメールで送信" of menu "共有" of menu item "共有" of menu "ファイル" of menu bar 1
でサブメニューもうまく機能します
そこで
click menu item "Safari 14.0.2" of menu "ユーザエージェント" of menu item "ユーザエージェント" of menu "開発" of menu bar 1
としてもデフォルトが選択されたまま該当メニューが選択された状態になりません
同じようにサブメニューではない"レスポンシブ・デザイン・モードにする"も機能しません
なにか書き方が悪いか他の動作しない理由などあるでしょうか
AppleScriptでユーザエージェントを切り替えたいのですがうまく動作しません
試しにテストとして
tell application "System Events"
tell process "Safari"
click menu item "新規ウインドウ" of menu "ファイル" of menu bar 1
end tell
end tell
とすると新規ウィンドウが開きます
click menu item "スタイルを無効にする" of menu "開発" of menu bar 1
でスタイルは無効になります
click menu item "このページをメールで送信" of menu "共有" of menu item "共有" of menu "ファイル" of menu bar 1
でサブメニューもうまく機能します
そこで
click menu item "Safari 14.0.2" of menu "ユーザエージェント" of menu item "ユーザエージェント" of menu "開発" of menu bar 1
としてもデフォルトが選択されたまま該当メニューが選択された状態になりません
同じようにサブメニューではない"レスポンシブ・デザイン・モードにする"も機能しません
なにか書き方が悪いか他の動作しない理由などあるでしょうか
619名称未設定
2021/01/03(日) 13:51:00.39ID:DFL3pFAL0 set frontmost to true
を前に入れといてやると行けるようだった
を前に入れといてやると行けるようだった
620名称未設定
2021/01/03(日) 14:50:58.12ID:UCgs6e4/0 >>619
うまくいくメニューもあるのでSafariを前面に持ってくる発想までは至りませんでした
指摘のset frontmost to trueなりあらかじめtell application "Safari" から activateするなりで動作しました
ありがとうございました
うまくいくメニューもあるのでSafariを前面に持ってくる発想までは至りませんでした
指摘のset frontmost to trueなりあらかじめtell application "Safari" から activateするなりで動作しました
ありがとうございました
621名称未設定
2021/02/03(水) 10:19:49.60ID:KQ/xqyGt0 BigSur 11.2
menu itemのclickが動かないので調べたのですが
menu bar itemのclickを入れないといけなくなった
のでしょうか?
今まではメニューバーのプルダウン操作が省けていたのですが、これは書き換える箇所が結構多い...
menu itemのclickが動かないので調べたのですが
menu bar itemのclickを入れないといけなくなった
のでしょうか?
今まではメニューバーのプルダウン操作が省けていたのですが、これは書き換える箇所が結構多い...
622名称未設定
2021/02/03(水) 15:58:47.32ID:Ic2O1XWz0 そういうのはサブルーチンにしておくと吉。
623名称未設定
2021/02/03(水) 17:50:47.54ID:46Up+eV10 まだBig SurにしてないけどCatalinaでも一部そういうとこあったな
clickで表示させないとmenuのevery menu itemが取れなかったり空で返ってくる
clickで表示させないとmenuのevery menu itemが取れなかったり空で返ってくる
624名称未設定
2021/03/02(火) 09:21:09.92ID:wDpi0XMu0 SpotifyがMusicほど豊富じゃないけどAppleScript対応しててほぼ同じ記述で操作できて優秀
625名称未設定
2021/05/18(火) 08:42:12.19ID:Ss99saoI0 tell application "System Events"
tell application process "ControlCenter"'s menu bar 1's menu bar item "Clock" to click
delay 0.2
try
tell application process "NotificationCenter"'s window "Notification Center"'s scroll area 1's UI element 1's (first button that title ends with "件の通知") to click
end try
end tell
tell application process "ControlCenter"'s menu bar 1's menu bar item "Clock" to click
delay 0.2
try
tell application process "NotificationCenter"'s window "Notification Center"'s scroll area 1's UI element 1's (first button that title ends with "件の通知") to click
end try
end tell
626名称未設定
2021/06/22(火) 19:05:24.92ID:cMqtnmMV0 初心者なのですが、画像のようなadobe Illustratorのスクリプトを作りました。
1〜3行目が「プレビュー境界を使用をオン」にするスクリプトで、5行目が「オブジェクトをアウトライン化」するスクリプトです。
この画像のスクリプトを実行すると、1〜3行目の「プレビュー境界を使用をオン」にするスクリプトは正しく実行されるのですが、
5行目の「オブジェクトをアウトライン化」するスクリプトが実行されません。
1〜3行目を実行した後に、5行目を実行して終わるようにするには、どのように記述すれば良いのでしょうか?
5行目のスクリプトを1行目に、1〜3行目のスクリプトを3〜5行目に逆に入れ替えると、
今度は「オブジェクトをアウトライン化」するスクリプトが正しく実行されて、「プレビュー境界を使用をオン」にするスクリプトが実行されません。
https://f.easyuploader.app/20210622185709_52523676.jpg
1〜3行目が「プレビュー境界を使用をオン」にするスクリプトで、5行目が「オブジェクトをアウトライン化」するスクリプトです。
この画像のスクリプトを実行すると、1〜3行目の「プレビュー境界を使用をオン」にするスクリプトは正しく実行されるのですが、
5行目の「オブジェクトをアウトライン化」するスクリプトが実行されません。
1〜3行目を実行した後に、5行目を実行して終わるようにするには、どのように記述すれば良いのでしょうか?
5行目のスクリプトを1行目に、1〜3行目のスクリプトを3〜5行目に逆に入れ替えると、
今度は「オブジェクトをアウトライン化」するスクリプトが正しく実行されて、「プレビュー境界を使用をオン」にするスクリプトが実行されません。
https://f.easyuploader.app/20210622185709_52523676.jpg
627626
2021/06/22(火) 21:51:56.50ID:cMqtnmMV0 自己解決しました。
app.preferences.setBooleanPreference("includeStrokeInBounds",true);
app.doScript("オブジェクトのアウトライン", "オブジェクトのアウトライン");
でいけました。
app.preferences.setBooleanPreference("includeStrokeInBounds",true);
app.doScript("オブジェクトのアウトライン", "オブジェクトのアウトライン");
でいけました。
628名称未設定
2021/06/22(火) 23:15:11.42ID:X7cS6AcY0 やるじゃないか
629名称未設定
2021/07/16(金) 06:44:29.52ID:HGWsaU010 AppleScriptというかAdobe ExtendScript?
まあ個人的には歓迎だけど
まあ個人的には歓迎だけど
630名称未設定
2021/08/08(日) 22:56:22.99ID:JHIes/J+0 【全ディレクトリ】を範囲とした下記スクリプトから、
放り込んだ単体または複数の「XXX.jpg」で【デスクトップ/その他/写真(サブフォルダ含む)】フォルダ内の「同一ファイル名.jpg」を置換する。
にはどこを書き替えれば良いでしょうか、アドバイスお願いいたします。
on open droppedItem
repeat with obj in droppedItem
tell application "Finder"
set objPOSpath to POSIX path of obj as Unicode text
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set destinationPaths to text items of (do shell script "originPath=" & quoted form of objPOSpath & "; export LANG=ja_JP.UTF-8; mdfind 'kMDItemFSName == \"'\"$(basename \"$originPath\")\"'\"' | while read path; do [ \"$path\" != \"$originPath\" ] && [ -f \"$path\" ] && [ -r \"$path\" ] && [ -w \"$path\" ] && echo \"$path\"; done | sort")
set AppleScript's text item delimiters to savedDelimiters
try
set AppleScript's text item delimiters to ASCII character 10 -- 10 was LF
set quotedDestinationPaths to quoted form of (destinationPaths as text)
set AppleScript's text item delimiters to savedDelimiters
set theResult to do shell script "echo " & quotedDestinationPaths & "| while read path; do cp " & quoted form of objPOSpath & " \"$path\"; done"
on error
return
end try
end tell
end repeat
end open
放り込んだ単体または複数の「XXX.jpg」で【デスクトップ/その他/写真(サブフォルダ含む)】フォルダ内の「同一ファイル名.jpg」を置換する。
にはどこを書き替えれば良いでしょうか、アドバイスお願いいたします。
on open droppedItem
repeat with obj in droppedItem
tell application "Finder"
set objPOSpath to POSIX path of obj as Unicode text
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set destinationPaths to text items of (do shell script "originPath=" & quoted form of objPOSpath & "; export LANG=ja_JP.UTF-8; mdfind 'kMDItemFSName == \"'\"$(basename \"$originPath\")\"'\"' | while read path; do [ \"$path\" != \"$originPath\" ] && [ -f \"$path\" ] && [ -r \"$path\" ] && [ -w \"$path\" ] && echo \"$path\"; done | sort")
set AppleScript's text item delimiters to savedDelimiters
try
set AppleScript's text item delimiters to ASCII character 10 -- 10 was LF
set quotedDestinationPaths to quoted form of (destinationPaths as text)
set AppleScript's text item delimiters to savedDelimiters
set theResult to do shell script "echo " & quotedDestinationPaths & "| while read path; do cp " & quoted form of objPOSpath & " \"$path\"; done"
on error
return
end try
end tell
end repeat
end open
631名称未設定
2021/08/09(月) 10:39:35.00ID:0I/Udd1r0 現状、何がどううまく動かないのか、どこで何かエラーが出てるのか、はっきり書いた方がいいと思うぞ
単に修正してくれ、ってことなら知らんけど
単に修正してくれ、ってことなら知らんけど
632名称未設定
2021/08/10(火) 18:17:11.63ID:ukHsgKMs0 on open droppedItem
repeat with obj in droppedItem
set aInfo to (info for obj)
if (folder of aInfo) then
open obj
else
openItem(obj, aInfo)
end if
end repeat
end open
on openItem(aItem, aInfo)
if file extension of aInfo is ".jpg" then
tell application "Finder"
set name of aItem to ((name of aInfo) + "-test.jpg")
end tell
end if
end openItem
動作確認していないし、ファイル名をどう変えたいのかわからないが、AppleScriptの伝統的な作法に沿うなら上みたいな感じかな。
repeat with obj in droppedItem
set aInfo to (info for obj)
if (folder of aInfo) then
open obj
else
openItem(obj, aInfo)
end if
end repeat
end open
on openItem(aItem, aInfo)
if file extension of aInfo is ".jpg" then
tell application "Finder"
set name of aItem to ((name of aInfo) + "-test.jpg")
end tell
end if
end openItem
動作確認していないし、ファイル名をどう変えたいのかわからないが、AppleScriptの伝統的な作法に沿うなら上みたいな感じかな。
633630
2021/08/11(水) 01:55:29.24ID:OQeKQyws0 >>631
放り込んだ単体または複数JPEGと同一名.jpgをローカルディレクリ(外付けHDD無視)、もしくは特定のローカルフォルダ(サブフォルダ含む)内で検索し、見つかった場合は「放り込んだファイル」でそれらを置換する、という風にしたいんです。
現状のスクリプトでは外付けHDD含め全てのディレクトリが検索対象となり、「放り込んだJPEGと同一名.jpg」全てを放り込んだファイルで上書きするようになっているので、これをどうにかローカルディレクトリのみ、もしくは外付けHDDを対象から外す、もしくは特定のローカルフォルダ(デスクトップ/"写真"フォルダ)のみ検索対象としたいんです。
>>632
有難うございます!JPEGファイルを放り込むと、extention編集は定義されていません。とエラーが出てしまいます。
放り込んだ単体または複数JPEGと同一名.jpgをローカルディレクリ(外付けHDD無視)、もしくは特定のローカルフォルダ(サブフォルダ含む)内で検索し、見つかった場合は「放り込んだファイル」でそれらを置換する、という風にしたいんです。
現状のスクリプトでは外付けHDD含め全てのディレクトリが検索対象となり、「放り込んだJPEGと同一名.jpg」全てを放り込んだファイルで上書きするようになっているので、これをどうにかローカルディレクトリのみ、もしくは外付けHDDを対象から外す、もしくは特定のローカルフォルダ(デスクトップ/"写真"フォルダ)のみ検索対象としたいんです。
>>632
有難うございます!JPEGファイルを放り込むと、extention編集は定義されていません。とエラーが出てしまいます。
634名称未設定
2021/08/11(水) 03:35:05.05ID:9EfFbB4m0 >>630 をざっとしか見てないけどmdfindに-onlyin使えばいいんでないの
あと
on run
tell me to open (choose file with multiple selections allowed)
end run
を足せばスクリプトエディタから実行してon openの流れに持っていけるから自分でデバッグしやすいぞ
あと
on run
tell me to open (choose file with multiple selections allowed)
end run
を足せばスクリプトエディタから実行してon openの流れに持っていけるから自分でデバッグしやすいぞ
635名称未設定
2021/08/11(水) 03:40:41.96ID:OGqTSSVM0 ふーんと元のスクリプトちょっと見たけど、 mdfind に -onlyin 付けて絞ればいいだけじゃないのと思たわ
636名称未設定
2021/08/11(水) 03:40:58.52ID:OGqTSSVM0 かぶったw
637名称未設定
2021/08/11(水) 07:44:10.25ID:4AXkTUL30 そんなのAppleScriptじゃない。
638名称未設定
2021/08/11(水) 10:41:14.23ID:hkqgQWrK0 ドラドロ使えればいいんだろうし、いっそ本体のshell script部分は別ファイルにしてそれを呼ぶだけにしようぜ
quoted form ofやエスケープが減って目にも優しい
quoted form ofやエスケープが減って目にも優しい
639630
2021/08/11(水) 11:19:07.83ID:OQeKQyws0 アドバイスありがとうございます!
do shell script "mdfind -onlyin" & ....と追加しましたが同一名ファイル達は上書きされずHDD直下に放り込んだファイルと白紙のスクリプト名ファイルが保存されてしまいました。検索対象を入れる場所が間違っていますでしょうか?
放り込んだ単体または複数jpgと同一名ファイルをローカルディスク内から探し出し、更新日時の新しい方ではなく、その「放り込んだファイル」でそれら全てを上書きする。
複数ファイルを放り込んだ場合、あるものは該当なし、あるものはいくつかのフォルダから計10枚見つかり全て上書きして閉じる。という感じです。
>>630のままだとバックアップ用の外付けディスクまで探してしまうのでそちらは更新してほしくなくて。。
do shell script "mdfind -onlyin" & ....と追加しましたが同一名ファイル達は上書きされずHDD直下に放り込んだファイルと白紙のスクリプト名ファイルが保存されてしまいました。検索対象を入れる場所が間違っていますでしょうか?
放り込んだ単体または複数jpgと同一名ファイルをローカルディスク内から探し出し、更新日時の新しい方ではなく、その「放り込んだファイル」でそれら全てを上書きする。
複数ファイルを放り込んだ場合、あるものは該当なし、あるものはいくつかのフォルダから計10枚見つかり全て上書きして閉じる。という感じです。
>>630のままだとバックアップ用の外付けディスクまで探してしまうのでそちらは更新してほしくなくて。。
641名称未設定
2021/08/12(木) 07:09:13.94ID:GSkQIS510 >>639
x-man-page://mdfind ←これを右クリック、URLを開いて -onlyin のところを見ろ
x-man-page://mdfind ←これを右クリック、URLを開いて -onlyin のところを見ろ
642名称未設定
2021/08/12(木) 07:14:34.69ID:GSkQIS510 ありゃ、うまく行かないな
エディタ類なら行けるんだけど
エディタ類なら行けるんだけど
643名称未設定
2021/08/12(木) 11:42:46.12ID:sP+PfVx00 >>641
ありがとうございます!
mdfind -onlyin ~/desktop/photo 'kMDItemFSName...
とすればフォトフォルダ内のみ置換対象となるという事ですね、トライします!
ありがとうございます!
mdfind -onlyin ~/desktop/photo 'kMDItemFSName...
とすればフォトフォルダ内のみ置換対象となるという事ですね、トライします!
644名称未設定
2021/08/13(金) 00:50:19.75ID:zpSVx9zJ0 おかげさまでmdfind -onlyinからフォルダを指定することができました、そして同一ファイル名.拡張子が見つかった場合は全てをドラドロしたファイルで置換することもできました。
しかし、、主に重複ファイルの有無まとめてドラドロした場合、重複ファイルがあるにも関わらず上書きされない時があるのですが、どこの書き方が悪いでのでしょうか? 検索抽出段階で止まってしまったらという感じなのでしょうか。。
on open droppedItems
repeat with obj in droppedItems
set objPOSpath to POSIX path of obj as Unicode text
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set destinationPaths to text items of (do shell script "originPath=" & quoted form of objPOSpath & "; export LANG=ja_JP.UTF-8; mdfind -onlyin ~/desktop 'kMDItemFSName == \"'\"$(basename \"$originPath\")\"'\"' | while read path; do [ \"$path\" != \"$originPath\" ] && [ -f \"$path\" ] && [ -r \"$path\" ] && [ -w \"$path\" ] && echo \"$path\"; done | sort")
set AppleScript's text item delimiters to savedDelimiters
if (count of destinationPaths) is 0 then return
try
set AppleScript's text item delimiters to ASCII character 10 -- 10 was LF
set quotedDestinationPaths to quoted form of (destinationPaths as text)
set AppleScript's text item delimiters to savedDelimiters
do shell script "echo " & quotedDestinationPaths & "| while read path; do cp " & quoted form of objPOSpath & " \"$path\"; done"
on error
return
end try
end repeat
end open
しかし、、主に重複ファイルの有無まとめてドラドロした場合、重複ファイルがあるにも関わらず上書きされない時があるのですが、どこの書き方が悪いでのでしょうか? 検索抽出段階で止まってしまったらという感じなのでしょうか。。
on open droppedItems
repeat with obj in droppedItems
set objPOSpath to POSIX path of obj as Unicode text
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set destinationPaths to text items of (do shell script "originPath=" & quoted form of objPOSpath & "; export LANG=ja_JP.UTF-8; mdfind -onlyin ~/desktop 'kMDItemFSName == \"'\"$(basename \"$originPath\")\"'\"' | while read path; do [ \"$path\" != \"$originPath\" ] && [ -f \"$path\" ] && [ -r \"$path\" ] && [ -w \"$path\" ] && echo \"$path\"; done | sort")
set AppleScript's text item delimiters to savedDelimiters
if (count of destinationPaths) is 0 then return
try
set AppleScript's text item delimiters to ASCII character 10 -- 10 was LF
set quotedDestinationPaths to quoted form of (destinationPaths as text)
set AppleScript's text item delimiters to savedDelimiters
do shell script "echo " & quotedDestinationPaths & "| while read path; do cp " & quoted form of objPOSpath & " \"$path\"; done"
on error
return
end try
end repeat
end open
645名称未設定
2021/08/13(金) 08:53:05.48ID:EqwPcRuB0 実はエラー発生してる可能性
try / on error / return / end try ←これらを全部コメント化 or 削除してやってみたら
try / on error / return / end try ←これらを全部コメント化 or 削除してやってみたら
646名称未設定
2021/08/14(土) 02:38:27.47ID:ZYo9upXn0 コメントアウトさせても同様でした。。
本当に何度も申し訳ありません。
検索・置換するフォルダ指定はできたのですが、重複する(上書き対象があある)同一名ファイルA.jpgと重複しない(上書き対象が存在しない)B.jpgを同時に放り込むと、、それは重複するものがあるかも知れないと一気にドラドロするため、、ハードディスク直下にB.jpgがコピーされてします。そして検出された複数A.jpgへの上書きは行われずに終了します。そしてもう一度それをドラドロすると今度は全て上書きされます。
これはリピート処理がうまく行ってないのでしょうか、例えば上書き対象ファイルがなかったらそこでB.jpgの処理は終了、次はA.jpg。。と命令文をどこかに入れたら解決しますでしょうか?
本当に何度も申し訳ありません。
検索・置換するフォルダ指定はできたのですが、重複する(上書き対象があある)同一名ファイルA.jpgと重複しない(上書き対象が存在しない)B.jpgを同時に放り込むと、、それは重複するものがあるかも知れないと一気にドラドロするため、、ハードディスク直下にB.jpgがコピーされてします。そして検出された複数A.jpgへの上書きは行われずに終了します。そしてもう一度それをドラドロすると今度は全て上書きされます。
これはリピート処理がうまく行ってないのでしょうか、例えば上書き対象ファイルがなかったらそこでB.jpgの処理は終了、次はA.jpg。。と命令文をどこかに入れたら解決しますでしょうか?
647名称未設定
2021/08/14(土) 02:40:31.20ID:ZYo9upXn0 リピート命令が間違ってる、または、上書き対象がない場合は放り込まれた次のファイルの処理に進む、、を追記すべしでしょうか。。
on open droppedItem
repeat with obj in droppedItem
tell application "Finder"
set objPOSpath to POSIX path of obj as Unicode text
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set destinationPaths to text items of (do shell script "originPath=" & quoted form of objPOSpath & "; export LANG=ja_JP.UTF-8; mdfind -onlyin ~/desktop 'kMDItemFSName == \"'\"$(basename \"$originPath\")\"'\"' | while read path; do [ \"$path\" != \"$originPath\" ] && [ -f \"$path\" ] && [ -r \"$path\" ] && [ -w \"$path\" ] && echo \"$path\"; done | sort")
set AppleScript's text item delimiters to savedDelimiters
try
set AppleScript's text item delimiters to ASCII character 10 -- 10 was LF
set quotedDestinationPaths to quoted form of (destinationPaths as text)
set AppleScript's text item delimiters to savedDelimiters
do shell script "echo " & quotedDestinationPaths & "| while read path; do cp " & quoted form of objPOSpath & " \"$path\"; done"
on error
return
end try
end tell
end repeat
end open
on open droppedItem
repeat with obj in droppedItem
tell application "Finder"
set objPOSpath to POSIX path of obj as Unicode text
set savedDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to return
set destinationPaths to text items of (do shell script "originPath=" & quoted form of objPOSpath & "; export LANG=ja_JP.UTF-8; mdfind -onlyin ~/desktop 'kMDItemFSName == \"'\"$(basename \"$originPath\")\"'\"' | while read path; do [ \"$path\" != \"$originPath\" ] && [ -f \"$path\" ] && [ -r \"$path\" ] && [ -w \"$path\" ] && echo \"$path\"; done | sort")
set AppleScript's text item delimiters to savedDelimiters
try
set AppleScript's text item delimiters to ASCII character 10 -- 10 was LF
set quotedDestinationPaths to quoted form of (destinationPaths as text)
set AppleScript's text item delimiters to savedDelimiters
do shell script "echo " & quotedDestinationPaths & "| while read path; do cp " & quoted form of objPOSpath & " \"$path\"; done"
on error
return
end try
end tell
end repeat
end open
648名称未設定
2021/08/14(土) 03:52:52.80ID:01kOnNAX0 mdfindの結果のチェックをろくにしてない
そらボリューム直下にコピーしちゃうこともありそうだ
...と思ったらこれまで↓削っちゃってるじゃん
if (count of destinationPaths) is 0 then return
そらボリューム直下にコピーしちゃうこともありそうだ
...と思ったらこれまで↓削っちゃってるじゃん
if (count of destinationPaths) is 0 then return
649名称未設定
2021/08/14(土) 04:13:01.07ID:VhyPpbNU0 >>644
> -onlyin ~/desktop
~/Desktopでは?
>if (count of destinationPaths) is 0 then return
ヒットしない場合、処理終了になっている
> -onlyin ~/desktop
~/Desktopでは?
>if (count of destinationPaths) is 0 then return
ヒットしない場合、処理終了になっている
650名称未設定
2021/08/14(土) 04:24:15.04ID:VhyPpbNU0 あら、ずれたレスだったわ。
repeatにcontinue的なものってないのね。
repeatにcontinue的なものってないのね。
651名称未設定
2021/08/14(土) 06:49:19.77ID:CwIWCTpN0 repeat中の本体を別ハンドラに切り出してpath一つずつ渡した方が良さそう
途中でreturnしても続くし
途中でreturnしても続くし
652名称未設定
2021/08/14(土) 12:39:17.92ID:ZYo9upXn0 >>648-650
~/Desktopに直しましたがやはり重複ファイルがない場合は、ボリューム直下にファイルがこぴーされます。それでも定期的に覗いて削除すればいいと思ってますが、やはり二度放り投げないと一度目は処理が取ってしまいます。。
また、
if (count of destinationPaths) is 0 then return
をいれると重複ファイルないものと放り込むと全て処理が止まってしまうので削除したところでした。
単純に、、
「複数ファイルをD&D、同名ファイルがデスクトップ下フォルダ内にあった場合はそれら全てをD&Dしたファイルで上書きする、同名ファイルが他になかった場合は何もしない」をやりたいんですが難しいです。。
>>651
ありがとうございます、調べてトライしてみます。
~/Desktopに直しましたがやはり重複ファイルがない場合は、ボリューム直下にファイルがこぴーされます。それでも定期的に覗いて削除すればいいと思ってますが、やはり二度放り投げないと一度目は処理が取ってしまいます。。
また、
if (count of destinationPaths) is 0 then return
をいれると重複ファイルないものと放り込むと全て処理が止まってしまうので削除したところでした。
単純に、、
「複数ファイルをD&D、同名ファイルがデスクトップ下フォルダ内にあった場合はそれら全てをD&Dしたファイルで上書きする、同名ファイルが他になかった場合は何もしない」をやりたいんですが難しいです。。
>>651
ありがとうございます、調べてトライしてみます。
654名称未設定
2021/08/17(火) 09:14:04.61ID:G0o1vKx30655名称未設定
2021/08/31(火) 10:45:13.09ID:RqcjmDf10 どなたか教えてください。
複数のキーをAppleScriptで押したいのですが、
tell application "System Events"
key code {63, 111}
end tell
などとやっても反応がありません。
fn+F~を同時に押したい場合はどうかけばいいのでしょうか?
複数のキーをAppleScriptで押したいのですが、
tell application "System Events"
key code {63, 111}
end tell
などとやっても反応がありません。
fn+F~を同時に押したい場合はどうかけばいいのでしょうか?
656名称未設定
2021/08/31(火) 11:36:51.60ID:3UX7FjsM0 そのキーコンビネーションを処理するアプリプロセスを前面にしてtellしないとダメなんじゃないの
658名称未設定
2021/08/31(火) 11:51:13.79ID:zSiLgsnc0 >key code {63, 111}
は、同時押しではなく、連続打鍵
同時押し可能な modifier key は using {command down, shift down} のようにその後ろに付け加えて書く
fn キーはサポートしてない(アプリもほとんどサポートしてない)ので、やるなら Cocoa API使ってかな
は、同時押しではなく、連続打鍵
同時押し可能な modifier key は using {command down, shift down} のようにその後ろに付け加えて書く
fn キーはサポートしてない(アプリもほとんどサポートしてない)ので、やるなら Cocoa API使ってかな
659名称未設定
2021/08/31(火) 12:05:51.95ID:RqcjmDf10 >>658
fnキーはサポートされてないんですね。
FN+F12などでボリューム調整したい(調整時にスピーカーマーク?も出るようにしたかった)とおもったんですがAppleScriptでは不可能ですね。
お二方レスをいただいてありがとうございました。
fnキーはサポートされてないんですね。
FN+F12などでボリューム調整したい(調整時にスピーカーマーク?も出るようにしたかった)とおもったんですがAppleScriptでは不可能ですね。
お二方レスをいただいてありがとうございました。
660名称未設定
2021/08/31(火) 12:28:56.04ID:zSiLgsnc0 https://eastmanreference.com/complete-list-of-applescript-key-codes
F keys and some of the function keys
fn + Fn はキーコードが変わる。他の modifier key と違って、fn + Fn は元の Fnキー とは別物のキーとなる(仮想キーのような)かな
ボリュームアップキー、ボリュームダウンキー(そういえば元々はそれ専用キーだったな)などのキーコードが分かれば、key code そのキーコード値 だけでよさげかな
だが、上記のとこではわかんないらしい(ので、すでにやってるだろうスピーカーマーク出ない方法でだな)。どこかにあるかもね
F keys and some of the function keys
fn + Fn はキーコードが変わる。他の modifier key と違って、fn + Fn は元の Fnキー とは別物のキーとなる(仮想キーのような)かな
ボリュームアップキー、ボリュームダウンキー(そういえば元々はそれ専用キーだったな)などのキーコードが分かれば、key code そのキーコード値 だけでよさげかな
だが、上記のとこではわかんないらしい(ので、すでにやってるだろうスピーカーマーク出ない方法でだな)。どこかにあるかもね
661名称未設定
2021/08/31(火) 13:02:37.38ID:RqcjmDf10 なぜそんな事をしたいのか?っていうと
CatalinaくらいまではMagic KeyboardのF7~F9キーはiTunesの専用キーみたいな感じだったけど、
いつのまにかミュージックアプリだけを起動してる場合はF7~F9はミュージックアプリに割り当てられてるけど、
Safari等でyoutube等を見てる場合にF7~F9を押すとミュージックアプリではなくyoutubeの再生が止まったり進んだりしてしまう仕様にかわってしまいましたよね。
それが自分的には非常に使いにくいのでファンクションキーを標準のキーとして使う設定にしてその上でF1~F12に個別に割り当てようと思った次第です。
すでにF7~F9はミュージックアプリの専用キーとしてAppleScriptを使って完了しているのですが、ボリュームを操作してもスピーカーアイコンが出る状態で音量変更ができず悩んでいます。
Karabiner-Elementsを使う手を最近考えていますが、先にAppleScriptの方法をやりはじめたのでまずこちらを完了させたいなと思っていました。
CatalinaくらいまではMagic KeyboardのF7~F9キーはiTunesの専用キーみたいな感じだったけど、
いつのまにかミュージックアプリだけを起動してる場合はF7~F9はミュージックアプリに割り当てられてるけど、
Safari等でyoutube等を見てる場合にF7~F9を押すとミュージックアプリではなくyoutubeの再生が止まったり進んだりしてしまう仕様にかわってしまいましたよね。
それが自分的には非常に使いにくいのでファンクションキーを標準のキーとして使う設定にしてその上でF1~F12に個別に割り当てようと思った次第です。
すでにF7~F9はミュージックアプリの専用キーとしてAppleScriptを使って完了しているのですが、ボリュームを操作してもスピーカーアイコンが出る状態で音量変更ができず悩んでいます。
Karabiner-Elementsを使う手を最近考えていますが、先にAppleScriptの方法をやりはじめたのでまずこちらを完了させたいなと思っていました。
662名称未設定
2021/08/31(火) 13:36:55.88ID:po2HlJ8P0 いま軽く調べたら140番台に輝度調整はあったからたぶんどっかにあるだろね
663名称未設定
2021/08/31(火) 13:55:24.49ID:TgAkPRdG0 >>661
自分の場合はファンクションキーはメディアキーのまま使って、
F8 に tell application "music" to playpause って割り当ててる
普通に F8 を押すと通常動作(メディアキーとして再生停止)、
fn + F8 でミュージック.app 決め打ちの再生停止、みたいな感じ
F8 へのスクリプト割り当ては BTT つこてます
その他のスクリプトはこんなん
tell application "music" to previous track
tell application "Music" to set mute to not mute
tell application "Music" to set sound volume to sound volume - 10
直接の回答じゃなくてごめんね
自分の場合はファンクションキーはメディアキーのまま使って、
F8 に tell application "music" to playpause って割り当ててる
普通に F8 を押すと通常動作(メディアキーとして再生停止)、
fn + F8 でミュージック.app 決め打ちの再生停止、みたいな感じ
F8 へのスクリプト割り当ては BTT つこてます
その他のスクリプトはこんなん
tell application "music" to previous track
tell application "Music" to set mute to not mute
tell application "Music" to set sound volume to sound volume - 10
直接の回答じゃなくてごめんね
664名称未設定
2021/08/31(火) 14:50:31.10ID:RqcjmDf10 >>663
レスありがとう。
再生停止は私も
tell application "Music"
playpause
end tell
のよう何を使ってるのですが、標準のファンクションキーとして使うをオフオンどちらにしてもミュージックアプリが反応せずyoutubeなどがSafariなどで開いているとそちらが反応してしまいます。
ちなみに私が使ってるのはストアーにあったHotKeyってアプリでAppleScriptをAutomatorのアプリとして登録しています。
BTTならうまくいくんですね。
レスありがとう。
再生停止は私も
tell application "Music"
playpause
end tell
のよう何を使ってるのですが、標準のファンクションキーとして使うをオフオンどちらにしてもミュージックアプリが反応せずyoutubeなどがSafariなどで開いているとそちらが反応してしまいます。
ちなみに私が使ってるのはストアーにあったHotKeyってアプリでAppleScriptをAutomatorのアプリとして登録しています。
BTTならうまくいくんですね。
665名称未設定
2021/08/31(火) 18:00:47.59ID:REaznu+W0 >>661
>Catalinaくらいまでは
って書いてるけど、
https://9to5mac.com/2017/11/15/how-to-fix-media-controls-high-sierra/
このことじゃないのかなあ。それっぽいけど
https://github.com/milgra/macmediakeyforwarder
からの
http://beardedspice.github.io/
でどうなんだろ(設定(設定で Media Controllers: を iTunes だけチェックする)
>Catalinaくらいまでは
って書いてるけど、
https://9to5mac.com/2017/11/15/how-to-fix-media-controls-high-sierra/
このことじゃないのかなあ。それっぽいけど
https://github.com/milgra/macmediakeyforwarder
からの
http://beardedspice.github.io/
でどうなんだろ(設定(設定で Media Controllers: を iTunes だけチェックする)
666名称未設定
2021/08/31(火) 18:50:31.39ID:RqcjmDf10 >>665
High Sierraからだったんですね。
不便になってからまだ2年程度かと思ってました。
元記事のアプリはサイトごと無くなってますね。
最後に貼っていただいたBeardedSpiceのアプリは残念ながらインテル版なようですね。
こう言う機能って純正でつけて欲しい。
リンクを探してきてくれて大変感謝します。
High Sierraからだったんですね。
不便になってからまだ2年程度かと思ってました。
元記事のアプリはサイトごと無くなってますね。
最後に貼っていただいたBeardedSpiceのアプリは残念ながらインテル版なようですね。
こう言う機能って純正でつけて欲しい。
リンクを探してきてくれて大変感謝します。
667名称未設定
2021/08/31(火) 20:10:43.07ID:RqcjmDf10 やりたいことができたようなので一応報告を。
Karabiner ElementsでMedia key only control iTunesってのを頂いて中身をiTunes -> Musicにして読み込んだら問題は解決したようです。
最新のVLCで動画やSafariでyoutubeを見ていてF8を押したらミュージックアプリで反応しました。
またボリュームもちゃんとスピーカーの表示も出るようになりました。
みなさんにレスいただいて大変たすかりました。
ありがとうございました。
Karabiner ElementsでMedia key only control iTunesってのを頂いて中身をiTunes -> Musicにして読み込んだら問題は解決したようです。
最新のVLCで動画やSafariでyoutubeを見ていてF8を押したらミュージックアプリで反応しました。
またボリュームもちゃんとスピーカーの表示も出るようになりました。
みなさんにレスいただいて大変たすかりました。
ありがとうございました。
668名称未設定
2021/09/01(水) 02:48:12.55ID:wJBbbz7D0 >>666
>>667で解決、Karabiner Elements使えるなら/使ってるならそちらで解決した方がいいけど、
>元記事のアプリはサイトごと無くなってますね
サイトはなんか無くなってるけど、GitHubにある(名前を変えて)のが、
https://github.com/milgra/macmediakeyforwarder
書かれてる通りディスコンで、オススメされてるのがってとこ。IntelバイナリでもM1ではどっちも動くだろうが、M1バイナリでなきゃってのならフォークしてM1バイナリをもビルドしてくれてる(ビルドしただけらしいけど)、
https://github.com/kalafalas/macmediakeyforwarder
なんてのもある
まあ、スレチでもあるけど、いちおう
>>667で解決、Karabiner Elements使えるなら/使ってるならそちらで解決した方がいいけど、
>元記事のアプリはサイトごと無くなってますね
サイトはなんか無くなってるけど、GitHubにある(名前を変えて)のが、
https://github.com/milgra/macmediakeyforwarder
書かれてる通りディスコンで、オススメされてるのがってとこ。IntelバイナリでもM1ではどっちも動くだろうが、M1バイナリでなきゃってのならフォークしてM1バイナリをもビルドしてくれてる(ビルドしただけらしいけど)、
https://github.com/kalafalas/macmediakeyforwarder
なんてのもある
まあ、スレチでもあるけど、いちおう
669名称未設定
2021/09/02(木) 08:53:41.57ID:45YTd02f0 ファンクションキー押下のスクリプトが一応できた
ref. https://stackoverflow.com/questions/10459085/cocoa-simulate-macbook-upper-keys-multimedia-keys
set fkeys to {NX_KEYTYPE_SOUND_UP:0, NX_KEYTYPE_SOUND_DOWN:1, NX_KEYTYPE_BRIGHTNESS_UP:2, NX_KEYTYPE_BRIGHTNESS_DOWN:3, NX_KEYTYPE_MUTE:7, NX_KEYTYPE_PLAY:16, NX_KEYTYPE_NEXT:17, NX_KEYTYPE_PREVIOUS:18, NX_KEYTYPE_ILLUMINATION_UP:21, NX_KEYTYPE_ILLUMINATION_DOWN:22}
set swiftscript to "
let fkey: Int32 = " & NX_KEYTYPE_SOUND_UP of fkeys & "
import AppKit
func fkeydown(_ fkey: Int32, _ down: Bool = true) {
let flags: UInt = down ? 0xa00 : 0xb00
let event = NSEvent.otherEvent(with: .systemDefined, location: NSPoint.zero, modifierFlags: NSEvent.ModifierFlags(rawValue: flags), timestamp: 0, windowNumber: 0, context: nil, subtype: 8, data1: Int((UInt(fkey) << 16) | flags), data2: -1)
event?.cgEvent?.post(tap: .cghidEventTap)
}
fkeydown(fkey)
fkeydown(fkey, false) // fkeyup
"
do shell script "echo " & quoted form of swiftscript & " | swift -"
ref. https://stackoverflow.com/questions/10459085/cocoa-simulate-macbook-upper-keys-multimedia-keys
set fkeys to {NX_KEYTYPE_SOUND_UP:0, NX_KEYTYPE_SOUND_DOWN:1, NX_KEYTYPE_BRIGHTNESS_UP:2, NX_KEYTYPE_BRIGHTNESS_DOWN:3, NX_KEYTYPE_MUTE:7, NX_KEYTYPE_PLAY:16, NX_KEYTYPE_NEXT:17, NX_KEYTYPE_PREVIOUS:18, NX_KEYTYPE_ILLUMINATION_UP:21, NX_KEYTYPE_ILLUMINATION_DOWN:22}
set swiftscript to "
let fkey: Int32 = " & NX_KEYTYPE_SOUND_UP of fkeys & "
import AppKit
func fkeydown(_ fkey: Int32, _ down: Bool = true) {
let flags: UInt = down ? 0xa00 : 0xb00
let event = NSEvent.otherEvent(with: .systemDefined, location: NSPoint.zero, modifierFlags: NSEvent.ModifierFlags(rawValue: flags), timestamp: 0, windowNumber: 0, context: nil, subtype: 8, data1: Int((UInt(fkey) << 16) | flags), data2: -1)
event?.cgEvent?.post(tap: .cghidEventTap)
}
fkeydown(fkey)
fkeydown(fkey, false) // fkeyup
"
do shell script "echo " & quoted form of swiftscript & " | swift -"
670名称未設定
2021/09/02(木) 11:13:47.97ID:5WrXhp0J0671名称未設定
2021/09/02(木) 12:04:08.20ID:45YTd02f0 形は一応AppleScriptだからスクリプトエディタにコピペで動くよ(10.15と10.12で試した)
ただ、実質swiftだからXcodeのコマンドラインツール入れてないなら試さない方がいいと思うよ
ただ、実質swiftだからXcodeのコマンドラインツール入れてないなら試さない方がいいと思うよ
672名称未設定
2021/09/02(木) 12:22:32.67ID:5WrXhp0J0 >>671
教えていだだいてありがとう。
Xcodeはインストールしてないので試さないほうがいいですね。
先日Karabiner Elementsで問題は解決したと上でかいたけど、
スリープが出来ない大問題が発覚してやはりAppleScriptに頼っていますので
音量調整で画面にスピーカーマークが出るようにできないかと情報を集めているので
上のスクリプトは藁をも掴む思いでした。
教えていだだいてありがとう。
Xcodeはインストールしてないので試さないほうがいいですね。
先日Karabiner Elementsで問題は解決したと上でかいたけど、
スリープが出来ない大問題が発覚してやはりAppleScriptに頼っていますので
音量調整で画面にスピーカーマークが出るようにできないかと情報を集めているので
上のスクリプトは藁をも掴む思いでした。
673名称未設定
2021/09/02(木) 19:43:23.37ID:1P/TjKHA0 これはもうアップルスクリプトではないな。
674名称未設定
2021/09/03(金) 06:56:32.62ID:OD40yGhj0 書き直してくれてもいいのよ
675名称未設定
2021/09/03(金) 12:34:41.20ID:8bw/FRcK0 まあ普通に AppleScriptObjC や JXA で書き直せるわな
元はどうもPythonのをみたいだが、何でSwiftでなんだかというのはある
単なる趣味だろうけど
元はどうもPythonのをみたいだが、何でSwiftでなんだかというのはある
単なる趣味だろうけど
676名称未設定
2021/09/03(金) 13:31:25.54ID:OD40yGhj0 どこまでできるか試したかったってとこは趣味だが、JXAに書き直しても動かなかったからswiftのままなのはしぶしぶだ
10.15だとスクリプトエディタがクラッシュしちゃうんだもん
普通のキーボードイベントで試すと10.12では動くのに、やっぱ10.15だとクラッシュするし
10.15だとスクリプトエディタがクラッシュしちゃうんだもん
普通のキーボードイベントで試すと10.12では動くのに、やっぱ10.15だとクラッシュするし
677名称未設定
2021/09/08(水) 21:19:29.79ID:0ZE4zIoy0 AppleScriptで、システム環境設定のモニターのカラープロファイルを任意のものに変更ってできないのでしょうか?
出来るなら教えていただけませんか。
出来るなら教えていただけませんか。
678名称未設定
2021/09/09(木) 05:32:17.25ID:noRCRlD+0 「変更」はAppleScriptではモロにはサポートしてないよう
GUI Scripting か Cocoa API 使ってで可能だろう
Cocoa API を使ってのは Python で書いてるのがあるからそれを使えば
customdisplayprofiles set /path/to/profile.icc
customdisplayprofiles set --display 2 /path/to/profile.icc
と簡単にできそう
GUI Scripting か Cocoa API 使ってで可能だろう
Cocoa API を使ってのは Python で書いてるのがあるからそれを使えば
customdisplayprofiles set /path/to/profile.icc
customdisplayprofiles set --display 2 /path/to/profile.icc
と簡単にできそう
679名称未設定
2021/09/22(水) 10:32:20.04ID:bXvdFaiS0 誰か教えていただけませんか。
tell application "Firefox"
activate
tell front window
set bounds to {200, 200, 1000, 1000}
end tell
end tell
これでアプリが起動してウインドウが開いてくれますが、
すでにアプリが起動している場合新規ウインドウを作ってくれません。
その場合DockのFirefoxのアイコンをクリックするとその時にやっと新規ウインドウをつくってくれます。
そうではなく、アプリの起動終了時に関係なく新規ウインドウを作ってくれるようにはできないでしょうか。
tell application "Firefox"
activate
tell front window
set bounds to {200, 200, 1000, 1000}
end tell
end tell
これでアプリが起動してウインドウが開いてくれますが、
すでにアプリが起動している場合新規ウインドウを作ってくれません。
その場合DockのFirefoxのアイコンをクリックするとその時にやっと新規ウインドウをつくってくれます。
そうではなく、アプリの起動終了時に関係なく新規ウインドウを作ってくれるようにはできないでしょうか。
680名称未設定
2021/09/22(水) 12:34:56.31ID:9YqPqwoA0 アプリただ起動時Dockからアクティベートされた時に新規なのは、
AppleScript関係ない、普通のアプリケーションの挙動
AppleScriptでそうでなくならそう書くそう書けばいいだけ
AppleScript関係ない、普通のアプリケーションの挙動
AppleScriptでそうでなくならそう書くそう書けばいいだけ
681名称未設定
2021/09/22(水) 12:58:22.37ID:z6jJoYx20 新規Windowを開く命令を書かないと。
その前に、Windowが開かれているかどうかの確認もしてね。
その前に、Windowが開かれているかどうかの確認もしてね。
682名称未設定
2021/09/22(水) 13:01:02.07ID:Me0Ba5ZC0 楽でいろんな味だしね
683名称未設定
2021/09/22(水) 13:03:01.41ID:2B3UISa90 >>679
Dockクリック相当の切り替え命令がないんだよね(俺が知らないだけかもしれんが)
とりあえずこんなんが手軽かな
do shell script "open -a Firefox"
tell application "Firefox"
tell front window
set bounds to {200, 200, 1000, 1000}
end tell
end tell
Dockクリック相当の切り替え命令がないんだよね(俺が知らないだけかもしれんが)
とりあえずこんなんが手軽かな
do shell script "open -a Firefox"
tell application "Firefox"
tell front window
set bounds to {200, 200, 1000, 1000}
end tell
end tell
684名称未設定
2021/09/22(水) 13:11:45.76ID:bXvdFaiS0 なかなか難しいですね。
また勉強してきます。
また勉強してきます。
685名称未設定
2021/09/22(水) 13:14:01.36ID:bXvdFaiS0686名称未設定
2021/09/22(水) 13:17:18.56ID:OLyohgyT0 if (count of document) is 0 then make new document 的な話じゃなくて?
687名称未設定
2021/09/22(水) 13:26:23.10ID:9YqPqwoA0 >>683
Dockが賢いことして、クリックした時に(アプリケーションをアクティブにするとか関係なく)対象のアプリケーションでドキュメントウィンドウが無いなら New Document AppleEvent を対象アプリケーションに送ってるという例外/Dockというアプリの挙動
アプリケーション起動時に何も無い(プリントもドキュメントを開くも)場合は、New Document AppleEvent を送るというのはOSの仕様
アプリケーション(アクティベート)スイッチでNew Documentを送るというのはOSの仕様にはない
>>679のそのままなら
set needsMakeNewDocument to application id "org.mozilla.firefox" is running
tell application "Firefox"
activate
if needsMakeNewDocument then
tell application "System Events" to keystroke "n" using command down
end if
...
end tell
な感じかなあ。本当は make new document を使いとこだが、document オブジェクトは作れるが、それをどうこう(Windowに結びつける)とかできないのねFireFoxは。ユーザ操作をシミュレート的なのはブツが作られるのに遅延があるから待つかちゃんとチェックが必要になる
open とか アプリケーション実行ファイル直接叩いた方が簡単とかあるよねえ
Dockが賢いことして、クリックした時に(アプリケーションをアクティブにするとか関係なく)対象のアプリケーションでドキュメントウィンドウが無いなら New Document AppleEvent を対象アプリケーションに送ってるという例外/Dockというアプリの挙動
アプリケーション起動時に何も無い(プリントもドキュメントを開くも)場合は、New Document AppleEvent を送るというのはOSの仕様
アプリケーション(アクティベート)スイッチでNew Documentを送るというのはOSの仕様にはない
>>679のそのままなら
set needsMakeNewDocument to application id "org.mozilla.firefox" is running
tell application "Firefox"
activate
if needsMakeNewDocument then
tell application "System Events" to keystroke "n" using command down
end if
...
end tell
な感じかなあ。本当は make new document を使いとこだが、document オブジェクトは作れるが、それをどうこう(Windowに結びつける)とかできないのねFireFoxは。ユーザ操作をシミュレート的なのはブツが作られるのに遅延があるから待つかちゃんとチェックが必要になる
open とか アプリケーション実行ファイル直接叩いた方が簡単とかあるよねえ
688名称未設定
2021/09/22(水) 13:52:22.13ID:bXvdFaiS0 追加でレスをいただきまして感謝します。
こちらもメモをさせていただき参考にさせていただきます。
ありがとうございます。
こちらもメモをさせていただき参考にさせていただきます。
ありがとうございます。
689名称未設定
2021/09/22(水) 14:01:18.41ID:5GrL4Kzg0690名称未設定
2021/09/22(水) 16:04:24.53ID:ExR8C57B0 Dockが送っているのはreopen命令じゃないのかな。
つまり、
tell app “Firefox” to reopen
で、ウインドウがない場合は新規に開くのでは?
つまり、
tell app “Firefox” to reopen
で、ウインドウがない場合は新規に開くのでは?
691名称未設定
2021/09/23(木) 00:31:56.98ID:OyEm922H0 reopen知らんかったわ
まさにこれだしハンドラも書けんのね
まさにこれだしハンドラも書けんのね
692名称未設定
2021/10/03(日) 20:11:30.52ID:DZtAs1Hd0 選択したテキストをスティッキーズに貼り付けてフロートってのをやりたくてAutomatorで作ったんだけど、たまにエラーが出る
delay入れた方がいいのかな
ていうかスティッキーズってスクリプタブルじゃないのね…
on run {input, parameters}
set the clipboard to (input as string)
tell application "Stickies" to activate
tell application "System Events"
tell process "Stickies"
tell window 1
keystroke "n" using command down
keystroke "v" using command down
key down {command, option}
keystroke "f"
key up {command, option}
end tell
end tell
end tell
end run
delay入れた方がいいのかな
ていうかスティッキーズってスクリプタブルじゃないのね…
on run {input, parameters}
set the clipboard to (input as string)
tell application "Stickies" to activate
tell application "System Events"
tell process "Stickies"
tell window 1
keystroke "n" using command down
keystroke "v" using command down
key down {command, option}
keystroke "f"
key up {command, option}
end tell
end tell
end tell
end run
693名称未設定
2021/10/04(月) 08:06:10.72ID:Jlrrqw800 入れた方がいいんじゃない
それと tell window 1 ているの?
それと tell window 1 ているの?
694名称未設定
2021/10/04(月) 12:07:38.35ID:pw/ISOAt0 キーストロークは安定しないからな…delay入れないとまず失敗する
695名称未設定
2021/10/04(月) 14:04:01.00ID:Y8a8msMW0696名称未設定
2021/10/04(月) 17:07:00.30ID:rJKgAjG90 delay気持ち悪いのわかるわー
昔の遅いマシンだと全く問題なかったやつが、早いマシンに買い換えたらイラレのドキュメント開く→保存して閉じるに間に合わなくて、スクリプトの書類に対してショートカットキー連発しちゃったりしたからkeystroke ひとつひとつにdelay かける羽目になったことある
昔の遅いマシンだと全く問題なかったやつが、早いマシンに買い換えたらイラレのドキュメント開く→保存して閉じるに間に合わなくて、スクリプトの書類に対してショートカットキー連発しちゃったりしたからkeystroke ひとつひとつにdelay かける羽目になったことある
697名称未設定
2021/10/04(月) 17:45:59.00ID:JAjLo/A+0 サービスに「スティッキーメモを作成」ってのがあるけど
698名称未設定
2021/10/04(月) 17:51:21.98ID:ZbffXIob0 >>696
keystrokeとか同期しない、アプリ側での実行の遅延が発生するのはしょうがないな
ちゃんと対象が準備できてるかチェックする待つのがより正しいんだけどな
だけど、最低でも三行かかるし、delayはお手軽にとりあえずいいやなら十分有用
確実性(無駄な待ちを排除するのを含めて)を求めるから、ちゃんとチェックするけど
keystrokeとか同期しない、アプリ側での実行の遅延が発生するのはしょうがないな
ちゃんと対象が準備できてるかチェックする待つのがより正しいんだけどな
だけど、最低でも三行かかるし、delayはお手軽にとりあえずいいやなら十分有用
確実性(無駄な待ちを排除するのを含めて)を求めるから、ちゃんとチェックするけど
699名称未設定
2021/10/04(月) 17:52:43.68ID:JAjLo/A+0 delayはもう諦めちゃってるわ
自分の環境で動けばいいやと
あとは、メニューバーを直接操作するとdelay不要な場合もある
tell first menu bar's menu bar item "編集"'s menu "編集"'s menu item "ペースト" to click
自分の環境で動けばいいやと
あとは、メニューバーを直接操作するとdelay不要な場合もある
tell first menu bar's menu bar item "編集"'s menu "編集"'s menu item "ペースト" to click
700名称未設定
2021/10/04(月) 22:33:34.45ID:ZbffXIob0 >>692 でなら、どこでエラってるのかはわからんけど、
1) Stickies が(メニューショートカット)キーを受け入れる状態になってない=frontmostにまだなってない
2) 新しいノートウィンドウがまだできてない
の2つかな、ありそうなのは
keystrokeは単に(システム)イベントキューに突っ込むだけ、その後はシステムがfrontmostアプリにイベント振り分けるから基本的に取りこぼしはない
アリそうなのはアプリの準備(ウィンドウの作成とか)がまだとかだが、Command+Nからウィンドウ作ってそのウィンドウの準備が終わるまでが一連の続き仕事にするのは基本的なアプリの形態だから、次のCommand+V(およびCommand+Option+F)は当然その新しいウィンドウに対してのになるはずだと思うけど、Stickiesのような基本的なアプリ形態だろなアプリは
とりあえず、
tell application "Stickies" to activate
tell application "System Events" to tell process "Stickies"
repeat while not frontmost
delay 0.1
end repeat
keystroke "nv" using command down
keystroke "f" using {command down, option down}
end tell
でいいんじゃないのかなあ(うちではfrontmostがfalseにもならないのでどうかだが)
1) Stickies が(メニューショートカット)キーを受け入れる状態になってない=frontmostにまだなってない
2) 新しいノートウィンドウがまだできてない
の2つかな、ありそうなのは
keystrokeは単に(システム)イベントキューに突っ込むだけ、その後はシステムがfrontmostアプリにイベント振り分けるから基本的に取りこぼしはない
アリそうなのはアプリの準備(ウィンドウの作成とか)がまだとかだが、Command+Nからウィンドウ作ってそのウィンドウの準備が終わるまでが一連の続き仕事にするのは基本的なアプリの形態だから、次のCommand+V(およびCommand+Option+F)は当然その新しいウィンドウに対してのになるはずだと思うけど、Stickiesのような基本的なアプリ形態だろなアプリは
とりあえず、
tell application "Stickies" to activate
tell application "System Events" to tell process "Stickies"
repeat while not frontmost
delay 0.1
end repeat
keystroke "nv" using command down
keystroke "f" using {command down, option down}
end tell
でいいんじゃないのかなあ(うちではfrontmostがfalseにもならないのでどうかだが)
701名称未設定
2021/10/14(木) 00:36:21.89ID:qETglRD80 スレチだとは思いつつも書き込みます
DragThingって神ランチャーでしたね
ささっとスクリプト書いて、パッと走らせる、案件ごとにドックを切り替えて上から順番に立ち上げる…
アプリケーションに保存してDOCKから走らせたりしてるんですが、なんかのタイミングで突然「許可されていません」とかごちゃごちゃ言い始めたりしてスクリプト走らせたまま離席して時間無駄にした事がたまーに起こる
スクリプトメニューに登録して解決!だったんだけど、スクリプト使うたび画面右上までカーソール持ってくのが遠い…
案件で分けたら一体どれだけの数のスクリプトがあるのやらって感じでメニューが膨大な量になる
これもう自分好みのランチャー作るためにプログラミング勉強するしかないのか🤪
高卒ジジイには今から勉強するのしんどいよ
DragThingって神ランチャーでしたね
ささっとスクリプト書いて、パッと走らせる、案件ごとにドックを切り替えて上から順番に立ち上げる…
アプリケーションに保存してDOCKから走らせたりしてるんですが、なんかのタイミングで突然「許可されていません」とかごちゃごちゃ言い始めたりしてスクリプト走らせたまま離席して時間無駄にした事がたまーに起こる
スクリプトメニューに登録して解決!だったんだけど、スクリプト使うたび画面右上までカーソール持ってくのが遠い…
案件で分けたら一体どれだけの数のスクリプトがあるのやらって感じでメニューが膨大な量になる
これもう自分好みのランチャー作るためにプログラミング勉強するしかないのか🤪
高卒ジジイには今から勉強するのしんどいよ
702名称未設定
2021/10/14(木) 00:42:19.77ID:KQ4g/0uG0 なんか書いて欲しいならそう言っちゃったほうがいいような
703名称未設定
2021/10/14(木) 00:43:24.35ID:qETglRD80 ごめん、愚痴です
ついでに聞くならスクリプト大量に回してる人はどんな風に管理してらっしゃるのでしょう
ついでに聞くならスクリプト大量に回してる人はどんな風に管理してらっしゃるのでしょう
704名称未設定
2021/10/14(木) 01:02:31.03ID:KQ4g/0uG0 いやいや、謝るようはことは何もなく…
スクリプトたくさんある人はターミナル使ってると思うので
パスが通ったとこに置いてるだけとか、そんなんじゃないかなって
GUIから起動したいときは、自分ならドックに登録しちゃうかな
スクリプトたくさんある人はターミナル使ってると思うので
パスが通ったとこに置いてるだけとか、そんなんじゃないかなって
GUIから起動したいときは、自分ならドックに登録しちゃうかな
705名称未設定
2021/10/14(木) 07:15:00.32ID:kChIEEWW0 DragThingの勝手はわからないけど、他の試せばいいじゃん
Keyboard MaestroとかAlfredとかHotKeyとか
HotKeyは無料、App Storeにある
Keyboard MaestroとかAlfredとかHotKeyとか
HotKeyは無料、App Storeにある
706名称未設定
2021/10/14(木) 08:50:21.29ID:UlOIqcaX0 Dragthingは直感的でほんと使いやすかったから仕方ない
キーボードに手を伸ばさずマウスポチだけで済むワークフロー組めたし
キーボードに手を伸ばさずマウスポチだけで済むワークフロー組めたし
707名称未設定
2021/10/14(木) 08:59:30.62ID:e1LncIPT0 Dragthing懐かしい
旧MacOSでなんちゃってdockとかやってたなー
旧MacOSでなんちゃってdockとかやってたなー
708名称未設定
2021/10/14(木) 15:18:51.05ID:UNO1aWZb0 >>701
>なんかのタイミングで突然「許可されていません」とか
何かのタイミング は スクリプトに手を加えて保存し最初の起動
許可されていません は アクセス許可を求められる
では?
on run
-- hello
tell application "Finder" to selection
end run
コメントの部分を変えて保存するだけでも直後の最初の起動でFinderへのアクセスの許可を求められる
だったら、バンドル内容を表示 でにある 識別子 をちゃんと設定したら解決する
hogehoge.com とかドメイン持ってるなら com.hogehoge.アプリ名 (アプリ名でなくてもいいけど、そのアプリと識別できるユニークであれば)
ドメイン持ってないなら、local.アプリ名 とか com.example.アプリ名 とかでも問題はまあ無いだろう。バンドル識別子 として そんなの勝手に使う(定義する)のはそのMacを使ってる本人ぐらいだろから
別の要因や許可されていませんという拒否でも効きそうかな
>なんかのタイミングで突然「許可されていません」とか
何かのタイミング は スクリプトに手を加えて保存し最初の起動
許可されていません は アクセス許可を求められる
では?
on run
-- hello
tell application "Finder" to selection
end run
コメントの部分を変えて保存するだけでも直後の最初の起動でFinderへのアクセスの許可を求められる
だったら、バンドル内容を表示 でにある 識別子 をちゃんと設定したら解決する
hogehoge.com とかドメイン持ってるなら com.hogehoge.アプリ名 (アプリ名でなくてもいいけど、そのアプリと識別できるユニークであれば)
ドメイン持ってないなら、local.アプリ名 とか com.example.アプリ名 とかでも問題はまあ無いだろう。バンドル識別子 として そんなの勝手に使う(定義する)のはそのMacを使ってる本人ぐらいだろから
別の要因や許可されていませんという拒否でも効きそうかな
709名称未設定
2021/10/14(木) 15:27:04.35ID:UNO1aWZb0710名称未設定
2021/10/24(日) 14:18:55.88ID:L76Lx3uP0 メールのルールで、受信したメール本文をcsvに書き出す処理を行いたいのですが、
同じタイミングで複数のメールを受信した時に、処理が1つのメールに対してしか
行われません(A、B、Cのメールを同時に受信した場合、Cに3回処理が行われる)。
以下がソースですが、解決法はあるでしょうか?
using terms from application "Mail"
on perform mail action with messages messageItem for rule csvRule
tell application "Mail"
repeat with messageArr in messageItem
set contentStr to content of messageArr as string
set csvStr to do shell script "echo " & quoted form of contentStr & " perl -pe s/\\n/,/"
do shell script "echo " & quoted form of csvStr & " >> ~/csv.csv"
end repeat
end tell
end perform mail action with messages
end using terms from
同じタイミングで複数のメールを受信した時に、処理が1つのメールに対してしか
行われません(A、B、Cのメールを同時に受信した場合、Cに3回処理が行われる)。
以下がソースですが、解決法はあるでしょうか?
using terms from application "Mail"
on perform mail action with messages messageItem for rule csvRule
tell application "Mail"
repeat with messageArr in messageItem
set contentStr to content of messageArr as string
set csvStr to do shell script "echo " & quoted form of contentStr & " perl -pe s/\\n/,/"
do shell script "echo " & quoted form of csvStr & " >> ~/csv.csv"
end repeat
end tell
end perform mail action with messages
end using terms from
711名称未設定
2021/10/24(日) 20:42:08.98ID:9LGvKaBq0 IMAP?
POPはググったらあるようにすんなりまともに動くことは無さげ
スクリプトの起動が早すぎ=メールの準備(オブジェクト)が出来上がってない状態で入ってくる感じ
せいぜいトリガー程度で、特別なグループ(メールボックス)に移動させて少し間を置いた後でそのメールボックス内の全てを処理するように別建てかなあ
POPはググったらあるようにすんなりまともに動くことは無さげ
スクリプトの起動が早すぎ=メールの準備(オブジェクト)が出来上がってない状態で入ってくる感じ
せいぜいトリガー程度で、特別なグループ(メールボックス)に移動させて少し間を置いた後でそのメールボックス内の全てを処理するように別建てかなあ
712名称未設定
2021/10/24(日) 21:40:08.21ID:L76Lx3uP0 >>711
IMAPです。
助言していただいたことを参考に、処理済みのメールボックスを用意し、受信をトリガーとして
inboxのlast messageに対してcsv書き出しの処理を実行。その後、処理済みボックスへ移動、
というのをinboxが空になるまでrepeatすることで解決しました。
ありがとうございました。
IMAPです。
助言していただいたことを参考に、処理済みのメールボックスを用意し、受信をトリガーとして
inboxのlast messageに対してcsv書き出しの処理を実行。その後、処理済みボックスへ移動、
というのをinboxが空になるまでrepeatすることで解決しました。
ありがとうございました。
713名称未設定
2021/10/31(日) 05:41:01.18ID:txbTDThf0 Monterey で menubar item 中の window が取れなくなった
tell application "System Events"
tell application process "ControlCenter"
tell menu bar 1
tell menu bar item "Sound"
every UI element
end tell
end tell
end tell
end tell
としても、以前のように output のリストが出なくて {} になる
どう変わったかわかるひといる?
tell application "System Events"
tell application process "ControlCenter"
tell menu bar 1
tell menu bar item "Sound"
every UI element
end tell
end tell
end tell
end tell
としても、以前のように output のリストが出なくて {} になる
どう変わったかわかるひといる?
714名称未設定
2021/10/31(日) 07:11:36.11ID:3Qgxxls00 まだBigSurだけどwindowってクリックして表示させないと取れなくない?
あとwindowはmenu bar itemじゃなくてprocessが持ってるんじゃないの
tell application "System Events"
tell application process "ControlCenter"
tell menu bar 1's (first menu bar item that name is "サウンド") to click
tell window 1's group 1's scroll area 1's checkbox "外部ヘッドフォン" to click
end tell
end tell
あとwindowはmenu bar itemじゃなくてprocessが持ってるんじゃないの
tell application "System Events"
tell application process "ControlCenter"
tell menu bar 1's (first menu bar item that name is "サウンド") to click
tell window 1's group 1's scroll area 1's checkbox "外部ヘッドフォン" to click
end tell
end tell
715名称未設定
2021/10/31(日) 07:13:06.34ID:3Qgxxls00 3行目はこれで良かったか
tell menu bar 1's menu bar item "サウンド" to click
tell menu bar 1's menu bar item "サウンド" to click
716名称未設定
2021/10/31(日) 17:07:20.08ID:OQ5GUNEW0 >>714
ありがとう、そして雑な例ですまん
書いてくれたものとほぼ同じ
tell application "System Events"
tell application process "ControlCenter"
set btMenu to menu bar item "Sound" of menu bar 1
tell btMenu to click
set btCheckbox to checkbox 1 of scroll area 1 of group 1 of window "Control Center" whose title contains hogehoge
set btCheckboxValue to value of btCheckbox
tell btCheckbox to click
tell btMenu to click
end tell
end tell
ということが BigSur までできていたんだが、今はできなくなった、ということ。
ありがとう、そして雑な例ですまん
書いてくれたものとほぼ同じ
tell application "System Events"
tell application process "ControlCenter"
set btMenu to menu bar item "Sound" of menu bar 1
tell btMenu to click
set btCheckbox to checkbox 1 of scroll area 1 of group 1 of window "Control Center" whose title contains hogehoge
set btCheckboxValue to value of btCheckbox
tell btCheckbox to click
tell btMenu to click
end tell
end tell
ということが BigSur までできていたんだが、今はできなくなった、ということ。
717名称未設定
2021/10/31(日) 17:07:38.01ID:OQ5GUNEW0 >>714
ありがとう、そして雑な例ですまん
書いてくれたものとほぼ同じ
tell application "System Events"
tell application process "ControlCenter"
set btMenu to menu bar item "Sound" of menu bar 1
tell btMenu to click
set btCheckbox to checkbox 1 of scroll area 1 of group 1 of window "Control Center" whose title contains hogehoge
set btCheckboxValue to value of btCheckbox
tell btCheckbox to click
tell btMenu to click
end tell
end tell
ということが BigSur までできていたんだが、今はできなくなった、ということ。
ありがとう、そして雑な例ですまん
書いてくれたものとほぼ同じ
tell application "System Events"
tell application process "ControlCenter"
set btMenu to menu bar item "Sound" of menu bar 1
tell btMenu to click
set btCheckbox to checkbox 1 of scroll area 1 of group 1 of window "Control Center" whose title contains hogehoge
set btCheckboxValue to value of btCheckbox
tell btCheckbox to click
tell btMenu to click
end tell
end tell
ということが BigSur までできていたんだが、今はできなくなった、ということ。
718名称未設定
2021/10/31(日) 20:41:15.23ID:3Qgxxls00 スクリプトエディタで実行するとエラーメッセージでどこが取れてないか分かるんじゃない
OSバージョン変わるとUI elementの階層とかpropertyが変わってたりすることは良くある
OSバージョン変わるとUI elementの階層とかpropertyが変わってたりすることは良くある
719名称未設定
2021/11/02(火) 11:41:49.27ID:QRbS4Qqj0 ズバリ教えてほしいです。
流れはこんな感じ
VLCが起動していて、再生中の場合はVLCを一時停止して(停止ではない) (1)を実行
VLCが起動していて、停止中の場合 (1)を実行
VLCが起動していない場合 (1)を実行
この3つを条件にしたApple Scriptがほしいです。
再生・一時停止は、以下の実行するたびに切り替わります
tell application "VLC"
play
end tell
(1)は以下を使用します
do shell script "pmset displaysleepnow"
どなたか教えていただけませんか。
よろしくお願いします。
流れはこんな感じ
VLCが起動していて、再生中の場合はVLCを一時停止して(停止ではない) (1)を実行
VLCが起動していて、停止中の場合 (1)を実行
VLCが起動していない場合 (1)を実行
この3つを条件にしたApple Scriptがほしいです。
再生・一時停止は、以下の実行するたびに切り替わります
tell application "VLC"
play
end tell
(1)は以下を使用します
do shell script "pmset displaysleepnow"
どなたか教えていただけませんか。
よろしくお願いします。
720名称未設定
2021/11/02(火) 11:59:02.60ID:pGU9BlJ/0 if application "VLC" is running then
-- 起動している
tell application "VLC"
if playing then
-- 再生中
else
-- 再生中でない
end if
end tell
else
-- 起動していない
end if
とか
-- 起動している
tell application "VLC"
if playing then
-- 再生中
else
-- 再生中でない
end if
end tell
else
-- 起動していない
end if
とか
721名称未設定
2021/11/02(火) 11:59:22.94ID:7syMT4e20 要約すると単に(1)を実行すればいいんじゃね
722名称未設定
2021/11/02(火) 12:00:41.19ID:YqqFtmZG0 こう?
if application "VLC" is running then
tell application "VLC" to play
end if
do shell script "pmset displaysleepnow"
if application "VLC" is running then
tell application "VLC" to play
end if
do shell script "pmset displaysleepnow"
723名称未設定
2021/11/02(火) 12:12:27.25ID:QRbS4Qqj0724名称未設定
2021/11/03(水) 13:56:42.68ID:ox4JR8wY0 >>723です。
昨日はみなさん貴重なレスをありがとうございました。
教えていただいたものでうまくいっています。
しかし一部に修正したい箇所が出てきました。
現在は
if application "VLC" is running then
-- 起動している
tell application "VLC"
if playing then
-- 再生中
play
else
-- 起動してるが再生中ではない
end if
end tell
else
-- 起動していない
end if
do shell script "pmset displaysleepnow"
を使っていますが、これだとVLCが起動していない時にスクリプトを実行するとVLCが起動していまいます。
たぶんtell application "VLC”のところで起動しているんだと思うのですが、
起動していない時には起動しないようには出来ないですかね。
厚かましいく大変申し訳ないですがどなたかわからないでしょうか。
昨日はみなさん貴重なレスをありがとうございました。
教えていただいたものでうまくいっています。
しかし一部に修正したい箇所が出てきました。
現在は
if application "VLC" is running then
-- 起動している
tell application "VLC"
if playing then
-- 再生中
play
else
-- 起動してるが再生中ではない
end if
end tell
else
-- 起動していない
end if
do shell script "pmset displaysleepnow"
を使っていますが、これだとVLCが起動していない時にスクリプトを実行するとVLCが起動していまいます。
たぶんtell application "VLC”のところで起動しているんだと思うのですが、
起動していない時には起動しないようには出来ないですかね。
厚かましいく大変申し訳ないですがどなたかわからないでしょうか。
725名称未設定
2021/11/03(水) 15:00:34.27ID:ox4JR8wY0 >>724
解決できたようです。
これまでAutomatorにAppleScriptをアプリケーションにして使っていましたが、
これをクイックアクションに変更して検索対象をVLC.appにすると問題は解決しました。
たくさんスレを消費して申し訳ありませんでした。
教えていただいた方々改めてありがとうございました。
解決できたようです。
これまでAutomatorにAppleScriptをアプリケーションにして使っていましたが、
これをクイックアクションに変更して検索対象をVLC.appにすると問題は解決しました。
たくさんスレを消費して申し訳ありませんでした。
教えていただいた方々改めてありがとうございました。
726名称未設定
2021/11/03(水) 15:41:13.91ID:ox4JR8wY0 何度もすみません。
問題が解決したと思ったのは私の早とちりでした。
問題が解決したと思ったのは私の早とちりでした。
727名称未設定
2021/11/03(水) 15:49:32.61ID:kssODVoN0 さっき俺が書こうとしてたトンデモ案
if application "VLC" is running then
-- 起動している
do shell script "echo '
tell application ¥"VLC¥"
if playing then
-- 再生中
play
else
-- 起動してるが再生中ではない
end if
end tell' | osascript"
else
-- 起動していない
end if
if application "VLC" is running then
-- 起動している
do shell script "echo '
tell application ¥"VLC¥"
if playing then
-- 再生中
play
else
-- 起動してるが再生中ではない
end if
end tell' | osascript"
else
-- 起動していない
end if
728名称未設定
2021/11/03(水) 15:52:07.55ID:kssODVoN0 しまった
さっきはSafariで書こうとしてたのにうっかりしてバックスラッシュを化かしてしまった
さっきはSafariで書こうとしてたのにうっかりしてバックスラッシュを化かしてしまった
729名称未設定
2021/11/03(水) 16:03:33.54ID:ox4JR8wY0 >>727
なんとレスをいただけるとは思わなかったので嬉しいです。
Autometorでアプリケーションで組み込んでみましたが今のところ思った通りにうごいているようです。
もう少し確認してみますが、早速レスをいただきとても感謝します。
ありがとうございます。
なんとレスをいただけるとは思わなかったので嬉しいです。
Autometorでアプリケーションで組み込んでみましたが今のところ思った通りにうごいているようです。
もう少し確認してみますが、早速レスをいただきとても感謝します。
ありがとうございます。
731名称未設定
2021/12/17(金) 23:27:06.76ID:U91KyQsQ0 Webページのボタン(など)を押す
on getElementCenter for xpaths by pickerfunc
tell application "Google Chrome" to return execute active tab of front window javascript "
(function (xpaths, pickerfunc) {
const getElementsByXPath = (xpath) => {
const result = []
const xpathResult = document.evaluate(xpath, document)
var item; while((item = xpathResult.iterateNext()) != null)
result.push(item)
return result
}
var elm = null;
for(const xpath of xpaths){
if((elm = getElementsByXPath(xpath).find(pickerfunc)) != null)
break
}
if(elm == null)
return ' '
const rect = elm.getBoundingClientRect()
const zoomRatio = (false)? window.devicePixelRatio : (window.outerWidth / window.innerWidth);
return {x:((rect.left + rect.width / 2) * zoomRatio), y:((rect.top + rect.height / 2) * zoomRatio)}
})(" & xpaths & "," & pickerfunc & ")"
end getElementCenter
on getElementCenter for xpaths by pickerfunc
tell application "Google Chrome" to return execute active tab of front window javascript "
(function (xpaths, pickerfunc) {
const getElementsByXPath = (xpath) => {
const result = []
const xpathResult = document.evaluate(xpath, document)
var item; while((item = xpathResult.iterateNext()) != null)
result.push(item)
return result
}
var elm = null;
for(const xpath of xpaths){
if((elm = getElementsByXPath(xpath).find(pickerfunc)) != null)
break
}
if(elm == null)
return ' '
const rect = elm.getBoundingClientRect()
const zoomRatio = (false)? window.devicePixelRatio : (window.outerWidth / window.innerWidth);
return {x:((rect.left + rect.width / 2) * zoomRatio), y:((rect.top + rect.height / 2) * zoomRatio)}
})(" & xpaths & "," & pickerfunc & ")"
end getElementCenter
732名称未設定
2021/12/17(金) 23:27:36.32ID:U91KyQsQ0 on clickElement for xpaths by pickerfunc
repeat 10 times
set elementCenter to getElementCenter for xpaths by pickerfunc
if class of elementCenter is record then exit repeat
delay 0.1
end repeat
if class of elementCenter is not record then error "Can't get element"
set webAreaPosition to missing value
tell application "System Events" to tell process "Google Chrome"
repeat 10 times
try
set webAreaPosition to position of first item of (UI elements of first group of front window whose role is "AXWebArea")
exit repeat
end try
delay 0.1
end repeat
if webAreaPosition is missing value then error "AXWebArea missing"
click at {((first item of webAreaPosition) + (x of elementCenter)), ((second item of webAreaPosition) + (y of elementCenter))}
end tell
end clickElement
repeat 10 times
set elementCenter to getElementCenter for xpaths by pickerfunc
if class of elementCenter is record then exit repeat
delay 0.1
end repeat
if class of elementCenter is not record then error "Can't get element"
set webAreaPosition to missing value
tell application "System Events" to tell process "Google Chrome"
repeat 10 times
try
set webAreaPosition to position of first item of (UI elements of first group of front window whose role is "AXWebArea")
exit repeat
end try
delay 0.1
end repeat
if webAreaPosition is missing value then error "AXWebArea missing"
click at {((first item of webAreaPosition) + (x of elementCenter)), ((second item of webAreaPosition) + (y of elementCenter))}
end tell
end clickElement
733名称未設定
2021/12/17(金) 23:35:55.87ID:U91KyQsQ0 Safariでは4箇所変更
2c2
< tell application "Safari" to return do JavaScript "
---
> tell application "Google Chrome" to return execute active tab of front window javascript "
22c22
< })(" & xpaths & "," & pickerfunc & ")" in current tab of front window
---
> })(" & xpaths & "," & pickerfunc & ")"
34c34
< tell application "System Events" to tell process "Safari"
---
> tell application "System Events" to tell process "Google Chrome"
37c37
< set webAreaPosition to position of first item of (UI elements of first scroll area of first group of first group of first tab group of first splitter group of front window whose role is "AXWebArea")
---
> set webAreaPosition to position of first item of (UI elements of first group of front window whose role is "AXWebArea")
「全部」を押す
clickElement for "[ '//a[@class=\"menuitem\"]' ]" by "e => true"
「最新50」を押す
clickElement for "[ '//a[@class=\"menuitem\"]' ]" by "(e, i) => i == 2"
AXWebAreaが現れないのがある。System Event's UI elements中にに存在しない。有るのに)。ウィンドウを前後なぞしたりしたら急に現れるナゾ
でも、まあ、そこそこ確実(+それなりに速い)と思う
2c2
< tell application "Safari" to return do JavaScript "
---
> tell application "Google Chrome" to return execute active tab of front window javascript "
22c22
< })(" & xpaths & "," & pickerfunc & ")" in current tab of front window
---
> })(" & xpaths & "," & pickerfunc & ")"
34c34
< tell application "System Events" to tell process "Safari"
---
> tell application "System Events" to tell process "Google Chrome"
37c37
< set webAreaPosition to position of first item of (UI elements of first scroll area of first group of first group of first tab group of first splitter group of front window whose role is "AXWebArea")
---
> set webAreaPosition to position of first item of (UI elements of first group of front window whose role is "AXWebArea")
「全部」を押す
clickElement for "[ '//a[@class=\"menuitem\"]' ]" by "e => true"
「最新50」を押す
clickElement for "[ '//a[@class=\"menuitem\"]' ]" by "(e, i) => i == 2"
AXWebAreaが現れないのがある。System Event's UI elements中にに存在しない。有るのに)。ウィンドウを前後なぞしたりしたら急に現れるナゾ
でも、まあ、そこそこ確実(+それなりに速い)と思う
734名称未設定
2021/12/18(土) 18:15:36.19ID:36fY0MzD0 Google Chrome だと、AXWebArea が System Event's UI elements にねー、
なかなか出てこねー、が顕著なのか
Google Chrome は使ってなくて、Brave Browser を使ってるが、そっちはたまにでWindow前後したりしたら出るんだが
Google Chromeはほそれでは出てこない、Accessibility Inspectorで見る(触る)と出てくるかな、ほぼ確実に
なんだろ。ChromeなのかSystem Eventsなのかどっちが悪いねん。Brave Browser との差異からはChromeぽいけど
どうせ欲しいのはWindow内でのAXWebAreaの位置そしてToolbarなんぞを出したり引っ込めたりしないからだろうから、
position of first group of front window + 定数
でいいか。AXWebAreaがあるんだから使いたいとこだが
検索のちっちゃい検索のためのはWindowのようで、それを考慮すると System Events では、
front window
でなく、
first item of (windows whose subrole is "AXStandardWindow")
がかな。上記のは
position of first group of (first item of (windows whose subrole is "AXStandardWindow")) + 定数
なかなか出てこねー、が顕著なのか
Google Chrome は使ってなくて、Brave Browser を使ってるが、そっちはたまにでWindow前後したりしたら出るんだが
Google Chromeはほそれでは出てこない、Accessibility Inspectorで見る(触る)と出てくるかな、ほぼ確実に
なんだろ。ChromeなのかSystem Eventsなのかどっちが悪いねん。Brave Browser との差異からはChromeぽいけど
どうせ欲しいのはWindow内でのAXWebAreaの位置そしてToolbarなんぞを出したり引っ込めたりしないからだろうから、
position of first group of front window + 定数
でいいか。AXWebAreaがあるんだから使いたいとこだが
検索のちっちゃい検索のためのはWindowのようで、それを考慮すると System Events では、
front window
でなく、
first item of (windows whose subrole is "AXStandardWindow")
がかな。上記のは
position of first group of (first item of (windows whose subrole is "AXStandardWindow")) + 定数
735名称未設定
2022/01/15(土) 00:18:15.28ID:dKjLdNRz0 お知恵をお貸しいただけないでしょうか。
スクリプトは見よう見まねで自分用に多少書き替える程度のことはできる、という最低レベルです(基本がわかっていないので応用が効かず……)
Pandocを使ってマークダウン書類をWord書類に変換したく、四苦八苦しています。
ターミナルからのコマンド入力でどうにか成功したものの、毎回入力は面倒です。
Appleスクリプトなら解決できるのではないかとWebをさまよっていたところ、下記スクリプトを見つけました。
https://github.com/nathan-artist/AppleScripts/blob/master/AppleScript%20droplet%20for%20pandoc%20file%20conversion.applescript
早速アプリケーションにしてみました。
成功はしたのですが、ここからがご相談です。
こちら、変換コマンドのオプションが書けるようになっており、オリジナルは
--standaloneなのですが、
--reference-doc=○○.dotx
に変更しました。
マークダウン書類と同一階層に自分で作ったdotx(Wordテンプレート書類)を置いて実行しています。
が、本来Wordのテンプレート格納場所は以下です。
/Library/Group Containers/UBF8T346G9.Office/User Content.localized/Templates.localized/○○.dotx
できればここから引っ張って来たいのです。
が、ファイルパスを書くとエラーが出てしまいます。(ターミナルから入力していたときはパス指定で成功していました)
うまく解決する方法はありますでしょうか。
ちなみに、Wordテンプレートは一種類ではなく、文章の中身によって変えたいです。
よろしくお願いいたします
スクリプトは見よう見まねで自分用に多少書き替える程度のことはできる、という最低レベルです(基本がわかっていないので応用が効かず……)
Pandocを使ってマークダウン書類をWord書類に変換したく、四苦八苦しています。
ターミナルからのコマンド入力でどうにか成功したものの、毎回入力は面倒です。
Appleスクリプトなら解決できるのではないかとWebをさまよっていたところ、下記スクリプトを見つけました。
https://github.com/nathan-artist/AppleScripts/blob/master/AppleScript%20droplet%20for%20pandoc%20file%20conversion.applescript
早速アプリケーションにしてみました。
成功はしたのですが、ここからがご相談です。
こちら、変換コマンドのオプションが書けるようになっており、オリジナルは
--standaloneなのですが、
--reference-doc=○○.dotx
に変更しました。
マークダウン書類と同一階層に自分で作ったdotx(Wordテンプレート書類)を置いて実行しています。
が、本来Wordのテンプレート格納場所は以下です。
/Library/Group Containers/UBF8T346G9.Office/User Content.localized/Templates.localized/○○.dotx
できればここから引っ張って来たいのです。
が、ファイルパスを書くとエラーが出てしまいます。(ターミナルから入力していたときはパス指定で成功していました)
うまく解決する方法はありますでしょうか。
ちなみに、Wordテンプレートは一種類ではなく、文章の中身によって変えたいです。
よろしくお願いいたします
736名称未設定
2022/01/15(土) 00:28:08.80ID:hOsIgaeq0 パスのスペースをエスケープするなり、パス全体をシングルクォーテーションで囲ってはどうか
737名称未設定
2022/01/15(土) 03:55:32.83ID:dKjLdNRz0738名称未設定
2022/01/15(土) 15:17:32.04ID:hOsIgaeq0 よかった
739名称未設定
2022/01/21(金) 15:05:48.44ID:+vjJ+SBs0 tell application "Finder"
activate
count item of folder "Macintosh SSD:Users:ユーザーname:downloads"
if the result = 1 then
set Downfile to document files whose name extension is "pdf"
open Downfile
------以下続きます
返された値では
get every document file whose name extension = "pdf"
この様に処理され、デスクトップにあるpdfファイル全てを開く事になってしまいます。
ダウンロードフォルダ内にあるpdfファイルのみを開くにはどのように記述すればよいですか?
activate
count item of folder "Macintosh SSD:Users:ユーザーname:downloads"
if the result = 1 then
set Downfile to document files whose name extension is "pdf"
open Downfile
------以下続きます
返された値では
get every document file whose name extension = "pdf"
この様に処理され、デスクトップにあるpdfファイル全てを開く事になってしまいます。
ダウンロードフォルダ内にあるpdfファイルのみを開くにはどのように記述すればよいですか?
740名称未設定
2022/01/21(金) 15:53:22.39ID:IYX9nqAK0 開くだけでいいならこれ1行で
do shell script "open ~/Downloads/*.pdf"
do shell script "open ~/Downloads/*.pdf"
741名称未設定
2022/01/21(金) 16:05:20.88ID:+vjJ+SBs0742名称未設定
2022/01/21(金) 18:29:58.94ID:C9M4mQFu0 突き詰めるほどにdo shell scriptが増えてくるのは俺だけ?
743名称未設定
2022/01/21(金) 20:14:47.86ID:gnvHvYbr0 楽し過ぎるとバカになる
744名称未設定
2022/01/23(日) 10:46:02.79ID:mSlzWjEh0 何度もすみません
ダウンロードフォルダにあるpdfファイルを変数に入れるにはどう書けば良いですか?
set Dfile to document files whose name extension is "pdf" of (path to downloads folder)
エラー
"pdf" of (path to downloads folder)を取り出すことはできません。利用が許されていません。
ダウンロードフォルダにあるpdfファイルを変数に入れるにはどう書けば良いですか?
set Dfile to document files whose name extension is "pdf" of (path to downloads folder)
エラー
"pdf" of (path to downloads folder)を取り出すことはできません。利用が許されていません。
745名称未設定
2022/01/23(日) 11:01:13.58ID:BkttkSoy0 >>744
tell application "Finder"
set Dfile to files of (path to downloads folder) whose name extension is "pdf"
end tell
tell application "Finder"
set Dfile to files of (path to downloads folder) whose name extension is "pdf"
end tell
746名称未設定
2022/01/23(日) 11:08:56.30ID:mSlzWjEh0747名称未設定
2022/02/18(金) 15:22:57.08ID:69rmkvNs0 どなたか教えてください。
特定のフォルダのウインドウサイズと位置をフォルダを開かずにサイズと位置を変更する方法はありませんか?
ウインドウを開く前にウインドウサイズと位置を設定したいです。
特定のフォルダのウインドウサイズと位置をフォルダを開かずにサイズと位置を変更する方法はありませんか?
ウインドウを開く前にウインドウサイズと位置を設定したいです。
748名称未設定
2022/02/18(金) 15:49:28.83ID:6Ai0MkWn0 そういうのは.DS_Storeに保存されるんだろうけど、方法ないんじゃないの
749名称未設定
2022/02/18(金) 16:19:51.30ID:YxxZRNHG0 >>748
そのファイルはもうお亡くなりになりました…
前にも同様のDS_storeとfinderのwindow位置で書いたわ。
~/Library/Preferences/com.apple.Finder.plist
の消去をするとリセットされるぐらいしか無くて、解決しなかった。
むしろ元に戻ると言う報告もあってお手上げだったよ🤷🤷♂
そのファイルはもうお亡くなりになりました…
前にも同様のDS_storeとfinderのwindow位置で書いたわ。
~/Library/Preferences/com.apple.Finder.plist
の消去をするとリセットされるぐらいしか無くて、解決しなかった。
むしろ元に戻ると言う報告もあってお手上げだったよ🤷🤷♂
750名称未設定
2022/02/18(金) 16:42:09.79ID:69rmkvNs0 レスありがとう。
やはり方法はないんですね。
実は、Big Sur以降MontereyでもMacintosh HDのFinderウインドウサイズが再起動するとリセットされてしまい小さなウインドウサイズに変わってしまうバグがあるけど(Time Machineの外付けHDDのウインドウも同じバグが)、
いちいち起動ごとにリサイズするのが面倒なので、今は
Macintosh HDのFinderウインドウを開く -> リサイズ -> 閉じる
ってAppleScriptを作って起動項目にいれてるのですが、
Macの起動時に一瞬ウインドウが見えて消えるのが嫌な感じだな…と思いつつ使っていて何か改善方法はないかと思って質問をしました。
方法がもうないのなら今の方法で対応するしかない感じですね。
やはり方法はないんですね。
実は、Big Sur以降MontereyでもMacintosh HDのFinderウインドウサイズが再起動するとリセットされてしまい小さなウインドウサイズに変わってしまうバグがあるけど(Time Machineの外付けHDDのウインドウも同じバグが)、
いちいち起動ごとにリサイズするのが面倒なので、今は
Macintosh HDのFinderウインドウを開く -> リサイズ -> 閉じる
ってAppleScriptを作って起動項目にいれてるのですが、
Macの起動時に一瞬ウインドウが見えて消えるのが嫌な感じだな…と思いつつ使っていて何か改善方法はないかと思って質問をしました。
方法がもうないのなら今の方法で対応するしかない感じですね。
751名称未設定
2022/02/18(金) 17:36:12.53ID:dSUuIAx10 フォルダアクションで開いた時に修正リサイズするとか
752名称未設定
2022/02/18(金) 18:07:24.18ID:69rmkvNs0 >>751
なるほどーその手もあるんですね。
しかしその場合だと開くたびに同じ修正値にリサイズされるので
デフォルトサイズ以外だとリサイズしない設定も加える必要があるでしょうね。
ちょっと頑張ってやってみます。
レスありがとうございます。
なるほどーその手もあるんですね。
しかしその場合だと開くたびに同じ修正値にリサイズされるので
デフォルトサイズ以外だとリサイズしない設定も加える必要があるでしょうね。
ちょっと頑張ってやってみます。
レスありがとうございます。
753名称未設定
2022/02/24(木) 19:50:14.86ID:k3pqM6dE0 質問ばかりで申し訳ありません。
また一つ教えていただきたいのですが、
Macの起動や再起動時に文字入力を英字(A)にしたくて下記のAppleScriptを使っていますがうまく英字にならず日本語になってる事があります。
tell application "Finder"
tell application "System Events"
keystroke ";" using {shift down, control down}
end tell
end tell
tell application "Finder”はあってもなくても動作が思ったようになりません。
どこか手直しすればいいのか、他に何かいい方法(AppleScriptにこだわってはいません)はないでしょうか。
また一つ教えていただきたいのですが、
Macの起動や再起動時に文字入力を英字(A)にしたくて下記のAppleScriptを使っていますがうまく英字にならず日本語になってる事があります。
tell application "Finder"
tell application "System Events"
keystroke ";" using {shift down, control down}
end tell
end tell
tell application "Finder”はあってもなくても動作が思ったようになりません。
どこか手直しすればいいのか、他に何かいい方法(AppleScriptにこだわってはいません)はないでしょうか。
754名称未設定
2022/02/24(木) 21:14:12.60ID:vu02H8Th0 tell application "Finder"
は、いらない
フロントアプリ(まあ、Finderなんだろうけど)や、Input Methodの準備が整ってない段階でkeystrokeを発行する時があるんじゃないの
とりあえず delay 60 とか(起動で落ち着くまで)最初に入れてみるとか。それで大丈夫なようだったら、次を考えようw
http://piyocast.com/as/archives/5068
って、Cocoa APIで直接とかあるな。よく読んでないけど、Cocoa APIなら確実性はありそうかな
現在のモードを取得とかもあるんじゃないかな。あるんだったら、準備ができてなくてなら失敗しても待って繰り返すとかできそうかな
は、いらない
フロントアプリ(まあ、Finderなんだろうけど)や、Input Methodの準備が整ってない段階でkeystrokeを発行する時があるんじゃないの
とりあえず delay 60 とか(起動で落ち着くまで)最初に入れてみるとか。それで大丈夫なようだったら、次を考えようw
http://piyocast.com/as/archives/5068
って、Cocoa APIで直接とかあるな。よく読んでないけど、Cocoa APIなら確実性はありそうかな
現在のモードを取得とかもあるんじゃないかな。あるんだったら、準備ができてなくてなら失敗しても待って繰り返すとかできそうかな
755名称未設定
2022/02/24(木) 21:24:36.14ID:vu02H8Th0 あ、Cocoa APIじゃなく(Cocoa APIを使った)有志のフレームワーク使ってた
フレームワーク使わずにできるか見てみるわ
フレームワーク使わずにできるか見てみるわ
756名称未設定
2022/02/24(木) 21:39:36.49ID:k3pqM6dE0 >>754
レスありがとうございます。
Finderの部分は必要ないんですね。
最初delayを入れてたけど、効果ないのかなと思って外してたけど
落ち着くまでの適当な秒数入れたほうがいいんですね。
>フレームワーク使わずにできるか見てみるわ
お手数をおかけします。
ありがとうございます。
レスありがとうございます。
Finderの部分は必要ないんですね。
最初delayを入れてたけど、効果ないのかなと思って外してたけど
落ち着くまでの適当な秒数入れたほうがいいんですね。
>フレームワーク使わずにできるか見てみるわ
お手数をおかけします。
ありがとうございます。
757名称未設定
2022/02/24(木) 21:51:44.65ID:vu02H8Th0 フレームワークで使ってる Core な C API でなく、Objective-C クラスあるやんけ
Objective-C クラスだとなんか問題あるのかな?わからんけどw、書き換えると
set kHiraganaInputSource to "com.apple.inputmethod.Kotoeri.Japanese"
set kEisuuInputSource to "com.apple.inputmethod.Kotoeri.Roman"
set inputContext to current application's NSTextInputContext's currentInputContext
repeat 3 times
set inputContext's selectedKeyboardInputSource to kHiraganaInputSource
delay 1
set inputContext's selectedKeyboardInputSource to kEisuuInputSource
delay 1
end repeat
InputSource名は決め打ちw。まあ変わることは無いだろう
selectedKeyboardInputSource で現在のを取れるし設定できる
Objective-C クラスだとなんか問題あるのかな?わからんけどw、書き換えると
set kHiraganaInputSource to "com.apple.inputmethod.Kotoeri.Japanese"
set kEisuuInputSource to "com.apple.inputmethod.Kotoeri.Roman"
set inputContext to current application's NSTextInputContext's currentInputContext
repeat 3 times
set inputContext's selectedKeyboardInputSource to kHiraganaInputSource
delay 1
set inputContext's selectedKeyboardInputSource to kEisuuInputSource
delay 1
end repeat
InputSource名は決め打ちw。まあ変わることは無いだろう
selectedKeyboardInputSource で現在のを取れるし設定できる
758名称未設定
2022/02/24(木) 21:54:15.94ID:L6zf6bwf0 似たようなことやりたくて自分はこれ使っちゃった
https://github.com/myshov/xkbswitch-macosx
https://github.com/myshov/xkbswitch-macosx
759名称未設定
2022/02/24(木) 22:00:24.99ID:vu02H8Th0 >>757 ということで
use framework "AppKit"
on chaaaaange()
--set kHiraganaInputSource to "com.apple.inputmethod.Kotoeri.Japanese"
set kEisuuInputSource to "com.apple.inputmethod.Kotoeri.Roman"
repeat
set inputContext to current application's NSTextInputContext's currentInputContext
try
set inputContext's selectedKeyboardInputSource to kEisuuInputSource
if inputContext's selectedKeyboardInputSource as text is kEisuuInputSource then return
on error message
return message
end try
delay 1 -- wait for challenge to next time
end repeat
end chaaaaange
chaaaaange()
な感じ?
>>758
そんなのもあるのねえ。実績があるのならそっちかなw
use framework "AppKit"
on chaaaaange()
--set kHiraganaInputSource to "com.apple.inputmethod.Kotoeri.Japanese"
set kEisuuInputSource to "com.apple.inputmethod.Kotoeri.Roman"
repeat
set inputContext to current application's NSTextInputContext's currentInputContext
try
set inputContext's selectedKeyboardInputSource to kEisuuInputSource
if inputContext's selectedKeyboardInputSource as text is kEisuuInputSource then return
on error message
return message
end try
delay 1 -- wait for challenge to next time
end repeat
end chaaaaange
chaaaaange()
な感じ?
>>758
そんなのもあるのねえ。実績があるのならそっちかなw
760名称未設定
2022/02/24(木) 22:02:16.21ID:vu02H8Th0 >>759
あ、
on error message
return message
は、いらない。あったらリトライせずに終わることもある
なかったら無限になりえるけど、まあ無いだろうし、無限になっても影響は無いだろうw
あ、
on error message
return message
は、いらない。あったらリトライせずに終わることもある
なかったら無限になりえるけど、まあ無いだろうし、無限になっても影響は無いだろうw
761名称未設定
2022/02/24(木) 22:08:31.20ID:Tbke4kz20 on changeKeyboardLayout(layoutName)
tell application "System Events" to tell process "SystemUIServer"
tell (1st menu bar item of menu bar 1 whose description is "text input") to {click, click (menu 1's menu item layoutName)}
end tell
end changeKeyboardLayout
changeKeyboardLayout("U.S.")
普通にusになるまでインプットソースをロールさせるのがいいんじゃね(拾い物)
tell application "System Events" to tell process "SystemUIServer"
tell (1st menu bar item of menu bar 1 whose description is "text input") to {click, click (menu 1's menu item layoutName)}
end tell
end changeKeyboardLayout
changeKeyboardLayout("U.S.")
普通にusになるまでインプットソースをロールさせるのがいいんじゃね(拾い物)
762名称未設定
2022/02/24(木) 22:16:10.53ID:vu02H8Th0 Objective-C ラスのは、スクリプトエディタ以外で走らせるのは何か準備が必要のようかなあ
とりあえず、オススメはしないw すまん
selectedKeyboardInputSource ってプロパティを見る弄るだけなので俺の好みだけど
以下、どうにか使うようにするのは俺の趣味だな
とりあえず、オススメはしないw すまん
selectedKeyboardInputSource ってプロパティを見る弄るだけなので俺の好みだけど
以下、どうにか使うようにするのは俺の趣味だな
763名称未設定
2022/02/24(木) 22:46:35.58ID:k3pqM6dE0 みなさんこんな時間にも関わらずレスをいただき感謝します。
どれがいいか順番に試してみたいと思います。
しかしみなさん詳しくて頭が下がります。
どれがいいか順番に試してみたいと思います。
しかしみなさん詳しくて頭が下がります。
764名称未設定
2022/02/24(木) 22:46:46.77ID:0nBEATFf0 私の環境(BigSur 11.6.4)だとこれで動く
ただ英字のclickに数秒待たされる場合があるのでこまめな切り替え処理には向いてなさそう
tell application id "com.apple.systemevents"
tell application process "TextInputMenuAgent"'s menu bar 2's menu bar item 1
click
--delay 1 --動かない場合があるなら少し遅らせた方が確実かも
tell menu 1's menu item "英字" to click
end tell
end tell
ただ英字のclickに数秒待たされる場合があるのでこまめな切り替え処理には向いてなさそう
tell application id "com.apple.systemevents"
tell application process "TextInputMenuAgent"'s menu bar 2's menu bar item 1
click
--delay 1 --動かない場合があるなら少し遅らせた方が確実かも
tell menu 1's menu item "英字" to click
end tell
end tell
765名称未設定
2022/02/24(木) 22:54:34.74ID:k3pqM6dE0 なるほど、どれにしても少し待つ事が重要そうですね。
766名称未設定
2022/04/08(金) 12:32:46.92ID:PPzDmSLN0 大量のフォーム入力されたPDFをレーザープリンタにてA4、両面印刷する場面が近々あるのですが、
Appleスクリプトでdo shell scriptで印刷テストしたところ、フォームの内容が全部すっ飛んだ状態でプリントされてしまいました
lpr プリンタ名 -o media=A4 -o landscape-o sides=two-short-edge -o fliplot ファイル
プレビューにてSystem eventでメニューポチ、プリントポチだとdelayが上手くハマらない?場面で失敗してしまい、なかなかうまくいきません
MacOS 10.15.7です
アドバイスお願いします
Appleスクリプトでdo shell scriptで印刷テストしたところ、フォームの内容が全部すっ飛んだ状態でプリントされてしまいました
lpr プリンタ名 -o media=A4 -o landscape-o sides=two-short-edge -o fliplot ファイル
プレビューにてSystem eventでメニューポチ、プリントポチだとdelayが上手くハマらない?場面で失敗してしまい、なかなかうまくいきません
MacOS 10.15.7です
アドバイスお願いします
767名称未設定
2022/04/08(金) 12:40:10.43ID:RbfnIhf60 すみません、上のコマンドに-o l入れ忘れてました…
入れてもフォームが全部空っぽになってしまいます
入れてもフォームが全部空っぽになってしまいます
768名称未設定
2022/04/08(金) 13:08:18.18ID:nMu/YqbA0 しかもfitplot の綴り間違えてるし
なんか他にも間違えてそう
なんか他にも間違えてそう
769名称未設定
2022/04/08(金) 19:40:11.61ID:faKJalEq0 >>766
CUI/コマンドでの方がスマートに 見える かもしれないが、macOS/Finderにあるのに使われないw、Print/印刷コマンド使えば
Finder で PDFファイルを選んで、ファイル メニューにあるやつ
> プレビューにてSystem eventでメニューポチ、プリントポチだとdelayが上手くハマらない?場面で失敗してしまい、なかなかうまくいきません
ってやろうとして、コマンドでなのか。だったら、上記のFinderからので良さげのような
なんだったらわざわざAppleScriptでやる必要もないような、その大量の数がわからんけど、そのFinderの使ってのAppleScript書くのはそう難しくはないだろう
CUI/コマンドでの方がスマートに 見える かもしれないが、macOS/Finderにあるのに使われないw、Print/印刷コマンド使えば
Finder で PDFファイルを選んで、ファイル メニューにあるやつ
> プレビューにてSystem eventでメニューポチ、プリントポチだとdelayが上手くハマらない?場面で失敗してしまい、なかなかうまくいきません
ってやろうとして、コマンドでなのか。だったら、上記のFinderからので良さげのような
なんだったらわざわざAppleScriptでやる必要もないような、その大量の数がわからんけど、そのFinderの使ってのAppleScript書くのはそう難しくはないだろう
770名称未設定
2022/04/08(金) 21:08:37.59ID:faKJalEq0 >>769
>Print/印刷コマンド
日本語は 印刷 ではなく プリント だな
Finderのこのコマンドは普通のアプリにあるコマンドと違って、書類ファイルのデフォルトアプリに対して、アプリを起動して ファイルをプリントしろ というの。いつも使ってるダブルクリックなどではそこが ファイルを開け という違いでしかない
それを受け取った大体のアプリは自らの プリント コマンドをデフォで実行して終わったら閉じる という動作
では、Finderで普通のアプリのようにフォルダの中身などを プリント って、変態的なのでしかないのかな?無さげか
>Print/印刷コマンド
日本語は 印刷 ではなく プリント だな
Finderのこのコマンドは普通のアプリにあるコマンドと違って、書類ファイルのデフォルトアプリに対して、アプリを起動して ファイルをプリントしろ というの。いつも使ってるダブルクリックなどではそこが ファイルを開け という違いでしかない
それを受け取った大体のアプリは自らの プリント コマンドをデフォで実行して終わったら閉じる という動作
では、Finderで普通のアプリのようにフォルダの中身などを プリント って、変態的なのでしかないのかな?無さげか
771名称未設定
2022/04/09(土) 16:44:39.71ID:7FK1q6ML0 Form だけでなく Annotation も事前に Flattening が必要な場合がある感じ
https://github.com/OpenPrinting/cups-filters
filters, backends, cups-browsed, ... - Everything which CUPS needs to be used on non-Mac systems
だが、CUPSはそういうものなんだろう
3) Method of flattening interactive PDF forms and annotations.
って書いてるのが当てはまるのだろう
macOSではなくでこの標準的なフィルターの場合は、
lpr -o pdftopdf-form-flattening=pdftocairo ...
らしいけど、macOSは標準的なのは無いかな。メーカーのドライバにpdftopdfがそれぞれ独自に梱包されてるよう(それも同じではないし、このpdftopdfとも違うかな?)で、lprでプリンタドライバに直接で Form や Annotation を Flattening する/できるのかはプリンタドライバによる感じかな
macOSでPDFファイルを Flattening するのは色々ある。サードパーティの専用的なアプリもあるし、内蔵ではプリントダイアログでの左下のPDF(誰もが使ってるだろうけど)が手動での
自動では、Automatorで イメージから新規PDFを作成 アクションで可能(ドライバがFlatteningしない場合には必要、Finder項目をプリント アクションを使う場合は)、もしくは、Cocoa API / PDFKit を使って少々なコード書くだけで。(他にGhostscript入れてとかあるけど、macOSがPDFベースでわざわざ入れる必要もなんかなとも思わないでもない)
もちろん、FinderでのPrintコマンドでPreviewに印刷させるのが最も簡単だろな
https://github.com/OpenPrinting/cups-filters
filters, backends, cups-browsed, ... - Everything which CUPS needs to be used on non-Mac systems
だが、CUPSはそういうものなんだろう
3) Method of flattening interactive PDF forms and annotations.
って書いてるのが当てはまるのだろう
macOSではなくでこの標準的なフィルターの場合は、
lpr -o pdftopdf-form-flattening=pdftocairo ...
らしいけど、macOSは標準的なのは無いかな。メーカーのドライバにpdftopdfがそれぞれ独自に梱包されてるよう(それも同じではないし、このpdftopdfとも違うかな?)で、lprでプリンタドライバに直接で Form や Annotation を Flattening する/できるのかはプリンタドライバによる感じかな
macOSでPDFファイルを Flattening するのは色々ある。サードパーティの専用的なアプリもあるし、内蔵ではプリントダイアログでの左下のPDF(誰もが使ってるだろうけど)が手動での
自動では、Automatorで イメージから新規PDFを作成 アクションで可能(ドライバがFlatteningしない場合には必要、Finder項目をプリント アクションを使う場合は)、もしくは、Cocoa API / PDFKit を使って少々なコード書くだけで。(他にGhostscript入れてとかあるけど、macOSがPDFベースでわざわざ入れる必要もなんかなとも思わないでもない)
もちろん、FinderでのPrintコマンドでPreviewに印刷させるのが最も簡単だろな
772名称未設定
2022/04/09(土) 23:00:30.36ID:QRdTFCYM0 すごく丁寧に詳細に解説ありがとうございます
何言ってるのかさっぱりわかりませんがじっくりゆっくり読み込んで理解できるように努力します
何言ってるのかさっぱりわかりませんがじっくりゆっくり読み込んで理解できるように努力します
773名称未設定
2022/04/09(土) 23:10:56.48ID:QRdTFCYM0 -o l→-o rawに変えると、PDFフォームは出力されるが、両面印刷ができなくなるというところまで辿り着いて、諦めました
プリンタ固有の癖も考慮しなきゃならないと思うと、これ以上悩んでも時間とテストプリントの紙の無駄にもなるので…
今のところプレビューにて、スクリプトでショートカットキーやらせて開く→(プリセットが設定されてる状態で)印刷→閉じるが一番早くて悩まない状態です
プリセットは1枚手でプリントさせれば次からはアクティブの状態がキープできるので、スクリプトの手間もありませんでした
delay 3ぐらいにすればつまづきも少ないようです(ネットワークの遅さがネックになってるおま環問題です
500ファイル強ぐらいなので、走らせて昼飯食ってれば終わると思います
ありがとうございました
プリンタ固有の癖も考慮しなきゃならないと思うと、これ以上悩んでも時間とテストプリントの紙の無駄にもなるので…
今のところプレビューにて、スクリプトでショートカットキーやらせて開く→(プリセットが設定されてる状態で)印刷→閉じるが一番早くて悩まない状態です
プリセットは1枚手でプリントさせれば次からはアクティブの状態がキープできるので、スクリプトの手間もありませんでした
delay 3ぐらいにすればつまづきも少ないようです(ネットワークの遅さがネックになってるおま環問題です
500ファイル強ぐらいなので、走らせて昼飯食ってれば終わると思います
ありがとうございました
774名称未設定
2022/04/11(月) 09:48:15.68ID:ATmLjJRx0 XPDFかpopplerでpdfまとめてプレビューで普通に印刷したら?
775名称未設定
2022/04/11(月) 13:33:04.25ID:PaWeGtwE0 自分もそう思う
776名称未設定
2022/04/11(月) 14:32:23.58ID:Wcnrw4yS0 OS標準機能でPDFを1ファイルにまとめたらフォームの内容が全て同じになってしまったので、この手は使えないと思ってましたが、使い方調べてそれらも検討してみます…ありがとうございます
777名称未設定
2022/04/11(月) 17:20:20.81ID:h3PF/yWa0 単に Automator で イメージから新規PDFを作成 アクション だけのアプリを作って、PDFファイル群をまとめて投げれば、Flatteningして(=フォームの内容がそれぞれで固定された=変更不可な)まとまった一つのPDFになるんだけどな
778名称未設定
2022/04/11(月) 17:40:08.31ID:l1IiDpGq0 Automatorで出来ることをわざわざ変なレスする奴がいるから
779名称未設定
2022/04/17(日) 11:57:32.88ID:IqiYGdec0 macOS Montereyにスクリプトメニューはありますか?
El Capitan 10.11.6から上げようと思うんですが、ないと仕事に支障があるので
El Capitan 10.11.6から上げようと思うんですが、ないと仕事に支障があるので
780名称未設定
2022/04/17(日) 14:17:19.79ID:qe6SPVxy0 BigSurにもあるから多分ある
781名称未設定
2022/04/17(日) 17:17:29.89ID:IqiYGdec0782名称未設定
2022/05/11(水) 03:11:40.78ID:PrAv7N8Y0 Script Editor\.app、繁体中国語だとこう言う名前なのか。か、かっこいい…。
https://pbs.twimg.com/media/FSW1X7saUAAfeWx.jpg
それと比べると簡体中国語はかなりシンプル。いかにもscript + editorって感じ。
https://pbs.twimg.com/media/FSW4HYIaIAEW83H.jpg
https://twitter.com/1024jp/status/1523823474489573376
https://twitter.com/5chan_nel (5ch newer account)
https://pbs.twimg.com/media/FSW1X7saUAAfeWx.jpg
それと比べると簡体中国語はかなりシンプル。いかにもscript + editorって感じ。
https://pbs.twimg.com/media/FSW4HYIaIAEW83H.jpg
https://twitter.com/1024jp/status/1523823474489573376
https://twitter.com/5chan_nel (5ch newer account)
783名称未設定
2022/05/25(水) 12:21:20.11ID:hDugQYQX0 どなたか教えてください
毎回必ず同じAppのウインドウのスクリーンショット(command+shift+4+spaceに該当)を撮ってデスクトップに画像を保存したいのですが
その特定のAppをApp名などで指定してスクショを撮ることは可能でしょうか?
ネットで調べてみてもウインドウ選択のクリックは自分でしないといけないやり方しか見つかりません
毎回必ず同じAppのウインドウのスクリーンショット(command+shift+4+spaceに該当)を撮ってデスクトップに画像を保存したいのですが
その特定のAppをApp名などで指定してスクショを撮ることは可能でしょうか?
ネットで調べてみてもウインドウ選択のクリックは自分でしないといけないやり方しか見つかりません
784名称未設定
2022/05/25(水) 12:48:25.12ID:8kZuOFMt0 スクショ撮りたい時の状況がよくわかんないけどfrontmostじゃダメなの?
785名称未設定
2022/05/25(水) 13:50:36.24ID:jmy3uHVm0 最近のOSは知らんけど、screencapture コマンドに -l windowid の指定があるから、windowid 調べればいけるぽい
試しにこんなんで(アプリ裏に置いたまま)撮れた、Sierra
on screencapture(appName, winIDList)
repeat with winID in winIDList
do shell script "screencapture -o -l " & winID & " ~/Desktop/" & quoted form of (appName & "-" & winID & ".png")
end repeat
end screencapture
tell application "Terminal"
my screencapture(name, id of every window whose id > 0)
end tell
tell application "BathyScaphe"
my screencapture(name, id of every window whose id > 0)
end tell
試しにこんなんで(アプリ裏に置いたまま)撮れた、Sierra
on screencapture(appName, winIDList)
repeat with winID in winIDList
do shell script "screencapture -o -l " & winID & " ~/Desktop/" & quoted form of (appName & "-" & winID & ".png")
end repeat
end screencapture
tell application "Terminal"
my screencapture(name, id of every window whose id > 0)
end tell
tell application "BathyScaphe"
my screencapture(name, id of every window whose id > 0)
end tell
786名称未設定
2022/05/25(水) 14:10:02.19ID:MSYqamd20 >>783
例えばSafariの一番上のウインドウを撮る場合はこれでいける
get the id of the front window of application "Safari"
do shell script "screencapture -pl" & space & the result
例えばSafariの一番上のウインドウを撮る場合はこれでいける
get the id of the front window of application "Safari"
do shell script "screencapture -pl" & space & the result
787名称未設定
2022/05/26(木) 15:34:52.37ID:jERf5BZY0788名称未設定
2022/05/26(木) 18:04:41.28ID:RfDP2TWo0 >>787
スクリプトに対応してればid of front windowで取得できるけど対応してない場合はGetWindowIDを使う方法もある
https://github.com/smokris/GetWindowID
Homebrewでインストールできるけどbrew使えないなら普通にgit cloneでダウンロードしてmakeでインストールすることもできる
やり方分からないなら再度質問して
スクリプトに対応してればid of front windowで取得できるけど対応してない場合はGetWindowIDを使う方法もある
https://github.com/smokris/GetWindowID
Homebrewでインストールできるけどbrew使えないなら普通にgit cloneでダウンロードしてmakeでインストールすることもできる
やり方分からないなら再度質問して
789名称未設定
2022/05/26(木) 18:57:18.04ID:OzffMThA0790名称未設定
2022/06/01(水) 10:13:47.40ID:di47BmeQ0 >>786
先日はありがとうございました。
いろいろと試しましたがなかなか上手くいかず・・・・
get the id of the front window of application "BlueStacks"
do shell script "screencapture -pl" & space & the result
BlueStacksを起動しているにも関わらず上のコードを実行すると
"Syntax Error" BlueStacks got an error: Can't get id of window1
と出ます。
"Safari" だと仰る通り上手くいきましたが、
スクショの確認プレビューみたいなものが表示され
これをクリックして閉じないとデスクトップへスクショ画像は保存されませんでした。
この確認作業なしで一発でデスクトップへ保存させることは可能ですか?
先日はありがとうございました。
いろいろと試しましたがなかなか上手くいかず・・・・
get the id of the front window of application "BlueStacks"
do shell script "screencapture -pl" & space & the result
BlueStacksを起動しているにも関わらず上のコードを実行すると
"Syntax Error" BlueStacks got an error: Can't get id of window1
と出ます。
"Safari" だと仰る通り上手くいきましたが、
スクショの確認プレビューみたいなものが表示され
これをクリックして閉じないとデスクトップへスクショ画像は保存されませんでした。
この確認作業なしで一発でデスクトップへ保存させることは可能ですか?
791名称未設定
2022/06/01(水) 10:16:12.74ID:di47BmeQ0 BlueStacksのidをダイアログで表示してくれるコードも教えていただけると助かります
792名称未設定
2022/06/01(水) 10:45:03.86ID:di47BmeQ0 >>791はplistでデフォルトの設定を変えることで自己解決しました
すみません
すみません
793名称未設定
2022/06/01(水) 10:46:53.95ID:di47BmeQ0 get the id of the front window of application "Automator"
do shell script "screencapture -l" & space & the result & " ~/Desktop/test.png"
アプリケーションのところを
AutomatorやSafariにするとうまくいくのですが
BlueStacks(←これの画面キャプを撮りたいです)やFinderとすると
"Syntax Error" BlueStacks got an error: Can't get id of window1
のエラーが出ますね・・・
do shell script "screencapture -l" & space & the result & " ~/Desktop/test.png"
アプリケーションのところを
AutomatorやSafariにするとうまくいくのですが
BlueStacks(←これの画面キャプを撮りたいです)やFinderとすると
"Syntax Error" BlueStacks got an error: Can't get id of window1
のエラーが出ますね・・・
794名称未設定
2022/06/01(水) 10:50:29.87ID:di47BmeQ0 tell application "BlueStacks" to activate
tell application "System Events" to tell application process "BlueStacks"
try
get the id of the front window of application "BlueStacks"
do shell script "screencapture -l" & space & the result & " ~/Desktop/test.png"
on error errmess
log errmess
-- no window open
end try
end tell
これだとBlueStacksを前面に持ってくるだけでスクショは生成されませんね
tell application "System Events" to tell application process "BlueStacks"
try
get the id of the front window of application "BlueStacks"
do shell script "screencapture -l" & space & the result & " ~/Desktop/test.png"
on error errmess
log errmess
-- no window open
end try
end tell
これだとBlueStacksを前面に持ってくるだけでスクショは生成されませんね
795名称未設定
2022/06/01(水) 11:01:39.25ID:0juhuGfj0 >>788の最初に書いてくれてるでしょ。BlueStacksはAppleScriptに対応してない
https://github.com/smokris/GetWindowID
のキモである、CGWindowListCopyWindowInfoはJXAで使える(AppleScriptObjCでは、返り値をAppleScript Objectになんか変換してくれなくて使えない)から、GetWindowIDコマンドを(ビルドして)ではなくでも、AppleScriptだけでもWindow ID手に入れられそうだけど
https://github.com/smokris/GetWindowID
のキモである、CGWindowListCopyWindowInfoはJXAで使える(AppleScriptObjCでは、返り値をAppleScript Objectになんか変換してくれなくて使えない)から、GetWindowIDコマンドを(ビルドして)ではなくでも、AppleScriptだけでもWindow ID手に入れられそうだけど
796名称未設定
2022/06/01(水) 11:13:08.17ID:di47BmeQ0 >>795さん
ありがとうございます。
AppleScriptで一部のアプリは対応できないことってあるんですねorz
なんかAppleScriptだけでは簡単にはできなさそうですね・・・
色々と時間を費やして試しましたが
Githubもよく分かっていない素人なので今回は諦めることにします
ありがとうございました。
ありがとうございます。
AppleScriptで一部のアプリは対応できないことってあるんですねorz
なんかAppleScriptだけでは簡単にはできなさそうですね・・・
色々と時間を費やして試しましたが
Githubもよく分かっていない素人なので今回は諦めることにします
ありがとうございました。
797名称未設定
2022/06/01(水) 11:45:17.62ID:di47BmeQ0 なかなか諦めきれず最後の悪あがきです
ユーザーのディレクトリにGetWindowIDのファイル4つをcloneして入れました
tell application "BlueStacks" to activate
do shell script "screencapture -l$(./GetWindowID Simulator 'BlueStacks') test.png"
その上で上記コードをautomatorで試すとBlueStacksは前面に表示されるものの
Syntax Error:
sh: ./GetWindowID: No such file or directory screencapture: no file specified
のエラーが出ます
ユーザーのディレクトリにGetWindowIDのファイル4つをcloneして入れました
tell application "BlueStacks" to activate
do shell script "screencapture -l$(./GetWindowID Simulator 'BlueStacks') test.png"
その上で上記コードをautomatorで試すとBlueStacksは前面に表示されるものの
Syntax Error:
sh: ./GetWindowID: No such file or directory screencapture: no file specified
のエラーが出ます
798名称未設定
2022/06/01(水) 11:53:59.73ID:0juhuGfj0 リストから抽出を手抜き/必要最低限で、
set windowID to run script "(( appName, windowTitle ) => {
ObjC.import('AppKit')
windows = ObjC.deepUnwrap($.CGWindowListCopyWindowInfo($.kCGWindowListExcludeDesktopElements, $.kCGNullWindowID)).filter((window) => window[$.kCGWindowLayer.js] == 0 && window[$.kCGWindowOwnerName.js] == appName && window[$.kCGWindowName.js] == windowTitle )
return (windows.length == 0)? undefined : windows[0][$.kCGWindowNumber.js]
})('BlueStacks', '')" in "Javascript"
if windowID is not "undefined" then do shell script "screencapture -l " & windowID & " -o ~/Desktop/aaa.png"
判断するのにウィンドウタイトルが Empty String なのはヤバいwが、まあ、しょうがないとりあえず問題なさげ
>>797
./GetWindowID
./ に、GetWindowID という実行ファイル/コマンドが無いってだけ(do shell script working directory は / なので 起動ボリューム直下だな)
ちゃんとGetWindowIDへのパス指定する
set windowID to run script "(( appName, windowTitle ) => {
ObjC.import('AppKit')
windows = ObjC.deepUnwrap($.CGWindowListCopyWindowInfo($.kCGWindowListExcludeDesktopElements, $.kCGNullWindowID)).filter((window) => window[$.kCGWindowLayer.js] == 0 && window[$.kCGWindowOwnerName.js] == appName && window[$.kCGWindowName.js] == windowTitle )
return (windows.length == 0)? undefined : windows[0][$.kCGWindowNumber.js]
})('BlueStacks', '')" in "Javascript"
if windowID is not "undefined" then do shell script "screencapture -l " & windowID & " -o ~/Desktop/aaa.png"
判断するのにウィンドウタイトルが Empty String なのはヤバいwが、まあ、しょうがないとりあえず問題なさげ
>>797
./GetWindowID
./ に、GetWindowID という実行ファイル/コマンドが無いってだけ(do shell script working directory は / なので 起動ボリューム直下だな)
ちゃんとGetWindowIDへのパス指定する
799名称未設定
2022/06/01(水) 12:06:11.34ID:di47BmeQ0 >>798さん
とりあえずgit cloneしてターミナルで
Mac:GetWindowID admin$ ./GetWindowID BlueStacks ''
と実行すると
1222
どこからでも実行できるようにopen .bash_profileで
設定を開き末尾にexport PATH=$PATH:/Users/admin/GetWindowIDを追加し保存しました
その後ターミナルで
Mac:~ admin$ ./GetWindowID BlueStacks ''
を実行するも
-bash: ./GetWindowID: is a directory
と出てしまいます
パスが上手く通らないですね
とりあえずgit cloneしてターミナルで
Mac:GetWindowID admin$ ./GetWindowID BlueStacks ''
と実行すると
1222
どこからでも実行できるようにopen .bash_profileで
設定を開き末尾にexport PATH=$PATH:/Users/admin/GetWindowIDを追加し保存しました
その後ターミナルで
Mac:~ admin$ ./GetWindowID BlueStacks ''
を実行するも
-bash: ./GetWindowID: is a directory
と出てしまいます
パスが上手く通らないですね
800名称未設定
2022/06/01(水) 12:14:39.27ID:0juhuGfj0 run script in "Javascript" で undefined だと、"undefined'が返ってくるんではなくて、返り値はない、そしてそれを収めようとした変数(windowID)も無くなるのか(!?)...
納めないだけなら前に missing value でも入れとけばと思ったのに、変数が消されるのはナゾいw
>>799
do shell script は bash_profile とかそんなの読まない、思いっきり素の実行環境
do shell script "printenv" とかして、確認してみ。フルパスでという意味でのパス指定だったんだが。他にかっこいいのはAppleScriptファイルをパッケージにしてそこに入れてそこのパスを得てとかあるだろうけどw
納めないだけなら前に missing value でも入れとけばと思ったのに、変数が消されるのはナゾいw
>>799
do shell script は bash_profile とかそんなの読まない、思いっきり素の実行環境
do shell script "printenv" とかして、確認してみ。フルパスでという意味でのパス指定だったんだが。他にかっこいいのはAppleScriptファイルをパッケージにしてそこに入れてそこのパスを得てとかあるだろうけどw
801名称未設定
2022/06/01(水) 12:19:12.18ID:0juhuGfj0 ああ、「その後[ターミナルで]」なのか
単にPATHの設定が間違ってるだけのようだが、何をやってるのかイマイチわからんな。頑張れ。単にPATHの設定が間違ってるだけだから
単にPATHの設定が間違ってるだけのようだが、何をやってるのかイマイチわからんな。頑張れ。単にPATHの設定が間違ってるだけだから
802名称未設定
2022/06/01(水) 12:22:36.82ID:di47BmeQ0 >>800
とりあえずパスを通しました
今はターミナルでどのディレクトリにいても
GetWindowID BlueStacks ''
を実行するとWindowIDが返ってくるようになりました
あとは
tell application "BlueStacks" to activate
do shell script "screencapture -l$(GetWindowID BlueStacks \"\") test.png"
をautomatorで走らせると
sh: GetWindowID:command not found
screencapture:vno file specified
とでます
とりあえずパスを通しました
今はターミナルでどのディレクトリにいても
GetWindowID BlueStacks ''
を実行するとWindowIDが返ってくるようになりました
あとは
tell application "BlueStacks" to activate
do shell script "screencapture -l$(GetWindowID BlueStacks \"\") test.png"
をautomatorで走らせると
sh: GetWindowID:command not found
screencapture:vno file specified
とでます
803名称未設定
2022/06/01(水) 12:27:52.05ID:0juhuGfj0 >do shell script は bash_profile とかそんなの読まない、思いっきり素の実行環境
>do shell script "printenv" とかして、確認してみ
なんだよ、とりあえずAppleScriptではとは別にターミナルではでないのかよ
そこはフルパスで書きやがれw
>do shell script "printenv" とかして、確認してみ
なんだよ、とりあえずAppleScriptではとは別にターミナルではでないのかよ
そこはフルパスで書きやがれw
804名称未設定
2022/06/01(水) 12:29:00.79ID:7JwrMgQ40 色々迷走してるみたいだけどとりあえず何も考えないでターミナルでこれ実行してみ
git clone https://github.com/smokris/GetWindowID
cd GetWindowID
make
そしたらホーム>GetWindowIDフォルダの中にGetWindowIDできてるはずだから
~/GetWindowID/GetWindowID BlueStacks 'ウィンドウの名前'
で ID は得られる
ウインドウの名前が分からないんなら
~/GetWindowID/GetWindowID BlueStacks --list
で一覧が出る
スクリーンショット撮りたいんなら無理にAppleScript使うよりターミナルで
screencapture -pl $(~/GetWindowID/GetWindowID BlueStacks 'ウィンドウの名前')
の方が簡単、do shell scriptでも実行できる
git clone https://github.com/smokris/GetWindowID
cd GetWindowID
make
そしたらホーム>GetWindowIDフォルダの中にGetWindowIDできてるはずだから
~/GetWindowID/GetWindowID BlueStacks 'ウィンドウの名前'
で ID は得られる
ウインドウの名前が分からないんなら
~/GetWindowID/GetWindowID BlueStacks --list
で一覧が出る
スクリーンショット撮りたいんなら無理にAppleScript使うよりターミナルで
screencapture -pl $(~/GetWindowID/GetWindowID BlueStacks 'ウィンドウの名前')
の方が簡単、do shell scriptでも実行できる
805名称未設定
2022/06/01(水) 12:32:15.80ID:0juhuGfj0 コマンドの引数はよく読んでなかったかウィンドウタイトルなのか
なんだw ウィンドウタイトルは Empty String だね、BlueStacksは
なんだw ウィンドウタイトルは Empty String だね、BlueStacksは
806名称未設定
2022/06/01(水) 12:40:06.08ID:di47BmeQ0 >>804
ありがとうございます
あと少しで達成できそうです
私の環境ではどのディレクトリからも
GetWindowID BlueStacks ""
を実行すると上手くいくので下記のようにターミナルで実行しました
Mac:~ admin$ screencapture -pl $(GetWindowID BlueStacks 1221)
すると
files where to save the screen capture, 1 file per screen
のエラーが出ます
ありがとうございます
あと少しで達成できそうです
私の環境ではどのディレクトリからも
GetWindowID BlueStacks ""
を実行すると上手くいくので下記のようにターミナルで実行しました
Mac:~ admin$ screencapture -pl $(GetWindowID BlueStacks 1221)
すると
files where to save the screen capture, 1 file per screen
のエラーが出ます
807名称未設定
2022/06/01(水) 12:41:23.28ID:di47BmeQ0 ファイル名を指定してもダメですね
Mac:~ admin$ screencapture -pl $(GetWindowID BlueStacks "") test.png
could not create image from window
Mac:~ admin$ screencapture -pl $(GetWindowID BlueStacks "") test.png
could not create image from window
808名称未設定
2022/06/01(水) 12:43:51.91ID:di47BmeQ0 Mac:~ admin$ screencapture -pl 1221 test.png
というように
$(GetWindowID BlueStacks "") ではなく 1221と指定すると上手くいきます
ただし何故かファイル名はtest.pngになっていません・・・
というように
$(GetWindowID BlueStacks "") ではなく 1221と指定すると上手くいきます
ただし何故かファイル名はtest.pngになっていません・・・
809名称未設定
2022/06/01(水) 12:48:44.82ID:zTspiBBe0 それ変だな
-p指定すると自動的に「スクリーンショット 2022-06-01 12.xx.xx」みたいなファイル名付いていくらでも撮れるはずなんだけど
-p指定すると自動的に「スクリーンショット 2022-06-01 12.xx.xx」みたいなファイル名付いていくらでも撮れるはずなんだけど
810名称未設定
2022/06/01(水) 12:48:59.66ID:0juhuGfj0 on captureWindow(appName, windowTitle)
set windowID to run script "((appName, windowTitle) => {
ObjC.import('AppKit')
windows = ObjC.deepUnwrap($.CGWindowListCopyWindowInfo($.kCGWindowListExcludeDesktopElements, $.kCGNullWindowID)).filter((window) => window[$.kCGWindowLayer.js] == 0 && window[$.kCGWindowOwnerName.js] == appName && window[$.kCGWindowName.js] == windowTitle)
result = (windows.length == 0)? undefined : windows[0][$.kCGWindowNumber.js]
return (result == undefined)? 'undefined' : result
})('" & appName & "', '" & windowTitle & "')" in "Javascript"
if windowID is not "undefined" then do shell script "screencapture -l " & windowID & " -o ~/Desktop/aaa.png"
end captureWindow
captureWindow("BlueStacks", "")
とりあえず自己満終了
set windowID to run script "((appName, windowTitle) => {
ObjC.import('AppKit')
windows = ObjC.deepUnwrap($.CGWindowListCopyWindowInfo($.kCGWindowListExcludeDesktopElements, $.kCGNullWindowID)).filter((window) => window[$.kCGWindowLayer.js] == 0 && window[$.kCGWindowOwnerName.js] == appName && window[$.kCGWindowName.js] == windowTitle)
result = (windows.length == 0)? undefined : windows[0][$.kCGWindowNumber.js]
return (result == undefined)? 'undefined' : result
})('" & appName & "', '" & windowTitle & "')" in "Javascript"
if windowID is not "undefined" then do shell script "screencapture -l " & windowID & " -o ~/Desktop/aaa.png"
end captureWindow
captureWindow("BlueStacks", "")
とりあえず自己満終了
811名称未設定
2022/06/01(水) 12:52:04.66ID:di47BmeQ0812名称未設定
2022/06/01(水) 13:38:31.62ID:di47BmeQ0 >>810
もう1つだけいいですか?
デフォルトだとpngで保存されますが
-t の引数を加えて jpgにしたい場合は
どのように追記すればよいでしょうか?
他の皆様がたも本当にありがとうございました
もう1つだけいいですか?
デフォルトだとpngで保存されますが
-t の引数を加えて jpgにしたい場合は
どのように追記すればよいでしょうか?
他の皆様がたも本当にありがとうございました
813名称未設定
2022/06/01(水) 14:11:34.08ID:1qZ0SDTG0 アホの子なのか
815名称未設定
2022/06/04(土) 15:13:37.27ID:6dBzCmWk0 業者というかパソコンの大先生な感じ
816名称未設定
2022/06/09(木) 16:14:10.02ID:L1ZPlsBE0 5ちゃんなんだから、さっさと教えろこのクズ、ゴミ共!
とか言ってくれないと🤣
とか言ってくれないと🤣
817名称未設定
2022/06/09(木) 16:16:05.78ID:OSIDYA6M0 目的は達成できたんだから良かったやん
818名称未設定
2022/07/08(金) 22:06:14.10ID:ocR58vSg0 どなたか教えていただけませんか。
ログイン項目に下記の2つをAutomatorに入れて登録しています。
1)
tell application "System Events"
set volume output volume 40
end tell
2)
tell application "System Events"
keystroke ";" using {shift down, control down}
end tell
どちらも正常に動作するのですが、(2)の方が実行された時にシステム環境設定で設定してある通知音がなってしまいます。(1はなりません)
1と2両方ともSystem Eventsなのになぜ2だけなるのかわかりませんが、
2もならないようにして文字入力を英字に変更したいのですが、何か良い方法があればおしえていただけませんか?
AppleScriptにこだわっているわけではありません。
シェルスクリプトでもならなければかまいません。(スレ違いになってしまいますが)
誰かわかるかたいませんか。
よろしくお願いします。
ログイン項目に下記の2つをAutomatorに入れて登録しています。
1)
tell application "System Events"
set volume output volume 40
end tell
2)
tell application "System Events"
keystroke ";" using {shift down, control down}
end tell
どちらも正常に動作するのですが、(2)の方が実行された時にシステム環境設定で設定してある通知音がなってしまいます。(1はなりません)
1と2両方ともSystem Eventsなのになぜ2だけなるのかわかりませんが、
2もならないようにして文字入力を英字に変更したいのですが、何か良い方法があればおしえていただけませんか?
AppleScriptにこだわっているわけではありません。
シェルスクリプトでもならなければかまいません。(スレ違いになってしまいますが)
誰かわかるかたいませんか。
よろしくお願いします。
819名称未設定
2022/07/08(金) 22:20:23.76ID:5bvQpJxv0 > keystroke ";" using {shift down, control down}
これってそもそもなんらからのキー入力を受けるアプリが対象じゃないとダメじゃないの
これってそもそもなんらからのキー入力を受けるアプリが対象じゃないとダメじゃないの
820名称未設定
2022/07/08(金) 22:50:27.83ID:ERmVTA230 >>818
悩みと関係ないけど1)は tell application "System Events" する必要ないよ
悩みと関係ないけど1)は tell application "System Events" する必要ないよ
821名称未設定
2022/07/09(土) 00:34:19.19ID:LAmToGDG0 >>818
2)は、Automatorやスクリプトエディタから実行すると鳴らないけど、アプリにして実行すると確かになぜか警告音鳴りますね。
■方法1:実行時にミュートする
set volume with output muted
-- ここで2)をやる
set volume without output muted
■方法2:cliclickでkeystrokeと同じことをやる
cliclickはキーやマウスイベントをコマンドラインで実行できます。→ https://github.com/BlueM/cliclick
cliclick kd:ctrl,shift 't:;' ku:ctrl,shift
ただ私の環境だと「Sorry, cliclick cannot handle your keyboard layout, so emulating typing is not possible.」と失敗する時がありました。
■方法3:メニューを直接操作する
基本は >>764 に書いた方法ですが、かなり待ちが発生してしまう場合があるので上述のcliclickと組み合わせます
set target_mode to "英字"
tell application id "com.apple.systemevents" to tell application process "TextInputMenuAgent"'s menu bar 2's menu bar item 1
if description is target_mode then return --既に選択済み
--click --だと数秒待たされる場合がある
set pos to position
set pos_param to "=" & ((item 1 of pos) + 18) & ",=" & ((item 2 of pos) + 10)
do shell script "/usr/local/bin/cliclick -r m:" & pos_param & " c:+0,+0 p"
tell menu 1's menu item target_mode to click
end tell
2)は、Automatorやスクリプトエディタから実行すると鳴らないけど、アプリにして実行すると確かになぜか警告音鳴りますね。
■方法1:実行時にミュートする
set volume with output muted
-- ここで2)をやる
set volume without output muted
■方法2:cliclickでkeystrokeと同じことをやる
cliclickはキーやマウスイベントをコマンドラインで実行できます。→ https://github.com/BlueM/cliclick
cliclick kd:ctrl,shift 't:;' ku:ctrl,shift
ただ私の環境だと「Sorry, cliclick cannot handle your keyboard layout, so emulating typing is not possible.」と失敗する時がありました。
■方法3:メニューを直接操作する
基本は >>764 に書いた方法ですが、かなり待ちが発生してしまう場合があるので上述のcliclickと組み合わせます
set target_mode to "英字"
tell application id "com.apple.systemevents" to tell application process "TextInputMenuAgent"'s menu bar 2's menu bar item 1
if description is target_mode then return --既に選択済み
--click --だと数秒待たされる場合がある
set pos to position
set pos_param to "=" & ((item 1 of pos) + 18) & ",=" & ((item 2 of pos) + 10)
do shell script "/usr/local/bin/cliclick -r m:" & pos_param & " c:+0,+0 p"
tell menu 1's menu item target_mode to click
end tell
822名称未設定
2022/07/09(土) 07:37:37.81ID:2iTzH2fB0823名称未設定
2022/07/10(日) 05:07:18.74ID:oxfW9n8l0 >>819
ダメではないけど、アプリで入力状態じゃないと警告音は鳴るな、直接キーボード叩いても
なので、AppleScriptで書いてもやっても、鳴っても当然と言えば当然だな、うちでは
volumeの変更はAppleScriptが対応してる、
文字入力を英字に(Input Sourceの変更)は対応してないので、単にキーボードをシミュレートして叩いてるだけ
と全然違う
直接Input Sourceの変更をAppleScriptでやればいいだけでもある。Input Sourceの変更を直接はAppleScriptでは対応してないけど
コマンドがあるよう(https://github.com/minoki/InputSourceSelector とか)なのでビルドして使うとか。試してないけど
AppleScriptObjCで書くとかかな(数行かなあ)
ダメではないけど、アプリで入力状態じゃないと警告音は鳴るな、直接キーボード叩いても
なので、AppleScriptで書いてもやっても、鳴っても当然と言えば当然だな、うちでは
volumeの変更はAppleScriptが対応してる、
文字入力を英字に(Input Sourceの変更)は対応してないので、単にキーボードをシミュレートして叩いてるだけ
と全然違う
直接Input Sourceの変更をAppleScriptでやればいいだけでもある。Input Sourceの変更を直接はAppleScriptでは対応してないけど
コマンドがあるよう(https://github.com/minoki/InputSourceSelector とか)なのでビルドして使うとか。試してないけど
AppleScriptObjCで書くとかかな(数行かなあ)
824名称未設定
2022/07/10(日) 05:29:06.51ID:oxfW9n8l0 デジャブ感が芽生えてきて見たら、上にあるじゃん
だったという
だったという
825名称未設定
2022/07/11(月) 18:43:13.81ID:xyBDGQLc0 on inputSourceSelect(inputSourceID)
run script "//
ObjC.import('Carbon')
inputSourcesProperties = { TISPropertyInputSourceID: '" & inputSourceID & "' }
if(!(inputSources = $.TISCreateInputSourceList(inputSourcesProperties, true)).isNil() && inputSources.count > 0)
$.TISSelectInputSource(inputSources.js[0])
" in "JavaScript"
end inputSourceSelect
inputSourceSelect("com.apple.inputmethod.Kotoeri.Roman")
run script "//
ObjC.import('Carbon')
inputSourcesProperties = { TISPropertyInputSourceID: '" & inputSourceID & "' }
if(!(inputSources = $.TISCreateInputSourceList(inputSourcesProperties, true)).isNil() && inputSources.count > 0)
$.TISSelectInputSource(inputSources.js[0])
" in "JavaScript"
end inputSourceSelect
inputSourceSelect("com.apple.inputmethod.Kotoeri.Roman")
826名称未設定
2022/07/11(月) 21:58:39.51ID:xyBDGQLc0 on inputSourceSelect(inputSourceName)
run script "//
ObjC.import('Carbon')
propertiesFilter = {}
propertiesFilter[$.kTISPropertyLocalizedName.js] = '" & inputSourceName & "'
if(!(inputSources = $.TISCreateInputSourceList(propertiesFilter, false)).isNil() && inputSources.count > 0)
$.TISSelectInputSource(inputSources.js[0])
" in "JavaScript"
end inputSourceSelect
inputSourceSelect("英字")
inputSourceSelect("ひらがな")
inputSourceSelect("ABC")
inputSourceSelect("日本語")
run script "//
ObjC.import('Carbon')
propertiesFilter = {}
propertiesFilter[$.kTISPropertyLocalizedName.js] = '" & inputSourceName & "'
if(!(inputSources = $.TISCreateInputSourceList(propertiesFilter, false)).isNil() && inputSources.count > 0)
$.TISSelectInputSource(inputSources.js[0])
" in "JavaScript"
end inputSourceSelect
inputSourceSelect("英字")
inputSourceSelect("ひらがな")
inputSourceSelect("ABC")
inputSourceSelect("日本語")
827名称未設定
2022/07/12(火) 12:09:31.45ID:VpN2OIYJ0 Xcode14(Beta3)で、Applescriptの新規作成タグがなくなったのだが
使えるようにする方法知ってる人いないかな?
(他力本願全力ですまん)
使えるようにする方法知ってる人いないかな?
(他力本願全力ですまん)
828名称未設定
2022/07/12(火) 13:36:46.42ID:IAvl/61+0 run script "//
ObjC.import('Carbon')
ObjC.bindFunction('TISGetInputSourceProperty', ['id', ['id', 'id']], 'TISGetInputSourceProperty')
enabledOnly = true
resultList = []
propertiesFilter = {}
ii = undefined
propertiesFilter[$.kTISPropertyLocalizedName.js] = 'Romaji'
for(inputSource of $.TISCreateInputSourceList($(), !enabledOnly).js){
properties = {
name: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyLocalizedName).js,
id: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceID).js
/*
,
category: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceCategory).js,
type: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceCategory).js,
'ascii capable': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsASCIICapable).js,
enabling: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsEnableCapable).js,
selecting: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsSelectCapable).js,
enabled: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsEnabled).js,
selected: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsSelected).js,
'bundle id': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyBundleID).js,
'mode id': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputModeID).js,
languages: ObjC.deepUnwrap($.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceLanguages)),
icon: (((url = $.TISGetInputSourceProperty(inputSource, $.kTISPropertyIconImageURL)).isNil())? $() : url.path).js
*/
ObjC.import('Carbon')
ObjC.bindFunction('TISGetInputSourceProperty', ['id', ['id', 'id']], 'TISGetInputSourceProperty')
enabledOnly = true
resultList = []
propertiesFilter = {}
ii = undefined
propertiesFilter[$.kTISPropertyLocalizedName.js] = 'Romaji'
for(inputSource of $.TISCreateInputSourceList($(), !enabledOnly).js){
properties = {
name: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyLocalizedName).js,
id: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceID).js
/*
,
category: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceCategory).js,
type: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceCategory).js,
'ascii capable': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsASCIICapable).js,
enabling: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsEnableCapable).js,
selecting: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsSelectCapable).js,
enabled: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsEnabled).js,
selected: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsSelected).js,
'bundle id': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyBundleID).js,
'mode id': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputModeID).js,
languages: ObjC.deepUnwrap($.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceLanguages)),
icon: (((url = $.TISGetInputSourceProperty(inputSource, $.kTISPropertyIconImageURL)).isNil())? $() : url.path).js
*/
829名称未設定
2022/07/12(火) 13:36:56.64ID:IAvl/61+0 }
for(key in properties){ // convert undefined to null for missing value in AppleScript
if(properties[key] == undefined)
properties[key] = null
}
resultList.push(properties)
}
resultList
" in "JavaScript"
for(key in properties){ // convert undefined to null for missing value in AppleScript
if(properties[key] == undefined)
properties[key] = null
}
resultList.push(properties)
}
resultList
" in "JavaScript"
830名称未設定
2022/07/12(火) 13:44:49.20ID:IAvl/61+0 (テストでやっていたゴミが残ってたので再。すまん)
run script "//
ObjC.import('Carbon')
ObjC.bindFunction('TISGetInputSourceProperty', ['id', ['id', 'id']])
enabledOnly = true
resultList = []
for(inputSource of $.TISCreateInputSourceList($(), !enabledOnly).js){
properties = {
name: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyLocalizedName).js,
id: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceID).js
/*
,
category: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceCategory).js,
type: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceCategory).js,
'ascii capable': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsASCIICapable).js,
enabling: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsEnableCapable).js,
selecting: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsSelectCapable).js,
enabled: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsEnabled).js,
selected: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsSelected).js,
'bundle id': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyBundleID).js,
'mode id': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputModeID).js,
languages: ObjC.deepUnwrap($.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceLanguages)),
icon: (((url = $.TISGetInputSourceProperty(inputSource, $.kTISPropertyIconImageURL)).isNil())? $() : url.path).js
*/
}
run script "//
ObjC.import('Carbon')
ObjC.bindFunction('TISGetInputSourceProperty', ['id', ['id', 'id']])
enabledOnly = true
resultList = []
for(inputSource of $.TISCreateInputSourceList($(), !enabledOnly).js){
properties = {
name: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyLocalizedName).js,
id: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceID).js
/*
,
category: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceCategory).js,
type: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceCategory).js,
'ascii capable': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsASCIICapable).js,
enabling: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsEnableCapable).js,
selecting: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsSelectCapable).js,
enabled: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsEnabled).js,
selected: $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceIsSelected).js,
'bundle id': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyBundleID).js,
'mode id': $.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputModeID).js,
languages: ObjC.deepUnwrap($.TISGetInputSourceProperty(inputSource, $.kTISPropertyInputSourceLanguages)),
icon: (((url = $.TISGetInputSourceProperty(inputSource, $.kTISPropertyIconImageURL)).isNil())? $() : url.path).js
*/
}
831名称未設定
2022/07/12(火) 13:44:56.15ID:IAvl/61+0 for(key in properties){ // convert undefined to null for missing value in AppleScript
if(properties[key] == undefined)
properties[key] = null
}
resultList.push(properties)
}
resultList
" in "JavaScript"
if(properties[key] == undefined)
properties[key] = null
}
resultList.push(properties)
}
resultList
" in "JavaScript"
832名称未設定
2022/07/12(火) 21:19:51.63ID:rTP1U/ED0 >>827
>新規作成タグがなくなった
タグ??と思ったら、テンプレートのことかな?
https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-14-release-notes
Templates
Resolved in Xcode 14 Beta 3
The Cocoa AppleScript application template has been removed in Xcode 14. (20633478)
これのことでしょ?だったら、前のテンプレートを自分で調整して流用すればいいだけのようでもあるかな
>新規作成タグがなくなった
タグ??と思ったら、テンプレートのことかな?
https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-14-release-notes
Templates
Resolved in Xcode 14 Beta 3
The Cocoa AppleScript application template has been removed in Xcode 14. (20633478)
これのことでしょ?だったら、前のテンプレートを自分で調整して流用すればいいだけのようでもあるかな
833名称未設定
2022/07/12(火) 21:45:08.53ID:rTP1U/ED0 >>827
Beta だし。まだ間もないし。Cocoa AppleScript applicationなんての使ってるのはほとんどいないだろうし(すまんw)。対応方法をなんてWeb上でどこぞの誰かが書いてくれたのなんてまだ無いだろう
と思ったが、ダメ元でググったら、僅か1件(ググり方が悪いのかもしれないが)あった
https://scriptingosx.com/author/ab/
(からの
https://twitter.com/bynkii/status/1536763346237771778
)
とりあえずコピーだけでいいらしいよ
本当かは試してない。また、Xcode.appに突っ込むのではなく、~/Libraryか/Libraryの下の適切なとこにコピーでいいはずのだったような
https://twitter.com/5chan_nel (5ch newer account)
Beta だし。まだ間もないし。Cocoa AppleScript applicationなんての使ってるのはほとんどいないだろうし(すまんw)。対応方法をなんてWeb上でどこぞの誰かが書いてくれたのなんてまだ無いだろう
と思ったが、ダメ元でググったら、僅か1件(ググり方が悪いのかもしれないが)あった
https://scriptingosx.com/author/ab/
(からの
https://twitter.com/bynkii/status/1536763346237771778
)
とりあえずコピーだけでいいらしいよ
本当かは試してない。また、Xcode.appに突っ込むのではなく、~/Libraryか/Libraryの下の適切なとこにコピーでいいはずのだったような
https://twitter.com/5chan_nel (5ch newer account)
834名称未設定
2022/07/13(水) 08:10:41.20ID:hHg40Uc90835名称未設定
2022/07/14(木) 21:05:42.22ID:5EVwJpoP0 教えてください。
Safariの場合だと
do shell script "open -a Safari"
tell application "Safari"
tell front window
set bounds to {0, 0, 1000, 1000}
end tell
end tell
と書けばウインドウサイズを変更出来ますが、Tweetbotだと
Tweetbotでエラーが起きました: bounds of window 1を{0, 0, 1000, 1000}に設定できません。
と構文エラーになります。
うまくリサイズさせるにはどうさればいいのでしょうか?
Safariの場合だと
do shell script "open -a Safari"
tell application "Safari"
tell front window
set bounds to {0, 0, 1000, 1000}
end tell
end tell
と書けばウインドウサイズを変更出来ますが、Tweetbotだと
Tweetbotでエラーが起きました: bounds of window 1を{0, 0, 1000, 1000}に設定できません。
と構文エラーになります。
うまくリサイズさせるにはどうさればいいのでしょうか?
836名称未設定
2022/07/15(金) 00:58:33.06ID:GeWbnRH/0 >>835
Tweetbot が AppleScript に対応してないんじゃないの
https://gist.github.com/bewebste/3558576
とかあるけど、対応してないからっぽいけど
AppleScript に対応してないアプリでも System Eventsで可能ではる。いわゆる GUI scripting というので。上記のもそれ。Windowのぐらいだったら GUI scripting というほど変わりはそんなにないけど
Finderをサンプルにすると
・真っ当な(w)AppleScript
tell application "Finder"
set bounds of window 1 to {0, 23, 1000, 1000}
end tell
・GUI scriptingだと
tell application "System Events"
tell process "Finder"
set position of window 1 to {0, 23}
set size of window 1 to {1000, 1000}
end tell
end tell
(見れる触れるwindowオブジェクトの違いとかあるけど。まあ、そのやりたいことでは違いはなさそうだけど)
Tweetbot が AppleScript に対応してないんじゃないの
https://gist.github.com/bewebste/3558576
とかあるけど、対応してないからっぽいけど
AppleScript に対応してないアプリでも System Eventsで可能ではる。いわゆる GUI scripting というので。上記のもそれ。Windowのぐらいだったら GUI scripting というほど変わりはそんなにないけど
Finderをサンプルにすると
・真っ当な(w)AppleScript
tell application "Finder"
set bounds of window 1 to {0, 23, 1000, 1000}
end tell
・GUI scriptingだと
tell application "System Events"
tell process "Finder"
set position of window 1 to {0, 23}
set size of window 1 to {1000, 1000}
end tell
end tell
(見れる触れるwindowオブジェクトの違いとかあるけど。まあ、そのやりたいことでは違いはなさそうだけど)
837名称未設定
2022/07/15(金) 01:22:19.68ID:GeWbnRH/0 https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/AutomatetheUserInterface.html
Automating the User Interface
Unfortunately, not every Mac app has scripting support, and those that do may not always have scripting support for every task you want to automate. You can often work around such limitations, however, by writing a user interface script, commonly called a UI or GUI script. A user interface script simulates user interaction, such as mouse clicks and keystrokes, allowing the script to select menu items, push buttons, enter text into text fields, and more.
ちゃんとドキュメントあった。あったのねえということで
Automating the User Interface
Unfortunately, not every Mac app has scripting support, and those that do may not always have scripting support for every task you want to automate. You can often work around such limitations, however, by writing a user interface script, commonly called a UI or GUI script. A user interface script simulates user interaction, such as mouse clicks and keystrokes, allowing the script to select menu items, push buttons, enter text into text fields, and more.
ちゃんとドキュメントあった。あったのねえということで
838名称未設定
2022/07/15(金) 07:10:32.08ID:Xjc3wZxI0 >>836
教えていただいたコードの両方でエラーがでてリサイズ前にあぷりの起動もしませんでした。
前者のコードでのエラーは
アクション“AppleScriptを実行”でエラーが起きました: “System Eventsでエラーが起きました: process "Tweetbot"を{0, 23}に設定できません。”
System Eventsでエラーが起きました: process "Tweetbot"を{0, 23}に設定できません。
後者は
アクション“AppleScriptを実行”でエラーが起きました: “Tweetbotでエラーが起きました: bounds of window 1を{0, 23, 1000, 1000}に設定できません。”
Tweetbotでエラーが起きました: bounds of window 1を{0, 23, 1000, 1000}に設定できません。
です。
これはおっしゃる通りTweetbotがApplescriptに対応してないと考えた方がいいのでしょうかね。
教えていただいたコードの両方でエラーがでてリサイズ前にあぷりの起動もしませんでした。
前者のコードでのエラーは
アクション“AppleScriptを実行”でエラーが起きました: “System Eventsでエラーが起きました: process "Tweetbot"を{0, 23}に設定できません。”
System Eventsでエラーが起きました: process "Tweetbot"を{0, 23}に設定できません。
後者は
アクション“AppleScriptを実行”でエラーが起きました: “Tweetbotでエラーが起きました: bounds of window 1を{0, 23, 1000, 1000}に設定できません。”
Tweetbotでエラーが起きました: bounds of window 1を{0, 23, 1000, 1000}に設定できません。
です。
これはおっしゃる通りTweetbotがApplescriptに対応してないと考えた方がいいのでしょうかね。
839名称未設定
2022/07/15(金) 08:32:37.16ID:IjKKfs6p0 AppleScriptの適応はアプリ開発者が取捨選択して作り込むものだから全ての機能が全てのアプリで使えるというわけじゃないからな
用語説明に載ってないコマンドやプロパティはそのアプリでは基本的に使えないと考えて良い
用語説明に載ってないコマンドやプロパティはそのアプリでは基本的に使えないと考えて良い
840名称未設定
2022/07/15(金) 09:09:29.61ID:xqmvlrtP0 AppleScript 対応アプリとは、アプリを作る人がめっちゃ意識し、対応するコードを書きまくってやっとできる
AppleScript 非対応アプリに対する、System Events での GUI Scripting は、対象アプリが「全く」AppleScript を意識して書かれても(全く関するコード書いてなくても)、GUI Scripting によってアクセス操作できる
AppleScript 非対応アプリでも、applicationオブジェクトに対する基本的な操作、情報取得ができるのは同じような理由から
理由=AppleScript対応での操作対象はアプリコードが管理してるモノ、AppleScript非対応でも可能なのはOSが管理してる管理できるモノ
GUI Scriptingでも操作、情報取得できないのは、GUIパーツなどをCocoa APIを素直に使わず独自で構築してたりする特殊および稀になアプリぐらいでしかない
>>838
前後が逆だと思うが、GUI Scriptingで可能なんじゃないの。単にテストコードが失敗してるだけじゃないの
それか、Tweetbotがよほど特殊な作り方をしてるかだが、そんなことないんじゃないかなあ
GUI Scriptingのさわり(あのコードの意味、他のAppleScript非対応アプリに対して動いたかどうかとか)を理解してる?
AppleScript 非対応アプリに対する、System Events での GUI Scripting は、対象アプリが「全く」AppleScript を意識して書かれても(全く関するコード書いてなくても)、GUI Scripting によってアクセス操作できる
AppleScript 非対応アプリでも、applicationオブジェクトに対する基本的な操作、情報取得ができるのは同じような理由から
理由=AppleScript対応での操作対象はアプリコードが管理してるモノ、AppleScript非対応でも可能なのはOSが管理してる管理できるモノ
GUI Scriptingでも操作、情報取得できないのは、GUIパーツなどをCocoa APIを素直に使わず独自で構築してたりする特殊および稀になアプリぐらいでしかない
>>838
前後が逆だと思うが、GUI Scriptingで可能なんじゃないの。単にテストコードが失敗してるだけじゃないの
それか、Tweetbotがよほど特殊な作り方をしてるかだが、そんなことないんじゃないかなあ
GUI Scriptingのさわり(あのコードの意味、他のAppleScript非対応アプリに対して動いたかどうかとか)を理解してる?
841名称未設定
2022/07/15(金) 09:34:38.13ID:xqmvlrtP0 >>840
>対象アプリが「全く」AppleScript を意識して書かれても
対象アプリが「全く」AppleScript を意識してなく書かれても
AppleScript対応してるかどうかは、スクリプトエディタのライブラリに対象アプリを追加してみるといいよ
追加できれば AppleScript 対応、AppleScript 非対応であれば
項目を追加
この項目はスクリプトに対応していないため、追加できません
(とかって)と出るから
繰り返すけど、AppleScript 非対応でも GUI Scripting でアクセス操作可能なのがほとんど。AppleScript対応非対応とは別に、GUI Scripting でもアクセス操作できない変な作りのアプリwかどうかって話になるね
>対象アプリが「全く」AppleScript を意識して書かれても
対象アプリが「全く」AppleScript を意識してなく書かれても
AppleScript対応してるかどうかは、スクリプトエディタのライブラリに対象アプリを追加してみるといいよ
追加できれば AppleScript 対応、AppleScript 非対応であれば
項目を追加
この項目はスクリプトに対応していないため、追加できません
(とかって)と出るから
繰り返すけど、AppleScript 非対応でも GUI Scripting でアクセス操作可能なのがほとんど。AppleScript対応非対応とは別に、GUI Scripting でもアクセス操作できない変な作りのアプリwかどうかって話になるね
842名称未設定
2022/07/15(金) 09:51:52.90ID:Xjc3wZxI0 お二人さんレスありがとうございます。
理由はわかりませんが GUI scriptingだと の方でリサイズができるようになったようです。
最初やってた時はだめだったのですが。
ちゃんと動いてくれて大変助かります。
詳しいレスをいただきありがとうございました。
理由はわかりませんが GUI scriptingだと の方でリサイズができるようになったようです。
最初やってた時はだめだったのですが。
ちゃんと動いてくれて大変助かります。
詳しいレスをいただきありがとうございました。
843名称未設定
2022/07/15(金) 10:14:30.92ID:kd6g65vO0 全く何も理解しようとしなさげ
844名称未設定
2022/07/21(木) 09:28:55.96ID:la0xntoz0 よく理解できてなくても使える
それがAppleScript
だけどそれじゃ限界あるのよね
修業あるのみ
それがAppleScript
だけどそれじゃ限界あるのよね
修業あるのみ
845名称未設定
2022/07/26(火) 18:57:27.86ID:5rzKifzk0 run script "//
ObjC.import('CoreGraphics')
ObjC.bindFunction('_CGSDefaultConnection', ['int', []])
ObjC.bindFunction('CGSCopyManagedDisplaySpaces', ['id', ['int']])
result = (result = ObjC.deepUnwrap( $.CGSCopyManagedDisplaySpaces($._CGSDefaultConnection()))) == undefined ? null : result
" in "JavaScript"
ObjC.import('CoreGraphics')
ObjC.bindFunction('_CGSDefaultConnection', ['int', []])
ObjC.bindFunction('CGSCopyManagedDisplaySpaces', ['id', ['int']])
result = (result = ObjC.deepUnwrap( $.CGSCopyManagedDisplaySpaces($._CGSDefaultConnection()))) == undefined ? null : result
" in "JavaScript"
846名称未設定
2022/07/26(火) 18:57:54.72ID:5rzKifzk0 run script "//
(() => {
ObjC.import('CoreGraphics')
ObjC.bindFunction('_CGSDefaultConnection', ['int', []])
ObjC.bindFunction('CGSCopyManagedDisplaySpaces', ['id', ['int']])
if((spaces = ObjC.deepUnwrap($.CGSCopyManagedDisplaySpaces($._CGSDefaultConnection()))) == undefined)
return null
const currentSpaceID = spaces[0]['Current Space'].ManagedSpaceID
let numDesktops = 0
let currentSpaceNum = undefined
let simpleSpaces = spaces[0].Spaces.reduce((result, space) => {
let name = null
let appName = null
if(space.type == 0)
name = 'Desktop ' + (++numDesktops)
else if(space.type == 4){
name = space.TileLayoutManager.TileSpaces[0].name
appName = space.TileLayoutManager.TileSpaces[0].appName
}
result.push({ name: name, appName: appName })
if(space.ManagedSpaceID == currentSpaceID)
currentSpaceNum = result.length
return result
}, [])
return {currentNumber: currentSpaceNum, spaces: simpleSpaces}
})()
" in "JavaScript"
(() => {
ObjC.import('CoreGraphics')
ObjC.bindFunction('_CGSDefaultConnection', ['int', []])
ObjC.bindFunction('CGSCopyManagedDisplaySpaces', ['id', ['int']])
if((spaces = ObjC.deepUnwrap($.CGSCopyManagedDisplaySpaces($._CGSDefaultConnection()))) == undefined)
return null
const currentSpaceID = spaces[0]['Current Space'].ManagedSpaceID
let numDesktops = 0
let currentSpaceNum = undefined
let simpleSpaces = spaces[0].Spaces.reduce((result, space) => {
let name = null
let appName = null
if(space.type == 0)
name = 'Desktop ' + (++numDesktops)
else if(space.type == 4){
name = space.TileLayoutManager.TileSpaces[0].name
appName = space.TileLayoutManager.TileSpaces[0].appName
}
result.push({ name: name, appName: appName })
if(space.ManagedSpaceID == currentSpaceID)
currentSpaceNum = result.length
return result
}, [])
return {currentNumber: currentSpaceNum, spaces: simpleSpaces}
})()
" in "JavaScript"
847名称未設定
2022/07/28(木) 19:04:47.66ID:H/GGiQZA0 run script "//
ObjC.import('CoreGraphics')
ObjC.bindFunction('SLSMainConnectionID', ['int', []])
ObjC.bindFunction('SLSCopyManagedDisplaySpaces', ['id', ['int']])
result = (result = ObjC.deepUnwrap( $.SLSCopyManagedDisplaySpaces($.SLSMainConnectionID()))) == undefined ? null : result
" in "JavaScript"
ObjC.import('CoreGraphics')
ObjC.bindFunction('SLSMainConnectionID', ['int', []])
ObjC.bindFunction('SLSCopyManagedDisplaySpaces', ['id', ['int']])
result = (result = ObjC.deepUnwrap( $.SLSCopyManagedDisplaySpaces($.SLSMainConnectionID()))) == undefined ? null : result
" in "JavaScript"
848名称未設定
2022/08/03(水) 01:44:35.54ID:0bp/Cggr0 // Mission Control で Current Space の指定移動
ObjC.import('AppKit')
ObjC.bindFunction('SLSMainConnectionID', ['int', []])
ObjC.bindFunction('SLSCopyManagedDisplaySpaces', ['id', ['int']])
function spacesInfo() {
let spaces = ObjC.deepUnwrap($.SLSCopyManagedDisplaySpaces($.SLSMainConnectionID()))
if(spaces == undefined)
return undefined
const currentSpaceID = spaces[0]['Current Space'].ManagedSpaceID
let numDesktops = 0
return spaces[0].Spaces.reduce((result, space) => {
let name = undefined, appName = undefined
if(space.type == 0)
name = "Desktop " + (++numDesktops)
else if(space.type == 4){
const deepInfo = space.TileLayoutManager.TileSpaces[0]
name = deepInfo.name
appName = deepInfo.appName
}
result.spaces.push({ name:name, appName:appName })
if(space.ManagedSpaceID == currentSpaceID)
result.currentNumber = result.spaces.length
return result
}, { currentNumber:undefined, spaces:[] })
}
ObjC.import('AppKit')
ObjC.bindFunction('SLSMainConnectionID', ['int', []])
ObjC.bindFunction('SLSCopyManagedDisplaySpaces', ['id', ['int']])
function spacesInfo() {
let spaces = ObjC.deepUnwrap($.SLSCopyManagedDisplaySpaces($.SLSMainConnectionID()))
if(spaces == undefined)
return undefined
const currentSpaceID = spaces[0]['Current Space'].ManagedSpaceID
let numDesktops = 0
return spaces[0].Spaces.reduce((result, space) => {
let name = undefined, appName = undefined
if(space.type == 0)
name = "Desktop " + (++numDesktops)
else if(space.type == 4){
const deepInfo = space.TileLayoutManager.TileSpaces[0]
name = deepInfo.name
appName = deepInfo.appName
}
result.spaces.push({ name:name, appName:appName })
if(space.ManagedSpaceID == currentSpaceID)
result.currentNumber = result.spaces.length
return result
}, { currentNumber:undefined, spaces:[] })
}
849名称未設定
2022/08/03(水) 01:45:28.91ID:0bp/Cggr0 function switchSpaceBy(spaceNumberer){
const spaces = spacesInfo()
if(spaces == undefined)
return false
const currentSpaceNum = spaces.currentNumber
if(currentSpaceNum == undefined)
return false
const spaceNum = spaceNumberer(spaces.spaces)
if(spaceNum == 0)
return false
if(spaceNum == currentSpaceNum)
return true
let keyCode, slideSteps
if(spaceNum < currentSpaceNum)
keyCode = 123, numSlides = currentSpaceNum - spaceNum
else
keyCode = 124, numSlides = spaceNum - currentSpaceNum
{ // wait release all modifiers key in real keyboard, for space slide moving keyboard shortcut control+[←→] simulation
const kAllModifiers = $.NSShiftKeyMask | $.NSControlKeyMask | $.NSAlternateKeyMask | $. NSCommandKeyMask
const NSEvent = $.NSEvent
const timeoutTime = Date.now() + 10 * 1000
while(Date.now() <= timeoutTime){
if((NSEvent.modifierFlags & kAllModifiers) == 0)
break
delay(0.05)
}
if(Date.now() > timeoutTime)
return false
}
Application('System Events').keyCode((new Array(numSlides)).fill(keyCode), { using: ['control down'] })
const spaces = spacesInfo()
if(spaces == undefined)
return false
const currentSpaceNum = spaces.currentNumber
if(currentSpaceNum == undefined)
return false
const spaceNum = spaceNumberer(spaces.spaces)
if(spaceNum == 0)
return false
if(spaceNum == currentSpaceNum)
return true
let keyCode, slideSteps
if(spaceNum < currentSpaceNum)
keyCode = 123, numSlides = currentSpaceNum - spaceNum
else
keyCode = 124, numSlides = spaceNum - currentSpaceNum
{ // wait release all modifiers key in real keyboard, for space slide moving keyboard shortcut control+[←→] simulation
const kAllModifiers = $.NSShiftKeyMask | $.NSControlKeyMask | $.NSAlternateKeyMask | $. NSCommandKeyMask
const NSEvent = $.NSEvent
const timeoutTime = Date.now() + 10 * 1000
while(Date.now() <= timeoutTime){
if((NSEvent.modifierFlags & kAllModifiers) == 0)
break
delay(0.05)
}
if(Date.now() > timeoutTime)
return false
}
Application('System Events').keyCode((new Array(numSlides)).fill(keyCode), { using: ['control down'] })
850名称未設定
2022/08/03(水) 01:46:07.54ID:0bp/Cggr0 { // wait for real changing current space
const timeoutTime = Date.now() + 1.5 * 1000
while(Date.now() <= timeoutTime){
if(spacesInfo().currentNumber != currentSpaceNum)
break
delay(0.05)
}
}
return (spaceNum == spacesInfo().currentNumber)
}
function switchSpaceTo(nameOrNumber, appName){
if(typeof nameOrNumber.regex == 'string')
nameOrNumber = new RegExp(nameOrNumber.regex)
if(nameOrNumber.constructor.name == 'Number'){
if(appName == undefined)
spaceNumberer = (spaces) => nameOrNumber
else{
let remainNumber = nameOrNumber
spaceNumberer = (spaces) => spaces.findIndex((space) => space.appName == appName && --remainNumber == 0) + 1
}
}
else if(nameOrNumber instanceof RegExp)
spaceNumberer = (spaces) => spaces.findIndex((space) => nameOrNumber.test(space.name) && (appName == undefined || space.appName == appName)) + 1
else{
const spaceName = nameOrNumber.toString()
spaceNumberer = (spaces) => spaces.findIndex((space) => space.name == spaceName && (appName == undefined || space.appName == appName)) + 1
}
return switchSpaceBy(spaceNumberer)
}
const timeoutTime = Date.now() + 1.5 * 1000
while(Date.now() <= timeoutTime){
if(spacesInfo().currentNumber != currentSpaceNum)
break
delay(0.05)
}
}
return (spaceNum == spacesInfo().currentNumber)
}
function switchSpaceTo(nameOrNumber, appName){
if(typeof nameOrNumber.regex == 'string')
nameOrNumber = new RegExp(nameOrNumber.regex)
if(nameOrNumber.constructor.name == 'Number'){
if(appName == undefined)
spaceNumberer = (spaces) => nameOrNumber
else{
let remainNumber = nameOrNumber
spaceNumberer = (spaces) => spaces.findIndex((space) => space.appName == appName && --remainNumber == 0) + 1
}
}
else if(nameOrNumber instanceof RegExp)
spaceNumberer = (spaces) => spaces.findIndex((space) => nameOrNumber.test(space.name) && (appName == undefined || space.appName == appName)) + 1
else{
const spaceName = nameOrNumber.toString()
spaceNumberer = (spaces) => spaces.findIndex((space) => space.name == spaceName && (appName == undefined || space.appName == appName)) + 1
}
return switchSpaceBy(spaceNumberer)
}
851名称未設定
2022/08/03(水) 02:00:41.04ID:0bp/Cggr0 switchSpaceTo('Desktop 2')
switchSpaceTo(2)
switchSpaceTo(/^Desk.*2$/)
switchSpaceTo('Apple(日本)')
switchSpaceTo(1, 'Safari')
switchSpaceTo('Apple(日本)', 'Safari')
Spaces.scpt を Script Library に突っ込んで、
Spaces = Library('Spaces')
Spaces.switchSpaceTo('Desktop 2')
Spaces.switchSpaceTo(2)
Spaces.switchSpaceTo(/^Desk.*2$/)
なんだが、Library()越しだとRegExpが変な物に変換されて使えない。代わりに
Spaces.switchSpaceTo({ regex:'^Desk.*2$'})
app = Application.currentApplication()
app.includeStandardAdditions = true
eval(app.doShellScript('osadecompile "$HOME/Library/Script Libraries/Spaces.scpt"'))
switchSpaceTo(/^Desk.*2$/)
なんて方法もあるけど...
switchSpaceTo(2)
switchSpaceTo(/^Desk.*2$/)
switchSpaceTo('Apple(日本)')
switchSpaceTo(1, 'Safari')
switchSpaceTo('Apple(日本)', 'Safari')
Spaces.scpt を Script Library に突っ込んで、
Spaces = Library('Spaces')
Spaces.switchSpaceTo('Desktop 2')
Spaces.switchSpaceTo(2)
Spaces.switchSpaceTo(/^Desk.*2$/)
なんだが、Library()越しだとRegExpが変な物に変換されて使えない。代わりに
Spaces.switchSpaceTo({ regex:'^Desk.*2$'})
app = Application.currentApplication()
app.includeStandardAdditions = true
eval(app.doShellScript('osadecompile "$HOME/Library/Script Libraries/Spaces.scpt"'))
switchSpaceTo(/^Desk.*2$/)
なんて方法もあるけど...
852名称未設定
2022/08/03(水) 02:09:35.10ID:0bp/Cggr0 spacesInfo 以外は AppleScript でも書ける。けど、AppleScriptをJXAに書き換えても普通はそれほど変わりは無いが、明らかに今回のようなのはJavascriptに利があるので
AppleScriptでは
set spaceName to "Desktop 2"
run script "//
Spaces = Library('Spaces')
Spaces.switchSpaceTo('" & spaceName & "')
" in "JavaScript"
とかで
Spaceの直接の移動方法のAPIがない/見つからない、しょうがないからスライド移動 control+←→ の連打でなんだが、結構いい感じだったので自慢w発表
(結構いい感じ=ちゃんと目的のSpaceまでの一度の動き=いくら距離が短くても長くてもトランジッション時間が同じ)
AppleScriptでは
set spaceName to "Desktop 2"
run script "//
Spaces = Library('Spaces')
Spaces.switchSpaceTo('" & spaceName & "')
" in "JavaScript"
とかで
Spaceの直接の移動方法のAPIがない/見つからない、しょうがないからスライド移動 control+←→ の連打でなんだが、結構いい感じだったので自慢w発表
(結構いい感じ=ちゃんと目的のSpaceまでの一度の動き=いくら距離が短くても長くてもトランジッション時間が同じ)
853名称未設定
2022/08/04(木) 23:00:24.53ID:qJcrVAot0 defaults read com.apple.spaces で見れるcurrent spaceってなんで現在のデスクトップが反映されないんですかね?
新しいデスクトップを追加したらちゃんと動きます。
defaults read com.apple.spaces | plutil -convert json - -o - | jq '.SpacesDisplayConfiguration'
新しいデスクトップを追加したらちゃんと動きます。
defaults read com.apple.spaces | plutil -convert json - -o - | jq '.SpacesDisplayConfiguration'
854名称未設定
2022/08/05(金) 00:47:56.48ID:8LBdm4iN0 それな
まあ、書き込むタイミングが現在のデスクトップが変わるタイミングではないってだけだろう
設定保存しても使われない、Dockが起動した時に保存されたとこから始まるわけでもないし。その項目はなんとなく保存してるだけwだろう
まあ、書き込むタイミングが現在のデスクトップが変わるタイミングではないってだけだろう
設定保存しても使われない、Dockが起動した時に保存されたとこから始まるわけでもないし。その項目はなんとなく保存してるだけwだろう
855名称未設定
2022/08/05(金) 16:14:18.44ID:wF2CiFWb0 >>854
これどうにかならないんですか?
com.apple.spaces.plistに書き込みをしたり、CLIでデスクトップの追加&削除ができれば(←これは無理そう)解決できそうなんですけど...
これどうにかならないんですか?
com.apple.spaces.plistに書き込みをしたり、CLIでデスクトップの追加&削除ができれば(←これは無理そう)解決できそうなんですけど...
856名称未設定
2022/08/05(金) 17:43:43.18ID:wF2CiFWb0 そもそも、swift以外でplistへの書き込みってできますか?
857名称未設定
2022/08/05(金) 17:47:50.22ID:xMXhQz5E0 アプリ(Dock.appかな)が必要がないからというのだろうから、Appleにそうしてと言うしかないだろ、Bug Reportで
別にPreferences/NSUserDefaultsのは随時じゃなければならないなんて決まりはないよ。アプリ終了時に一度だけというのもあってもおかしくないし、外部からの変更に対して対応するってのも全くもって任意でしかない
そもそも、Spacesのは全くもって未公開/APIもまだアンドキュメントだから「使えそうだから」とAppleに言っても無理だな
別にPreferences/NSUserDefaultsのは随時じゃなければならないなんて決まりはないよ。アプリ終了時に一度だけというのもあってもおかしくないし、外部からの変更に対して対応するってのも全くもって任意でしかない
そもそも、Spacesのは全くもって未公開/APIもまだアンドキュメントだから「使えそうだから」とAppleに言っても無理だな
858名称未設定
2022/08/05(金) 17:51:56.65ID:xMXhQz5E0 >>856
Preferencesのは、cfprefsdでメモリキャッシュされてるのは知ってるよね
OSのAPIであるNSUserDefaultsはもちろんcfprefsdを介して(そうでないと辻褄が合わんからな)、defaultsコマンドもcfprefsdに対して(というか、NSUserDefaultsか同等のCoreのを使って)
Swiftでなくても、NSUserDefaultsはAppleScriptObjCで使えるよ。JXAでなくても
Preferencesのは、cfprefsdでメモリキャッシュされてるのは知ってるよね
OSのAPIであるNSUserDefaultsはもちろんcfprefsdを介して(そうでないと辻褄が合わんからな)、defaultsコマンドもcfprefsdに対して(というか、NSUserDefaultsか同等のCoreのを使って)
Swiftでなくても、NSUserDefaultsはAppleScriptObjCで使えるよ。JXAでなくても
859名称未設定
2022/08/05(金) 18:08:23.80ID:wF2CiFWb0 >>858
勉強不足でしりませんでした。
Spacemanというmenubar常駐のアプリ(https://github.com/Jaysce/Spaceman/blob/main/Spaceman/Helpers/SpaceObserver.swift)ではリアルタイムにSpaceのナンバーが反映されるんですよね。
このソースを見ると、defaults.set(try? PropertyListEncoder().encode(updatedDict), forKey: "spaceNames")と、delegate?.didUpdateSpaces(spaces: allSpaces)でplistを更新していると思われます。これをAppleScriptまたはJavaScriptで真似したいんですけど、plistの更新するところがよく分かっていません。どうすればいいかヒントくださいませんか
勉強不足でしりませんでした。
Spacemanというmenubar常駐のアプリ(https://github.com/Jaysce/Spaceman/blob/main/Spaceman/Helpers/SpaceObserver.swift)ではリアルタイムにSpaceのナンバーが反映されるんですよね。
このソースを見ると、defaults.set(try? PropertyListEncoder().encode(updatedDict), forKey: "spaceNames")と、delegate?.didUpdateSpaces(spaces: allSpaces)でplistを更新していると思われます。これをAppleScriptまたはJavaScriptで真似したいんですけど、plistの更新するところがよく分かっていません。どうすればいいかヒントくださいませんか
860名称未設定
2022/08/05(金) 19:11:34.55ID:oWydA2CH0 >>859
チラ読みだが、
private let defaults = UserDefaults.standard
しかないようだから、「Spacemanの」設定ファイルに対してじゃないの
その下の init() のところを見ると、システム通知を受けてるなあと、そのまた下を見たら、CGSCopyManagedDisplaySpaces 使ってるやんけっ
勉強してから色々言って欲しいな。今のではただの妄想で言われてもwって感じ
チラ読みだが、
private let defaults = UserDefaults.standard
しかないようだから、「Spacemanの」設定ファイルに対してじゃないの
その下の init() のところを見ると、システム通知を受けてるなあと、そのまた下を見たら、CGSCopyManagedDisplaySpaces 使ってるやんけっ
勉強してから色々言って欲しいな。今のではただの妄想で言われてもwって感じ
861名称未設定
2022/08/05(金) 19:39:15.16ID:oWydA2CH0 の前の
private let conn = _CGSDefaultConnection()
の段階で、バリバリ非公開Spaces API使うつもり満々と読めたなw
ちなみに、
_CGSDefaultConnection、CGSCopyManagedDisplaySpaces は非公開でも古いらしい。変わって、SLSMainConnectionID、SLSCopyManagedDisplaySpaces が、SkyLight (説頭のSLだな)というかっちょいい名前wのフレームワークに収められてる。動作は同じ
全然AppleScriptと関係ないなw
private let conn = _CGSDefaultConnection()
の段階で、バリバリ非公開Spaces API使うつもり満々と読めたなw
ちなみに、
_CGSDefaultConnection、CGSCopyManagedDisplaySpaces は非公開でも古いらしい。変わって、SLSMainConnectionID、SLSCopyManagedDisplaySpaces が、SkyLight (説頭のSLだな)というかっちょいい名前wのフレームワークに収められてる。動作は同じ
全然AppleScriptと関係ないなw
862名称未設定
2022/08/05(金) 20:13:06.80ID:wF2CiFWb0 >>861
なんも伝わりません
なんも伝わりません
863名称未設定
2022/08/05(金) 20:16:45.66ID:oWydA2CH0 そりゃ、何もわからないんだもんな
勉強する気は全くないようだな、がっかりだよw
勉強する気は全くないようだな、がっかりだよw
864名称未設定
2022/08/05(金) 20:18:55.09ID:tEGhU8Oz0 AppleScript ほぼ関係ないじゃん
865名称未設定
2022/08/05(金) 20:21:06.06ID:oWydA2CH0 全然関係ないよ。「僕が発見した方法」に拘ってるだけ
それは違うよという話でしかない
AppleScript関連はこれっぽちもないw
それは違うよという話でしかない
AppleScript関連はこれっぽちもないw
866名称未設定
2022/08/05(金) 20:54:38.40ID:wF2CiFWb0 なんかよくわからんけど、これでCurrent Spaceがちゃんと反映されるようになりましたw
あざすw
ObjC.bindFunction('SLSMainConnectionID', ['int', []])
ObjC.bindFunction('SLSCopyManagedDisplaySpaces', ['id', ['int']])
let spaces = ObjC.deepUnwrap($.SLSCopyManagedDisplaySpaces($.SLSMainConnectionID()))
const currentSpaceID = spaces[0]['Current Space'].ManagedSpaceID
あざすw
ObjC.bindFunction('SLSMainConnectionID', ['int', []])
ObjC.bindFunction('SLSCopyManagedDisplaySpaces', ['id', ['int']])
let spaces = ObjC.deepUnwrap($.SLSCopyManagedDisplaySpaces($.SLSMainConnectionID()))
const currentSpaceID = spaces[0]['Current Space'].ManagedSpaceID
867名称未設定
2022/08/05(金) 20:58:02.09ID:wF2CiFWb0868名称未設定
2022/08/05(金) 21:16:39.29ID:iMqm6i+x0 稚拙で拙速
869名称未設定
2022/08/05(金) 21:26:16.91ID:wF2CiFWb0 >>868
あなたならどう書くのですか?
あなたならどう書くのですか?
870名称未設定
2022/08/05(金) 21:30:11.45ID:iMqm6i+x0 自ら解決したのは皆無なのにプライドだけは高い
稚拙で拙速になるよねえ
稚拙で拙速になるよねえ
871名称未設定
2022/08/07(日) 07:06:37.56ID:IuDEutXv0 全てのウィンドウを現在のデスクトップに。Dockにしまったのも対象内、フルスクリーン表示 のは対象外
(なんかmacOSの標準オペレーションでできたと思ったんだが)
やってることは「このデスクトップ」にしてから「なし」にしてるだけ
property kOptionsMenuItemName : "Options"
property kAllDesktopsAssignName : "All Desktops"
property kThisDesktopAssignName : "This Desktop"
property kNoneAssignName : "None"
on allWindowsToThisDesktop(appName)
tell application "System Events" to tell process "Dock"
set docItem to a reference to (UI element appName of first list)
if exists docItem then tell docItem
perform action "AXShowMenu"
click menu item kOptionsMenuItemName of first menu
click (menu item kThisDesktopAssignName of menu of menu item kOptionsMenuItemName of first menu)
perform action "AXShowMenu"
click menu item kOptionsMenuItemName of first menu
click (menu item kNoneAssignName of menu of menu item kOptionsMenuItemName of first menu)
end tell
end tell
end allWindowsToThisDesktop
(なんかmacOSの標準オペレーションでできたと思ったんだが)
やってることは「このデスクトップ」にしてから「なし」にしてるだけ
property kOptionsMenuItemName : "Options"
property kAllDesktopsAssignName : "All Desktops"
property kThisDesktopAssignName : "This Desktop"
property kNoneAssignName : "None"
on allWindowsToThisDesktop(appName)
tell application "System Events" to tell process "Dock"
set docItem to a reference to (UI element appName of first list)
if exists docItem then tell docItem
perform action "AXShowMenu"
click menu item kOptionsMenuItemName of first menu
click (menu item kThisDesktopAssignName of menu of menu item kOptionsMenuItemName of first menu)
perform action "AXShowMenu"
click menu item kOptionsMenuItemName of first menu
click (menu item kNoneAssignName of menu of menu item kOptionsMenuItemName of first menu)
end tell
end tell
end allWindowsToThisDesktop
872名称未設定
2022/08/07(日) 07:08:39.80ID:IuDEutXv0 煩くない 版
on allWindowsToThisDesktop(appName)
run script "//
((appName) => {
ObjC.import('CoreGraphics')
ObjC.bindFunction('SLSMainConnectionID', ['int', []])
ObjC.bindFunction('SLSCopyManagedDisplaySpaces', ['id', ['int']])
ObjC.bindFunction('SLSProcessAssignToSpace', ['void', ['int', 'long', 'long']])
try{
const pid = Application('System Events').processes.whose({ _or: [{ name: appName }, { bundleIdentifier: appName }] })()[0].unixId()
const spaceID = $.SLSCopyManagedDisplaySpaces($.SLSMainConnectionID()).objectAtIndex(0).objectForKey('Current Space').objectForKey('id64').js
$.SLSProcessAssignToSpace($.SLSMainConnectionID(), pid, spaceID)
$.SLSProcessAssignToSpace($.SLSMainConnectionID(), pid, 0)
}
catch(e){
return e.toString()
}
return 'success'
})('" & appName & "')
" in "JavaScript"
end allWindowsToThisDesktop
on allWindowsToThisDesktop(appName)
run script "//
((appName) => {
ObjC.import('CoreGraphics')
ObjC.bindFunction('SLSMainConnectionID', ['int', []])
ObjC.bindFunction('SLSCopyManagedDisplaySpaces', ['id', ['int']])
ObjC.bindFunction('SLSProcessAssignToSpace', ['void', ['int', 'long', 'long']])
try{
const pid = Application('System Events').processes.whose({ _or: [{ name: appName }, { bundleIdentifier: appName }] })()[0].unixId()
const spaceID = $.SLSCopyManagedDisplaySpaces($.SLSMainConnectionID()).objectAtIndex(0).objectForKey('Current Space').objectForKey('id64').js
$.SLSProcessAssignToSpace($.SLSMainConnectionID(), pid, spaceID)
$.SLSProcessAssignToSpace($.SLSMainConnectionID(), pid, 0)
}
catch(e){
return e.toString()
}
return 'success'
})('" & appName & "')
" in "JavaScript"
end allWindowsToThisDesktop
873名称未設定
2022/08/07(日) 07:13:10.37ID:IuDEutXv0 日本語環境だと
property kOptionsMenuItemName : "オプション"
property kAllDesktopsAssignName : "すべてのデスクトップ"
property kThisDesktopAssignName : "このデスクトップ"
property kNoneAssignName : "なし"
だと思う
煩くない 版 は、「なし」にしてるアプリに対して使った方がいいかな。大して問題ではない、単なる気分的な問題wでなんだが
property kOptionsMenuItemName : "オプション"
property kAllDesktopsAssignName : "すべてのデスクトップ"
property kThisDesktopAssignName : "このデスクトップ"
property kNoneAssignName : "なし"
だと思う
煩くない 版 は、「なし」にしてるアプリに対して使った方がいいかな。大して問題ではない、単なる気分的な問題wでなんだが
874名称未設定
2022/08/07(日) 16:25:05.83ID:xxNdxPSn0 暇なので作ってみた、DynamicDesktopに対応していない旧MacOS用DynamicDesktopもどき
FileListで与えられたファイル名の付加部分(4文字)と時刻(hhmm)を比較して
その時間を過ぎていたら、そのファイル名のデスクトップ画像に設定する
一番目より前の時刻の場合は最後の画像を採用する
画像フォルダは "~/Pictures" からの相対パス
各時刻で読み込まれるファイルは
"~/Pictures/[画像フォルダ名]/[画像ファイル名の共通部分]-[hhmm].[表示画像の拡張子]"
以下のProperty Listを"~/Pictures/DynamicDesktop.plist"に保存
FileListで与えられたファイル名の付加部分(4文字)と時刻(hhmm)を比較して
その時間を過ぎていたら、そのファイル名のデスクトップ画像に設定する
一番目より前の時刻の場合は最後の画像を採用する
画像フォルダは "~/Pictures" からの相対パス
各時刻で読み込まれるファイルは
"~/Pictures/[画像フォルダ名]/[画像ファイル名の共通部分]-[hhmm].[表示画像の拡張子]"
以下のProperty Listを"~/Pictures/DynamicDesktop.plist"に保存
875名称未設定
2022/08/07(日) 16:27:12.79ID:xxNdxPSn0 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BasePath</key>
<string>[画像フォルダ名]</string>
<key>BaseName</key>
<string>[画像ファイル名の共通部分]</string>
<key>FileList</key>
<array>
<!-- 時刻(hhmm)を昇順で記述 -->
<string>0200</string>
<string>0600</string>
<string>1000</string>
<string>2200</string>
</array>
<!-- 表示画像の拡張子 -->
<key>extension</key>
<string>png</string>
</dict>
</plist>
AppleScriptを実行専用アプリ(DynamicDesktop)で保存してターミナルからcrontab -eで以下の行を追加
(1時間毎に実行の場合)
0 * * * * /Applications/DynamicDesktop.app/Contents/MacOS/applet
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BasePath</key>
<string>[画像フォルダ名]</string>
<key>BaseName</key>
<string>[画像ファイル名の共通部分]</string>
<key>FileList</key>
<array>
<!-- 時刻(hhmm)を昇順で記述 -->
<string>0200</string>
<string>0600</string>
<string>1000</string>
<string>2200</string>
</array>
<!-- 表示画像の拡張子 -->
<key>extension</key>
<string>png</string>
</dict>
</plist>
AppleScriptを実行専用アプリ(DynamicDesktop)で保存してターミナルからcrontab -eで以下の行を追加
(1時間毎に実行の場合)
0 * * * * /Applications/DynamicDesktop.app/Contents/MacOS/applet
876名称未設定
2022/08/07(日) 16:29:06.15ID:xxNdxPSn0 全角/は半角にする(ここに書き込めない)
-- ホームパス
set myPath to (path to home folder) as text
set PosixMyPath to POSIX path of myPath
-- PropertyList Path
set thePropertyListFilePath to PosixMyPath & "/Pictures/DynamicDesktop.plist"
tell application "System Events"
tell property list file thePropertyListFilePath
-- フォルダパス
set BaseDir to value of property list item "BasePath"
-- ファイル名の共通部分
set BaseName to value of property list item "BaseName"
-- 時刻ごとのファイル名付加部分
set TimeList to value of property list item "FileList"
-- 表示画像の拡張子
set extStr to value of property list item "extension"
end tell
end tell
set BaseDir to PosixMyPath & "/Pictures/" & BaseDir & "/"
set extStr to "." & extStr
-- ホームパス
set myPath to (path to home folder) as text
set PosixMyPath to POSIX path of myPath
-- PropertyList Path
set thePropertyListFilePath to PosixMyPath & "/Pictures/DynamicDesktop.plist"
tell application "System Events"
tell property list file thePropertyListFilePath
-- フォルダパス
set BaseDir to value of property list item "BasePath"
-- ファイル名の共通部分
set BaseName to value of property list item "BaseName"
-- 時刻ごとのファイル名付加部分
set TimeList to value of property list item "FileList"
-- 表示画像の拡張子
set extStr to value of property list item "extension"
end tell
end tell
set BaseDir to PosixMyPath & "/Pictures/" & BaseDir & "/"
set extStr to "." & extStr
877名称未設定
2022/08/07(日) 16:29:35.02ID:xxNdxPSn0 -- 現在時刻
set TimeStr to time string of (current date) as text
-- 時刻がzero suppressされている場合
if length of TimeStr < 8 then
set TimeStr to "0" & TimeStr
end if
-- hh:mm:ss -> hhmm
set TimeHour to text 1 thru 2 of TimeStr & text 4 thru 5 of TimeStr
set maxItem to length of TimeList
-- 最後のファイル名を設定する
set DDPath to BaseDir & BaseName & "-" & item maxItem of TimeList & extStr
-- display dialog curPath
repeat with idx from maxItem to 1 by -1
set curItem to item idx of TimeList
set curPath to BaseDir & BaseName & "-" & curItem & extStr
if curItem ≤ TimeHour then
set DDPath to curPath as text
exit repeat
end if
end repeat
-- display dialog DDPath
changeDesktopPicture(DDPath)
-- return DDPath
set TimeStr to time string of (current date) as text
-- 時刻がzero suppressされている場合
if length of TimeStr < 8 then
set TimeStr to "0" & TimeStr
end if
-- hh:mm:ss -> hhmm
set TimeHour to text 1 thru 2 of TimeStr & text 4 thru 5 of TimeStr
set maxItem to length of TimeList
-- 最後のファイル名を設定する
set DDPath to BaseDir & BaseName & "-" & item maxItem of TimeList & extStr
-- display dialog curPath
repeat with idx from maxItem to 1 by -1
set curItem to item idx of TimeList
set curPath to BaseDir & BaseName & "-" & curItem & extStr
if curItem ≤ TimeHour then
set DDPath to curPath as text
exit repeat
end if
end repeat
-- display dialog DDPath
changeDesktopPicture(DDPath)
-- return DDPath
878名称未設定
2022/08/07(日) 16:29:58.41ID:xxNdxPSn0 -- サブルーチン:
-- デスクトップ画像を所定のファイルに変更する
on changeDesktopPicture(aFilePath)
tell application "Finder"
try
set desktop picture to POSIX file (aFilePath)
on error
"ファイルが見つかりません。" & return & return
display dialog result & aFilePath
end try
end tell
end changeDesktopPicture
-- デスクトップ画像を所定のファイルに変更する
on changeDesktopPicture(aFilePath)
tell application "Finder"
try
set desktop picture to POSIX file (aFilePath)
on error
"ファイルが見つかりません。" & return & return
display dialog result & aFilePath
end try
end tell
end changeDesktopPicture
879名称未設定
2022/08/10(水) 17:40:44.99ID:kbVMG7lC0 illustratorのJXAでテキストフレームをuuidで指定する方法を
わかる方いらっしゃいましたら教えてください。
わかる方いらっしゃいましたら教えてください。
880879
2022/08/10(水) 17:48:27.02ID:kbVMG7lC0 すみません。他で聞くことにしました。無視してください。
881名称未設定
2022/08/26(金) 14:49:38.86ID:/TseUAnF0 macで現在再生している音楽や動画はどのアプリによるものかを知りたいです。
BetterTouchToolを使えば以下のようなスクリプトでそのアプリ名を取得できるのですが、これを使わないでそのアプリ名を取得する方法はありますか?
これをAppleScriptで実行不可能ならBetterTouchToolはこのような仕組みでこれを取得しているという情報だけでもいただけたら嬉しいです。
tell application "BetterTouchTool"
return get_string_variable "BTTCurrentlyPlayingApp"
--> "com.apple.Music"や"com.apple.Safari"
end tell
BetterTouchToolを使えば以下のようなスクリプトでそのアプリ名を取得できるのですが、これを使わないでそのアプリ名を取得する方法はありますか?
これをAppleScriptで実行不可能ならBetterTouchToolはこのような仕組みでこれを取得しているという情報だけでもいただけたら嬉しいです。
tell application "BetterTouchTool"
return get_string_variable "BTTCurrentlyPlayingApp"
--> "com.apple.Music"や"com.apple.Safari"
end tell
882名称未設定
2022/08/26(金) 21:48:59.84ID:UwyFgQjE0 ググったらすぐにあったよ
883名称未設定
2022/08/27(土) 13:21:56.86ID:iYShDyTA0884名称未設定
2022/08/27(土) 18:21:23.99ID:kDJnSK8N0 キーワード 入れてググればいいだけ
それすらなら、おとなしくBetterTouchToolを使ってなさい
それすらなら、おとなしくBetterTouchToolを使ってなさい
885名称未設定
2022/08/27(土) 18:41:31.61ID:xsBdjgsX0 macのバナー通知の表示時間変えたいけど、catalina以降だと無理?
defaults write com.apple.notificationcenterui bannerTime 1 で変えれてるはずなんだけど反映されない(monterey)
defaults write com.apple.notificationcenterui bannerTime 1 で変えれてるはずなんだけど反映されない(monterey)
886名称未設定
2022/08/27(土) 19:42:45.82ID:iYShDyTA0 >>884
煽りたいならせめてURLでも貼ってください。そうしたら私よりも知識があるということでマウントが取れるはずです。
知ったかぶりなら迷惑なので答えないでもらえますか。
日本語と英語で調べた上でわからなかったからここに質問したまでです。
煽りたいならせめてURLでも貼ってください。そうしたら私よりも知識があるということでマウントが取れるはずです。
知ったかぶりなら迷惑なので答えないでもらえますか。
日本語と英語で調べた上でわからなかったからここに質問したまでです。
887名称未設定
2022/08/27(土) 19:48:58.69ID:N8bK0Gp/0 初心者スレで聞きますよ〜
888名称未設定
2022/08/27(土) 19:55:44.85ID:6sCQ4cFz0889名称未設定
2022/08/27(土) 19:59:51.65ID:6sCQ4cFz0891名称未設定
2022/08/27(土) 20:24:43.48ID:N8bK0Gp/0 そんなに気に入らんなら転載禁止貼って答えれば良い。
892名称未設定
2022/08/27(土) 20:27:55.39ID:gZNobobL0 俺?別に転載禁止とか思ってないよ。転載ではないだろと思うしw
未熟なくせ(記事の内容も)にとは思うけどw
未熟なくせ(記事の内容も)にとは思うけどw
895名称未設定
2022/08/27(土) 20:34:00.26ID:N8bK0Gp/0 そういう訳で、このスレには碌に文字も書けない自称スクリプトさんが居るので悪しからず
897名称未設定
2022/08/27(土) 20:37:23.23ID:N8bK0Gp/0 お前が安価したからだろ。
口臭酷い人から離れて何があったも無い
口臭酷い人から離れて何があったも無い
898名称未設定
2022/08/27(土) 20:39:06.29ID:N8bK0Gp/0 あ!安価してないなゴメンゴメン♡
口臭キツくてどこに居ても臭いのね(笑)
口臭キツくてどこに居ても臭いのね(笑)
899名称未設定
2022/08/27(土) 20:41:41.99ID:gZNobobL0 お前が俺に絡んだからだろうがw
安価もお前からやん、>>885もお前か?
しかし、そのレスも頭悪そうにしか見えんよ。お怒りで最後のようなの書きたいんだろうけどw
お怒りで間違っちゃったのね。でも悪口wだけは書きたいのね。ご愁傷様です
安価もお前からやん、>>885もお前か?
しかし、そのレスも頭悪そうにしか見えんよ。お怒りで最後のようなの書きたいんだろうけどw
お怒りで間違っちゃったのね。でも悪口wだけは書きたいのね。ご愁傷様です
900名称未設定
2022/08/27(土) 20:45:21.16ID:N8bK0Gp/0 弁舌になったね〜
煽りは一級品てか?
でも人を区別できね〜じゃその舌も勿体ないな!
煽りは一級品てか?
でも人を区別できね〜じゃその舌も勿体ないな!
901名称未設定
2022/08/27(土) 20:48:12.73ID:gZNobobL0902名称未設定
2022/08/27(土) 20:52:31.71ID:N8bK0Gp/0 反応して書き込んでる時点でお前が問題だよ。
少し考えろ。ググれksで終えられない上に不自由そうな書き込み続けて何が気付けだよ
少し考えろ。ググれksで終えられない上に不自由そうな書き込み続けて何が気付けだよ
903名称未設定
2022/08/27(土) 20:54:29.67ID:gZNobobL0 >反応して書き込んでる時点でお前が問題だよ
www どんだけ自己中なのよ。すげえなあ
お前が絡んできたお前のレスに俺がレスしてはダメってか?www
お怒りでまともの思考できないのか、もともとなのかどっちなんだろう
www どんだけ自己中なのよ。すげえなあ
お前が絡んできたお前のレスに俺がレスしてはダメってか?www
お怒りでまともの思考できないのか、もともとなのかどっちなんだろう
904名称未設定
2022/08/27(土) 20:57:28.44ID:N8bK0Gp/0 お前が何も書き込まなければ問題起きなかった。
何か言う事ある?
何か言う事ある?
905名称未設定
2022/08/27(土) 20:58:56.26ID:iYShDyTA0 ありがとうございました。精進します。
906名称未設定
2022/08/27(土) 21:01:16.54ID:gZNobobL0907名称未設定
2022/08/28(日) 04:10:32.53ID:ayQE/v2m0 >>905
自分も興味があったので調べてみました。
https://i.imgur.com/xmWKiw5.png
https://community.folivora.ai/t/bttcurrentlyplaying-and-bttcurrentlyplayingapp-not-updating-in-sierra-10-12-6/9027
に「These require the macOS "now playing api", which unfortunately was introduced with 10.13.x」
とあったので "now playing api" ではないかと。
↓
【MPNowPlayingInfoCenter】
https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfocenter
自分も興味があったので調べてみました。
https://i.imgur.com/xmWKiw5.png
https://community.folivora.ai/t/bttcurrentlyplaying-and-bttcurrentlyplayingapp-not-updating-in-sierra-10-12-6/9027
に「These require the macOS "now playing api", which unfortunately was introduced with 10.13.x」
とあったので "now playing api" ではないかと。
↓
【MPNowPlayingInfoCenter】
https://developer.apple.com/documentation/mediaplayer/mpnowplayinginfocenter
908名称未設定
2022/08/28(日) 19:12:23.11ID:NEdM6WNi0 hackintoshスレにめっちゃ吃った書き方していた嵐いたなぁ…
なんだったか、とあるサイトで厄介払いされたとか
なんだったか、とあるサイトで厄介払いされたとか
909名称未設定
2022/09/02(金) 11:36:36.54ID:6qqEWsn+0 >>881
これ、プライベートフレームワークMediaRemote.frameworkのAPIを使うみたいよ
MRMediaRemoteGetNowPlayingClient / MRMediaRemoteGetNowPlayingInfo してからの、
MRNowPlayingClientGetBundleIdentifier や MRNowPlayingClientGetParentAppBundleIdentifier
BTTも使ってるみたい
githubに実際使ってるアプリのソースがある(Objective-CやSwift)
ただ、MRMediaRemoteGetNowPlaying...の第2引数がblockだから、AppleScriptObjCでは書けないみたい
ちなみに、Safariだと
MRNowPlayingClientGetBundleIdentifier は com.apple.WebKit.GPU
MRNowPlayingClientGetParentAppBundleIdentifier が com.apple.Safari
Firefoxだと
MRNowPlayingClientGetBundleIdentifier が org.mozilla.firefox
になった
これ、プライベートフレームワークMediaRemote.frameworkのAPIを使うみたいよ
MRMediaRemoteGetNowPlayingClient / MRMediaRemoteGetNowPlayingInfo してからの、
MRNowPlayingClientGetBundleIdentifier や MRNowPlayingClientGetParentAppBundleIdentifier
BTTも使ってるみたい
githubに実際使ってるアプリのソースがある(Objective-CやSwift)
ただ、MRMediaRemoteGetNowPlaying...の第2引数がblockだから、AppleScriptObjCでは書けないみたい
ちなみに、Safariだと
MRNowPlayingClientGetBundleIdentifier は com.apple.WebKit.GPU
MRNowPlayingClientGetParentAppBundleIdentifier が com.apple.Safari
Firefoxだと
MRNowPlayingClientGetBundleIdentifier が org.mozilla.firefox
になった
910名称未設定
2022/09/03(土) 21:07:07.26ID:5MM2Ajk50 >>909
>引数がblockだから、AppleScriptObjCでは書けないみたい
JXAはblockをサポートしてる。Javascriptで無名関数、アロー関数を普通に書けばblockになる
だが、
bridgesupportで未定義のObjC.bindFunctionでの宣言/定義の仕方がイマイチわからん
block,functionと使える型があるが、普通にid(Objective-Cでもblockはオブジェクト)での方が、ちゃんと呼ばれる
呼ばれるが引数に値が入ってない。単なる実行環境が問題なのか、blockを使うメソッドなどでのbridgesupportでの定義はなんかやってるからそこがキーなのかなあ
>引数がblockだから、AppleScriptObjCでは書けないみたい
JXAはblockをサポートしてる。Javascriptで無名関数、アロー関数を普通に書けばblockになる
だが、
bridgesupportで未定義のObjC.bindFunctionでの宣言/定義の仕方がイマイチわからん
block,functionと使える型があるが、普通にid(Objective-Cでもblockはオブジェクト)での方が、ちゃんと呼ばれる
呼ばれるが引数に値が入ってない。単なる実行環境が問題なのか、blockを使うメソッドなどでのbridgesupportでの定義はなんかやってるからそこがキーなのかなあ
911名称未設定
2022/09/04(日) 01:49:04.11ID:rjYqC44k0 >blockを使うメソッドなどでのbridgesupportでの定義はなんかやってるからそこがキーなのかなあ
ほぼ、これだったよう
https://talk.automators.fm/t/jxa-learning-resources/9713/4
これ見て、ObjCの中になんかblockってあるんだな からの手探りで
ObjC.block(types, function)
でいいよう。types は ObjC.bindFunction の第2引数と同じ、function は 無名関数/アロー関数どちらでも
件の場合は 第2引数を ObjC.block(['void', ['id']], (client) => { ... }) でとりあえず動くよう
なんでアンドキュメントやねん。なんか問題があるのかもだが
ほぼ、これだったよう
https://talk.automators.fm/t/jxa-learning-resources/9713/4
これ見て、ObjCの中になんかblockってあるんだな からの手探りで
ObjC.block(types, function)
でいいよう。types は ObjC.bindFunction の第2引数と同じ、function は 無名関数/アロー関数どちらでも
件の場合は 第2引数を ObjC.block(['void', ['id']], (client) => { ... }) でとりあえず動くよう
なんでアンドキュメントやねん。なんか問題があるのかもだが
912名称未設定
2022/09/04(日) 06:25:58.40ID:rjYqC44k0 手探り中に ObjC.block の第2引数を function にしてみたら、帰ってきたのが 関数オブジェクト で、types というプロパティに 第1引数の値が設定されていて、なるほどね ObjC.block(types, function) なのかと思って納得し終わってんだが、
ふと、単に types プロパティを作ってそこに設定するだけじゃねと思ったら、そのまんまだった
function block(types, blockfunc) {
blockfunc.types = types
return blockfunc
}
block(['void', ['id']], (client) => { ... })
で普通に動く
単にマニアックネタ
ふと、単に types プロパティを作ってそこに設定するだけじゃねと思ったら、そのまんまだった
function block(types, blockfunc) {
blockfunc.types = types
return blockfunc
}
block(['void', ['id']], (client) => { ... })
で普通に動く
単にマニアックネタ
913名称未設定
2022/09/06(火) 20:49:16.98ID:YIEW1hG80914名称未設定
2022/09/06(火) 20:53:51.36ID:taYKxhLp0 Catalinaでも時々ある
条件不明
条件不明
915名称未設定
2022/09/06(火) 23:10:33.09ID:v8BoiCuk0 そのメニュー本体がどこかにあれば起動項目に入れておくと対策できそうだけど見つからないな
昔は /System/Library/CoreServices/Menu Extras/ にあった気がするけど
昔は /System/Library/CoreServices/Menu Extras/ にあった気がするけど
916名称未設定
2022/09/06(火) 23:12:50.34ID:v8BoiCuk0 あ、これっぽい
/System/Library/CoreServices/Script Menu.app
/System/Library/CoreServices/Script Menu.app
918名称未設定
2022/09/08(木) 01:42:20.30ID:KicqPlIa0 >>909続き
blockを教えて貰って、JXA版がどうやらできました
AppleScriptなら他の例にもあるように、run script "以下をそのまま入れる" in "JavaScript"
(() => {
ObjC.import('dispatch')
let bundle = $.CFBundleCreate($.kCFAllocatorDefault, $.NSURL.fileURLWithPath('/System/Library/PrivateFrameworks/MediaRemote.framework'))
let MRMediaRemoteGetNowPlayingClient = $.CFBundleGetFunctionPointerForName(bundle, $('MRMediaRemoteGetNowPlayingClient'))
ObjC.bindFunction('MRMediaRemoteGetNowPlayingClient', ['void', ['void*', 'id']])
let MRNowPlayingClientGetBundleIdentifier = $.CFBundleGetFunctionPointerForName(bundle, $('MRNowPlayingClientGetBundleIdentifier'))
ObjC.bindFunction('MRNowPlayingClientGetBundleIdentifier', ['id', ['id']])
let MRNowPlayingClientGetParentAppBundleIdentifier = $.CFBundleGetFunctionPointerForName(bundle, $('MRNowPlayingClientGetParentAppBundleIdentifier'))
ObjC.bindFunction('MRNowPlayingClientGetParentAppBundleIdentifier', ['id', ['id']])
let identifier = $()
let parentIdentifier = $()
let done = false
$.MRMediaRemoteGetNowPlayingClient($._dispatch_main_q, ObjC.block(['void', ['id']], (client) => {
identifier = $.MRNowPlayingClientGetBundleIdentifier(client)
if (identifier.isNil())
identifier = $('')
parentIdentifier = $.MRNowPlayingClientGetParentAppBundleIdentifier(client)
if (parentIdentifier.isNil())
parentIdentifier = $('')
done = true
}))
while (!done)
$.NSRunLoop.currentRunLoop.runModeBeforeDate($.NSDefaultRunLoopMode, $.NSDate.distantFuture)
return [ObjC.unwrap(identifier), ObjC.unwrap(parentIdentifier)]
})()
blockを教えて貰って、JXA版がどうやらできました
AppleScriptなら他の例にもあるように、run script "以下をそのまま入れる" in "JavaScript"
(() => {
ObjC.import('dispatch')
let bundle = $.CFBundleCreate($.kCFAllocatorDefault, $.NSURL.fileURLWithPath('/System/Library/PrivateFrameworks/MediaRemote.framework'))
let MRMediaRemoteGetNowPlayingClient = $.CFBundleGetFunctionPointerForName(bundle, $('MRMediaRemoteGetNowPlayingClient'))
ObjC.bindFunction('MRMediaRemoteGetNowPlayingClient', ['void', ['void*', 'id']])
let MRNowPlayingClientGetBundleIdentifier = $.CFBundleGetFunctionPointerForName(bundle, $('MRNowPlayingClientGetBundleIdentifier'))
ObjC.bindFunction('MRNowPlayingClientGetBundleIdentifier', ['id', ['id']])
let MRNowPlayingClientGetParentAppBundleIdentifier = $.CFBundleGetFunctionPointerForName(bundle, $('MRNowPlayingClientGetParentAppBundleIdentifier'))
ObjC.bindFunction('MRNowPlayingClientGetParentAppBundleIdentifier', ['id', ['id']])
let identifier = $()
let parentIdentifier = $()
let done = false
$.MRMediaRemoteGetNowPlayingClient($._dispatch_main_q, ObjC.block(['void', ['id']], (client) => {
identifier = $.MRNowPlayingClientGetBundleIdentifier(client)
if (identifier.isNil())
identifier = $('')
parentIdentifier = $.MRNowPlayingClientGetParentAppBundleIdentifier(client)
if (parentIdentifier.isNil())
parentIdentifier = $('')
done = true
}))
while (!done)
$.NSRunLoop.currentRunLoop.runModeBeforeDate($.NSDefaultRunLoopMode, $.NSDate.distantFuture)
return [ObjC.unwrap(identifier), ObjC.unwrap(parentIdentifier)]
})()
919名称未設定
2022/09/08(木) 01:44:58.80ID:KicqPlIa0 インデント消えちゃた...
920名称未設定
2022/09/08(木) 04:02:45.39ID:ynvUf+r50 ちなみに、
MRMediaRemoteGetNowPlayingClient でblockに渡される client はObjective-Cオブジェクトなので、
MRNowPlayingClientGetBundleIdentifier や MRNowPlayingClientGetParentAppBundleIdentifier使わずとも、
client.bundleIdentifier と client.parentApplicationBundleIdentifier で、Javascript的に+無宣言でアクセスできる。Objective-Cオブジェクトにそういうメソッド/プロパティがあるってことね
(他に有用そうなメソッドはclass-dumpしてみるとかで、わかりやすい)
頭スペースやタブは捨てられるのが5chというかhtmlの仕様だからね。タブをスペースの数値文字参照( )に置き換えると、専ブラはそのまま頭スペースにしてくれる(Webブラウザはそれでも頭スペースは捨てるけど)
というのもAppleScriptだと簡単にできるからいいよねぇ
MRMediaRemoteGetNowPlayingClient でblockに渡される client はObjective-Cオブジェクトなので、
MRNowPlayingClientGetBundleIdentifier や MRNowPlayingClientGetParentAppBundleIdentifier使わずとも、
client.bundleIdentifier と client.parentApplicationBundleIdentifier で、Javascript的に+無宣言でアクセスできる。Objective-Cオブジェクトにそういうメソッド/プロパティがあるってことね
(他に有用そうなメソッドはclass-dumpしてみるとかで、わかりやすい)
頭スペースやタブは捨てられるのが5chというかhtmlの仕様だからね。タブをスペースの数値文字参照( )に置き換えると、専ブラはそのまま頭スペースにしてくれる(Webブラウザはそれでも頭スペースは捨てるけど)
というのもAppleScriptだと簡単にできるからいいよねぇ
922名称未設定
2022/10/07(金) 23:20:22.49ID:Y0EDHbAj0 display notification "保守"
923名称未設定
2022/10/27(木) 18:05:53.00ID:be20UC2i0 illustratorのスクリプトですが、
ASで以下は実行可能なのに
tell application "Adobe Illustrator"
text fonts
end tell
JXAで以下は実行できません。
AI = Application("Adobe Illustrator 2021")
AI.textFonts()
これはそういう仕様になっているのでしょうか?
ASで以下は実行可能なのに
tell application "Adobe Illustrator"
text fonts
end tell
JXAで以下は実行できません。
AI = Application("Adobe Illustrator 2021")
AI.textFonts()
これはそういう仕様になっているのでしょうか?
924名称未設定
2022/10/28(金) 07:17:16.03ID:7o4e9El20 単に間違ってるだけだろう
AppleScript対応アプリがJXAに対応するために何かをなんて無いと思って構わない
AppleScriptで動くなら同等のJXAは動く。動かないのは間違ってるだけだろう
AppleScript対応アプリがJXAに対応するために何かをなんて無いと思って構わない
AppleScriptで動くなら同等のJXAは動く。動かないのは間違ってるだけだろう
925名称未設定
2022/10/31(月) 10:16:41.17ID:V6AlEDNM0 AIのCore Suite>Application>ElementsとしてdocumentとtextFontがあり、
documentの方はAI.documents()で取得可能です。
app = Application("Adobe Illustrator 2021")
app.documents()
--> [app.documents.at(0)]
app.textFonts()
--> Error -1708: メッセージを理解できません。
documentの方はAI.documents()で取得可能です。
app = Application("Adobe Illustrator 2021")
app.documents()
--> [app.documents.at(0)]
app.textFonts()
--> Error -1708: メッセージを理解できません。
926名称未設定
2022/10/31(月) 11:34:07.03ID:C4wogFlK0 https://community.adobe.com/t5/illustratorフォーラム/ct-p/ct-illustrator-jp
で聞いた方がいんちゃう
ていうか
https://community.adobe.com/t5/illustratorフォーラム-discussions/applescriptでフォントとの選択/m-p/11745459
が気になる
で聞いた方がいんちゃう
ていうか
https://community.adobe.com/t5/illustratorフォーラム-discussions/applescriptでフォントとの選択/m-p/11745459
が気になる
927名称未設定
2022/11/11(金) 13:01:07.15ID:RY2MQfym0 教えてください。
あるフォルダのウインドウサイズをMacの起動の際に下記のスクリプトをログイン項目に入れて使っていますが、
ウインドウを開いてウインドウサイズを変更し閉じるのではなく、ウインドウを開かず裏で?ウインドウサイズを変更する方法があれば教えて欲しいです。
また、同じウインドウサイズですが2つのフォルダに対応する方法が知りたいです。
tell application "Finder"
open POSIX file "/testfolder1"
tell front window
set bounds to {600, 500, 1500, 1200}
end tell
end tell
tell application "Finder" to close windows
tell application "Finder"
open POSIX file "/testfolder2"
tell front window
set bounds to {600, 500, 1500, 1200}
end tell
end tell
tell application "Finder" to close windows
上記のように2つに分けないとうまくウインドウリサイズができないため分けていますが、1つで済むような方法もしりたいです。
ウインドウサイズと位置は同じです。
よろしくお願いします。
あるフォルダのウインドウサイズをMacの起動の際に下記のスクリプトをログイン項目に入れて使っていますが、
ウインドウを開いてウインドウサイズを変更し閉じるのではなく、ウインドウを開かず裏で?ウインドウサイズを変更する方法があれば教えて欲しいです。
また、同じウインドウサイズですが2つのフォルダに対応する方法が知りたいです。
tell application "Finder"
open POSIX file "/testfolder1"
tell front window
set bounds to {600, 500, 1500, 1200}
end tell
end tell
tell application "Finder" to close windows
tell application "Finder"
open POSIX file "/testfolder2"
tell front window
set bounds to {600, 500, 1500, 1200}
end tell
end tell
tell application "Finder" to close windows
上記のように2つに分けないとうまくウインドウリサイズができないため分けていますが、1つで済むような方法もしりたいです。
ウインドウサイズと位置は同じです。
よろしくお願いします。
928名称未設定
2022/11/11(金) 20:09:40.13ID:NgST5RNV0 デュアルモニタ環境でミッションコントロールを使いやすくしたいと言う要望で、
色々錯誤中
on run {input, parameters}
set MO1 to 18
set MO2 to 20
--デフォルトのショートカット(command + number)を登録しといてください
set CO to 0
set ORIG to do shell script "defaults read com.apple.spaces.plist SpacesDisplayConfiguration"
set KEY1d to "name"
set freqNum to retFrequency(ORIG, KEY1d) of me
if CO > freqNum then
CO = 0
ele
CO = CO + 1
end if
tell application "System Events"
--モントレのミッションコントロールロケーション
do shell script "/System/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
delay 0.5
key code MO1 + CO using {control down}
key code MO2 + CO using {control down}
end tell
end run
面倒
色々錯誤中
on run {input, parameters}
set MO1 to 18
set MO2 to 20
--デフォルトのショートカット(command + number)を登録しといてください
set CO to 0
set ORIG to do shell script "defaults read com.apple.spaces.plist SpacesDisplayConfiguration"
set KEY1d to "name"
set freqNum to retFrequency(ORIG, KEY1d) of me
if CO > freqNum then
CO = 0
ele
CO = CO + 1
end if
tell application "System Events"
--モントレのミッションコントロールロケーション
do shell script "/System/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
delay 0.5
key code MO1 + CO using {control down}
key code MO2 + CO using {control down}
end tell
end run
面倒
929名称未設定
2022/11/12(土) 09:28:35.62ID:7Com+ghL0 >>927
1つ目: わからない
2つ目: 単に繋げればいいって話じゃないの?
tell application "Finder"
open POSIX file "/testfolder1"
tell front window
set bounds to {600, 500, 1500, 1200}
end tell
--end tell
--tell application "Finder" to close windows
--tell application "Finder"
open POSIX file "/testfolder2"
tell front window
set bounds to {600, 500, 1500, 1200}
end tell
close windows
end tell
--tell application "Finder" to close windows
1つ目: わからない
2つ目: 単に繋げればいいって話じゃないの?
tell application "Finder"
open POSIX file "/testfolder1"
tell front window
set bounds to {600, 500, 1500, 1200}
end tell
--end tell
--tell application "Finder" to close windows
--tell application "Finder"
open POSIX file "/testfolder2"
tell front window
set bounds to {600, 500, 1500, 1200}
end tell
close windows
end tell
--tell application "Finder" to close windows
930名称未設定
2022/11/12(土) 15:06:08.91ID:3bXgbCDC0 >>927
ウインドウを存在させないことにはbounds等を操作出来ないので開かざるを得ないかと。
Finderを隠してから実行すれば…と思ったけど以下のコメントの通りダメでした。
同じような、でも一部だけ異なる処理を繰り返す場合は、異なる部分を変数に入れて処理させるのがコードを書くときの基本テクニックの1つです。
tell application "Finder"
--set visible to false --やってもopenで表示されてしまう
repeat with posixPath in {"/Users/", "/System/"} --パスは適当に書き換えて
open (posixPath as POSIX file)
--set visible to false --やるとwindowもしくはそのpropertiesが取れなくなる
tell front Finder window
set bounds to {600, 500, 1500, 1200}
close
end tell
end repeat
end tell
ウインドウを存在させないことにはbounds等を操作出来ないので開かざるを得ないかと。
Finderを隠してから実行すれば…と思ったけど以下のコメントの通りダメでした。
同じような、でも一部だけ異なる処理を繰り返す場合は、異なる部分を変数に入れて処理させるのがコードを書くときの基本テクニックの1つです。
tell application "Finder"
--set visible to false --やってもopenで表示されてしまう
repeat with posixPath in {"/Users/", "/System/"} --パスは適当に書き換えて
open (posixPath as POSIX file)
--set visible to false --やるとwindowもしくはそのpropertiesが取れなくなる
tell front Finder window
set bounds to {600, 500, 1500, 1200}
close
end tell
end repeat
end tell
931名称未設定
2022/11/12(土) 15:23:30.36ID:TchPlUlA0932名称未設定
2022/11/16(水) 11:45:38.29ID:GtJRusAX0 こんにちは。
一つのAutomatorに複数のAppleScriptを埋め込んだアプリを使っています。
多分最後がいいんだと思って最後にNASを自動でマウントするAppleScriptを入れていますが、5回に1回くらいエラーが出てAutomatorが最後まで完了しません。
エラーは2つでてきて、1つ目が
「サーバ”NAS”への接続で問題が起きました。
サーバが存在しないか、現在利用できません。
サーバの名前またはIPアドレス、およびネットワーク接続を確認してから、やり直してください。」
2つ目
「アクション"AppleScriptを実行”でエラーが起きました:“Finderでエラーが起きました: タイプ-5016のエラーが起きました。」
とでます。
最後のNASをマウントするスクリプトは
tell application "Finder"
mount volume "smb://NAS”
end tell
です。
このスクリプりの前にAutomatorの一時停止で3〜5秒程度待ち時間を与えても、スクリプト中にdelayを数秒入れてもやはり回数はばらばらですが何度かに一度接続に失敗します。
これ、何かいい方法はないでしょうか。
また、待ち時間を与えるならスクリプトの前かスクリプト中かどちらがいいのでしょう。
一つのAutomatorに複数のAppleScriptを埋め込んだアプリを使っています。
多分最後がいいんだと思って最後にNASを自動でマウントするAppleScriptを入れていますが、5回に1回くらいエラーが出てAutomatorが最後まで完了しません。
エラーは2つでてきて、1つ目が
「サーバ”NAS”への接続で問題が起きました。
サーバが存在しないか、現在利用できません。
サーバの名前またはIPアドレス、およびネットワーク接続を確認してから、やり直してください。」
2つ目
「アクション"AppleScriptを実行”でエラーが起きました:“Finderでエラーが起きました: タイプ-5016のエラーが起きました。」
とでます。
最後のNASをマウントするスクリプトは
tell application "Finder"
mount volume "smb://NAS”
end tell
です。
このスクリプりの前にAutomatorの一時停止で3〜5秒程度待ち時間を与えても、スクリプト中にdelayを数秒入れてもやはり回数はばらばらですが何度かに一度接続に失敗します。
これ、何かいい方法はないでしょうか。
また、待ち時間を与えるならスクリプトの前かスクリプト中かどちらがいいのでしょう。
933名称未設定
2022/11/17(木) 23:08:07.73ID:9TDAZvUf0 tryで括ったのを繰り返してマウント出来たらexitってやってみては?
935名称未設定
2022/11/19(土) 12:30:17.20ID:dkeXPz4r0 AppleScriptで例えば
tell application "System Events"
key code 49
end tell
ってコードをAutomatorに入れて実行を押すとシステムで設定してるアラートがなってしまいますが、ならないようなコードの書き方ってあるのでしょうか?
もしくはなるのは仕方ないのでしょうか?
tell application "System Events"
key code 49
end tell
ってコードをAutomatorに入れて実行を押すとシステムで設定してるアラートがなってしまいますが、ならないようなコードの書き方ってあるのでしょうか?
もしくはなるのは仕方ないのでしょうか?
936名称未設定
2022/11/19(土) 13:19:51.94ID:Ap1v+LFB0 邪魔なら
set volume alert volume 0
でも入れとけばいいんじゃないの
set volume alert volume 0
でも入れとけばいいんじゃないの
938名称未設定
2022/11/20(日) 01:26:37.42ID:KLtsQVua0 なんのためにkey code 49したいのか分からんけど手前のアプリによって挙動を変えることは出来るよ
ただスペース入力されちゃうとか、そのアプリなりの動きはしちゃうけど
-- Finderを手前にしてやる場合
tell application "System Events" to tell application process "Finder"
set frontmost to true
key code 49 --クイックルックが出る(場合あり)
end tell
-- その時手前のアプリでやりたい場合
tell application "System Events" to tell (first application process that frontmost is true)
key code 49
end tell
ただスペース入力されちゃうとか、そのアプリなりの動きはしちゃうけど
-- Finderを手前にしてやる場合
tell application "System Events" to tell application process "Finder"
set frontmost to true
key code 49 --クイックルックが出る(場合あり)
end tell
-- その時手前のアプリでやりたい場合
tell application "System Events" to tell (first application process that frontmost is true)
key code 49
end tell
939名称未設定
2022/12/01(木) 17:39:27.57ID:zR7q9XOP0 tell application "Finder"
mount volume "smb://server”
end tell
これを使ってNASに繋げていますがたびたび
サーバ"server"への接続で問題が起きました。
と出た後に
タイプ-5016のエラーが起きました。
と2つのエラーが出てきます。
2つ目のエラーはtryを使い取り敢えずでなくなりましたが、1つ目のエラーはたまに出ます。
そこで最初にpingを打った後にmountをしてみようと思い
try
do shell script "ping -c 2 -i 0.5 server"
tell application "Finder"
delay 3
mount volume "smb://server/xxx"
end tell
on error
end try
こんな感じでやってみましたが、それでもたまに1つ目のエラーが出ます。
この1つ目のエラーがどこから出されているものかわかりませんが、
1つ目のエラーを出さないようにするにはどうするのがいいのでしょうか。
NASへの接続は出来なくても構いません。
取り敢えずはエラーを出ないようにしたいです。
どなたか知恵を拝借できませんか。
mount volume "smb://server”
end tell
これを使ってNASに繋げていますがたびたび
サーバ"server"への接続で問題が起きました。
と出た後に
タイプ-5016のエラーが起きました。
と2つのエラーが出てきます。
2つ目のエラーはtryを使い取り敢えずでなくなりましたが、1つ目のエラーはたまに出ます。
そこで最初にpingを打った後にmountをしてみようと思い
try
do shell script "ping -c 2 -i 0.5 server"
tell application "Finder"
delay 3
mount volume "smb://server/xxx"
end tell
on error
end try
こんな感じでやってみましたが、それでもたまに1つ目のエラーが出ます。
この1つ目のエラーがどこから出されているものかわかりませんが、
1つ目のエラーを出さないようにするにはどうするのがいいのでしょうか。
NASへの接続は出来なくても構いません。
取り敢えずはエラーを出ないようにしたいです。
どなたか知恵を拝借できませんか。
940名称未設定
2022/12/02(金) 09:28:20.09ID:uMnk7rPb0 https://apple.stackexchange.com/questions/387841/applescript-how-to-mount-remote-server-without-error-if-unavailable
smbutil status ...で状態チェックした後でやったらどう、って
あと、エラーと関係ないけど、mount volume ...はStandard Additionsのコマンドで、Finderが実行する訳じゃないからtell app "Finder"いらない、って
smbutil status ...で状態チェックした後でやったらどう、って
あと、エラーと関係ないけど、mount volume ...はStandard Additionsのコマンドで、Finderが実行する訳じゃないからtell app "Finder"いらない、って
941名称未設定
2022/12/02(金) 11:21:44.60ID:kVy3baxJ0 >>940
レスありがとうございます
tell app "Finder”は必要ないんですね。
必要だと思い込んでいました。
教えていただいたリンク先を読んでみます。
https://discussionsjapan.apple.com/thread/253019596?answerId=255677244122#255677244122
こちらでも私と同じようなことを言ってる人がいて回答がいくつかされていますが、
書かれているコードを私も試しましたがどれもエラーが出て使えませんでした。
シェルでやれば?とのコメントもありますので試しに作ったAutomatorアプリをLaunchで動かしてみようと思います。
レスありがとうございます
tell app "Finder”は必要ないんですね。
必要だと思い込んでいました。
教えていただいたリンク先を読んでみます。
https://discussionsjapan.apple.com/thread/253019596?answerId=255677244122#255677244122
こちらでも私と同じようなことを言ってる人がいて回答がいくつかされていますが、
書かれているコードを私も試しましたがどれもエラーが出て使えませんでした。
シェルでやれば?とのコメントもありますので試しに作ったAutomatorアプリをLaunchで動かしてみようと思います。
942名称未設定
2022/12/14(水) 10:52:17.49ID:IhMsMLAt0 この流れ見たおかげで、jxaでネットワークフォルダに接続できた。ありがとう。
systemEventsやらfinder試してたができなくて悩んでたが、下のでできた。
app = Application.currentApplication()
app.mountVolume('smb://hoge/hoge/’)
どおりでsystemEventsもfinderも用語説明にmountVolumeが無いと思った。
systemEventsやらfinder試してたができなくて悩んでたが、下のでできた。
app = Application.currentApplication()
app.mountVolume('smb://hoge/hoge/’)
どおりでsystemEventsもfinderも用語説明にmountVolumeが無いと思った。
943名称未設定
2023/01/02(月) 07:27:29.86ID:qBQZs/ov0 ド初心者です
このようなhtmlのセレクトボックスを選択してクリックするには
どうすればいいのでしょうか?
https://ondoku3.com/ja/
ここの言語をEnglish(USA)にしたいです
このようなhtmlのセレクトボックスを選択してクリックするには
どうすればいいのでしょうか?
https://ondoku3.com/ja/
ここの言語をEnglish(USA)にしたいです
944名称未設定
2023/01/02(月) 10:17:50.89ID:46djlZai0 Safariで開発メニューを表示、開発メニューでAppleEventからのJavaScriptを許可して
tell application "Safari"
do JavaScript "document.getElementById('en-US').selected = true;" in (current tab in front window)
end tell
とかなんとか
tell application "Safari"
do JavaScript "document.getElementById('en-US').selected = true;" in (current tab in front window)
end tell
とかなんとか
945名称未設定
2023/01/02(月) 10:45:45.13ID:qBQZs/ov0 このように書いてみましたがダメそうです…
tell application "Safari"
open location "https://ondoku3.com/ja/"
activate
end tell
clickID("en-US")
to clickID(theId)
tell application "Safari"
do JavaScript "document.getElementById('" & theId & "').click();" in document 1
end tell
end clickID
tell application "Safari"
open location "https://ondoku3.com/ja/"
activate
end tell
clickID("en-US")
to clickID(theId)
tell application "Safari"
do JavaScript "document.getElementById('" & theId & "').click();" in document 1
end tell
end clickID
946名称未設定
2023/01/02(月) 13:40:12.38ID:KmQn2xLX0 そのJavascript自体で変わらないんじゃないの
ちゃんと変わるJavascriptの話は、まあここじゃないかな
SafariのJavaScript Consoleでちゃんと動くのに、do JavaScript で動かないのはここでだね
ちゃんと変わるJavascriptの話は、まあここじゃないかな
SafariのJavaScript Consoleでちゃんと動くのに、do JavaScript で動かないのはここでだね
947名称未設定
2023/01/02(月) 16:10:49.69ID:KmQn2xLX0 let readLanguagePopUp = document.getElementById('read-form').id_language
readLanguagePopUp.selectedIndex = 8
で、変わりはするが、ページ/コンテンツ特有の問題/特性でこれだけでは意味がない
変更を検知してのコンテンツ特有の処理、関数 change_voice_selection もしくは create_voice_selection を呼ぶ必要がある
create_voice_selection を呼ぶ方が簡単なので、
create_voice_selection(readLanguagePopUp.value)
を呼べばいいだけかな。Webブラウザ/Safariの中のコンソールでは良さげ
ここまでは単にJavascriptの
do JavaScript では、create_voice_selection が呼べない/存在しない。外部スクリプトだし do JavaScript はJavascript実行環境が違うスコープ外なのかな
てことで、selectedIndex を変更しても 'change'イベントを飛ばしてくれないなら飛ばせばいいかので、
readLanguagePopUp.dispatchEvent(new Event('change'))
で良さげ
do JavaScript "(() => {
let readLanguagePopUp = document.getElementById('read-form').id_language
readLanguagePopUp.selectedIndex = 8
readLanguagePopUp.dispatchEvent(new Event('change'))
})()" in (current tab in front window)
readLanguagePopUp.selectedIndex = 8
で、変わりはするが、ページ/コンテンツ特有の問題/特性でこれだけでは意味がない
変更を検知してのコンテンツ特有の処理、関数 change_voice_selection もしくは create_voice_selection を呼ぶ必要がある
create_voice_selection を呼ぶ方が簡単なので、
create_voice_selection(readLanguagePopUp.value)
を呼べばいいだけかな。Webブラウザ/Safariの中のコンソールでは良さげ
ここまでは単にJavascriptの
do JavaScript では、create_voice_selection が呼べない/存在しない。外部スクリプトだし do JavaScript はJavascript実行環境が違うスコープ外なのかな
てことで、selectedIndex を変更しても 'change'イベントを飛ばしてくれないなら飛ばせばいいかので、
readLanguagePopUp.dispatchEvent(new Event('change'))
で良さげ
do JavaScript "(() => {
let readLanguagePopUp = document.getElementById('read-form').id_language
readLanguagePopUp.selectedIndex = 8
readLanguagePopUp.dispatchEvent(new Event('change'))
})()" in (current tab in front window)
948名称未設定
2023/01/02(月) 22:28:25.23ID:qBQZs/ov0 なるほど皆ありがとう
どうやらド初心者にはハードル高そうですね
エレメントをゲットしないでキーボード操作で
所望の箇所まで移動させてみます
どうやらド初心者にはハードル高そうですね
エレメントをゲットしないでキーボード操作で
所望の箇所まで移動させてみます
949名称未設定
2023/01/14(土) 20:09:08.93ID:hOXDjmwo0 AutomatorでAppleScriptを使ったアプリケーションを作っています。
動画をループさせながら再生するものですが、
tell application "QuickTime Player"
open "/Users/my/Desktop/test.mov"
tell front document
present
set looping to true
play
end tell
end tell
を実行すると、
書類"test.mov”を開けませんでした。
このファイルはQuickTime Player と互換性がありません。
アクション"AppleScriptを実行™でエラーが起きました: “QuickTime
Playerでエラーが起きました:
document1を取り出すことはできません。正しくないインデックスです。”
とエラーが出てきてうまく再生できません。
元の動画ファイルは問題なくQuickTime Playerで再生出来るものです。
動画ファイルを変えてみてもやはり同じエラーが出ます。
どのようにすればループして再生出来るでしょうか。
どなたか教えていただけませんか。
動画をループさせながら再生するものですが、
tell application "QuickTime Player"
open "/Users/my/Desktop/test.mov"
tell front document
present
set looping to true
play
end tell
end tell
を実行すると、
書類"test.mov”を開けませんでした。
このファイルはQuickTime Player と互換性がありません。
アクション"AppleScriptを実行™でエラーが起きました: “QuickTime
Playerでエラーが起きました:
document1を取り出すことはできません。正しくないインデックスです。”
とエラーが出てきてうまく再生できません。
元の動画ファイルは問題なくQuickTime Playerで再生出来るものです。
動画ファイルを変えてみてもやはり同じエラーが出ます。
どのようにすればループして再生出来るでしょうか。
どなたか教えていただけませんか。
950名称未設定
2023/01/14(土) 21:11:32.15ID:NoIkVHQB0 >>949
POSIX化すれば良い。
open "/Users/my/Desktop/test.mov"
↓
set A to open "/Users/my/Desktop/test.mov"
play
↓
play A
POSIX化すれば良い。
open "/Users/my/Desktop/test.mov"
↓
set A to open "/Users/my/Desktop/test.mov"
play
↓
play A
951名称未設定
2023/01/14(土) 21:12:06.05ID:NoIkVHQB0 ごめん抜けた
set A to open POSIX file
set A to open POSIX file
952名称未設定
2023/01/14(土) 21:14:42.72ID:0Ha2vBvH0 open POSIX file ということじゃなく?
953名称未設定
2023/01/14(土) 21:14:56.29ID:0Ha2vBvH0 あ、ごめんリロードしてなかった
955名称未設定
2023/01/14(土) 21:47:50.50ID:IFtoiy9i0 自分は全く理解しないでやってるけど、こんな感じではどうでしょう
tell application "QuickTime Player"
activate
open "/Users/my/Desktop/test.mov"
tell document 1
set looping to true
play
end tell
end tell
tell application "QuickTime Player"
activate
open "/Users/my/Desktop/test.mov"
tell document 1
set looping to true
play
end tell
end tell
956名称未設定
2023/01/14(土) 21:53:16.81ID:NoIkVHQB0 クイックタイムが起動していない状態であれば問題のコードでも開けるけど、
基本applescriptは旧来のhfs path。
でもアプリケーションはPOSIXに準じるので、アプリケーションが起動している状態だとhfs pathとして受け取ってしまう。
結果として/が名前として受け取り、:が階層として判断してしまうのでファイルが開かない。
そのため、POSIXパスとしての型とすれば問題なく開ける。
ちなみに初回だけ変数の型がhfsパスなのにPOSIX書きで開けるのは、
apple scriptのfile objectがPOSIXなので、hfsパスを押し退けて使える()
基本applescriptは旧来のhfs path。
でもアプリケーションはPOSIXに準じるので、アプリケーションが起動している状態だとhfs pathとして受け取ってしまう。
結果として/が名前として受け取り、:が階層として判断してしまうのでファイルが開かない。
そのため、POSIXパスとしての型とすれば問題なく開ける。
ちなみに初回だけ変数の型がhfsパスなのにPOSIX書きで開けるのは、
apple scriptのfile objectがPOSIXなので、hfsパスを押し退けて使える()
957sage
2023/01/23(月) 15:17:06.44ID:8wZ0hG4u0 javascriptの質問で申し訳ないですが、QuickTime Playerで
開いた15.mp4を縦横(100, 300)の位置に移動させたいのですが
15.mp4を開くことまでは成功できるのですが、次が
わかりません。ご教示お願いできませんか?
var quickTimePlayer = Application("QuickTime Player");
quickTimePlayer.activate();
quickTimePlayer.open("/Volumes/HD1/15.mp4");
var system = Application('System Events');
var qtWindow = system.processes['QuickTime Player'];
qtWindow.windows[0].position[100, 300];
開いた15.mp4を縦横(100, 300)の位置に移動させたいのですが
15.mp4を開くことまでは成功できるのですが、次が
わかりません。ご教示お願いできませんか?
var quickTimePlayer = Application("QuickTime Player");
quickTimePlayer.activate();
quickTimePlayer.open("/Volumes/HD1/15.mp4");
var system = Application('System Events');
var qtWindow = system.processes['QuickTime Player'];
qtWindow.windows[0].position[100, 300];
958名称未設定
2023/01/23(月) 16:43:50.74ID:qAppQcQp0 qtWindow.windows[0].position = [100, 300];
959sage
2023/01/23(月) 16:56:08.26ID:8wZ0hG4u0 上手くできました、感謝です。
私はAppleScriptは20年以上使っているのですが
10年ほど前にJavaScript形式で書くように
変更したのが、失敗でした。JavaScript形式の
AppleScriptの検索が非常に困難で、このような
質問をして、ご迷惑をお掛けしてしまいます。
私はAppleScriptは20年以上使っているのですが
10年ほど前にJavaScript形式で書くように
変更したのが、失敗でした。JavaScript形式の
AppleScriptの検索が非常に困難で、このような
質問をして、ご迷惑をお掛けしてしまいます。
960名称未設定
2023/01/28(土) 02:26:43.44ID:f3R26hc10 function pseudoESTK(){
const app = Application.currentApplication();
const Cot = Application('CotEditor');
const SysEv = Application('System Events');
app.includeStandardAdditions=true;
if(!Cot.documents.length){app.displayAlert("実行したいスクリプトを開いてから実行してください");return;}
let scr = Cot.documents[0].contents();
let tgt = scr.match(/#target\s+([^\s-]+)/);
let appList = SysEv.applicationProcesses().filter(function(a){if(a.visible()==true && a.name().indexOf("Adobe")!=-1){return a}}).map((a) => a.name());
if(tgt){tgt = tgt[0].split(/\s/)[1].toLowerCase();appList = appList.filter(function(a){if(a.toLowerCase().indexOf(tgt)!=-1){return a}})}
let selApp;
switch(appList.length){
case 0:
app.displayAlert("対象アプリを起動してから実行してください",{givingUpAfter:1});return;break;
case 1: selApp = appList;break;
default:selApp = app.chooseFromList(appList,{withPrompt:"対象アプリを選択してください"});
if(!selApp){return}
break;
}
let scrRet;
let tgtApp = Application(selApp[0]);
let appLow = selApp[0].toLowerCase();
if(appLow.indexOf('indesign')!=-1){scrRet = tgtApp.doScript(scr,{language:'javascript', undoMode:'fast entire script'});
}else if(appLow.indexOf('acrobat')!=-1){scrRet = tgtApp.doScript(scr);
}else{scrRet = tgtApp.doJavascript(scr);}
if(scrRet){Cot.writeToConsole(selApp)};
}
const app = Application.currentApplication();
const Cot = Application('CotEditor');
const SysEv = Application('System Events');
app.includeStandardAdditions=true;
if(!Cot.documents.length){app.displayAlert("実行したいスクリプトを開いてから実行してください");return;}
let scr = Cot.documents[0].contents();
let tgt = scr.match(/#target\s+([^\s-]+)/);
let appList = SysEv.applicationProcesses().filter(function(a){if(a.visible()==true && a.name().indexOf("Adobe")!=-1){return a}}).map((a) => a.name());
if(tgt){tgt = tgt[0].split(/\s/)[1].toLowerCase();appList = appList.filter(function(a){if(a.toLowerCase().indexOf(tgt)!=-1){return a}})}
let selApp;
switch(appList.length){
case 0:
app.displayAlert("対象アプリを起動してから実行してください",{givingUpAfter:1});return;break;
case 1: selApp = appList;break;
default:selApp = app.chooseFromList(appList,{withPrompt:"対象アプリを選択してください"});
if(!selApp){return}
break;
}
let scrRet;
let tgtApp = Application(selApp[0]);
let appLow = selApp[0].toLowerCase();
if(appLow.indexOf('indesign')!=-1){scrRet = tgtApp.doScript(scr,{language:'javascript', undoMode:'fast entire script'});
}else if(appLow.indexOf('acrobat')!=-1){scrRet = tgtApp.doScript(scr);
}else{scrRet = tgtApp.doJavascript(scr);}
if(scrRet){Cot.writeToConsole(selApp)};
}
962名称未設定
2023/01/30(月) 09:05:16.02ID:5649FAEH0 whose使えるよ
adobeApps=Application("System Events").applicationProcesses.whose({name:{ _contains: 'Adobe' }}).name()
adobeApps=Application("System Events").applicationProcesses.whose({name:{ _contains: 'Adobe' }}).name()
963sage
2023/01/31(火) 09:32:42.92ID:M2eRX9Lu0964名称未設定
2023/01/31(火) 12:21:12.08ID:qR88flPO0 俺もJSで書くようにしようかな… と時々思っては思うだけで終わってる
966名称未設定
2023/02/06(月) 10:17:18.89ID:0bjnOdyZ0 誰か教えていただけませんか。
set volumeを使ってボリュームのコントロールができますが、
左右のバランスをセンターに設定する方法をどなたか知りませんか?
Audio MIDI設定で0.5に設定すればいいのは知っていますが、
set volume alert volume 0
set volume output volume 50
set volume input volume 50
などとまとめて設定をしたいのです。
set volumeを使ってボリュームのコントロールができますが、
左右のバランスをセンターに設定する方法をどなたか知りませんか?
Audio MIDI設定で0.5に設定すればいいのは知っていますが、
set volume alert volume 0
set volume output volume 50
set volume input volume 50
などとまとめて設定をしたいのです。
967名称未設定
2023/02/06(月) 11:09:59.95ID:NlXXdeKF0 > set volume output volume 50
これで一緒にバランス調整されてない?
試したらセンターになったけど、ってここ見て知った https://github.com/jpwenzel/reset-audio-balance
これで一緒にバランス調整されてない?
試したらセンターになったけど、ってここ見て知った https://github.com/jpwenzel/reset-audio-balance
968名称未設定
2023/02/06(月) 11:37:39.59ID:0bjnOdyZ0969名称未設定
2023/02/06(月) 13:07:14.73ID:YlUscaYB0 こういう記事があるので、System Events経由しないと触れないってことじゃないかな。
therapy.under.jp/osx-mavericks-%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A%EF%BC%9A%E3%82%B5%E3%82%A6%E3%83%B3%E3%83%89%EF%BC%9A%E3%83%90%E3%83%A9%E3%83%B3%E3%82%B9-%E3%82%92%E3%82%BB/
therapy.under.jp/osx-mavericks-%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A%EF%BC%9A%E3%82%B5%E3%82%A6%E3%83%B3%E3%83%89%EF%BC%9A%E3%83%90%E3%83%A9%E3%83%B3%E3%82%B9-%E3%82%92%E3%82%BB/
970名称未設定
2023/02/15(水) 15:56:09.72ID:qib9yM4Y0 AppleScriptではないのですが、Automatorのフォルダアクションがある時から動かなくなる減少が頻繁に起こるのですが、同じ現象の人いませんか?ソースをいじっていないのに急に動かなくなります...
971名称未設定
2023/02/15(水) 18:50:08.07ID:wteAUxtG0 Automatorスレでやれや
972名称未設定
2023/02/20(月) 10:48:54.33ID:TuuDDhJs0 教えてください。
https://eastmanreference.com/complete-list-of-applescript-key-codes
ここを参考に
tell application "System Events"
key code 49
end tell
これをAutomatorでアプリケーションで作ったAppleScriptで実行すると構文エラーになってしまいます。
なぜなんでしょうか?
アプリケーションとして保存しても
アクション"AppleScriptを実行”でエラーが起きました:“操作を完了できませんでした。
(com.apple. Automator I 5 --212) "
アクション"AppleScriptを実行”でエラーが起きました: “System Events
でエラーが起きました: アプリ名にはキー操作の送信は許可されません。
などのエラーが出ます。
システム設定のプライバシーとセキュリティのアクセシビリティでアプリを追加をしています。
なぜエラーが出て実行できないのでしょうか。
どうすれば改善できるのでしょう。
https://eastmanreference.com/complete-list-of-applescript-key-codes
ここを参考に
tell application "System Events"
key code 49
end tell
これをAutomatorでアプリケーションで作ったAppleScriptで実行すると構文エラーになってしまいます。
なぜなんでしょうか?
アプリケーションとして保存しても
アクション"AppleScriptを実行”でエラーが起きました:“操作を完了できませんでした。
(com.apple. Automator I 5 --212) "
アクション"AppleScriptを実行”でエラーが起きました: “System Events
でエラーが起きました: アプリ名にはキー操作の送信は許可されません。
などのエラーが出ます。
システム設定のプライバシーとセキュリティのアクセシビリティでアプリを追加をしています。
なぜエラーが出て実行できないのでしょうか。
どうすれば改善できるのでしょう。
973名称未設定
2023/02/20(月) 11:09:34.12ID:YANdS4h30 System Eventsも追加すりゃいいんじゃないの
974名称未設定
2023/02/20(月) 11:10:11.63ID:YANdS4h30 ってもう追加されてんのか流れ的に
すまん
すまん
975名称未設定
2023/02/20(月) 17:59:43.63ID:dsaFNpZw0 何で Automatorでやってるのかわからんけど
一度実行ボタン押して
カーソルの位置にスペースが入ったとかってオチじゃないよね?
一度実行ボタン押して
カーソルの位置にスペースが入ったとかってオチじゃないよね?
976名称未設定
2023/02/20(月) 18:47:50.41ID:TuuDDhJs0 レス頂いててありがとうございます。
しかし私のミスでAutomatorスレと間違って書き込みをしてたようです…
移動させていただきます。
失礼しました。
しかし私のミスでAutomatorスレと間違って書き込みをしてたようです…
移動させていただきます。
失礼しました。
977名称未設定
2023/03/23(木) 10:11:24.47ID:sMTI/zjW0 Venturaでシステム設定に変わって制御するスクリプト書き換えててなんか上手く動かねえなと思ったら「セキュリティとプライバシー」が「プライバシーとセキュリティ」に変わっていた
978名称未設定
2023/03/23(木) 17:23:33.29ID:IR5kOyOp0 なんという間違い探し…よく見つけたね
com.apple.preference.securityとかbundle使った方が安全っちゅうこっちゃね
com.apple.preference.securityとかbundle使った方が安全っちゅうこっちゃね
979名称未設定
2023/03/23(木) 21:04:53.89ID:sMTI/zjW0 そういや.prefPaneを開くという方法もあったな
ちなみにpaneは用語説明に残ってはいるがエラーにしかならない
ちなみにpaneは用語説明に残ってはいるがエラーにしかならない
980名称未設定
2023/03/23(木) 21:14:32.64ID:IR5kOyOp0 こんな?
tell application "System Preferences" to set current pane to pane id "com.apple.preference.security"
tell application "System Preferences" to set current pane to pane id "com.apple.preference.security"
981名称未設定
2023/03/23(木) 21:23:16.08ID:OytpOZvV0 本当によく見つけたね…
存在してるけど動かない物も多いから最近はターミナルでバンドル組んでるわ…
存在してるけど動かない物も多いから最近はターミナルでバンドル組んでるわ…
982名称未設定
2023/03/23(木) 22:20:24.22ID:1lysEDrt0 ターミナルでバンドル組むってなに
983名称未設定
2023/03/23(木) 23:24:59.63ID:IR5kOyOp0 こんな??知らんけど
open x-apple.systempreferences:com.apple.preference.security
open x-apple.systempreferences:com.apple.preference.security
984sage
2023/03/24(金) 09:48:22.00ID:tp6ybqm30 次のAppleScript(1)に対応するJavaScriptの書き方をご教示いただけますか?
(1) set test1 to do shell script "
test2=$(/bin/ls /Users/john/*.json)
echo $test2
"
log (test1)
自分で書いたJavaScript(2)ではスクリプトエラー(3)が表示されます。
ただこのエラーの中には*.jsonに一致するファイル名が含まれているので
/bin/ls /Users/john/*.jsonは途中まで成功しているようです。
(2)app = Application.currentApplication();
app.includeStandardAdditions = true;
var exec = `
"
test2=$(/bin/ls /Users/john/*.json)
echo $test2
"
`
var resultX = app.doShellScript(exec)
console.log(resultX);
(3) スクリプトエラー
Error: Error: sh: line 4:
test2=/Users/john/01.json
/Users/john/03.json
echo
: No such file or directory
(1) set test1 to do shell script "
test2=$(/bin/ls /Users/john/*.json)
echo $test2
"
log (test1)
自分で書いたJavaScript(2)ではスクリプトエラー(3)が表示されます。
ただこのエラーの中には*.jsonに一致するファイル名が含まれているので
/bin/ls /Users/john/*.jsonは途中まで成功しているようです。
(2)app = Application.currentApplication();
app.includeStandardAdditions = true;
var exec = `
"
test2=$(/bin/ls /Users/john/*.json)
echo $test2
"
`
var resultX = app.doShellScript(exec)
console.log(resultX);
(3) スクリプトエラー
Error: Error: sh: line 4:
test2=/Users/john/01.json
/Users/john/03.json
echo
: No such file or directory
985名称未設定
2023/03/24(金) 10:22:38.24ID:G8ouTVCw0 (2)からダブルクウォーツ取っ払えばいけたぽいけど
986sage
2023/03/24(金) 10:43:07.07ID:tp6ybqm30 素早いご助言を感謝です。ダブルクウォーツを削除した結果
エラー表示が消えました。ただ「帰り値を表示する」console.log(resultX);
での結果が、undefinedとなります。
console.log(resultX)を削除して、(4)を実行すると、ScriptEditorの「結果」の欄に
*.jsonファイル名が正しく表示できます。ここで表示されているリストをresultXに
入れる方法がございますでしょうか?
(4) app = Application.currentApplication();
app.includeStandardAdditions = true;
var exec = `
test2=$(ls /Users/john/*.json)
echo $test2
`
resultX = app.doShellScript(exec);
エラー表示が消えました。ただ「帰り値を表示する」console.log(resultX);
での結果が、undefinedとなります。
console.log(resultX)を削除して、(4)を実行すると、ScriptEditorの「結果」の欄に
*.jsonファイル名が正しく表示できます。ここで表示されているリストをresultXに
入れる方法がございますでしょうか?
(4) app = Application.currentApplication();
app.includeStandardAdditions = true;
var exec = `
test2=$(ls /Users/john/*.json)
echo $test2
`
resultX = app.doShellScript(exec);
987名称未設定
2023/03/24(金) 10:56:15.68ID:5GAFP4Gj0 resultXには代入されているが文字列としてだね
「返された値」を表示すれば出てくるよ
「返された値」を表示すれば出てくるよ
988名称未設定
2023/03/24(金) 11:01:18.81ID:G8ouTVCw0 結果は入ってるじゃん
989名称未設定
2023/03/24(金) 11:06:51.34ID:5GAFP4Gj0 ゴメンよく読んでなかった。すでに表示してるんだね。
undefinedはresultXへの代入結果でしょ
最後にresultX入れとけば表示されるよ
undefinedはresultXへの代入結果でしょ
最後にresultX入れとけば表示されるよ
990sage
2023/03/24(金) 11:38:00.15ID:tp6ybqm30 >>989
>最後にresultX入れとけば表示されるよ
ありがとうございます。うまくいきました。
デバッグ作業で変数などの値を確認するために、console.log(変数)で確認して
きましたが、
console.log(resultX)だとundefinedになるのは、何か特別な「仕様」なのでしょうか?
>最後にresultX入れとけば表示されるよ
ありがとうございます。うまくいきました。
デバッグ作業で変数などの値を確認するために、console.log(変数)で確認して
きましたが、
console.log(resultX)だとundefinedになるのは、何か特別な「仕様」なのでしょうか?
991名称未設定
2023/03/24(金) 12:26:23.67ID:5GAFP4Gj0992名称未設定
2023/03/24(金) 12:26:44.94ID:5GAFP4Gj0 アンカ間違えて>990ね
993sage
2023/03/24(金) 15:56:27.67ID:tp6ybqm30 >>991
>console.logの表示内容は「返された値」に表示されている。
丁寧なご説明を本当にありまとうございます。
「結果」の欄と「メッセージ」の欄を混乱してました。
「最後にresultX入れとけば表示される」のは「結果」の
欄で、それとほぼ同じ内容がconsole.log(resultX)とすると
「メッセージ」の欄に表示されるため、作業している
途中で頭が混乱してしまいました。
>console.logの表示内容は「返された値」に表示されている。
丁寧なご説明を本当にありまとうございます。
「結果」の欄と「メッセージ」の欄を混乱してました。
「最後にresultX入れとけば表示される」のは「結果」の
欄で、それとほぼ同じ内容がconsole.log(resultX)とすると
「メッセージ」の欄に表示されるため、作業している
途中で頭が混乱してしまいました。
994名称未設定
2023/03/25(土) 02:05:22.65ID:eef2YPir0 >>984
ChatGPT さんにその質問を投げてみた
ワイにはちんぷんだがこれ合ってんの?
↓
次のJavaScriptコードは、AppleScriptで提供されたコードと同じ機能を提供します。
const { execSync } = require('child_process');
const test2 = execSync('/bin/ls /Users/john/*.json').toString().trim();
console.log(test2);
このJavaScriptコードは、Node.jsの標準ライブラリであるchild_processを使用して、ターミナルからコマンドを実行しています。execSync()メソッドは、指定されたコマンドを同期的に実行し、その出力を返します。これにより、test2変数に/Users/johnディレクトリにある.jsonファイルのリストが格納されます。
そして、console.log()メソッドを使用してtest2変数の値をログに出力しています。注意してください、JavaScriptの場合、 console.log()のみログに出力することができ、変数を直接ログに出力することはできません。
ChatGPT さんにその質問を投げてみた
ワイにはちんぷんだがこれ合ってんの?
↓
次のJavaScriptコードは、AppleScriptで提供されたコードと同じ機能を提供します。
const { execSync } = require('child_process');
const test2 = execSync('/bin/ls /Users/john/*.json').toString().trim();
console.log(test2);
このJavaScriptコードは、Node.jsの標準ライブラリであるchild_processを使用して、ターミナルからコマンドを実行しています。execSync()メソッドは、指定されたコマンドを同期的に実行し、その出力を返します。これにより、test2変数に/Users/johnディレクトリにある.jsonファイルのリストが格納されます。
そして、console.log()メソッドを使用してtest2変数の値をログに出力しています。注意してください、JavaScriptの場合、 console.log()のみログに出力することができ、変数を直接ログに出力することはできません。
995名称未設定
2023/03/25(土) 06:44:11.86ID:9wC9X/Dv0 AppleScript アップルスクリプト 質問、発表 8
https://egg.5ch.net/test/read.cgi/mac/1679693883/
https://egg.5ch.net/test/read.cgi/mac/1679693883/
997名称未設定
2023/03/25(土) 13:35:07.93ID:jgAiznrY0 うめ
998名称未設定
2023/03/25(土) 13:37:33.81ID:jgAiznrY0 こぶ
999名称未設定
2023/03/25(土) 13:38:53.62ID:pO8wJ1xu0 とり
1000名称未設定
2023/03/25(土) 13:40:40.88ID:jgAiznrY0 Fin
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 2184日 0時間 57分 50秒
新しいスレッドを立ててください。
life time: 2184日 0時間 57分 50秒
10021002
Over 1000Thread 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- なぜ?「就職氷河期世代」への支援続々…石破首相が“就労支援”など3本柱の対策を指示するなど各党が発表 [煮卵★]
- 日本の未来の姿!?1人当たりGDP世界5位→82位へ転落した「元・先進国」の静かなる衰退を現地ルポ (泉 秀一氏) [少考さん★]
- 【テレビ】 永野芽郁&田中圭の不倫報道をワイドショーが『全スルー』に募るネットの違和感 「広末の不倫はあんなにやったのに」★3 [冬月記者★]
- なぜ?「就職氷河期世代」への支援続々…石破首相が“就労支援”など3本柱の対策を指示するなど各党が発表 ★2 [煮卵★]
- 大阪・関西万博 開幕13日目の来場者は10万7000人 (うち関係者1万8000人) GW初日のゲート前には長蛇の列 [少考さん★]
- 運転しながら「フライドポテト」食べるのは交通違反? 警察に確認すると… [夜のけいちゃん★]
- 【実況】博衣こよりのえちえちクロノクロス🧪★1
- 【悲報】万博に行った設定でエピソードを語り褒めちぎるX垢、同じ画像を使い回し大量発生🤔あっ😲 [359965264]
- フィンランドの消費税いくらなんでも高すぎる💦これは無理だろ [118990258]
- 【悲報】自民・森山裕幹事長、大豆とトウモロコシの輸入拡大を容認… あの、幹事長、TPP断固反対では? [452836546]
- 🏡
- 【好景気】新入社員さん、初任給64万円を受け取ってしまうwwwwwwwwwwwwwwwwwww [705549419]