Google表格中的循环失败

时间:2017-12-08 01:18:54

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

我有一个循环,其目的是遍历Google表格,该表格应标识为sheet,并视为二维数组。

for (var i = 0; i < sheet.length; i++) {
  var currentDataset = sheet.getRange(i+1, 1);
  var currentData = currentDataset.getCell(1, 1).getValue();

  Logger.log(String(currentData));

  switch (String(currentData)) {
    case string:
      Logger.log("match");
      for (var ii = 0; ii < 16; ii++) {
        currentDataset.getCell(1, ii+1).setValue(data[ii]);
      }
      break;

    default:
      Logger.log("no match");
      break;
  }
}

如果当前行中的第一个单元格currentDatacurrentDataset根据i匹配switch语句中的字符串值string ,另一个循环将迭代以使用data的数组成功替换相应行中的相应值。如果当前单元格值不匹配,switch将默认并中断,允许循环再次迭代。

当调用该函数时,循环开始遍历工作表,默认所有不匹配。但是,当循环到达匹配时,它会跳过它。以下是日志的样子:

[17-12-08 08:20:13:909 PST] Mismatch Value
[17-12-08 08:20:13:910 PST] default
*** THIS IS WHERE THE MATCH VALUE SHOULD APPEAR ***
[17-12-08 08:20:14:389 PST] Mismatch Value
[17-12-08 08:20:14:390 PST] default

我重写了上面的代码,使变量更具可读性,就像它最初在GAS中一样,如果你需要更详细的代码请注释,或者在这里找到它(第51-62行):https://github.com/organism/Scorecard-Builder/blob/master/src/scorecardBuilder.gs

1 个答案:

答案 0 :(得分:0)

我认为这就是你想要做的事情:

function myfunction(){
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();//or whatever
  var rg=ss.getDataRange();
  var vA=rg.getValues();//gets all the data on the sheet
  for(var i=0;i<vA.length;i++){
    switch(typeof(vA[i][0])){
      case 'string':
        Logger.log('Match=%s',vA[i][0]);
        for(var j=0;j<16;j++){
          sh.getRange(i+1,j+1).setValue(vA[i][0])
        }
        break;
      default:
        Logger.log('No Match=%s',vA[i][0]);
        break;
    }
  }
}

运行前的电子表格:

enter image description here

运行后的电子表格:

enter image description here

我的记录器输出:

enter image description here

如果那不是您拍摄的内容,那么我很抱歉在这里插话。