文章中の価格に消費税を加算する (Adobe InDesign & Illustrator CS3/CS4編)

今回は文章中にある価格に消費税を加算するスクリプトです。
まず最初のスクリプトはInDesign用です。テキストフレーム内の数値(価格)だけを選択してから実行すると105%の価格に置換されます。

●テキストフレーム内で選択した数値に消費税を加える
var selObj = app.activeDocument.selection[0]; // 最初に選択した数値のみ処理
var n = parseFloat(selObj.contents);
n = n * 1.05; // 消費税5%を乗算する
n = Math.round(n);
selObj.contents = ""+n;

次はテキストフレーム全体に対して処理するものですが、1200円や980円など数値の直後に円の文字がある場合のみ価格として認識し105%の価格にするものです。ただし、テキストフレームで表示されていない部分に関しては処理されません。隠れている部分も処理したい場合には

selObj.contents;

selObj.parentStory.contents;

としてください。また、以下のスクリプトはInDesignだけでなくIllustratorでも問題なく動作します。Illustratorの場合もInDesign同様にテキストフレーム全体を選択してから実行してください。

●〜円のパターンの場合のみ処理する
var selObj = app.activeDocument.selection[0]; // 最初に選択した数値のみ処理
var txt = selObj.contents;
selObj.contents = txt.replace(/\d+円/g, repFunc);

function repFunc(n){
n = parseInt(n);
n = n * 1.05; // 消費税5%を乗算する
n = Math.round(n);
return n+"円";
}

ちなみに\2531のように先頭に\マークがついている場合には以下のスクリプトになります。

●\〜のパターンの場合のみ処理する
var selObj = app.activeDocument.selection[0]; // 最初に選択した数値のみ処理
var txt = selObj.contents;
selObj.contents = txt.replace(/\\d+/g, repFunc);

function repFunc(n){
n = parseInt(n.substring(1,9999));
n = n * 1.05; // 消費税5%を乗算する
n = Math.round(n);
return "\"+n;
}


[サンプルをダウンロード]