for循环递增其他变量太多次

时间:2016-08-10 20:09:56

标签: javascript google-apps-script google-sheets

上下文:我正在为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。

1 个答案:

答案 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)吗?