有没有一种简单的方法可以转移细胞?-谷歌应用程序脚本



目前有一个程序,我在其中向已经有值的单元格插入一个值,我想要的行为是向下移动该单元格中的每个值。

我最初的想法是构建一个循环,将当前单元格值分配给行+1,但随后我必须向下检查每个单元格。

我遇到了一个相关的问题:在谷歌电子表格中转换值,但我如何从索引中应用正在插入的值?

有简单的方法吗?

非常感谢你的帮助。

我发现这个方法满足了我的需要:

https://developers.google.com/apps-script/reference/spreadsheet/range#insertcellsshiftdimension

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange("A1:D10");
range.insertCells(SpreadsheetApp.Dimension.COLUMNS);

Where range可以是要下移的单元格。同时指定维度为ROWS。示例:

sheet.getRange(2,4).insertCells(SpreadsheetApp.Dimension.ROWS);

上面的方法将从第2行第4列(D(向下移动值。

  • 您希望使用Google Apps脚本通过下移操作来放置值
  • 例如,当一个值被放入单元格"A1"时,您希望通过脚本的下移操作将这些值放入同一列

在这个答案中,我想建议在类范围中使用autoFill的方法。autoFill于2017年10月10日添加。参考

示例脚本:

function myFunction() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet
.getRange("A1")
.autoFill(sheet.getRange("A1:A"), SpreadsheetApp.AutoFillSeries.ALTERNATE_SERIES);
}
  • 在这个示例脚本中,例如,当1被放入单元格"A1"并运行myFunction的函数时,单元格"A2:a"将变为2, 3, 4, 5,,,
    • 如果要对1, 1, 1, 1, 1,,,执行单元格"A2:A",请将SpreadsheetApp.AutoFillSeries.ALTERNATE_SERIES修改为SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES
  • 此外,在此示例脚本中,例如,当=B1被放入单元格"A1",并且运行myFunction的函数时,单元格"A2:a"将变为=B2, =B3, =B4, =B5,,,

参考文献:

  • 自动填充(目的地,系列(
  • 枚举自动填充系列