Google for Spreadsheet值的“for”循环未循环播放

时间:2016-07-27 21:13:33

标签: for-loop google-apps-script google-sheets

我正在为我的公会写一个统计电子表格脚本,它会读出一个人的班级并在统计表上计算。

由于某种原因,for循环无效。当我执行脚本时,它什么都不做。 for循环之前的所有内容似乎都有效。我使用了调试器,并从for循环点开始设置调试点,窗口在1秒后打开和关闭。

这是我现在的代码:

function addToStatistik() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();          

  var source_sheet = spreadsheet.getSheetByName("Raid Montag");       
  var source_range_names = source_sheet.getRange("C4:C13");
  var source_range_setup_boss1 = source_sheet.getRange("M4:M13");

  var target_sheet = spreadsheet.getSheetByName("Statistik");       
  var target_range_names = target_sheet.getRange("A4:A31");
  var target_range_boss1 = target_sheet.getRange("K4:S31");


  target_sheet.getRange(2,1).setValue("Debug1"); //testing stuff
  for (var i=0; i < source_range_names.length; i++) {
    for (var j=0; j < target_range_names.length; j++) {
      if (source_range_names[i][0] == target_range_names[j][0]) {
        if (source_range_setup_boss1[i][0].indexOf("War") > -1) {
          target_sheet.getRange(9,5).setValue("TEST");
        }
      }
    }
  }
}

有人可以在那里找到任何错误吗?我找不到任何东西,谷歌也没有帮助我。

2 个答案:

答案 0 :(得分:2)

您获得的是范围,但不是值。这一行:

var source_range_names = source_sheet.getRange("C4:C13");

获取范围,但不是任何值。

应该是:

var source_range_names = source_sheet.getRange("C4:C13").getValues();

外部循环永远不会循环。范围没有length

for (var i=0; i < source_range_names.length; i++) {

您无需更改上述行,但目前变量source_range_names是范围,而不是2D数组值。

答案 1 :(得分:0)

在迭代之前,您需要获取范围的值,为此,您需要使用方法getValues()getDisplayValues()

function leFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();          
  var source_sheet = spreadsheet.getSheetByName("Raid Montag"); 
  var source_range_names = source_sheet.getRange("A1:C13");
  var values_range_names = source_range_names.getDisplayValues();

  Logger.log(values_range_names);

  for (var i=0; i < values_range_names.length; i++) {
    // Do Something
  }

}