我正在为我的公会写一个统计电子表格脚本,它会读出一个人的班级并在统计表上计算。
由于某种原因,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");
}
}
}
}
}
有人可以在那里找到任何错误吗?我找不到任何东西,谷歌也没有帮助我。
答案 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
}
}