見出し画像

スクリプトエディタをAppleScriptから操作するハウツー本

macOS標準搭載の、AppleScriptを記述・実行・各種形式で書き出す「スクリプトエディタ」。これ自体、AppleScriptからの操作が行えるようになっています。このやり方について基礎から超上級の内容まで解説する電子書籍を刊行しました。


スクリプトエディタの動かし方

あらためてご説明。

本書は、AppleScriptを記述・実行するmacOS標準装備のアプリ「スクリプトエディタ」をAppleScriptから操作する方法について、基礎から超上級の内容までわかりやすく解説している電子書籍です(PDF 全570ページ、付録ScriptZipアーカイブ添付)。

https://piyomarusoft.booth.pm/items/6521562

今回も、例によってすべてのページをMac上でPagesで作っています。

「スクリプトエディタ」をAppleScriptから操作する、という言葉が予想以上に通じないので、困ってしまうところです。

なんでそんなものが必要なの?

AppleScriptを大量に書いていると、AppleScript自体をAppleScriptで解析する必要が出てきます。解析して、書き換えてフォーマット(冒頭のコメント部分)を整えるとか、呼び出されているハンドラ名の一覧をリスト化したいとか、使われている変数名を別のものに一括で書き換えるとか。

プログラムの内容を単純に文字置換してしまったら、コメントやメッセージ、文字定数など「置き換えてしまってはいけない内容」まで置き換えてしまいます。AppleScriptの各種構文要素を区別して、変数名だけ置換するとか、ハンドラ名だけを置換するといった操作は絶対に必要です。

本書には掲載していませんが、AppleScriptでAppleScriptのプログラムを解析して、どのようなハンドラの呼び出し関係になっているかとか、そういうマップを自動で生成するAppleScriptも書いて、他人の書いた長いScriptを分析するのに便利に使っていました。

そういう処理を2000年代初頭から行なってきて、そのノウハウが膨大な量になっていました。また、自分ひとりで1つの系列の技術を作ってきて、自分のためにだけ役立ててきました。Blogにタダで掲載するのは嫌ですが、電子書籍で対価を得られるのであれば問題ないでしょう。

内容ご紹介

いきなりハイエンドな内容を展開してしまうとついてきていただけないので、地道にスクリプトエディタの使い方から紹介をはじめます。

AppleScript書類のファイルオープン、内容の取り出し方などを説明しつつ、テキストでAppleScriptを組み立て、構文確認やコンパイル(中間言語への変換)なども行います。macOS 10.14で「execute」コマンドが廃止されたので、他の方法を用いてAppleScriptから他のAppleScript書類を実行する方法をご紹介します。

ついで、AppleScript書類の文法要素ごとの区分けや要素のピックアップ方法について、技術レベルが高くない方法(昔使っていた)から、Cocoaを呼び出して処理する方法までそれぞれ具体的なScriptを掲載・収録しています。


アプリのAppleScript用語辞書を解析して、コマンドやオブジェクトの有無を取得したり、用語辞書に掲載されている用例のScriptを個別のHTMLとして書き出すScriptなども紹介。


スクリプトエディタの機能を拡張するスクリプトアシスタントの書き方や、最初から用意されているScriptテンプレートについて、ひととおり解説を加えます。

対象読者

本書の内容を苦もなく読みこなせたら「名人」といってよいレベルだと思いますが、そこまで行かなくても内容を利用してよりMacの環境を便利に使うことであれば、そこそこのレベルのユーザーでも可能なことでしょう。


ただし、本書では「AppleScriptは何か?」「AppleScriptをどのように書けばよいか?」というレベルの解説は一切行っていないため、そのあたりはすでにクリアされているか、内容がどうであってもただ呼び出して実行するだけだろうと気にしない方が対象になることでしょう。

目次

1章 スクリプトエディタの使い方

  AppleScript関連開発ツール一覧
  スクリプトエディタの使い方
  スクリプトエディタの場所
  スクリプトエディタのメインウィンドウ表示
  おおまかなスクリプトエディタの使い方
  スクリプトエディタの各種ボタンについて
  設定(一般)
  設定(一般>スクリプトメニュー)
  設定(編集中>コードの補完)
  設定(編集中>行の折り返し)
  設定(編集中>フォーマット)
  設定(フォーマット)
  スクリプトアシスタント
  ファイル>新規
  ファイル>用語説明を開く...
  ファイル>保存
  ファイル>書き出す...
  編集>検索
  表示
  スクリプト
  その他
  ヘルプ

2章 スクリプトエディタのScripting概要

  スクリプトエディタのバージョンアップ履歴
  機能ごとに見るスクリプトエディタの用語辞書
  AppleScript用語辞書を処理
  例 AppleScriptで用語辞書を処理して表にした「Skim」アプリの Commandの変遷
  スクリプトエディタのScriptingを行う道具
  applicationオブジェクトのScripting

3章 documentオブジェクトのスクリプティング

  documentオブジェクトのスクリプティング
  documentのオープン
  documentのクローズ
  documentをカウント
  documentの各種属性値を取得
  documentの存在確認
  documentの新規作成
  documentの印刷
  documentの保存
  documentの構文確認とコンパイル
  windowオブジェクトのスクリプティング
  windowというオブジェクトの特徴
  windowでアクセスできるスクリプトエディタ上の要素

4章 textオブジェクトのScripting

  行単位の分解を行うparagraphs
  単語単位の分解を行うwords
  文字単位の分解を行うcharacters
  選択範囲を取得する際にtext classを活用
  AppleScript書類から文字書式を取得

5章 AppleScriptの作成とコンパイル(構文確認)

  AppleScript自動作成の歴史
  ステップ1 文字列としてScriptを組み立てる
  ステップ2 新規AppleScript書類を作成し、本文を指定して入れる
  ステップ3 作成したdocumentの構文チェックとコンパイルを実行
  ステップ4 パスとタイプを指定してAppleScript書類を保存
  AppleScriptの実行
  方法1:GUI Scripting経由でメニュー操作して実行
  方法2:スクリプトエディタに最前面の書類のパスを問い合わせてload script+runコマンドで実行
  方法3:スクリプトエディタに最前面の書類のパスを問い合わせてCocoaの機能を用いて実行
  AppleScriptアプレットの生成
  コラム アプレット自動生成とコード署名
  AppleScriptアプレットのサンドボックス化
  本サンドボックス化Scriptにおける許可/禁止指定項目

6章 スクリプトアシスタントの活用と作成

  スクリプトアシスタントの活用と作成
  スクリプトアシスタントはスクリプトエディタ操作の主要な用途
  タイプ1 現在のカーソル位置にテキストを挿入
  タイプ2:カーソル位置に呼び出しコードと呼び出すハンドラを挿入
  タイプ3:選択範囲のテキストを解析して変更し、選択範囲に書き戻す
  スクリプトアシスタントを自分で作る

7章 スクリプトメニュー

  メニューから呼び出すAppleScript実行専用プログラム
  3種類のScriptフォルダ
  スクリプトメニューのこまかいノウハウ
  サブメニューを表示する方法
  実行するAppleScriptにファイルを受け渡す方法
  スクリプトメニューのAppleScript実行に使われるプログラム
  スクリプトメニューから呼び出したAppleScriptの停止方法
  アプリケーション独自で実装しているスクリプトメニューとの相違点
  スクリプトメニューの特殊なショートカットキー
  スクリプトメニューと他のアプリ内蔵メニューにおける利用可能技術のちがい

8章 スクリプトエディタのURL Events

  スクリプトエディタのURLスキームapplescript://
  ローカルでもアプリ内でURL Eventsを利用
  インターネット上のコンテンツとスクリプトエディタ間の通信

9章 AppleScript用語辞書の処理

  指定したバンドルIDのアプリのSDEFを指定フォルダに書き出す
  バンドルIDで指定したアプリ内部のsdefファイルからコマンドを抽出
  Bundle IDで指定したアプリ内部のsdefファイルからオブジェクトを抽出
  アプリから書き出したsdefファイルをxincludeを考慮しつつ読み込み
  アプリから書き出したsdefファイルから用例を個別のHTMLに書き出す

10章 AppleScript構文要素の文字書式による判別

  スクリプトエディタの書式つきテキスト機能を用いた要素判別
  スクリプトエディタを操作して、AppleScript構文色分け設定情報を取得
  Cocoaの機能を用いた構文要素情報の読み込みと判定
  plistファイルからAppleScript構文色分け設定情報を取得
  com.apple.applescript.plistファイルから書式情報を取得
  指定のAppleScriptのソースコードからコメント部分のみを取得
  指定のAppleScriptのソースコードからProperty部分のみを取得
  指定のAppleScriptのソースコードからCocoa Property部分のみを取得
  指定のAppleScriptのソースコードからハンドラ名のみを取得
  指定のAppleScriptのソースコードから変数名のみを取得
  指定のAppleScriptのソースコードからアプリ名のみを取得
  指定のAppleScriptのソースコードからscript object名のみを取得
  指定のAppleScriptのソースコードからCocoaメソッド名のみを取得
  指定のAppleScriptのソースコードからアプリ名のみを取得
  最前面のAppleScriptの選択範囲からコメント部分のみを取得
  最前面のAppleScriptの選択範囲から変数名のみを取得
  指定フォルダ以下のAppleScriptの冒頭のコメントをさしかえ
  スクリプトエディタで選択中の範囲を画面上の描画幅でソートして書き戻す
  スクリプトエディタで選択中の範囲の変数名を置換
  指定したAppleScript書類中の変数名を置換して新規書類に
  スクリプトエディタの最前面の書類で選択範囲に対して、書式情報にもとづき変数名を置換して書き戻す

11章 Cocoa系サンプルAppleScript

  ASを扱うOSAScript.Framework
  指定のAppleScript書類がCocoa ScriptかVanila Scriptかを判定
  指定のAppleScript書類の記述OSA言語名を取得
  指定のAppleScript書類を実行する
  指定のAppleScript書類を実行して実行結果をプレーンテキストで取得
  指定のスクリプトバンドル書類を同階層にスクリプト形式で再保存
  指定のスクリプト書類を同階層にスクリプトバンドル形式で再保存
  AppleScript書類のソースコードをRTF形式で書き出す
  AppleScript書類のソースコードをHTML形式で書き出す
  AppleScript書類のソースコードをPDF形式で書き出す
  デフォルトのOSA言語名を取得
  指定の AppleScript書類がコンパイル(構文確認+中間言語化)ずみかどうかを取得
  指定のAppleScript書類のソースコードのテキストを取得
  指定のAppleScript書類をアプリ(アプレット)形式で保存
  指定のAppleScript書類を常駐型アプリ(アプレット)形式で保存
  指定のAppleScript書類をアプリ(アプレット)形式で保存。スタートアップスクリーン(「説明」欄の内容)を表示

12章 Scriptテンプレート解説

  唯一価値のあるテンプレートCocoa-AppleScript Applet
  Cocoa-AppleScript Appletが実現できること
  macOS 12.6以降のCocoa-AppleScript AppletはRosetta環境でのみ稼働

13章 AppleScript予約語一覧


  tellブロック
  アクション
  ダイアログ
  コマンド
  他の言語呼び出し
  序数
  制御構文
  文字列操作
  システム日付
  データ型
  定数
  変数
  関数
  演算子
  パス関連
  ファイル
  ローカライズ
  Web関連
  フィルタ参照
  サブルーチン
  無意味語
  クリップボード
  音量制御
  スクリプトオブジェクト
  その他

あとがき

いいなと思ったら応援しよう!