我试图在范围内的每个空白单元格之后添加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 :(得分:2)
尝试以下方法。当没有空白单元格时,这将添加3行。
public GameObject spawn;
private float spawnTime = 1;
void Start()
{
if (GameObject.FindGameObjectsWithTag("Cube").Length < 2)
{
spawnTime = Random.Range(1, 3);
Invoke("Spawn", spawnTime);
}
}
void Spawn()
{
if (GameObject.FindGameObjectsWithTag("Cube").Length < 2)
{
spawnTime = Random.Range(1, 3);
Instantiate(spawn, transform.position, Quaternion.identity);
Invoke("Spawn", spawnTime);
}
}
答案 1 :(得分:2)
在你的情况下,我们需要从范围的最后开始,然后按照适当的方式添加行。下面的代码将执行此操作并在具有数据的任何行下方添加5行,如果在具有数据的行之后存在空行,则甚至添加行。如果您希望获得更大的灵活性,可以将startRow传递给函数
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);
}
}
}
作为一般性评论:您正在检索更多行作为sheet.getLastRow()获取包含数据的最后一个行号,并且getRange()中的用法告诉应用程序提取该行数而不是该数字减去起始位置。