MacのWordで、⌘Pで変更・コメントを含まない文書を印刷する

Microsoft Word for Macの「校閲」機能で変更履歴機能やコメント機能を使っている場合、表示が「変更履歴／コメントなし」以外だと、デフォルトの印刷対象が「変更とコメントの内容を含む文書」になります。
![スクリーンショット 2022-07-26 17.58.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192970/97e595ba-58a8-f39c-3ee4-7af3fa19d0e7.png)
![スクリーンショット 2022-07-26 17.59.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192970/52e7cced-2c9e-ca55-2a8c-87cd49b5ea52.png)
個人的には、画面に変更履歴やコメントを表示しているときも、印刷は「文書」のみを印刷してほしい。
ということで、**⌘Pを押したら、プリントダイアログを開いて印刷対象を「文書」にする**という一連の操作を、**AppleScript等を使って自動化**します。（制作環境：macOS Monterey v12.3.1、Microsoft Word for Mac v16.63）

# プリントダイアログを開いて操作するAppleScript
```AppleScript
(* Wordで印刷する際、デフォルトの印刷対象が「変更とコメントの内容を含む文書」なので、これを「文書」に変更する操作を行うスクリプト *)
tell application "Microsoft Word"
	activate
end tell

tell application "System Events"
	(* プリントダイアログを開く。キーボードショートカット変更対応版 *)
	tell process "Microsoft Word"
		pick menu item "プリント..." of menu "ファイル" of menu bar item "ファイル" of menu bar 1
	end tell
	
	delay 1
	tell window "プリント" of process "Microsoft Word"
		tell pop up button 3
			click
			click menu item "Microsoft Word" of menu 1
		end tell
		tell group 1
			click pop up button 1 (*印刷対象*)
			click menu item "文書" of menu 1 of pop up button 1
		end tell
		tell pop up button 3
			click
			click menu item "印刷部数と印刷ページ" of menu 1 (* 印刷部数と印刷ページ *)
		end tell
	end tell
end tell
```
上記AppleScriptを実行すると、プリントダイアログを開いて、カスタマイズ項目「Microsoft Word」を開いて、印刷対象を「文書」に変更して、カスタマイズ項目「印刷部数と印刷ページ」に戻ります。
実装上のポイントとして、AppleScriptからプリントダイアログを開く処理は `keystroke "p" using command down` を使う作例が多いのですが、今回は⌘Pのキーボードショートカットを今回作るサービスに置き換えるので、このショートカット呼出方式だと無限ループになってしまうため、メニューバーからコマンドを実行(`pick`)する方式にしています。

# 上記スクリプトを呼び出す「サービス」をAutomatorで作る
![スクリーンショット 2022-07-26 11.20.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192970/68dfeeb1-809e-280b-cb84-f553a35ef528.png)
AppleScriptを「サービス」から呼び出せるようにするには、Automatorを使うのが簡単です。上の画像のように、Microsoft Wordを「検索対象」として、「AppleScriptを実行」の`(* Your script goes here *)`の下にスクリプトを挿入しましょう。
Automatorワークフローを新規作成する際に書類の種類を「クイックアクション」とすることで、メニューバーの「サービス」から呼び出せるようになります。
保存すると自動的に「サービス」置き場（`$ ~/Library/Services`)に保存され、「サービス」から呼び出せるようになります（たぶん。）。（ついでにTouch Barからも呼び出せるようになります。）
![スクリーンショット 2022-07-27 15.11.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192970/58279095-3fff-fae1-aa33-a3650f6c4b9e.png)
ただし、実行しようとすると`アクション"AppleScriptを実行"でエラーが起きました:"System EventsにApple Events を送信する権限がありません。"`とかそんな感じのエラーメッセージが出てきます。
このスクリプトは`System Events`を使ってWordを操作するため、Wordにそういう操作権限を与える必要があります。
![スクリーンショット 2022-07-27 15.21.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192970/269240f6-e810-6e08-113c-40ed558d0d5d.png)
「システム環境設定」→「セキュリティとプライバシー」→「オートメーション」で System Events.app によるWord操作権限を与えることで、動作するようになります（たぶん。）。

# Wordの「プリント...」と自作サービスにキーボードショートカットを設定する
「システム環境設定」→「キーボード」→「ショートカット」→「アプリケーション」で、Word用のショートカットを作成・変更します。
![スクリーンショット 2022-07-27 15.12.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/192970/6cece35e-635a-7d93-5ea4-52c668835cab.png)
これで、Word使用中に⌘Pを入力すると、標準の印刷コマンドではなく今回自作したサービスを呼び出すようになります。

このように、キーボードショートカットの使い勝手をちょっと良くしたい場合に、自作サービスと標準のキーボードショートカットを入れ替えるという手法はわりと捗ります。（上のスクショの「Safariを確認して終了」も同様の例。）
まぁ、言うても校閲メニューで「変更履歴/コメントなし」にすれば良いって知ってたら作らなかったかもしれんけどな！
Enjoy!