ストーリーの段落を要素にするスクリプトは、これで良いのかな・・・?
/*
このスクリプトを利用して起こった不具合の責任は取れません。
ご了承下さい。
更新 2021/10/31
*/
// アプリ指定
#target "indesign";
// スクリプト名
var scriptName = "ストーリーの段落を要素に";
//スクリプトの動作指定(一つのアンドゥ履歴にする、及び、アンドゥ名)
app.doScript(function(){
// ダイアログ
var dialogueFlg = confirm("ストーリーの段落を段落の「終わりの記号」を除いて要素にします。" + "\r\r"
+ "段落の先頭に「索引マーカー」がある場合は追加された要素にその「索引マーカー」は含まれないので注意して下さい(手抜き仕様)。" + "\r\r"
+ "ストーリーの要素を選択してスクリプトを実行して下さい。"
,"", scriptName);
// Noの場合
if(dialogueFlg == false){
exit();
}
// 検索の初期化
app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;
// 検索文字列
app.findGrepPreferences.findWhat = ".+";
// 段落の最大数
var paragraphCountMaxNumber = 0;
if(app.activeDocument.selection.length > 0){
// 最大の段落数を調べる
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 == "Story"){
if(paragraphCountMaxNumber < app.activeDocument.selection[i].xmlContent.paragraphs.count()){
paragraphCountMaxNumber = app.activeDocument.selection[i].xmlContent.paragraphs.count();
}
}
}
}
// タグを追加する
for(var i = 1; i <= paragraphCountMaxNumber; i++){
if(app.activeDocument.xmlTags.itemByName("Paragraph" + i).isValid == false){
app.activeDocument.xmlTags.add("Paragraph" + i);
}
}
// 段落に要素を関連付け
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 == "Story"){
for(var ii = 0; ii < app.activeDocument.selection[i].xmlContent.paragraphs.count(); ii++){
// 置換でタグを付ける
app.changeGrepPreferences.markupTag = app.activeDocument.xmlTags.itemByName("Paragraph" + (ii + 1));
app.activeDocument.selection[i].xmlContent.paragraphs.item(ii).changeGrep();
}
}
}
}
}
// 検索の初期化
app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;
//スクリプトの動作指定の続き
}, ScriptLanguage.JAVASCRIPT, [scriptName], UndoModes.ENTIRE_SCRIPT, scriptName);