上下文:我正在为Sheets创建一个脚本,它将为内部Sheets日历着色,以显示基于在Sheet中其他位置填写任务详细信息的开始和结束日期。
奇怪的情况:对于每个增加的列我设置了开始日期,colCount增加一个额外的时间(超过我想要的),如附图所示。 colCount会跟踪应该将多少个单元格涂成蓝色(在结束日期之前在单元格处完成)
http://i.imgur.com/2kNGTIG.png - 工作表1包含任务详细信息
http://i.imgur.com/KhNBi4Q.png - 带有日历的第2页,显示绘画发生的位置
为什么colCount增加了太多次?
for (var k = 2; k < 100; k++){ //iterate over rows (searching tasks)
if (ss2.getRange(k, 1).getValue() === task){ //check correct row for task
var colCount = 1;
var start;
for (var i = 2; i < 100; i++){ //iterate over columns (searching dates)
var dateCell = ss2.getRange(1, i).getValue().getTime(); //this is cell that has date
if (dateCell == startDate){
start = i; //set column where start date is
}
else if (dateCell != endDate && dateCell != startDate){
colCount++;
}
else if (dateCell == endDate){
e.range.setNote("4.5: - start " + start + " - colCount " + colCount);
ss2.getRange(k, start, 1, colCount).setBackground("#4d79ff"); //set blue
ss2.getRange(k, i).setBackground("#fe4343"); //set red, working fine
return;
}
}
}
}
编辑:找到了实现我想要的另一种方式。我刚刚使用了这行
var cols = ss2.getRange(1, i).getColumn() - start;
获取要绘制的列数,然后使用cols而不是colCount。
答案 0 :(得分:2)
我认为您的问题可能就在
行var connectstring = 'postgres://me:password@localhost/dbname';
var client = new pg.Client(connectstring);
因为你排在var dateCell = ss2.getRange(1, i).getValue().getTime();
行,所以你不应该获得范围(k,i)
吗?