Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@kohakunekotarou

indesign スクリプト "段落スタイルを適用(構造内の選択された要素の参照に)

構造内の選択された要素の参照に段落スタイルを適用するスクリプトはこれで良いのかな・・・?
文字スタイルを消去の動作はスクリプトではどうやるのでしょう・・・解りません。

/*
構造内の選択された要素の参照に段落スタイルを適用する
更新 2021/05/05
*/

// アプリ指定
#target "InDesign";

// スクリプト動作指定(高速)
app.doScript(function(){

    // スクリプト名
    var scriptName = "段落スタイルを適用(構造内の選択された要素の参照に)";

    // 適用数
    var applyNumber = 0;

    // ダイアログ幅
    var dialogWidth = 400;

    // ダイアログ高さ
    var dialogHeight = 150;

    // 段落スタイル選択用ダイアログ作成
    var paragraphStyleSelectWindow = new Window("dialog",scriptName,[0,0,dialogWidth,dialogHeight]);

    // 段落スタイルの名前一覧
    var paragraphStylesNameList = [];

    // 段落スタイルの数だけ繰り返す
    for(i = 0; i < app.activeDocument.paragraphStyles.length; i++){

        // 段落スタイルを収集
        paragraphStylesNameList.push(app.activeDocument.paragraphStyles[i].name);
    }

    // ドロップダウンリスト作成
    var paragraphStylesDropdownlist = paragraphStyleSelectWindow.add("dropdownlist",[15,15,385,35],paragraphStylesNameList);

    // ドロップダウンリストの初期選択
    paragraphStylesDropdownlist.selection = 0;

    // 次のスタイルへのチェックボックス作成
    var nextStyleCheckBox = paragraphStyleSelectWindow.add("checkbox", [15,50,385,65], "選択された段落スタイルを適用して次のスタイルへ");

    // 次のスタイルへのチェックボックスの選択
    nextStyleCheckBox.value = true;

    // オーバーライドを消去のチェックボックス作成
    var overrideEraseCheckBox = paragraphStyleSelectWindow.add("checkbox", [15,75,385,90], "オーバーライドを消去");

    // オーバーライドを消去のチェックボックスの選択
    overrideEraseCheckBox.value = true;

    // ボタンの幅
    var buttonWidth = 80;

    // ボタンの高さ
    var buttonHeight = 25;

    // ボタンをウィンドウ下部中央に配置
    paragraphStyleSelectWindow.add("button",[(dialogWidth / 2) - 10 - buttonWidth,dialogHeight - 10 - buttonHeight,(dialogWidth / 2) - 10,dialogHeight - 10],"適用",{name:"ok"});
    paragraphStyleSelectWindow.add("button",[(dialogWidth / 2) + 10,dialogHeight - 10 - buttonHeight,(dialogWidth / 2) + 10 + buttonWidth,dialogHeight - 10],"キャンセル",{name:"cancel"});

    // ダイアログを画面のセンターに
    paragraphStyleSelectWindow.center();

    // ダイアログを表示
    paragraphStyleSelectWindowShow = paragraphStyleSelectWindow.show();

    // キャンセルの場合
    if (paragraphStyleSelectWindowShow == 2){
        exit();
    }

    // 選択オブジェクトの数だけ繰り返す
    for(var i = 0; i < app.activeDocument.selection.length; i++){

        // 選択オブジェクトが要素の場合
        if(app.activeDocument.selection[i].constructor.name == "XMLElement"){

            // 要素の参照がテキストまたはストーリーの場合
            if(app.activeDocument.selection[i].xmlContent.constructor.name == "Text" || app.activeDocument.selection[i].xmlContent.constructor.name == "Story"){

                // 適用数追加
                applyNumber++;

                // 選択段落スタイル
                var selectParagraphStyle = app.activeDocument.paragraphStyles.item(paragraphStylesDropdownlist.selection.text); 

                // 段落の数だけ繰り返す
                for(var ii = 0; ii < app.activeDocument.selection[i].paragraphs.length; ii++){

                    // 段落に段落スタイルを適用
                    app.activeDocument.selection[i].paragraphs[ii].applyParagraphStyle(selectParagraphStyle,overrideEraseCheckBox.value);

                    // 選択段落スタイルが[段落スタイルなし]では無く、次のスタイルへがチェックボックスが選択されている場合
                    if(selectParagraphStyle != app.activeDocument.paragraphStyles[0] && nextStyleCheckBox.value == true){

                        // 次のスタイルを設定
                        selectParagraphStyle = selectParagraphStyle.nextStyle;
                    }
                }
            }
        }
    }

    // 適用数表示
    alert("適用数 " + applyNumber,scriptName);

//スクリプト動作指定(高速)の続き
},ScriptLanguage.JAVASCRIPT,[],UndoModes.FAST_ENTIRE_SCRIPT);
0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?