[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:1549) Re: [JS_InDesign CS2]section_add.jsx



はじめて書き込みさせていただきます。
お聞きしたいのですが、このscriptたちはFreeで使ってもよろしいのでしょうか?

よければ、少し内容を変えて使用したいのですが・・・


>なんだかまだ自信がないんですが^^
>
>
>/*
>section_add.jsx
>(c)2005-2007 www.seuzo.jp
>特定の段落スタイルからセクションを設定します。
>2006.12.10	ver.0.4	JavaScriptで書き直し。
>2007.05.28	ver.0.5 1階層だけグループ化されたインライン中の文字列も対象にできるようにした。いろんなケースに対応できるかどうか、いまだ自信ない。
>
>*/
>
>// ExtendScript Toolkit用ディレクティブ 
>#target indesign
>$.level = 1; // デバッガ有効に
>
>
>////////////////////////////////////////////エラー処理 
>function myerror(mess) { 
>  if (arguments.length > 0) { alert(mess); }
>  exit();
>}
>
>////////////////////////////////////////////リストダイアログ
>/*
>myTitle	ダイアログ(バー)のタイトル
>myPrompt	メッセージ
>myList	ポップアップに展開するリスト
>
>result	選択したリスト番号
>*/
>function listDialog(myTitle, myPrompt, myList){
>	var myTitle, myPrompt, myList;
>	var myDialog = app.dialogs.add({name:myTitle,canCancel:true});
>	with(myDialog){
>		with(dialogColumns.add()){
>			// プロンプト
>			staticTexts.add({staticLabel:myPrompt});
>		}
>		with(dialogColumns.add()){
>			// ポップアップメニュー
>			var mySelecteditem = dropdowns.add({stringList:myList, selectedIndex:0});
>		}
>	}
>	// ダイアログボックスを表示
>	if(myDialog.show() == true){
>		var ans = mySelecteditem.selectedIndex;
>		//正常にダイアログを片付ける
>		myDialog.destroy();
>		//選択したアイテムの番号を返す
>		return ans
>	} else {
>		// ユーザが「キャンセル」をクリックしたので、メモリからダイアログボックスを削除
>		myDialog.destroy();
> 		exit();
>	}
>}
>
>
>if (app.documents.length == 0) {myerror("ドキュメントが開かれていません")}
>var mydocument = app.activeDocument;
>var myparagraph_style = mydocument.paragraphStyles;
>var myparagraph_style_name = [];
>
>//段落スタイルが1つも設定されていなければ中止
>if (myparagraph_style.length == 2) { myerror("段落スタイルがひとつもありません")}
>
>//段落スタイル名のリストを作成
>for (var i = 2; i < myparagraph_style.length; i++) {
>	myparagraph_style_name.push(myparagraph_style[i].name);
>}
>var ans_int = listDialog("セクションを追加", "段落スタイルを選択してください", myparagraph_style_name);
>
>//検索処理
>var myFindStyle = myparagraph_style_name[ans_int];
>app.findPreferences = null;
>app.changePreferences = null;
>app.findPreferences.appliedParagraphStyle = myFindStyle; 
>var hit_obj_list = mydocument.search('', false, false, false, false);
>if (hit_obj_list.length == 0) {myerror(myFindStyle + "が適用されたテキストはありませんでした")}
>
>//セクション作成
>var myCunt = 0;
>for (var i = 0; i < hit_obj_list.length; i++) { 
>	var myContents = hit_obj_list[i].contents.replace(/[\r\n ]+$/, "");
>	myContents = myContents.replace("&#65532;", "");//この?には[OBJ]が入る。これってasciiで記述できないのか?よくわからない
>	if (myContents.length == 0) {continue;}//空行のみなら次へ
>	var myPage = hit_obj_list[i].parentTextFrames[0].parent;
>	if (myPage.reflect.name == "Group") {myPage = myPage.parent.parentTextFrames[0].parent}//グループ化されているものは1階だけさかのぼる。これでいいのかな?よくわからない2...
>	if (myPage.reflect.name != "Page") {continue;}//pageでないものが引っかかっているなら次へ
>
>	//1ページ目だけはcontinueNumberingを変更しない
>	if (myPage.documentOffset == 1) {
>		mydocument.sections.add({
>			pageStart:myPage,
>			continueNumbering:false, 
>			sectionPrefix:"",
>			marker:myContents, 
>			includeSectionPrefix:false,
>			});
>	} else {
>		mydocument.sections.add({
>			pageStart:myPage,
>			continueNumbering:true, 
>			sectionPrefix:"",
>			marker:myContents, 
>			includeSectionPrefix:false,
>			});
>	}
>	myCunt++;
>}
>
>myerror(myCunt + "箇所にセクションを設定しました");