AppleScriptでサウンド設定を自動化
はじめに
Macにテレビ会議用のUSBマイク兼スピーカー(YAMAHA PJP-20UR)を接続してテレビ会議を行なっているのですが、時々サウンド設定が勝手に変わってしまって、こちらの声が相手に聞こえなかったり、向こうの声が聞こえなかったりすることがあります。
こちら側に原因がある時は比較的簡単に対処できますが、向こう側に原因がある場合は、画面共有でシステム環境設定を開いたり、電話越しに指示を出しながら向こうにいる人に操作してもらったりしていました。
しかし、トラブルが起きるときに限ってネットワークが遅延して画面共有の反応が悪かったり、指示内容がうまく伝わらなかったりすることが多くて困っていたので、AppleScriptで自動化してみることにしました。
実行環境はmacOS Sierraです。
機能要件
音声トラブルが起きたときに手動で実施していることをまとめると、以下のようになりました。
- システム環境設定→サウンドを開く
- 出力タブをクリックして、「サウンドを出力する装置」にYAMAHA PJP-20UR以外が選択されている場合はYAMAHA PJP-20URに変更する
- 入力タブをクリックして、「サウンドを入力する装置」にYAMAHA PJP-20UR以外が選択されている場合はYAMAHA PJP-20URに変更する
- 主音量をMaxにする
- 入力音量をMaxにする
- ミュートを解除する(主音量を変更すると自動で解除されるが念のため)
これをAppleScriptで書くと以下のようになります。
(こちらの記事を参考にさせていただきました。)
tell application "System Preferences"
reveal anchor "output" of pane id "com.apple.preference.sound"
activate
tell application "System Events"
tell process "System Preferences"
select (row 1 of table 1 of scroll area 1 of tab group 1 of window "サウンド" whose value of text field 1 is "Yamaha PJP-20UR")
end tell
end tell
reveal anchor "input" of pane id "com.apple.preference.sound"
activate
tell application "System Events"
tell process "System Preferences"
select (row 1 of table 1 of scroll area 1 of tab group 1 of window "サウンド" whose value of text field 1 is "Yamaha PJP-20UR")
end tell
end tell
quit
end tell
set volume output volume 100
set volume input volume 100
set volume without output muted
アクセシビリティの許可
上記のAppleScriptを実行すると、初回はエラーになります。
こちらの記事で詳しく紹介されていますが、OSX10.9以降はアプリケーションごとにアクセシビリティを許可してあげないと上記スクリプトは実行できません。
スクリプトエディタで実行した場合は下記のようなダイアログが出るはずなので、「システム環境設定を開く」をクリックします。
するとシステム環境設定→セキュリティとプライバシー→アクセシビリティが開き、「下のアプリケーションにコンピュータの制御を許可」の一覧に「スクリプトエディタ」が表示されるので、左下の鍵アイコンをクリックして変更可能にしたらチェックボックスをONにします。
これで次回以降はスクリプトエディタからは上記のスクリプトを実行できるようになります。
その他のアクセシビリティの許可
スクリプトエディタから実行できるようになりましたが、リモートから操作するには使い勝手がよくないので、以下の方法でも実行できるようにします。
- スクリプトメニュー
- ターミナル
- SSH経由
- cron
スクリプトメニュー
スクリプトエディタの環境設定で「メニューバーにスクリプトメニューを表示」をチェックして、ユーザー・スクリプト・フォルダにスクリプトを格納します。
メニューからスクリプトを実行するとスクリプトエディタで実行したときと同じようなダイアログが出るので、同様の手順で「SystemUIServer」にアクセシビリティを許可します。
ターミナル
ターミナルを開いて下記のコマンドを実行すると同様にダイアログが出るので「ターミナル」にアクセシビリティを許可します。
$ osascript sound-setting.scpt
ただ、私の場合、エラーにはなるのにダイアログが出ない状況が続いてしばらく嵌りました。しばらくしてから実行したらあっさりダイアログが出て設定できましたが、どうにも気持ち悪い動きです。
後述のSSHとcronも同様でした。
SSH経由
SSHで接続してからターミナルと同様にosascript
で実行します。ダイアログが出たら「sshd-keygen-wrapper」に許可を与えます。
cron
crontabに今より少し先の時間に実行するよう記述して実行します。ダイアログが出たら「cron」に許可を与えます。
下記はデスクトップに配置したスクリプトを毎朝8時に実行する場合の例です。
0 8 * * * cd ~/Desktop && osascript sound-setting.scpt
全部の設定が終わるとこんな感じになります(「ターミナル」は隠れて見えていません)。
cronで毎朝自動実行して、不具合があったときはまずSSH経由で実行、それでもダメなら現地の人にスクリプトメニューから実行してもらうという三段構えの体制がこれで整いました。
アクセシビリティの設定がもっと簡単にできるようになればいいのに、とは思います。
Author And Source
この問題について(AppleScriptでサウンド設定を自動化), 我々は、より多くの情報をここで見つけました https://qiita.com/sikkim/items/4bb9257ca7ebb0d4f5b5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .