Emotion Wave Tech Blog

福岡にあるエモーションウェーブ株式会社のエンジニアが書いています。

イラレのスクリプトでカレンダー画像を自動作成

私は毎月ある歯科医院のHPのカレンダー更新の作業をしています。

そのカレンダーはイラレで作成していて、毎月お客様からその月のお休みの日や予定を聞き、イラレを修正し画像を更新していました。

毎月同じような作業をしていて、いつもこの作業を自動化できないかと思っていたのですが、なかなか手を出せず、今回やっとそのカレンダー画像を自動で作成するようにしたので、その内容について書かせてもらいます。

環境

  1. Windows8.1 Pro
  2. Adobe Illustrator CS5


私がいつも手作業で作成していた画像はこんなものです。

f:id:devew:20191227114635g:plain

今回私はイラレスクリプト(JavaScript)で、画像を自動作成することにしました。 自動作成のスクリプトで私が行ったことはこの3つです。

  1. 入力ダイアログを表示
  2. オブジェクトの作成(日にちテキスト、休診日のマーク)
  3. 指定した年月にあわせ作成したオブジェクトの位置を設定

 

まず入力ダイアログの表示です。何月のカレンダーを作成するか入力できるようしました。 こんな感じで

txtTarget = prompt("作成するカレンダーの年月を入力(yyyyMM形式)",year + ('00' + month).slice(-2));

実行すると

f:id:devew:20191227114708p:plain

表示されました! 同じように休診日を入力するダイアログ表示部分も入れました。

次に日にちのテキストオブジェクトを作成します。 テキストオブジェクトを作成するにはこんな感じで

docObj = activeDocument;
textObj = docObj.textFrames.add();
textObj.contents = day.toString();
textObj.position = [x, y];


そして休診日のマークも作成。 休診日のマークは角丸四角形のオブジェクトとテキストのオブジェクトをグループ化しました。

pObj = docObj.pathItems.roundedRectangle(0,0,75,15,5,5);
pObj.filled = true;
pObj.stroked = false;
pObj.fillColor = setColor(248,165,201);

htextObj = docObj.textFrames.add();
htextObj.contents = "休診日";
text_fonts_obj = app.textFonts.getByName("KozGoPro-Regular");
htextObj.textRange.characterAttributes.textFont = text_fonts_obj;
htextObj.textRange.characterAttributes.size = 12;
htextObj.textRange.characterAttributes.fillColor = setColor(255,255,255);
htextObj.position = [20,-1.5];
var grp = docObj.groupItems.add();
htextObj.move(grp,ElementPlacement.PLACEATEND);
pObj.move(grp,ElementPlacement.PLACEATEND);


あとはオブジェクトを位置を入力した年月にあわせ調整します。

for (var i=0 ; i<days-1 ; i++){
    colCnt = colCnt + 1;

    if(colCnt > 6){
        colCnt = 0;
        rowCnt = rowCnt+1;
    }

    dpObj = textObj.duplicate();
    dpObj.contents = (i+2).toString();
    dpObj.position  = [arrX[colCnt]-dpObj.width, arrY[rowCnt]];
}


できたので、試しに3月のカレンダーを木曜と第3日曜を休診日に設定して作成してみました。

f:id:devew:20191227114749g:plain

まだ予定をいれたり、修正は必要ですが、これで更新が楽になりそうです!