ほとんど書き捨てレベルのAppleScriptですが、Microsoft Office用のAppleScriptの動作状況(ランタイム環境を変更すると動かなくなるなど)に興味があったので、書いてみました。
初回実行時にWord書類が入っているフォルダへのアクセス許可を求めるダイアログが出ますが、2回目以降はとくに聞かれません。
また、PowerPoint用のAppleScriptで、スクリプトメニューから実行すると実行がブロックされるという「Microsoft、正気か?」という仕様になっていましたが、いまMicrosoft Word用の本AppleScriptをスクリプトメニューに入れて呼び出しても実行できることを確認しています(macOS 13.6.7+Word バージョン 16.84 (24041420))。
AppleScript名:指定のWordファイルをPDFに書き出す.scpt |
set aFile to choose file automatorRun({aFile}, missing value) of me on automatorRun(input, parameters) repeat with i in input set ipath to i as text tell application "System Events" set o to name of i end tell set o to repChars(ipath, ".docx", ".pdf") of me tell application "Microsoft Word" close every document without saving open i save as document 1 file name o file format (format PDF) close every document without saving end tell end repeat return "" end automatorRun on repChars(origText as string, targStr as string, repStr as string) set {txdl, AppleScript’s text item delimiters} to {AppleScript’s text item delimiters, targStr} set temp to text items of origText set AppleScript’s text item delimiters to repStr set res to temp as text set AppleScript’s text item delimiters to txdl return res end repChars |
本Scriptを書くことになったreddit上の投稿への回答となるScriptはこちら。
AppleScript名:指定のWordファイルをPDFに書き出す(For Automator Action).scpt |
on run {input, parameters} repeat with i in input set ipath to i as text tell application "System Events" set o to name of i end tell set o to repChars(ipath, ".docx", ".pdf") of me tell application "Microsoft Word" close every document without saving open i save as document 1 file name o file format (format PDF) close every document without saving end tell end repeat return "" end run on repChars(origText as string, targStr as string, repStr as string) set {txdl, AppleScript’s text item delimiters} to {AppleScript’s text item delimiters, targStr} set temp to text items of origText set AppleScript’s text item delimiters to repStr set res to temp as text set AppleScript’s text item delimiters to txdl return res end repChars |