0

我正在尝试创建一个脚本,该脚本根据在一系列单元格中输入的值在另一张工作表中搜索相关数据。然后在适当的相邻单元格中输入相应的数据。我可以尽可能地提取正确的数据,但是我无法让它在我的工作表的正确单元格中设置值。我错过了什么吗?

感谢您的帮助

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);
} 

  }

  }

  }

  }
4

1 回答 1

0

您正在从 ss2 读取 range3,然后从 range3(类包)读取 getValues(),但是在最后一条语句中,您正在使用相同的值(类包)写回相同的范围。所以没有其他东西被写入工作表。

另外,我认为你不能拥有 student2[u][4],因为 students2 的值来自 "B7:D27" 范围,它只有 3 列宽,所以最多只能有 students2[u] [2]。

我修改了您的脚本,如下所示,以便将某些内容写入 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,所以它很可能不是你想要的。

于 2013-04-29T20:46:42.610 回答