【问题标题】:Google Sheets Script For Loop Issues用于循环问题的 Google 表格脚本
【发布时间】:2019-12-07 01:02:35
【问题描述】:

我正在尝试遍历数组并将值复制到表中。 gamesArrayList 是(主队和客队),它们被复制到 B2:B3 中以进行算法处理,然后 C5:E6 是第一场比赛“统计”所在的区域,然后我需要它进入第二场比赛 C7:E8 , game 3 C9:E10, etc. 球队都是不同的。我已经为此工作了 5 个小时,并且非常卡住。任何方向都会有所帮助,谢谢! (我知道这是一个非常简单的问题,但我不是以此为生。)

   function RunAlgo(){
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var s = ss.getSheets()[0];
      var gamesArrayList = s.getRangeList(['B5:B6', 'B7:B8', 'B9:B10']);
      var gamesArray = gamesArrayList.getRanges();
      var gameDataList = sheet.getRangeList(['C5:E6', 'C7:E8','C9:E10']);
      var gameData = gameDataList.getRanges();
      for (var i in gamesArray) {
      gamesArray[i].copyTo(ss.getRange('B2:B3'), {contentsOnly:true});
      testWait();
        for (var i in gameData) {
          ss.getRange('G2:I3').copyTo(gameData([i]), {contentsOnly:true});
             testWait();
      }
     }
    }

【问题讨论】:

  • 欢迎。我认为这里也没有多少人以此为生;-) 无论如何,如果您能分享一份您的电子表格副本,并附上一个成功结果的例子,这将有所帮助。

标签: google-apps-script google-sheets


【解决方案1】:

您的代码中有一些错误,我只是猜测您想要什么。但是继续尝试一下,让我现在什么不起作用。在电子表格中指定范围时,最好指定工作表。同样使用 Spreadsheet.getSheets()[0] 并不是一个好主意,因为它不是一个独特的工作表。它是最左边的工作表,因此如果您移动它们,它会发生变化。另外,我只使用 for in 循环来遍历对象而不是数组。您需要注意脚本编辑器中的内容辅助,它有助于告诉您何时正确连接到先前声明的变量。您的 gameData 不是数组,因为“工作表”一词未定义。因此,我做了一些猜测以解决问题,希望这更接近您想要的。

function RunAlgo(){
  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++) {
    gamesArray[i].copyTo(s.getRange('B2:B3'), {contentsOnly:true});
    for(var j=0;j<gameData.length;j++) {
      s.getRange('G2:I3').copyTo(gameData[j], {contentsOnly:true});
    }
  }
}

由于我无权访问您的数据,因此无法真正调试代码。所以我假设代码中没有语法问题的部分是正确的。

【讨论】:

  • 非常感谢,这正是我正在寻找的解决方案。在遍历数组时,您会使用什么来代替“for 循环”?我知道我遇到了一个问题,即没有足够的时间在团队之间加载数据并将统计数据添加到表中。我使用 //holds 处理下一个脚本,直到最后一个脚本完成 function testWait(){ var lock = LockService.getScriptLock(); lock.waitLock(5000); SpreadsheetApp.flush(); lock.releaseLock(); }
  • 我说for in 循环,我只在对象中使用它们。我将for loops 用于数组。 Why use for inWhy using for in loops for interating through arrays is a bad idea
猜你喜欢
  • 2022-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多