首页 > 解决方案 > Google Script for loop 每次调用时都会运行整个数组 - 寻找

问题描述

在下面的代码中,我有一个 for 循环,它遍历数组 A,然后遍历 B,但我无法弄清楚为什么每次将数组 A 发送到下一次迭代时,它都会遍历第二个数组的所有 3 个。像 A1 -> B1, B2,B3 A2-> B1, B2, B3 等。我希望它去 A1 -> B1, A2 -> B2 等。这可能吗?

function RunAlgo2(){
  var ss=SpreadsheetApp.getActive();
  var s=ss.getActiveSheet();
  var gamesArrayList = s.getRangeList(['B5:B6', 'B7:B8', 'B9:B10']);
  var gamesArray = gamesArrayList.getRanges();
  var gameDataList = s.getRangeList(['C5:E6', 'C7:E8','C9:E10']);
  var gameData = gameDataList.getRanges();
  for (var i=0;i<gamesArray.length;i++) {
    for(var j=0;j<gameData.length;j++) {
      gamesArray[i].copyTo(s.getRange('B2:B3'), {contentsOnly:true});
      s.getRange('G2:I3').copyTo(gameData[j], {contentsOnly:true});
      testWait();
    }
  }
}

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


问题:

  • 您正在嵌套 for 循环。对于每个外循环,所有内循环都将运行完成。

解决方案:

  • 使用单个 for 循环

片段:

  for (var i=0;i<gamesArray.length;i++) {
//  for(var j=0;j<gameData.length;j++) {
      gamesArray[i].copyTo(s.getRange('B2:B3'), {contentsOnly:true});
      s.getRange('G2:I3').copyTo(gameData[/*j*/i], {contentsOnly:true});
      testWait();
//  }
  }

推荐阅读