谷歌脚本,匹配列与其他,并抓住下一个值

时间:2017-08-18 16:16:46

标签: javascript google-sheets

我正在尝试制作一个谷歌脚本,以自动化谷歌电子表格中的一些计算。 我在这张表中有几件事,我需要的是,对于A列上的所有日期值(在第3行和第20行之间),我需要搜索列T(第17行和第50行之间)以及日期匹配时我需要获取T列中数据旁边的单元格中的值。

然后用这个总和我需要去B行向下移动一行并从上面的单元格中减去这个总和。

例如: 一个 17/8/2017 18/8/2017 19/8/2017

乙 100 空 空

Ť 空 空 18/8/2017 18/8/2017 18/8/2017 19/8/2017

û 空 空 五 五 2 1

运行脚本B之后应该是: 100 88 87

我的代码:

   function burnDown(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var completed = sheet.getRange(20, 20, 40);
   for(var i = 3; i<20;i++){
    for(var j = 1; i<50; j++){
      var sum = 0;
      if(data[i][0] == completed[j][0])
      {
        sum = sum + completed[j][20];
        Logger.log(completed[j][21] + "" + sum); 
    }
      j++;
  }
  i++;

}
}

我陷入了这一点,我必须进行匹配,但我得到错误:TypeError:无法从undefined中读取属性“0”。 (第9行,文件“BurnDown” 谢谢,

1 个答案:

答案 0 :(得分:0)

没有完成的值。也许你需要一个getValues()某处

 function burnDown()
 {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  //var completed = sheet.getRange(20, 20, 40);//this is a range
  var completed = sheet.getRange(20,20,40).getValues();//this creates a 2d array of values
  for(var i = 3;i<20;i++)
  {
    for(var j = 1; j<50; j++)
    {
      var sum = 0;
      if(data[i][0]==completed[j][0])
      {
        sum=sum + completed[j][20];
        Logger.log(completed[j][21] + "" + sum);
      }
      //j++;//not sure why these are here the loop increments
    }
  //i++;//same question as above
  }
}