2017-08-04 63 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

相关问题