【发布时间】:2013-11-14 09:20:35
【问题描述】:
我在这里尝试做的是 - 我只想为每周的工作日提供索引。
所以,如果在一周中,周一和周三是节假日,那么周二应该得到 1,周四应该得到 2,周五应该得到索引 3。否则,在没有任何假期的正常周内,周一应该得到 1,周二2、周三 3,以此类推...
这是我写的代码(我已经多年没有编码了,所以请原谅粗暴的方法)
工作表
'Holidays'包含 B 列中从第 2 行开始的假期列表变量
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]由于某种原因不起作用...
我们将不胜感激!
【问题讨论】:
-
1.
lastSundayDate在哪里定义? 2. 如果lastSundayDate定义不正确,您的其余代码似乎会中断。好吧,至少您在问题中谈到的所有要点...我的建议是显示包含所有变量定义的所有代码,并可能从脚本编辑器发布执行脚本的结果,或者详细 Logging 的输出。 -
lastSundayDate 是传递给函数的参数之一。它包含上周日的日期,即一周开始的周日。我将发布执行脚本和日志。