NiftyServe FPRINT 2番会議室で連載した,「QuarkXPressを操ろう」の内容をそのまま載せています。

QuarkXPressを操ろう(その7)「tell application(1)」
QuarkXPressを操ろう(その8)「tell application(2)」
QuarkXPressを操ろう(その9)「tell application(3)」
QuarkXPressを操ろう(その10)「default document,document,master documentに共通なプロパティ」
QuarkXPressを操ろう(その11)「ガイドラインのロックアンロック」
QuarkXPressを操ろう(その12)「新規ドキュメントの作成」

02676/02677 GGC00677 [,た]     QuarkXPressを操ろう(その7)
( 2)  96/03/03 16:02

「tell application(1)」
では,具体的なスクリプトを作っていきましょう。今回は,tell application
です。
あっ,その前に,AppleScriptでまだできないことを確認しておきましょう。
それは,QXをインストールすると,フォルダに「QXP3.3リリースノート」とい
うのができていると思います。その4章に,QX J版でできない機能が出ていま
すので,一通り読んで下さい。つまり,日本語独自の組版ルールを制御するこ
とはまだできないということです。これを理解してから始めましょう。

オブジェクト,applicationのプロパティ一覧です。
------------------------------------------------------------
編集-環境設定-アプリケーション
ディスプレイ
 複数モニタへのタイル      tile to multiple monitors
 ドキュメントのフルスクリーン表示      maximize document bounds
 オフスクリーンでの描画     offscreen draw
  カラーTIFF          color TIFF resolution
  グレイTIFF          gray TIFF resolution
モニタ修正
 カラー調整           calibrated pantone
スクロール
 遅〜速             scroll speed
 高速スクロール        ?不明 知っている人は教えて下さい
 ライブスクロール        live scroll
テキストのドラッグ&ドロップ  ?不明 知っている人は教えて下さい
引用符              quote types
 引用符の自動変換        smart quotes
ガイドの色
 マージン            margin guide color
 ルーラー            ruler guide color
 グリッド            grid guide color
自動保存             auto save
 ?分おきに           auto save interval
自動バックアップ         auto backup
 保管?リビジョン        total backups
 保存フォルダ          backup destination
ライブラリへの自動保存      auto lib save
ペーストボードの幅        pasteboard width
トンボまでの距離         registration marks offset
------------------------------------------------------------
テキスト取り込み
スタイルシートを含む       import styles
引用符を変換           convert quotes
------------------------------------------------------------
表示
QuarkXPressについて        about showing
クリップボード表示        clipboard showing
カラーパレット表示        colors showing
レイアウトパレット表示      doc layout showing
ヘルプ表示            help showing
メジャー表示           measurements showing
スタイルシート表示        style sheets showing
ツール表示            tools showing
トラップパレット表示       trap information showing
------------------------------------------------------------
バージョン            version
------------------------------------------------------------
その他(3.1の名残なのか?)
低解像度TIFFで表示        full resolution import
ページグラバーハンド       page grabber

GGC00677 [,た] 鎌田 幸雄

02677/02677 GGC00677 [,た]     QuarkXPressを操ろう(その8)
( 2)  96/03/03 16:02

「tell application(2)」
では,前回をもとに作ったスクリプトです。
編集-環境設定-アプリケーションの既定値を変更してしまいますので,現在値
をどこかに控えてから実行して下さい。
------------------------------------------------------------------
tell application "QuarkXPress"
  activate
  set tile to multiple monitors to true
  set maximize document bounds to true
  set offscreen draw to true
  set color TIFF resolution to use 8 bit --(use 16 bit/use 32 bit)
  set gray TIFF resolution to use 16 levels --(use 256 levels)
  set calibrated pantone to true
  set scroll speed to 1 --(1〜144)
  set live scroll to true
  set quote types to 0
  set smart quotes to true
  set margin guide color to {0, 0, 65535}--(デフォルトは{0, 0, 65535})
  set ruler guide color to {0, 65535, 0}--(デフォルトは{0, 39321, 0})
  set grid guide color to {65535, 0, 0}--(デフォルトは{65535, 0, 65535})
  set auto save to true
  set auto save interval to "10"
  set auto backup to true
  set total backups to 5
  --set backup destination to alias {"DataHD:名称未設定フォルダ:"}
  set auto lib save to true
  set pasteboard width to 80
  set registration marks offset to 9
  set import styles to true
  set convert quotes to true
  set about showing to true
  set clipboard showing to true
  set colors showing to true
  set doc layout showing to true
  set help showing to true
  set measurements showing to true
  set style sheets showing to true
  set tools showing to true
  set trap information showing to true
  set y to version --versionの値をyにセットした
  set full resolution import to false
  set page grabber to false
end tell
------------------------------------------------------------------
動作確認しておりますので,おためし下さい。
多少,補足することがあります。それは,次回にしたいと思います
GGC00677 [,た] 鎌田 幸雄

02687/02687 GGC00677 [,た]     QuarkXPressを操ろう(その9)
( 2)  96/03/05 23:16

「tell application(3)」

 前回の補足事項です。値を変えてみて,アレッ!?と思うことがあ
りませんでしたでしょうか? 例えば,・・・
backup destination
 (?_?)命令しても変更されない
quote types
 (?_?)0〜4セットできると思ったら0,1しか受け付けない
full resolution import
 (?_?)QuarkのAS(AppleScript)の本に載ってない。
  用語説明に載っている。
 (?_?)falseにしても72dpiで取り込まれる。
page grabber
 (?_?)falseにしても,ページグラバーハンドは使用できる

 このように,本に書いてあるからといって,その通りに実行でき
るとは限りません。指定方法が本とは異なる場合もあるし,バグの
場合もあるようです。ですから,試行錯誤となってしまうのです。
 実は,このtell applicationで,もっと実用的なサンプルスクリ
プトを作成しようとしたのですが,backup destinationが変わらず
断念しました。
 次回以降,サンプルスクリプトを例にして進めていきたいと思い
ます。複数のオブジェクトにtellすると思いますが,その都度,プ
ロパティの説明していくつもりです。もし,こういったことを例題
にあげて欲しいという要望がありましたら,コメントでも,メール
でも結構ですから教えていただきたいと思います。また,発言ペー
スも週1回を目指していくつもりですが,遅くなる場合もあると思
います。ご容赦ください。

GGC00677 [,た] 鎌田 幸雄

02707/02708 GGC00677 [,た]     QuarkXPressを操ろう(その10)(長文101行)
( 2)  96/03/09 00:24

<1>default document,document,master documentに共通なプロパティ
表示関連
  サイズ           view scale
  特殊キャラクタ表示     invisibles showing
  ルーラー表示        rulers showing
  ベースライングリッド表示  baseline grid showing
  ガイド表示         guides showing
新規-ドキュメント
  マージンガイド
    天           top margin
    地           bottom margin
    左           left margin
    右           right margin
    見開き         facing pages
    内           inside margin
    外           outside margin
  ページサイズ
    縦           page height
    横           page width
  コラム
    コラム数        column count
    コラム間隔       gutter width
  テキストボックスの自動作成 automatic text box
環境設定-一般
    横の単位        horizontal measure
    縦の単位        vertical measure
    自動ページ挿入     auto page insertion location
    フレーム        frame inside
    ガイド         guides in front
    ルーラー適用範囲(スプレッド) item spread coords
    自動画像取り込み    auto picture import
    マスターページアイテム keep master page items
    ポイント/インチ     points per inch
    シセロ/cm        ciceros per centimeter
    ガイド吸着距離     snap distance
    グリークテキスト    greek below
    画像グリーキング    greek pictures
    精密ブレンド表示    low quality blends
    制限グループの自動作成 auto constrain
環境設定-文字
  上付き文字
    オフセット       superscript offset
    縦比率         superscript vertical scale
    横比率         superscript horizontal scale
  下付き文字
    オフセット       subscript offset
    縦比率         subscript vertical scale
    横比率         subscript horizontal scale
  スモールキャップス
    縦比率         small caps vertical scale
    横比率         small caps horizontal scale
  ベースライングリッド
    始点          baseline grid start
    増幅値         baseline grid increment
  行送り
    行送りの自動設定    auto leading
    モード         typesetting leading mode
    行送りの保持      maintain leading
  合字
    合字          ligatures on
    合字解除        maximum ligature track
  自動カーニング       auto kern
  自動カーニングのテキストサイズ kern above
  フレックススペース幅    flex space width
  自動ハイフンの方法     enhanced hyphenation method
環境設定-ツール
    画面表示
      最小値       minimum view scale
      最大値       maximum view scale
      増幅値       view scale increment
環境設定-トラップ
    自動トラップの方法   trap absolute
    自動値         automatic trap amount
    不特定カラー      indeterminate trap amount
    オーバープリントの限界 overprint limit
    白を無視        ignore white
    プロセストラップ    process trap
その他
  ユーザ辞書のパス      auxiliary dictionary path
  デフォルトのツールモード  default tool mode
  デフォルトのスプレッドの数 default spread count
  スプレッドの幅       spread width
  スプレッドの高さ      spread height
  ガイドラインのロック    lock guides
  プリントフォントサイズを整数にするか,分数を許すか(よく解らない?)
                fractional character widths

<2>default documentには無く,document,master documentに共通なプロパ
ティ
現在選択されているボックス   current box
現在表示されているページ    current page
現在表示されているスプレッド  current spread
ファイルパス          file path
フローバージョン        flow version
フォントリスト         font list
ページルーラー原点       page rule origin(本には載っていない)
スプレッドルーラー原点     spread rule origin
ツールモード          tool mode

GGC00677 [,た] 鎌田 幸雄

02708/02708 GGC00677 [,た]     QuarkXPressを操ろう(その11)
( 2)  96/03/09 00:25

 あまり,プロパティばかりでは飽きますので,ここらで使えるスクリプトを
披露しましょう。使用するプロパティはただ一つ,lock guidesです。
つまり,ドキュメントのガイドラインのロックアンロックを制御します。
まずは,最もシンプルなものです。
----------------------------------------------------------------------
tell application "QuarkXPress"
  activate
  tell document 1
    set lock guides to true -- unlock の時は false
  end tell
end tell
----------------------------------------------------------------------
でも,誰にでも使ってもらうことを考えると不親切ですね。ですから,これに
お肉を付けてライブラリ登録に値するものにしてみましょう
--guides lock/unlock--------------Copyright 1996 Yukio Kamata --------
tell application "QuarkXPress"
  activate
  if not (exists document 1) then
    beep
    display dialog "QXPのドキュメントが開かれていません。" buttons {"中止"}
default button 1 with icon 0
    return
  end if
  display dialog "ガイドロック/ロック解除 適用ドキュメント?" buttons {"New",
"Master", "Document"} default button {"Document"} with icon 1
  set ans_bttn to button returned of result
  if ans_bttn is "New" then
    tell default document 1
      if lock guides is true then
        set lock guides to false
        display dialog "これから作成するドキュメントのガイドはロックさ
れません" buttons {"OK"} default button 1 with icon 1
      else
        set lock guides to true
        display dialog "これから作成するドキュメントのガイドはロックさ
れます" buttons {"OK"} default button 1 with icon 1
      end if
    end tell
  end if
  if ans_bttn is "Master" then
    tell master document 1
      if lock guides is true then
        set lock guides to false
        display dialog "マスタードキュメントのガイドをロック解除しまし
た" buttons {"OK"} default button 1 with icon 1
      else
        set lock guides to true
        display dialog "マスタードキュメントのガイドをロックしました"
buttons {"OK"} default button 1 with icon 1
      end if
    end tell
  end if
  if ans_bttn is "Document" then
    tell document 1
      if lock guides is true then
        set lock guides to false
        display dialog "ドキュメントのガイドをロック解除しました"
buttons {"OK"} default button 1 with icon 1
      else
        set lock guides to true
        display dialog "ドキュメントのガイドをロックしました" buttons
{"OK"} default button 1 with icon 1
      end if
    end tell
  end if
end tell
----------------------------------------------------------------------
(display dialog〜icon X は一行になるよう修整して下さい。8ヶ所ありま
す。本来一行で書かれていますが,送信上改行されてしまいます。今後,こう
いうケースをどの様に表記するか,考えます。)

 使用しているプロパティは lock guides だけです。display dialogやif文,
return,existsなどはASの解説書でお調べ下さい。display dialogは使用者との
やりとりで頻繁に使用されますので大切です。

GGC00677 [,た] 鎌田 幸雄

02736/02736 GGC00677 [,た]     QuarkXPressを操ろう(その12)
( 2)  96/03/12 22:10

新規ドキュメントの作成
新規ドキュメントメニューで設定することをASでやってみましょう。
----------------------------------------------------------------------
tell application "QuarkXPress"
  activate
  tell default document 1
    set page height to "297mm" --ページ縦の長さ
    set page width to "210mm" --ページ横の長さ
    set top margin to "25mm" --天マージン
    set bottom margin to "20mm" --地マージン
    set right margin to "15mm" --右マージン
    set left margin to "15mm" --左マージン
    set facing pages to true --見開きかどうか
    set column count to "1" --コラム数
    set gutter width to "10mm" --コラム間隔
    set automatic text box to true --テキストボックスの自動作成
  end tell
  --make document at beginning
end tell
----------------------------------------------------------------------
上記を実行すると,新規ドキュメントのウインドウに出てくる設定値が変わり
ます。
さらに,この値をもとに,ドキュメントを作成するのが makeコマンドです。
--make document at beginning
の--を削除して実行して下さい。(--以下はASではコメント文になります)
ウインドウが開き,設定したドキュメントが開かれます。
なお,makeコマンドの対象は,ここでは,applicationになりますので,end
tellで挟まれたところに書かなくてはいけません。

〜document 1 とか,at beginningについて
 なんで1とか付くのでしょうか。それは,オブジェクトを特定するためで
す。
 ドキュメントが複数開いていたり,ボックスも普通は複数あるでしょう。そ
れに対してどれが処理対象になるかを教えてあげなければいけません。そのた
めに,番号をつけたり,相対的な位置(最初,前,次・・・)を書いたりしま
す。[参照形式](Object Reference)と呼ばれています。詳しくは,解説書等
をみてお調べください。
 上記の場合,default documentはその意味からも1しかありません。makeの
場合は,既にドキュメントが複数ひらかれている場合がありますので,at
beginning (at front)にすると一番上に,at end (at back)とすると一番下に
作成されます。複数の同一オブジェクトがあったとすると,一番上,つまり最
後に作成したものが1になり,次が2・・となります。複数のレイヤーがあっ
て,一番上が1,次が2と考えると理解しやすいと思います。

さらに肉付けしてみます。
----------------------------------------------------------------------
tell application "QuarkXPress"
  activate
  tell default document 1
    display dialog "ページサイズ縦 ? mm" default answer "297" →
buttons {"Cancel", "OK"} default button {"OK"} with icon 1
    if button returned of result is "Cancel" then
      return
    else
      set page height to text returned of result &"mm"
      set page width to "210mm"
      set top margin to "25mm"
      set bottom margin to "20mm"
      set right margin to "15mm"
      set left margin to "15mm"
      set facing pages to true
      set column count to "1"
      set gutter width to "10mm"
      set automatic text box to true
    end if
    display dialog "設定状況は," &return &"ページ縦" &page →
height &"です。"
    if button returned of result is "キャンセル" then return
  end tell
  make document at beginning
end tell
----------------------------------------------------------------------
[注:→は本来一行で書くところを,送信上改行しましたよという印にします
エディタで一行にするか,option + return するかしてください。
「命令の途中だけど,改行したい」時,option + returnで改行してください]

使えるスクリプトではありませんが,いろいろ手を加えられると思います

GGC00677 [,た] 鎌田 幸雄