Hatena::ブログ(Diary)

名もないテクノ手 このページをアンテナに追加 RSSフィード Twitter

EPUB版『InDesign者のための正規表現入門』

InDesignのTips一覧

2009-10-28

[][][]マスターページ上の選択アイテムをすべての適用ページ内でオーバーライドさせる「override_selection 0.3」

何をするスクリプトか?

マスターページ上の選択アイテムをすべての適用ページ内でオーバーライドさせます。

D


同梱ファイル2Files

  • README.txt このファイルです。とにかく最初によんでください。
  • override_selection.jsx スクリプト本体です。

動作環境

このスクリプトが正常に動作する環境は以下の通りです。Windows環境でも動作する可能性がありますが、動作確認はしていません。

  • MacOS X10.6.1
  • InDesign CS4_J(6.0.4)

ダウンロード

http://www.seuzo.jp/st/scripts_InDesignCS4/index.html#override_selection


インストール

スクリプト本体(override_selection.jsx)を

~/Library/Preferences/Adobe InDesign/Version 6.0-J/ja_JP/Scripts/Scripts Panel/

にコピーしてください。エイリアスを入れておくだけでもかまいません。

スクリプトパレットから使用します。


使用方法

  1. 「ウインドウ」メニューから「スクリプティング」ー「スクリプト」を選択し、スクリプトパレットを出します。
  2. マスターページ上でオーバーライドしたいページアイテムを選択してください。複数のページアイテムが選択されていても大丈夫です。
  3. スクリプトパレットから、スクリプト「override_selection.jsx」をダブルクリックします。
  4. 「○箇所をオーバーライドしました。」とダイアログが出ます。よければ「OK」ボタンをクリックします。
  5. ページ上でマスターアイテムがオーバーライドされたのを確認してください。

既知の不具合、またはToDo、あるいは仕様

  • マルチプルマスターで入れ子になったマスターアイテムには対応していません。

免責事項

  • 本アプリケーションはInDesignにおける作業効率支援なのであって、処理結果を保証するものではありません。かならず確認をされることをおすすめします。
  • このツールを使用する上でデータの破損などのあらゆる不具合・不利益については一切の責任を負いかねますのでご了解ください。
  • このツールはすべてのMacintoshMac OS上で動作をするという確認をとっていませんし、事実上出来ません。したがって、動作を保証するものではありません。

ライセンス

GNU GPLv3

http://sourceforge.jp/projects/opensource/wiki/licenses%252FGNU_General_Public_License_version_3.0


履 歴

2005-05-01 ver.0.1 とりあえず版。

2006-09-02 ver.0.2 Indesign CS2用 http://www.seuzo.jp/rubbs/search_html/msg01429.html

2009-10-28 ver.0.3 InDesign CS4用 JavaScriptで書き換え


ソースコード

/*
override_selection
(c)2005-2009 Seuzo Ichikawa. www.seuzo.jp
マスターページ上の選択アイテムをすべての適用ページ内でオーバーライドさせます。

2005-05-01	ver.0.1	とりあえず版。
2006-09-02	ver.0.2	Indesign CS2用	http://www.seuzo.jp/rubbs/search_html/msg01429.html
2009-10-28	ver.0.3	InDesign CS4用	JavaScriptで書き換え
*/


////////////////////////////////////////////エラー処理 
function myerror(mess) { 
  if (arguments.length > 0) { alert(mess); }
  exit();
}


////////////////////////////////////////////以下実行ルーチン
if (app.documents.length == 0) {myerror("ドキュメントが開かれていません")}
var my_document = app.documents[0];
var my_masterSpread = app.layoutWindows[0].activeSpread;//マスタースプレッド
if (my_masterSpread instanceof Spread) {myerror("マスターページのページアイテムを選択してください")}// MasterSpreadじゃなかった
var my_selection = my_document.selection;
if (my_selection.length === 0) {myerror("マスターページのページアイテムをひとつ以上選択してください")}
var my_class =my_selection[0].reflect.name; 
if ( !(my_class.match(/^(PageItem|Rectangle|Oval|Polygon|GraphicLine|TextFrame|Button|FormField|Group)$/))) {myerror("ページアイテムを選択してください")}

var my_counter = 0;//オーバーライドのカウンター
for (var i = 0; i < my_document.pages.length; i++) {//各ページループ
	if (my_document.pages[i].appliedMaster === my_masterSpread) {//同じマスターを適用していたら
		var my_masterPageItem = my_document.pages[i].masterPageItems;
		for (var ii = my_masterPageItem.length; ii >= 0; ii--) {//ページ中のマスターアイテムのループ:お尻から
			for (var iii = 0; iii < my_selection.length; iii++) {//選択アイテムのループ
				if (my_masterPageItem[ii] === my_selection[iii]) {
					try {
						my_masterPageItem[ii].override(my_document.pages[i]);
						my_counter++;
					} catch (my_Error) {
						myerror("オーバーライドでエラー:" + my_Error);
					}
				}
			}//選択アイテムのループ
		}//ページ中のマスターアイテムのループ
	}
}//各ページループ

if (my_counter === 0) {
	alert("オーバーライド箇所はありませんでした。");
} else {
	alert(my_counter + "箇所をオーバーライドしました。");
}

k_ikik_iki 2009/10/30 14:12 WindowsXP/CS3で動作確認しました!
ウチのオペレータに聞いたところ、今まで特定のアイテムだけオーバーライドしたい場合、レイヤーを分けることで管理していたようです。
これを使うことでかなり便利になります! ありがとうございます!

seuzoseuzo 2009/10/30 14:20 動作確認ありがとうございます。
今回ちょっと短めだし、ちょっと恥ずかしいなあ...なんて思っていました。
お褒めいただき嬉しいです。

chiricochirico 2016/09/07 17:15 オーバーライド関連について調べていたところ、こちらのスクリプトを紹介されました。
業務用のスクリプトを作成するにあたり、大変参考になりました。
ありがとうございます。

fujikenfujiken 2017/10/30 11:53 いつも参考にさせていただいております。
このScriptですが、選択した2個以上のオブジェクトが重なっているとき、オブジェクト同士の前面・背面関係が入れ替わりませんか?
IndesignCS3で走らせたのでそのせいかもしれませんけども。

fujikenfujiken 2017/10/30 12:23 ↓こういう状態になります(URL先はキャプチャー画像)。
http://www.iwami.or.jp/fujiken/image/override_selection_03_test.png

seuzoseuzo 2017/10/30 12:24 2017年現在、このブログに掲載されているスクリプトはすべてメンテナンスされていません。
ソースが公開されている状態ですので、使用者が改善されるとよいと考えます。
#もし、わたくしに改善の責任があるとしたら、ここを閉じるしかありません。

おそらく、すべての前後関係を記憶させてその順に解除すれば問題は起きないでしょう。
そもそもこのスクリプトは、マスターページにアイテムを置いてドキュメントを作るQXP的な使い方を修正するためのものでした。今や、そのような使い方をしているユーザーをほとんどみません。
マスターページに置いてよいのは、ノンブルや柱などの編集しないページアイテムだけです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/seuzo/20091028/1256655782