我正在尝试创建一个脚本,根据在一系列单元格中输入的值,在另一个工作表中搜索相关数据。然后在相应的相邻单元格中输入相应的数据。我可以得到正确的数据,但是我无法在我的工作表上设置正确单元格中的值。我错过了什么吗?
感谢您的帮助
function attend() {
var otherSheet = SpreadsheetApp.openById("blahblah").getSheetByName("Students");
var range = otherSheet.getRange("A1:M100");
var students = range.getValues();
var ss = SpreadsheetApp.openById("blahblah2").getSheetByName("Attendance");
var range2 = ss.getRange("B7:D27");
var students2 = range2.getValues();
var range3 = ss.getRange("E7:E27");
var classPack = range3.getValues();
for (var u = 0; u < students2.length; u++){
for (var i = 0; i < students.length; i++) {
if (students2[u][0] == "x") {
if (students[i][0] == "x") {
if (students[i][10] > 0){
var data = students[i][10];
students2[u][4] = data;
range3.setValues(classPack);
}
}
}
}
}
}
修改后的代码
function onEdit() {
var otherSheet = SpreadsheetApp.openById("blahblah").getSheetByName("Students")
var range = otherSheet.getRange("A1:M100")
var students = range.getValues()
var ss = SpreadsheetApp.openById("blahblah2").getSheetByName("Attendance")
var range2 = ss.getRange("B7:G27")
var students2 = range2.getValues()
for (var u = 0; u < students2.length; u++){
if (students2[u][0] == "x") {
for (var i = 0; i < students.length; i++) {
if (students[i][0] == "x") {
var classPack = students[i][10]
var membership = students[i][7]
var free = students[i][8]
students2[u][3] = classPack;
students2[u][4] = membership;
students2[u][5] = free;
range2.setValues(students2);
}
}
}
}
}
答案 0 :(得分:0)
您正在从ss2读取range3,然后从range3(classpack)读取getValues(),但是您将在最后一个语句中写回具有相同值(classpack)的相同范围。因此没有其他任何内容写入工作表。
另外,我认为你不能有学生2 [u] [4]因为学生2的数值来自“B7:D27”,只有3列宽,所以学生最多只能2 [U] [2]。
我修改了你的脚本,如下所示,以便在E帮助你编写脚本的情况下写入E列。也许你可以提供更多关于你想要写入E列的信息(你的意思是从classPack获取信息/数据,或者只是写入该范围)。
function attend() {
var otherSheet = SpreadsheetApp.openById("0AvhOXv5OGFq6dGlGT0lxb2t5MUh5S0ZscXBKeU0tTFE").getSheetByName("Students");
var range = otherSheet.getRange("A1:M100");
var students = range.getValues();
var ss = SpreadsheetApp.openById("0AvhOXv5OGFq6dEhFajY5R1VWNHp6bzdTZVNGaHlXX3c").getSheetByName("Attendance");
var range2 = ss.getRange("B7:D27");
var students2 = range2.getValues();
//var range3 = ss.getRange("E7:E27");
//var classPack = range3.getValues();
for (var u = 0; u < students2.length; u++){
for (var i = 0; i < students.length; i++) {
if (students2[u][0] == students[i][0]) {
if (students[i][0]> 0) {
var data = students[i][10];
ss.getRange("E"+ (7+u)).setValue(data);
// students2[u][4] = data;
// range3.setValues(classPack);
}
}
}
}
}
请注意,我没有使用/引用classPack也没有使用range3,所以很可能不是你想要的。