2016-04-10 8 views
0

これはコードの一部です。私は1つのヘッダーと1つの行がドキュメントにある場合、なぜvalues.length = 2であるかを知りたいと思います。範囲は高さが1です。なぜなら、開始は2番目の行なのですから、なぜ2ですか?なぜこのコードではvalues.length = 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('[email protected]') 
    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'); 
} 
+0

'getRange(行、列、numRowsの数、numColumnsのは)' 'LASTROW' どのくらいです変更する必要がありますか?私はvalues.lengthが2よりもはるかに大きいと思うでしょう...あなたの最初の行の9列すべてにデータが入っていますか? – zipzit

+0

ヘッダー行をスキップしているため、-1をvalues.lengthに配置する理由がわかりません。行2のデータを取得します。 私はこれを変更しようとします: 'var range = sheet.getRange(2,1、lastRow、9);' 'var range = ss.getRange(2,1、sheet.getLastRow()、9); ' あなたが働いているあなたのデータのサンプルを共有することができれば良いでしょう – Munkey

答えて

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 

ある必要があります。 3番目の引数は、終了行(lastRow)ではなく、範囲に含める行数を示します。

含まれてはならないデータを処理する行は、lastRowから引き算する必要があります。

その後、

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

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

関連する問題