金曜日, 3月 01, 2024

JavaScriptでAI遊び 18 
指定した年と月のカレンダーデータを作成

Illustratorで指定した年と月のカレンダーデータを作成してみました。

// カレンダーダイアログを表示して、月と年を入力する関数
function showCalendarDialog() {
var dialog = new Window("dialog", "カレンダーを作成");
//表示を左揃え
dialog.alignChildren = "left";
var monthGroup = dialog.add("group");
monthGroup.add("statictext", undefined, " 月:");
var monthInput =
monthGroup.add("edittext", undefined, "", { characters: 2 });
// ダイアログボックスのサイズを設定
monthInput.size = [28, 20];
var yearGroup = dialog.add("group");
yearGroup.add("statictext", undefined, "西暦:");
var yearInput =
yearGroup.add("edittext", undefined, "", { characters: 4 });
// ダイアログボックスのサイズを設定
yearInput.size = [45, 20];
var okButton = dialog.add("button", undefined, "OK");
okButton.onClick = function() {
var month = parseInt(monthInput.text);
var year = parseInt(yearInput.text);
dialog.close();
//1〜12以外の数値が入力された場合の処理
if (isNaN(month) || isNaN(year) || month < 1 || month > 12) {
alert("有効な月を入力してください。");
return;
}
createCalendar(month, year);
};
dialog.show();
}
// 指定した月のカレンダーを作成する関数
function createCalendar(month, year) {
var doc = app.activeDocument;
var textFrame = doc.textFrames.add();
// カレンダーの位置を設定 左上が起点で [0、0]
textFrame.position = [100, -100];
// 月の初めの日を取得
var startDate = new Date(year, month - 1, 1);
// 月の最後の日を取得
var endDate = new Date(year, month, 0);
// カレンダーのテキスト
var calendarText = "";
// カレンダーのタイトルを追加
calendarText += month + "月 " + year + "\n\n";
// 曜日を追加
calendarText += "日 月 火 水 木 金 土\n";
// 月の初めの日まで空白を追加
for (var i = 0; i < startDate.getDay(); i++) {
calendarText += " ";
}
// 日付を追加
for (var day = 1; day <= endDate.getDate(); day++) {
calendarText += day + " ";
if ((startDate.getDay() + day) % 7 == 0) {
calendarText += "\n"; // 土曜日の後に改行
}
}
// テキストにカレンダーを設定
textFrame.contents = calendarText;
}
// カレンダーダイアログを表示してカレンダーを作成
showCalendarDialog();

起動すると月と西暦を入力します。

すると最低限のデータが左上から右に100pt、下に100ptの位置に生成されます。ただし、あくまでも必要最低限のデータなので・・・

Tab等で体裁を整える必要があります。