Я пытаюсь написать скрипт, который меняет цвет фона каждого столбца, содержащего дату выходных. По какой-то причине сценарий сбрасывается на март месяц, и я понятия не имею, почему.
В целях отладки я ограничил использование скрипта только воскресеньями. Вот что я знаю:
- Скрипт проходит по каждому столбцу в последовательном порядке, как и ожидалось, без пропуска столбца (столбец 2 - столбец 85)
- Сценарий окрашивает неправильные даты в марте
- 8 марта, похоже, виновник
- он читает дату 3/8, правильно как воскресенье, но вместо этого также читает следующий понедельник (3/9) как "Sun Mar 08" "Пн Мар 09". Таким образом, в воскресенье (3/8) и понедельник (3/9) он записывается как «Sun Mar 08».
- даты остаются на 1 до конца марта
- «Вс 5 апреля» пропускается все вместе - с субботы 04 апреля по понедельник апреля 06
- Даты возобновляются, как и ожидается, с понедельника апреля 06
- Случается до 2019 года даты также (даты начинаются со второго воскресенья марта до второго воскресенья апреля)
Я на 100% растерялся. Я бесконечно гуглил и пробовал так много вещей безрезультатно! Кто-нибудь знает, что я пропускаю или делаю неправильно ?! Любая помощь будет принята с благодарностью!
Вот сценарий:
//Change column background color for weekend dates
function colorAll() {
var sheet = SpreadsheetApp.getActiveSheet();
var startCol = 2; //start with column B
var endCol = sheet.getLastColumn(); // find last column in the sheet
for (var c = startCol; c <= endCol; c++) { //loop through columns
colorCol(c);
}
}
//Change background color for each column passed to 'c'
function colorCol(c) {
var sheet = SpreadsheetApp.getActiveSheet();
var dataRange = sheet.getRange(1, c, 5, 1); //row 1, column "c", selection size = 5 rows by 1 column
var data = dataRange.getValues();
var col = data[0];
var date = new Date(col);
var dayOfWeek = date.getDay();
//Logs values being passed to each variable in order to help debug process
Logger.log("*** Processing column number: " + c + " now ***");
Logger.log(col);
Logger.log(date);
Logger.log(dayOfWeek);
//If the day of week is Sunday:
if (dayOfWeek == 0) {
dataRange.setBackground("#E8E8E8"); //set weekends to grey
} else {
dataRange.setBackground("#ffffff"); //set non-weekends to white
}
// //If day of week is Sat or Sun:
// if (dayOfWeek == 0 || dayOfWeek == 6) {
// if (col[0] === "") {
// dataRange.setBackgroundRGB(255, 255, 255);
// } else {
// dataRange.setBackground("#E8E8E8");
// }
// }
}
Я собрал следующую Google лист для тестирования. Права доступа установлены так, что любой, у кого есть ссылка, может редактировать, поэтому имейте это в виду:)
Двойным щелчком по B1 вы можете выбрать любой начальный день, какой пожелаете. Нижние 3 строки возвращают номер дня недели, который читается по листам (1-7), номер дня недели, который читается скриптом приложения (0-6), и соответствующий номер для каждого столбца (B = 2, C = 3, et c).
Кроме того, если это поможет ...
Последний журнал для дат, окружающих 8 марта
шаблон ожидаемой даты = 6, 0, 1, 2, 3
возвращенный шаблон дат = 6, 0, 0, 1, 2
[20-03-10 10:13:05:886 PDT] ***Processing column number: 7 now***
[20-03-10 10:13:05:887 PDT] [Sat Mar 07 00:00:00 GMT-06:00 2020]
[20-03-10 10:13:05:888 PDT] Sat Mar 07 00:00:00 GMT-06:00 2020
[20-03-10 10:13:05:890 PDT] 6.0
[20-03-10 10:13:06:207 PDT] *** Processing column number: 8 now ***
[20-03-10 10:13:06:209 PDT] [Sun Mar 08 00:00:00 GMT-06:00 2020]
[20-03-10 10:13:06:211 PDT] Sun Mar 08 00:00:00 GMT-06:00 2020
[20-03-10 10:13:06:212 PDT] 0.0
[20-03-10 10:13:06:555 PDT] *** Processing column number: 9 now ***
[20-03-10 10:13:06:558 PDT] [Sun Mar 08 23:00:00 GMT-06:00 2020]
[20-03-10 10:13:06:561 PDT] Sun Mar 08 23:00:00 GMT-06:00 2020
[20-03-10 10:13:06:563 PDT] 0.0
[20-03-10 10:13:06:915 PDT] *** Processing column number: 10 now ***
[20-03-10 10:13:06:917 PDT] [Mon Mar 09 23:00:00 GMT-06:00 2020]
[20-03-10 10:13:06:918 PDT] Mon Mar 09 23:00:00 GMT-06:00 2020
[20-03-10 10:13:06:920 PDT] 1.0
[20-03-10 10:13:07:343 PDT] *** Processing column number: 11 now ***
[20-03-10 10:13:07:345 PDT] [Tue Mar 10 23:00:00 GMT-06:00 2020]
[20-03-10 10:13:07:347 PDT] Tue Mar 10 23:00:00 GMT-06:00 2020
[20-03-10 10:13:07:348 PDT] 2.0
Журнал для дат, окружающих 5 апреля
ожидаемая дата pattern = 5, 6, 0, 1
возвращенная дата pattern = 5, 6, 1, 2
[20-03-10 10:13:15:446 PDT] *** Processing column number: 35 now ***
[20-03-10 10:13:15:447 PDT] [Fri Apr 03 23:00:00 GMT-06:00 2020]
[20-03-10 10:13:15:449 PDT] Fri Apr 03 23:00:00 GMT-06:00 2020
[20-03-10 10:13:15:450 PDT] 5.0
[20-03-10 10:13:16:032 PDT] *** Processing column number: 36 now ***
[20-03-10 10:13:16:036 PDT] [Sat Apr 04 23:00:00 GMT-06:00 2020]
[20-03-10 10:13:16:038 PDT] Sat Apr 04 23:00:00 GMT-06:00 2020
[20-03-10 10:13:16:039 PDT] 6.0
[20-03-10 10:13:16:334 PDT] *** Processing column number: 37 now ***
[20-03-10 10:13:16:336 PDT] [Mon Apr 06 00:00:00 GMT-05:00 2020]
[20-03-10 10:13:16:338 PDT] Mon Apr 06 00:00:00 GMT-05:00 2020
[20-03-10 10:13:16:339 PDT] 1.0
[20-03-10 10:13:16:652 PDT] *** Processing column number: 38 now ***
[20-03-10 10:13:16:658 PDT] [Tue Apr 07 00:00:00 GMT-05:00 2020]
[20-03-10 10:13:16:678 PDT] Tue Apr 07 00:00:00 GMT-05:00 2020
[20-03-10 10:13:16:684 PDT] 2.0
Заранее спасибо за ваше время и помощь!
ОБНОВЛЕНИЕ: Добавление снимка экрана вышеупомянутого листа Google для справки
debugScript_colorAll снимок экрана
(примечание: там написано " Я не могу вставлять изображения, поскольку я новый пользователь. Очевидно, что ссылка на изображение - лучшее, что я могу сделать. Извините, Купер)