为什么这段代码中的values.length = 2?

时间:2016-04-10 08:00:12

标签: javascript google-apps-script google-sheets

这是一段代码。我想知道为什么values.length = 2当我在文档中有1个标题和1行时。范围的高度为1,因为它的开始是第二行,所以为什么2?

function pushToCalendar() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('scheduler');
  var lastRow = sheet.getLastRow(); 
  var range = sheet.getRange(2,1,lastRow,9);
  var values = range.getValues();   
  var updateRange = sheet.getRange('scheduler!J1'); 
  var calendar =     CalendarApp.getCalendarById('rrgfkvm77h6gd6h0mcu1f701os@group.calendar.google.com')
  updateRange.setFontColor('red');

  for (var i = 0; i < values.length-1; i++) {            
      if (values[i][4] != '●') {                       
        var newEventTitle = values[i][0];
        var newEvent = calendar.createEvent(newEventTitle, 
             new Date(values[i][7]),
             new Date(values[i][8])); 
        var newEventId = newEvent.getId();
        sheet.getRange(i+2,6).setValue('●');
        sheet.getRange(i+2,7).setValue(newEventId);  
      }
  }

  updateRange.setFontColor('white');
}

1 个答案:

答案 0 :(得分:1)

var range = sheet.getRange(2,1,lastRow,9);

应该是

var range = sheet.getRange(2,1,lastRow - 1,9);
// -1 being the number of header rows

从行数中删除标题行。第三个参数表示要包含在范围内的行数,而不是结束行(lastRow)。

您必须从lastRow中减去任何不应包含的数据行。

然后您需要更改

for (var i = 0; i < values.length-1; i++) {  

for (var i = 0; i < values.length; i++) {  
相关问题