■ このスレッドは過去ログ倉庫に格納されています
AppleScript アップルスクリプト 質問、発表 7
- 1 :名称未設定:2017/04/01(土) 12:42:51.78 ID:F8/5NUFI0.net
- 質問、発表どっちでもスレ。
■注意
安直なスクリプト作成依頼、丸投げ、「こういうの作ってください!」はお断り。
わからない点、エラーが解決できない点についてはスクリプト片を添えて質問すること。
OSバージョンも忘れずに。
■参考
AppleScript Language Guide
https://developer.apple.com/library/mac/documentation/AppleScript/Conceptual/AppleScriptLangGuide/
TN2065: do shell script
https://developer.apple.com/library/mac/technotes/tn2065/
AppleScript: The Language of Automation
http://www.macosxautomation.com/applescript/
MacWiki - AppleScript
http://macwiki.osdn.jp/wiki/index.php/AppleScript
鳶嶋工房 / AppleScript
http://tonbi.jp/AppleScript/
AS Hole(AppleScriptの穴)
http://piyocast.com/as/
■過去スレ直近5つ
6 http://potato.2ch.net/test/read.cgi/mac/1387630245/
5 http://anago.2ch.net/test/read.cgi/mac/1330350325/
4 http://anago.2ch.net/test/read.cgi/mac/1256127156/
3 http://pc11.2ch.net/test/read.cgi/mac/1223026902/
2 http://pc11.2ch.net/test/read.cgi/mac/1197443062/
- 952 :名称未設定:2023/01/14(土) 21:14:42.72 ID:0Ha2vBvH0.net
- open POSIX file ということじゃなく?
- 953 :名称未設定:2023/01/14(土) 21:14:56.29 ID:0Ha2vBvH0.net
- あ、ごめんリロードしてなかった
- 954 :名称未設定:2023/01/14(土) 21:41:07.93 ID:hOXDjmwo0.net
- >>950
思い通りの動作をするようになりました。
大変嬉しいです。
ありがとうございました。
- 955 :名称未設定:2023/01/14(土) 21:47:50.50 ID:IFtoiy9i0.net
- 自分は全く理解しないでやってるけど、こんな感じではどうでしょう
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.81 ID:NoIkVHQB0.net
- クイックタイムが起動していない状態であれば問題のコードでも開けるけど、
基本applescriptは旧来のhfs path。
でもアプリケーションはPOSIXに準じるので、アプリケーションが起動している状態だとhfs pathとして受け取ってしまう。
結果として/が名前として受け取り、:が階層として判断してしまうのでファイルが開かない。
そのため、POSIXパスとしての型とすれば問題なく開ける。
ちなみに初回だけ変数の型がhfsパスなのにPOSIX書きで開けるのは、
apple scriptのfile objectがPOSIXなので、hfsパスを押し退けて使える()
- 957 :sage:2023/01/23(月) 15:17:06.44 ID:8wZ0hG4u0.net
- 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];
- 958 :名称未設定:2023/01/23(月) 16:43:50.74 ID:qAppQcQp0.net
- qtWindow.windows[0].position = [100, 300];
- 959 :sage:2023/01/23(月) 16:56:08.26 ID:8wZ0hG4u0.net
- 上手くできました、感謝です。
私はAppleScriptは20年以上使っているのですが
10年ほど前にJavaScript形式で書くように
変更したのが、失敗でした。JavaScript形式の
AppleScriptの検索が非常に困難で、このような
質問をして、ご迷惑をお掛けしてしまいます。
- 960 :名称未設定:2023/01/28(土) 02:26:43.44 ID:f3R26hc10.net
- 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)};
}
- 961 :名称未設定:2023/01/28(土) 02:38:27.54 ID:f3R26hc10.net
- >>960
every ... whose って楽だったなあと
- 962 :名称未設定:2023/01/30(月) 09:05:16.02 ID:5649FAEH0.net
- whose使えるよ
adobeApps=Application("System Events").applicationProcesses.whose({name:{ _contains: 'Adobe' }}).name()
- 963 :sage:2023/01/31(火) 09:32:42.92 ID:M2eRX9Lu0.net
- >>960, >>961
javascript形式のapplescriptを学習する書籍や
ホームページをご紹介いただけると幸いです。
英語の書籍・ホームページでも大丈夫です。
- 964 :名称未設定:2023/01/31(火) 12:21:12.08 ID:qR88flPO0.net
- 俺もJSで書くようにしようかな… と時々思っては思うだけで終わってる
- 965 :名称未設定:2023/01/31(火) 21:52:30.38 ID:oG0hvaru0.net
- >>962
あ、、、Release Notesにしっかり書いてありました
- 966 :名称未設定:2023/02/06(月) 10:17:18.89 ID:0bjnOdyZ0.net
- 誰か教えていただけませんか。
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.95 ID:NlXXdeKF0.net
- > set volume output volume 50
これで一緒にバランス調整されてない?
試したらセンターになったけど、ってここ見て知った https://github.com/jpwenzel/reset-audio-balance
- 968 :名称未設定:2023/02/06(月) 11:37:39.59 ID:0bjnOdyZ0.net
- >>967
set volume output volume 50
何度も試しましたがこれだけでバランスは調整されることはないですね。
- 969 :名称未設定:2023/02/06(月) 13:07:14.73 ID:YlUscaYB0.net
- こういう記事があるので、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/
- 970 :名称未設定:2023/02/15(水) 15:56:09.72 ID:qib9yM4Y0.net
- AppleScriptではないのですが、Automatorのフォルダアクションがある時から動かなくなる減少が頻繁に起こるのですが、同じ現象の人いませんか?ソースをいじっていないのに急に動かなくなります...
- 971 :名称未設定:2023/02/15(水) 18:50:08.07 ID:wteAUxtG0.net
- Automatorスレでやれや
- 972 :名称未設定:2023/02/20(月) 10:48:54.33 ID:TuuDDhJs0.net
- 教えてください。
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.12 ID:YANdS4h30.net
- System Eventsも追加すりゃいいんじゃないの
- 974 :名称未設定:2023/02/20(月) 11:10:11.63 ID:YANdS4h30.net
- ってもう追加されてんのか流れ的に
すまん
- 975 :名称未設定:2023/02/20(月) 17:59:43.63 ID:dsaFNpZw0.net
- 何で Automatorでやってるのかわからんけど
一度実行ボタン押して
カーソルの位置にスペースが入ったとかってオチじゃないよね?
- 976 :名称未設定:2023/02/20(月) 18:47:50.41 ID:TuuDDhJs0.net
- レス頂いててありがとうございます。
しかし私のミスでAutomatorスレと間違って書き込みをしてたようです…
移動させていただきます。
失礼しました。
- 977 :名称未設定:2023/03/23(木) 10:11:24.47 ID:sMTI/zjW0.net
- Venturaでシステム設定に変わって制御するスクリプト書き換えててなんか上手く動かねえなと思ったら「セキュリティとプライバシー」が「プライバシーとセキュリティ」に変わっていた
- 978 :名称未設定:2023/03/23(木) 17:23:33.29 ID:IR5kOyOp0.net
- なんという間違い探し…よく見つけたね
com.apple.preference.securityとかbundle使った方が安全っちゅうこっちゃね
- 979 :名称未設定:2023/03/23(木) 21:04:53.89 ID:sMTI/zjW0.net
- そういや.prefPaneを開くという方法もあったな
ちなみにpaneは用語説明に残ってはいるがエラーにしかならない
- 980 :名称未設定:2023/03/23(木) 21:14:32.64 ID:IR5kOyOp0.net
- こんな?
tell application "System Preferences" to set current pane to pane id "com.apple.preference.security"
- 981 :名称未設定:2023/03/23(木) 21:23:16.08 ID:OytpOZvV0.net
- 本当によく見つけたね…
存在してるけど動かない物も多いから最近はターミナルでバンドル組んでるわ…
- 982 :名称未設定:2023/03/23(木) 22:20:24.22 ID:1lysEDrt0.net
- ターミナルでバンドル組むってなに
- 983 :名称未設定:2023/03/23(木) 23:24:59.63 ID:IR5kOyOp0.net
- こんな??知らんけど
open x-apple.systempreferences:com.apple.preference.security
- 984 :sage:2023/03/24(金) 09:48:22.00 ID:tp6ybqm30.net
- 次の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
- 985 :名称未設定:2023/03/24(金) 10:22:38.24 ID:G8ouTVCw0.net
- (2)からダブルクウォーツ取っ払えばいけたぽいけど
- 986 :sage:2023/03/24(金) 10:43:07.07 ID:tp6ybqm30.net
- 素早いご助言を感謝です。ダブルクウォーツを削除した結果
エラー表示が消えました。ただ「帰り値を表示する」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.68 ID:5GAFP4Gj0.net
- resultXには代入されているが文字列としてだね
「返された値」を表示すれば出てくるよ
- 988 :名称未設定:2023/03/24(金) 11:01:18.81 ID:G8ouTVCw0.net
- 結果は入ってるじゃん
- 989 :名称未設定:2023/03/24(金) 11:06:51.34 ID:5GAFP4Gj0.net
- ゴメンよく読んでなかった。すでに表示してるんだね。
undefinedはresultXへの代入結果でしょ
最後にresultX入れとけば表示されるよ
- 990 :sage:2023/03/24(金) 11:38:00.15 ID:tp6ybqm30.net
- >>989
>最後にresultX入れとけば表示されるよ
ありがとうございます。うまくいきました。
デバッグ作業で変数などの値を確認するために、console.log(変数)で確認して
きましたが、
console.log(resultX)だとundefinedになるのは、何か特別な「仕様」なのでしょうか?
- 991 :名称未設定:2023/03/24(金) 12:26:23.67 ID:5GAFP4Gj0.net
- >>989
>undefinedはあくまで最後の式の実行結果でしょ。
結果を返さないからundefined
console.logの表示内容は「返された値」に表示されている。
- 992 :名称未設定:2023/03/24(金) 12:26:44.94 ID:5GAFP4Gj0.net
- アンカ間違えて>990ね
- 993 :sage:2023/03/24(金) 15:56:27.67 ID:tp6ybqm30.net
- >>991
>console.logの表示内容は「返された値」に表示されている。
丁寧なご説明を本当にありまとうございます。
「結果」の欄と「メッセージ」の欄を混乱してました。
「最後にresultX入れとけば表示される」のは「結果」の
欄で、それとほぼ同じ内容がconsole.log(resultX)とすると
「メッセージ」の欄に表示されるため、作業している
途中で頭が混乱してしまいました。
- 994 :名称未設定:2023/03/25(土) 02:05:22.65 ID:eef2YPir0.net
- >>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()のみログに出力することができ、変数を直接ログに出力することはできません。
- 995 :名称未設定:2023/03/25(土) 06:44:11.86 ID:9wC9X/Dv0.net
- AppleScript アップルスクリプト 質問、発表 8
https://egg.5ch.net/test/read.cgi/mac/1679693883/
- 996 :名称未設定:2023/03/25(土) 08:54:40.59 ID:zyuo/Yd90.net
- >>994
それもうAppleScriptもJXAも関係ないだろ
なんでも持ち込むな
- 997 :名称未設定:2023/03/25(土) 13:35:07.93 ID:jgAiznrY0.net
- うめ
- 998 :名称未設定:2023/03/25(土) 13:37:33.81 ID:jgAiznrY0.net
- こぶ
- 999 :名称未設定:2023/03/25(土) 13:38:53.62 ID:pO8wJ1xu0.net
- とり
- 1000 :名称未設定:2023/03/25(土) 13:40:40.88 ID:jgAiznrY0.net
- Fin
- 1001 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1001
395 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★