setValues位于特定列的第一个空行

时间:2015-12-23 02:03:45

标签: google-apps-script google-sheets

我正在制作一个脚本,该表格将包含学生姓名以及活动的第一,第二等选项,然后按等级将其列入班级名单。我的测试中有一切都工作,除了它不会彼此相邻设置值。我知道这是因为我正在使用的.getLastRow,但我想不出任何其他方式。其次,我被迫使用单独的for循环,或者它只是将名称放在它找到它们的循环中的任何地方并且弄得一团糟。

这是我的代码:

function StreamRoster2() {

  var grade = 2;
  var name = 1;
  var choice1 = 3;
  var fifth = SpreadsheetApp.openById("1prA4_1z_8JGsjKHGLOQKj0FCo1pF7tDCxdR_nHkBqq8").getSheetByName("Fifth");

  var data = SpreadsheetApp.openById("1prA4_1z_8JGsjKHGLOQKj0FCo1pF7tDCxdR_nHkBqq8").getSheetByName("Results").getDataRange().getValues();

  for (var i = 2; i < data.length; i++) {  
    if (data[i][grade] === 'Fifth' && data[i][choice1] === 1) {
       fifth.getRange(fifth.getLastRow()+1, 1).setValue(data[i][name]);
    } 
  } 

  for (var i = 2; i < data.length; i++) {  
    if (data[i][grade] === 'Fifth' && data[i][choice1] === 2) {
       fifth.getRange(fifth.getLastRow()+1, 2).setValue(data[i][name]);
     }     
    } 
  for (var i = 2; i < data.length; i++) {  
    if (data[i][grade] === 'Fifth' && data[i][choice1] === 3) {
        fifth.getRange(fifth.getLastRow()+1, 3).setValue(data[i][name]);
     }     
    } 

   SpreadsheetApp.flush();
   Browser.msgBox("Classes Created");  
  }

任何帮助将不胜感激。谢谢 What it looks like in the spreadsheet

1 个答案:

答案 0 :(得分:0)

创建一个计数器,只有在匹配时才增加它:

var foundCounter = 0;

for (var i = 2; i < data.length; i++) {  
  if (data[i][grade] === 'Fifth' && data[i][choice1] === 1) {
    foundCounter +=1;
    fifth.getRange(foundCounter, 1).setValue(data[i][name]);
  } 
}