クリエイター手抜きプロジェクト[363]Photoshop CS3〜CC編 金額をチェック・消費税を計算(その2)/古籏一浩

投稿:  著者:  読了時間:8分(本文:約3,900文字)


今回のスクリプトは、前回と同じ処理をPhotoshop用に作成したものです。同じスクリプトで動けば簡単なのですが、やはりコードを修正したり仕様を少し変更しないと駄目なようです。

最新版のPhotoshop CCではチェックしていませんが、多分動作するはずです(というか、Photoshop CCインストールしてない......)。

金額のパターンマッチは前回と同様、3桁区切りで文字の最後が円になっているものが対象です。なお、以下のスクリプトではレイヤーがロックされている(全てロックされている)テキストレイヤーは金額のチェックをしないようになっています。また、サブレイヤーも対象外です。





// テキスレイヤー内にある金額が範囲内か調べる
// ただし、ロックされているレイヤーは対象外。サブレイヤーも対象外
(function(){
var min = prompt("最低価格(含む)を入れてください", 100);
if (!min){ return; }
var max = prompt("最高価格(含む)を入れて下さい", 9999);
if (!max){ return; }
min = parseInt(min); // 小数値以下は切り捨て
max = parseInt(max);
var pricePat = new RegExp("(0|[1-9][0-9]{0,2}(,[0-9]{3}){0,2})円$", "g");
var layObj = app.activeDocument.layers;
for(var i=0; i<layObj.length; i++){
if (layObj[i].kind != LayerKind.TEXT){ continue; } // テキストレイヤー以外は処理しない
if (layObj[i].allLocked == true){ continue; } // Allロックされている場合は処理しない
layObj[i].textItem.contents.replace(pricePat, function(str, ptr, allStr){
var p = parseInt(str.split(",").join("")); // 数値に変換
if ((p >= min) && (p <= max)){ return str; }
alert("金額が範囲外です。"+p+"円");
i = layObj.length+ 1; // ループ脱出のために設定
return str;
});
}
})();


次に、消費税を自動的に計算するスクリプトです。使い方は前回と同じで最初に現在の消費税を入力し、次に新しい税率を入力します。金額に該当する文字列があれば、自動的に新しい税率を適用し新たな価格に置き換えます。

なお、レイヤーがロックされているものに関しては処理しないようになってい
ます。また、サブレイヤーも処理しません。


// テキスレイヤー内にある金額に消費税を適用する
// ただし、ロックされているレイヤーは対象外。サブレイヤーも対象外
(function(){
var oldTax = prompt("現在の税金を入れてください(5%なら5)", 5);
if (!oldTax){ return; }
var newTax = prompt("新たな税金を入れて下さい(10%なら10)", 10);
if (!newTax){ return; }
oldTax = oldTax / 100;
newTax = newTax/100;
var pricePat = new RegExp("(0|[1-9][0-9]{0,2}(,[0-9]{3}){0,2})円$", "g");
var layObj = app.activeDocument.layers;
for(var i=0; i<layObj.length; i++){
if (layObj[i].kind != LayerKind.TEXT){ continue; } // テキストレイヤー以外は処理しない
if (layObj[i].allLocked == true){ continue; } // Allロックされている場合は処理しない
layObj[i].textItem.contents = layObj[i].textItem.contents.replace(pricePat,
function(str, ptr, allStr){
var p = parseInt(str.split(",").join("")); // 数値に変換
var price = p / (1 + oldTax);
var newPrice = Math.floor(price * (1+newTax));
$.writeln("元金額:"+price+"、元の税込み金額:"+p+"、新価格:"+newPrice);
newPrice = num3Format(newPrice);
return newPrice + "円";
});
}
})();
function num3Format(str){ // 3桁に区切る
var temp1 = (new String(str)).split(".")[0].match(/./g).reverse().join("");
temp1 = temp1.replace(/(\d{3})/g,"$1,");
temp1 = temp1.match(/./g).reverse().join("").replace(/^,/,"");
if(!!(new String(str)).split(".")[1]) temp1 = temp1 +"."+ str.split(".")[1];
return temp1;
}

消費税計算した際に、小数値以下を切り捨てるようになっていますが、四捨五入したい場合は以下のように変更してください。(前回と同じです)

var newPrice = Math.floor(price * (1+newTax));
 ↓
var newPrice = Math.round(price * (1+newTax));


【古籏一浩】openspc@alpha.ocn.ne.jp
< http://www.openspc2.org/ >

世間は夏休み。デジクリも8/1から夏休み。夏休みの自由研究にenchantMoonを、と思ったけどいつ来るのか。

iPad→Androidタブレット→enchantMoonと、新しいタブレットを購入するたびに駄目なものになっていく(?)のが何とも。普通は進化して、よりよくなるはずが、最初に出たものがベストで以後に続くものが二流、三流で、最後はとんでもデバイスというのが今の時代なんでしょうか(^^;

夏休みの研究がてら科学実験本を買ってきて開いたら、安物のWebカメラに黒いビニールテープを2枚重ねて貼るだけで放射線の測定ができる(見ることができる)とあり、これは知りませんでした。でも、知識がないと、そういうアイデアも出てこないなあ。

夏休みと言えば夕立、雷雨。うちの近くは落雷することが数年に一度の割合であったりするので、雷がなったらマシンの電源をすぐにオフ。前回は50m先の電信柱でうまく分岐したらしく、うちには被害がなかったけど近所は電話とかいろいろやられたとの事。高い木に落雷したりしたことも(まだ、残ってる)。

過去にはSHARPのX68000というマシンが雷にやられて、修理に出したこともありました。ところが、SHARPから戻ってきたけど直らず。再度修理に出したけど、異常なしという冷たい回答。異常だったのはSHARPの会社本体だったか。

で、これ以後X68000使わなくなった(使えなくなった)のでMac SE/30を購入したという流れ。まだ、Mac SE/30はとってあります。もしかしたら動くかも。

先週の水曜日の、まつむらまきおさんの「複製力の不思議と不気味」の「複製」の部分は気持ちとしてわかるなあ。

ただ、ガンダムは好きではなく「超時空要塞マクロス」のバトロイドバルキリー(これも量産型戦闘機)の方に惹かれた。プラモデルとか買うお金がなかったので、紙に設計図を描いて切り貼りして自分で作った。ちゃんと変形もできます。

マクロスはガンダムと違って、凄い戦闘機とかロボットが出てこないので、一人がどうにかしたからといって戦況がどうかなるわけでもない(唯一、とんでもない威力を持っているのは歌手のリン・ミンメイだけ)。まあ、凄い人が活躍するよりも、普通の人が活躍できる方がいいかなと。

・Go言語例文辞典 (MacOS X)
< http://www.openspc2.org/reibun/Go/1.1.1/ >

・ハイビジョン映像素材集
< http://www.openspc2.org/HDTV/ >

・Nexus 7(アンドロイドタブレット)使い方辞典
< http://www.openspc2.org/reibun/Android/Nexus7/ >

・JavaScript逆引きハンドブック
< http://www.amazon.co.jp/dp/4863541082 >

・改訂5版JavaScriptポケットリファレンス
< http://www.amazon.co.jp/dp/4774148199 >

・クリエイター手抜きプロジェクト
< http://www.openspc2.org/projectX/ >

・Adobe Illustrator CS3 + JavaScript 自動化サンプル集
< http://www.openspc2.org/book/PDF/Adobe_Illustrator_CS3_JavaScript_Book/ >
吉田印刷所の「印刷の泉」でも購入できるようになりました。