我在这里要做的是-我只想为每周的工作日提供索引。
所以,如果在一周中,周一和周三是节假日,那么周二应该得到 1,周四应该得到 2,周五应该得到索引 3。否则,在没有任何假期的正常周内,周一应该得到 1,周二 2,周三3,以此类推……
这是我写的代码(我已经好几年没写代码了,所以请原谅粗暴的方法)
工作表
'Holidays'
包含从第 2 行开始的 B 列中的假期列表变量
date
是我想找出索引的日期变量
dayOfTheWeek
是从上周日算起的“日期”的天数,所以如果date
是周一,dayOfTheWeek
则为 1;如果date
是星期二,dayOfTheWeek
是 2,依此类推...
function indexOfWorkdayOfTheWeek (date, dayOfTheWeek, lastSundayDate)
{
var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
var activeCell = activeSheet.getActiveRange();
var activeRow = activeCell.getRowIndex();
var activeColumn = activeCell.getColumn();
var count = 1;
for (var j = 1; j < dayOfTheWeek; j++)
{
var date2 = lastSundayDate.valueOf() + j*86400;
Logger.log('Date ' + j + ' is:' + date2);
Logger.log('Last Sunday is:' + lastSundayDate);
if (holidayOrNot(date2) == true)
{
}
else
{
count = count + 1;
}
}
return count;
}
function holidayOrNot(date2)
{
var holidaysSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Holidays');
var listOfHolidays = holidaysSheet.getSheetValues(2, 2, 95, 1);
var isDateMatch = false;
for (var k = 0; k < 90; k++)
{
if (date2 == listOfHolidays[k].valueOf())
{
isDateMatch = true;
break;
}
else
{
continue;
}
}
return isDateMatch;
}
我认为这里的问题有两个:
由于
date2
某种原因,计算不起作用 (var date2 = lastSundayDate.valueOf() + j*86400;
)holidayOrNot
无论如何,该函数都返回 false,即使遇到假期......条件date2 == listOfHolidays[k]
由于某种原因不起作用......
帮助将不胜感激!