クリエイター手抜きプロジェクト[438]Adobe Illustrator CS5〜CC 2015編 カレンダーを生成する(日曜始まり版/月曜始まり版)/古籏一浩

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


今回はIllustratorでカレンダーを生成するスクリプトです。

10年くらい前にも、Illustrator CSでカレンダーを生成するスクリプトを載せましたが時代は変わり、ついでにIllustratorの座標も変わってしまいました。

また、いつの間にか日曜日始まりだけではなく、月曜日始まりのカレンダーも見かけるようになりました。床屋さんなら火曜日始まりのカレンダーの方がよいのではと思ったりもしましたが、今回は日曜日始まりと月曜日と始まりのふたつのスクリプトを用意しました。

また、以前は祝日に色をつけたりしていましたが、そういうのはやめてシンプルなものにしました。必ずしも日本国内だけのカレンダーを作成するとは限らないからです。

ということで、最初は日曜日始まりのカレンダー生成スクリプトです。




function calendar(theYear,theMonth, baseX, baseY){
var wrtMonth= [0,31,28,31,30,31,30,31,31,30,31,30,31];
var wrtDate = ["日","月","火","水","木","金","土"];
var theDate = new Date(); // 日付オブジェクトを生成
theDate.setYear(theYear); // 指定年を設定
theDate.setMonth(theMonth-1); // 指定月を設定
if (((theYear % 4 == 0) && (theYear % 100 != 0)) || (theYear % 400 == 0)){
wrtMonth[2] = 29; // 閏年だったら2月を29日にする
}
theDate.setDate(1); // 日付を1日にし曜日を次の行で取得
var count = theDate.getDay();
var day = 0; // 曜日カウンタを0にする
var date = 1; // 日付を1日にする
var calX = 0; //■カレンダーを表示する相対座標(X)
var calY = 60; //■カレンダーを表示する相対座標(Y)
var calDX = 20;
var calDY = 20;
var week = 0;
for(var i=0;i<7;i++) { write(wrtDate[i], 0+i*calDX, 30); } // 曜日書き出し
for(var i=1;i<=wrtMonth[theMonth]+count;i++){
if (day>=count){
wrt = ""+date;
date++;
}else{
wrt = " ";
}
if ((day % 7) == 1) { week++; } // 月曜日の場合は週の数を増やす
write(wrt, calX, calY);
calX = calX + calDX;
if (day % 7 == 6) { calX = 0; calY = calY + calDY; }
day++; // 1日増やす
}
function write(txt, x,y){
var textObj = activeDocument.textFrames.add();
textObj.contents = txt;
textObj.translate(baseX + x, baseY - y);
textObj.paragraphs[0].justification = Justification.CENTER;
}
}
// 年数、月、横位置、縦位置
calendar(2014, 2, 40, -60);


最後の行の数値を変えることで、様々な年月のカレンダーを生成することができます。次は月曜日始まりのカレンダー生成スクリプトです。似ていますが微妙に中身が違います。


function calendar(theYear,theMonth, baseX, baseY){
var wrtMonth= [0,31,28,31,30,31,30,31,31,30,31,30,31];
var wrtDate = ["月","火","水","木","金","土","日"];
var theDate = new Date(); // 日付オブジェクトを生成
theDate.setYear(theYear); // 指定年を設定
theDate.setMonth(theMonth-1); // 指定月を設定
if (((theYear % 4 == 0) && (theYear % 100 != 0)) || (theYear % 400 == 0)){
wrtMonth[2] = 29; // 閏年だったら2月を29日にする
}
theDate.setDate(1); // 日付を1日にし曜日を次の行で取得
var count = theDate.getDay();
var day = 1; // 曜日カウンタを0にする
var date = 1; // 日付を1日にする
var calX = 0; //■カレンダーを表示する相対座標(X)
var calY = 60; //■カレンダーを表示する相対座標(Y)
var calDX = 20;
var calDY = 20;
var week = 0;
for(var i=0;i<7;i++) { write(wrtDate[i], 0+i*calDX, 30); } // 曜日書き出し
for(var i=1;i<wrtMonth[theMonth]+count;i++){
if (day>=count){
wrt = ""+date;
date++;
}else{
wrt = " ";
}
if ((day % 7) == 1) { week++; } // 月曜日の場合は週の数を増やす
write(wrt, calX, calY);
calX = calX + calDX;
if (day % 7 == 0) { calX = 0; calY = calY + calDY; }
day++; // 1日増やす
}
function write(txt, x,y){
var textObj = activeDocument.textFrames.add();
textObj.contents = txt;
textObj.translate(baseX + x, baseY - y);
textObj.paragraphs[0].justification = Justification.CENTER;
}
}
// 年数、月、横位置、縦位置
calendar(2014, 12, 40, -60);


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

一時期大量に来ていた迷惑メールも激減して、これはめでたしめでたしと思っていたら、またまた大量の迷惑メールが。さすがに今回は思い当たることが。それは、アンケートサイトに登録したということです。Tポイントのアンケートサイトに登録した時は迷惑メールは増えていなかったので、ここらへんはしっかりしているようです。

そして、もう一か所登録したのがリサーチパネル。迷惑メールが急増したのは、このアンケートサイトに登録してから。とにかく10倍くらいに急増。ということで、またせっせと迷惑メールを登録するという毎日。

・Photoshop自動化基本編
< http://www.amazon.co.jp/dp/B00W952JQW/ >

・Illustrator自動化基本編
< http://www.amazon.co.jp/dp/B00R5MZ1PA >

・Adobe JavaScriptリファレンス
< http://www.amazon.co.jp/dp/B00FZEK6J6/ >

・ExtendScript Toolkit(ESTK)基本編
< http://www.amazon.co.jp/dp/B00JUBQKKY/ >

・データビジュアライゼーションのためのD3.js徹底入門
< http://www.amazon.co.jp/dp/4797368861 >

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

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