InDesign スクリプト 変数をテキストに

変数をテキストにするスクリプトは、これで良いのかな・・・？

~~~JavaScript
/*
更新 2021/6/22
*/

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

// スクリプト名
var scriptName = "変数をテキストに";

//スクリプトの動作指定（一つのアンドゥ履歴にする、及び、アンドゥ名）
app.doScript(function () {

    // ダイアログ
    var dialogueFlg = confirm("カスタムテキスト変数のインスタンスをテキストに変換します。"
    + "\r\r" + "選択がない場合はアクティブドキュメント全体で変換、選択がある場合は選択内で変換します。 ","", scriptName);

    // Noの場合
    if (dialogueFlg == false) {

        // 終了
        exit();
    }

    // 削除フラグ
    var deleteFlg = false;

    // 変換した数
    var convertInstancesNumber = 0;

    // 削除した数
    var removeNumber = 0;

    // 選択がない場合
    if(app.activeDocument.selection.length == 0){

        // ダイアログ
        deleteFlg = confirm("カスタムテキスト変数を削除しますか？","", scriptName);

        // テキスト変数の数だけ逆に繰り返す
        for(var i = app.activeDocument.textVariables.count() - 1; i >= 0; i--){

            // カスタムテキスト変数の場合
            if(app.activeDocument.textVariables.item(i).variableType == VariableTypes.CUSTOM_TEXT_TYPE){

                // インスタンスの数だけ逆に繰り返す
                for(var ii = app.activeDocument.textVariables.item(i).associatedInstances.length - 1; ii >= 0; ii--){

                    // テキストに変換
                    app.activeDocument.textVariables.item(i).associatedInstances[ii].convertToText();

                    // 数を増やす
                    convertInstancesNumber++;
                }
            
                // 削除の場合
                if(deleteFlg == true){

                    // 削除
                    app.activeDocument.textVariables.item(i).remove();
                
                    // 数を増やす
                    removeNumber++;
                }
            }
        }

    // 以外の場合
    }else{

        // 対象
        var targetObject;

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

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

                // 参照を入れる
                targetObject = app.activeDocument.selection[i].xmlContent;

            // 以外の場合
            }else{

                // 選択を入れる
                targetObject = app.activeDocument.selection[i];
            }

            // textVariableInstancesプロパティが存在する場合
            if(targetObject.hasOwnProperty("textVariableInstances") == true){

                // 選択のテキスト変数のインスタンスの数だけ逆に繰り返す
                for(var ii = targetObject.textVariableInstances.count() - 1; ii >= 0; ii--){

                    // カスタムテキスト変数の場合
                    if(targetObject.textVariableInstances.item(ii).associatedTextVariable.variableType == VariableTypes.CUSTOM_TEXT_TYPE){

                        // テキストに変換
                        targetObject.textVariableInstances.item(ii).convertToText();

                        // 数を増やす
                        convertInstancesNumber++;
                    }
                }
            }
        }
    }

    // 結果の文
    var  resultText;

    // 選択がない場合
    if(app.activeDocument.selection.length == 0){

        // 入れる
        resultText = "アクティブドキュメント全体で変換をおこないました。";

    // 以外の場合
    }else{

        // 入れる
        resultText = "選択内で変換をおこないました。";
    }

    // 削除の場合
    if(deleteFlg == true){

        // 文章を追加
        resultText += "\r\r" +  "変換数 " + convertInstancesNumber + "\r" + "削除したカスタムテキスト変数の数 " + removeNumber;

    // 以外の場合
    }else{

        // 文章を追加
        resultText += "\r\r" +  "変換数 " + convertInstancesNumber;
    }

    // 結果を表示
    alert(resultText, scriptName);

//スクリプトの動作指定の続き
}, ScriptLanguage.JAVASCRIPT, [scriptName], UndoModes.ENTIRE_SCRIPT, scriptName);
~~~