我是第一次编写Google脚本来处理来自Google电子表格的数据。 Google工作表由2个工作表组成,这两个工作表均基于不同的Google表单。
目标是使想要辅导其他人的人与一个或多个主题自动匹配。例如,约翰尼(Johnny)应该与劳伦(Lauren)相匹配,而迈克尔(Micheal)应该与约翰(John)相匹配。
我编写了此代码,以检查可以辅导他们的Micheal和Johnny。我想做的是检查主题物理学,是否希望Micheal接受该主题的辅导,然后由谁来做。约翰尼也一样。并与其他主题重复(英语)。
在此示例中,我仅检查主题。物理。这只是看物理学是否标记为“是”或“否”。
[代码以结尾]
当我查看我的日志时,预计会看到: 没有 是 没有 是 是 不
但是我看到: 没有 是 不
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
/* sheet with people who want to tutor other people */
var lr = ss.getLastRow(); // how many rows
var kk =
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Hebber");
/* sheet with people who want to be tutored */
var klr = kk.getLastRow(); // how many rows
for (var i = 2; i <= klr; i++) {
var hemail = kk.getRange(i, 2).getValue();
var hname = kk.getRange(i, 3).getValue();
var hphysics = kk.getRange(i, 4).getValue();
var henglish = kk.getRange(i, 5).getValue();
Logger.log(hphysics);
for (var i = 2; i <= lr; i++) {
var gemail = ss.getRange(i, 2).getValue();
var gname = ss.getRange(i, 3).getValue();
var gphysics = ss.getRange(i, 4).getValue();
var genglish = ss.getRange(i, 5).getValue();
Logger.log(gphysics);
}
}
}
答案 0 :(得分:1)
尝试使用j而不是i作为变量的第二个循环。由于您使用的是i,因此当脚本回到第一个for循环时,它已经在i中添加了数字,这导致它比您希望的更早退出循环。如果您不希望第二个for循环影响第一个,则需要使用不同的变量。
答案 1 :(得分:0)
问题似乎出在计数器变量上。
请参阅我的示例及其输出:
var klr = 3;
var lr = 3;
for (var i = 0; i <= klr; i++) {
console.log("f1." + i);
for (var i = 0; i <= lr; i++) {
console.log("f2." + i);
}
}
f1.0
f2.0
f2.1
f2.2
f2.3
因此,要回答您的问题,您需要在第二个for循环中使用替代变量:
for(var i = 2; i <= klr; i ++){
var hemail = kk.getRange(i, 2).getValue();
var hname = kk.getRange(i, 3).getValue();
var hphysics = kk.getRange(i, 4).getValue();
var henglish = kk.getRange(i, 5).getValue();
Logger.log(hphysics);
for (var j = 2; i <= lr; j++) {
var gemail = ss.getRange(j, 2).getValue();
var gname = ss.getRange(j, 3).getValue();
var gphysics = ss.getRange(j, 4).getValue();
var genglish = ss.getRange(j, 5).getValue();
Logger.log(gphysics);
}
}