今回は1年分のカレンダーを自動的に生成するものです。長いので手短に書きます。スクリプトで//■〜となっている部分の数値は変更しても構いません。スクリプトが長いのは、日本の祝祭日、春分/秋分の自動計算、ハッピーマンデーも自動的に計算するためです。最初に新規ドキュメントを用意してから実行してください。
// Calendar Script for Adobe Illustrator CS/CS2
			baseX = 10;    //■カレンダーの最初の表示位置(X座標)
			baseY = 900;   //■カレンダーの最初の表示位置(Y座標)
			calDX = 30;    //■カレンダーの1日あたりの横幅
			calDY = 30;    //■カレンダーの1日あたりの縦幅
			blockX = 250;  //■1月あたりの横の差
			blockY = 250;  //■1月あたりの縦の差
			txtColor = new RGBColor(); 
			docObj = activeDocument;
			function calendar(theYear__,theMonth__){
			     var wrtMonth= new Array(0,31,28,31,30,31,30,31,31,30,31,30,31);
			     var wrtDate = new Array("日","月","火","水","木","金","土");
			     //■↓一週間分の色(赤輝度,青輝度,緑輝度)
			     var wrtColor= new Array([255,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,0],[0,0,255]);
			     var special = new Array(3,21, 9,23, 1,1, 2,11, 4,29, 5,3, 5,4, 5,5, 11,3, 11,23, 12,23);
			     var specCnt = 15;
			     var specCol = [255,0,0];           // 休日の文字色
			     var theDate = new Date();          // 日付オブジェクトを生成
			     specCnt = 13;       // Happy Monday対策
			     if (theYear__){               // 年月が指定されていた場合は年月を再設定
			          theDate.setYear(theYear__);        // 指定年を設定
			          theDate.setMonth(theMonth__-1);         // 指定月を設定
			     }
			     theYear__ = theDate.getFullYear();
			     theMonth__= theDate.getMonth()+1;
			     if (((theYear__ % 4 == 0) && (theYear__ % 100 != 0)) || (theYear__ % 400 == 0)){
			          wrtMonth[2] = 29;             // 閏年だったら2月を29日にする
			     }
			     // 春分/秋分の日を求める(1980-2099まで)
			     special[1]  = Math.floor(20.8431 + 0.242194 * (theYear__ - 1980) - Math.floor((theYear__ - 1980)/4));
			     special[3]  = Math.floor(23.2488 + 0.242194 * (theYear__ - 1980) - Math.floor((theYear__ - 1980)/4));
			     theDate.setFullYear(theYear__);              // 指定年を設定
			     theDate.setMonth(theMonth__-1);              // 指定月を設定
			     theDate.setDate(1);                // 日付を1日にし曜日を次の行で取得
			     var count = theDate.getDay();
			     var day   = 0;                     // 曜日カウンタを0にする
			     var date  = 1;                     // 日付を1日にする
			     var flag  = false;                 // 休日&日曜日フラグ
			     var hFlag = false;                 // 休日フラグ
			     var xFlag = false;                 // 成人の日/体育の日
			     var  i,j;
			     var week  = 0;                     // 2000年からの体育の日と成人の日対策
			     calX = 0; //■カレンダーを表示する相対座標(X)
			     calY = 60;     //■カレンダーを表示する相対座標(Y)
			     drawColor([0,0,0]); // 色の初期化
			          write(theYear__+"年"+theMonth__+"月", 95, 0);     // 相対座標(95pt,0pt)に描画
			          for(i=0;i<7;i++) write(wrtDate[i], 0+i*calDX, 30);     // 曜日書き出し
			          flag = false;                      // 休日が日曜日だった場合true
			          for(i=1;i<=wrtMonth[theMonth__]+count;i++){
			               hFlag = false;                     // 休日だったらtrue
			               if (day>=count){
			                    wrt = ""+date;
			                    for(j=0; j<specCnt; j++){
			                         if ((special[j*2] == theMonth__) && (special[j*2+1] == date)){
			                              drawColor(specCol);
			                              if ((day % 7) == 0) flag = true;   // 休日が日曜日だったらtrue
			                              hFlag = true;
			                         }
			                    }
			                    date++;
			                    if ((day % 7) == 1) week++;   // 月曜日の場合は週の数を増やす
			               }else{ wrt = " "; }
			               // 1月と7月と10月の休日処理(Happy Mondayの処理)
			               xFlag = false;
			               if ( ((theMonth__ == 1) || (theMonth__ == 10)) && (week == 2) && ((day % 7) == 1)) xFlag = true;
			               if ( ((theMonth__ == 7) || (theMonth__ == 9)) && (week == 3) && ((day % 7) == 1)) xFlag = true;
			               if (xFlag){ drawColor(specCol);
			               }else{
			                    if ((hFlag == false) && flag == false) drawColor(wrtColor[day % 7]);
			                    if (((day % 7) == 1) && flag == true) { drawColor(specCol); flag = false;}
			               }
			               drawBox(calX, calY);     //■枠を表示する部分。しない場合は行ごと削除
			               write(wrt, calX, calY);
			               calX += calDX;
			               if (day % 7 == 6) { calX = 0; calY += calDY; }
			               day++;              // 1日増やす
			          }
			}
			// write textbox
			function drawBox(x, y){
			     var pObj = docObj.pathItems.rectangle(0,0,calDX,calDY);
			     pObj.translate(baseX + x - 15,baseY-y+calDY-9);   //■ここで位置を微調整
			     pObj.filled = false;     // 塗りなし
			     pObj.stroked = true;     // 線あり
			     pObj.strokeWidth = 0.2;  // 線幅0.2ポイント
			//   pObj.fillColor = setColor(255,255,255); // 反映されないが一応塗りの色を指定(白色)
			     pObj.strokeColor = setColor(0,0,0);     // 線の色を指定(黒色)
			}
			function write(txt, x,y){
			     var textObj = docObj.textFrames.add();
			     textObj.contents = txt;
			     textObj.translate(baseX + x, baseY - y);
			     for (var i=0; i<textObj.characters.length; i++){
			          textObj.characters[i].fillColor = txtColor;
			     }
			     textObj.paragraphs[0].justification = Justification.CENTER;
			}
			function drawColor(col){
			     txtColor.red = col[0]; 
			     txtColor.green = col[1]; 
			     txtColor.blue = col[2]; 
			}
			function setColor(r,g,b){
			     var tmpColor = new RGBColor(); 
			     tmpColor.red = r;
			     tmpColor.green = g;
			     tmpColor.blue = b;
			     return tmpColor;
			}
			calYear = prompt("作成する年を入れてください",2007);
			storeX = baseX;
			cal = 1;
			for (cy=0; cy<4; cy++){  //■縦に4つ
			     for (cx=0; cx<3; cx++){  //■横に3つ
			          calendar(calYear, cal);
			          baseX += blockX;
			          cal++;
			     }
			     baseX = storeX;
			     baseY -= blockY;
			}