2017-08-04 59 views
0

我試圖在範圍內的每個空白單元格之後添加x空白行。 我使用一個循環,但與我的循環,只有第一個單元格受到影響。Google Apps腳本:在範圍內的每個單元格後插入x行

在這裏,我的代碼: 我想我知道我錯了(我需要循環中sheet.insertRowsAfter(i, 5);但我不能這樣做...)

謝謝!

function insertRows() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("test"); 

    var sourceRange = sheet.getRange(10, 1, sheet.getLastRow()); 
    var sheetData = sourceRange.getValues(); 

    var numRows = sourceRange.getNumRows(); 
    Logger.log(numRows); 

    for (var i=10; i < numRows; i++) { 
    sheet.insertRowsAfter(i, 5); 
    } 
} 
+0

你能分享一張樣本嗎?如果我正確地理解了你,你可能有一系列的行,例如1-100行,而20,40和60行可能是空白的,所以你想在這些情況下添加5個空白行。如果這是真的,則認識到當您在第20行之後添加5行時,將其他空白行向下移動5,使其位於我的示例行45和65中。 –

+0

當然!這個例子:https://docs.google.com/spreadsheets/d/1JiTJbfTZpMRv3b1OTDmUp42yPvJclpr3ZVcMvERS2Gc/edit?usp=sharing 我有10行,在每行之後,我需要添加3個空白行。 – christophebazin

回答

2

你的情況,我們需要開始在範圍的結束,我們的方式了,加上排在適當情況下。下面的代碼將執行此操作,並在具有數據的任何行的下面添加5行,即使在具有數據的行後面有空行的情況下也會添加行。如果你想有更多的靈活性

function insertRows() { 
    var startRow = 10; 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("test"); 

    var sourceRange = sheet.getRange(startRow, 1, sheet.getLastRow()); 
    var sheetData = sourceRange.getValues(); 

    var numRows = sourceRange.getNumRows() - startRow; 
// Logger.log(numRows); 

    for (var i=numRows; i > -1; i--) { 
    if (sheetData[i].join("")) { 
     sheet.insertRowsAfter(i + startRow, 5); 
    } 
    } 
} 

作爲一般性評論,你可以通過STARTROW的功能:您檢索需要更多的行爲sheet.getLastRow()獲取與數據的最後行號和getRange使用()告訴應用程序拉取該行數,而不是該數減去起始位置。

+0

像魅力一樣工作^^ – christophebazin

2

請嘗試以下操作。如果沒有空白單元格,這將添加3行。

function insertRows() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName("test"); 
    var sourceRange = sheet.getRange(1, 1, sheet.getLastRow()); 
    var sheetData = sourceRange.getValues(); 
    for (var i=0; i < sheetData.length; i++) { 
    if(sheetData[i][0]!=""){ 
     sheet.insertRowsAfter(i+1, 3); 
     sheetData = sheet.getRange(1, 1, sheet.getLastRow()).getValues(); 
    } 
    } 
} 
+1

這是工作:)謝謝! – christophebazin

相關問題