これもまた仕事でGoogleSpreadSheetでJavaScript(JS)のマクロを 組んでみたのでメモ書きです。 今回は「SyntaxHighlighter」で綺麗に表示できるかも実験。
function createDateList() {
const START_ROW = 6;
const END_ROW=36;
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 日本の祝日取得
var cal = CalendarApp.getCalendarById("ja.japanese#holiday@group.v.calendar.google.com");
var startTime = new Date(2012, 0, 1);
var endTime = new Date(2020, 11, 31);
var events = cal.getEvents(startTime, endTime);
// 標準時間を取得
var nstart = sheet.getRange("H2").getValue();
var nend = sheet.getRange("I2").getValue();
var nrest = sheet.getRange("J2").getValue();
// 色をクリア
sheet.getRange("A" + START_ROW + ":N" + END_ROW).setBackgroundRGB(255, 255, 255);
// 時間・作業内容クリア
sheet.getRange("C" + START_ROW + ":E" + END_ROW).setValue("");
sheet.getRange("G" + START_ROW + ":I" + END_ROW).setValue("");
sheet.getRange("K" + START_ROW + ":L" + END_ROW).setValue("");
sheet.getRange("N" + START_ROW + ":N" + END_ROW).setValue("");
var yesterday;
for (i = START_ROW; i < END_ROW + 1; i++) {
var today = sheet.getRange("A" + i).getValue();
var weekday = sheet.getRange("B" + i).getValue();
// 不要な日を消す
if (i > 30) {
valY = yesterday.toString().slice(8, 10);
valT = today.toString().slice(8, 10);
if (valT != "" && valY > valT) {
sheet.getRange("A" + i + ":I" + i).setValue("");
continue;
}
}
if (weekday == "日") {
sheet.getRange("A" + i + ":N" + i).setBackgroundRGB(255, 230, 230);
} else if (weekday == "土") {
sheet.getRange("A" + i + ":N" + i).setBackgroundRGB(200, 230, 255);
} else {
sheet.getRange("C" + i).setValue(nstart);
sheet.getRange("D" + i).setValue(nend);
sheet.getRange("E" + i).setValue(nrest);
}
// 祝日
for (j = 0; j < events.length; j++) {
var holiday = events[j].getAllDayStartDate().toString();
if (today == holiday) {
sheet.getRange("A" + i + ":N" + i).setBackgroundRGB(255, 230, 230);
sheet.getRange("N" + i).setValue(events[j].getTitle());
sheet.getRange("C" + i).setValue("");
sheet.getRange("D" + i).setValue("");
sheet.getRange("E" + i).setValue("");
sheet.getRange("G" + i).setValue("");
sheet.getRange("H" + i).setValue("");
sheet.getRange("I" + i).setValue("");
sheet.getRange("K" + i).setValue("");
sheet.getRange("L" + i).setValue("");
}
}
yesterday = today;
}
}
0 件のコメント:
コメントを投稿