在同一 sheet 上移动多个非相邻行

Move multiple non adjacent rows on same sheet

我正在尝试将不相邻的行移动到同一 sheet 上的特定行,但我无法让它工作。到目前为止我有以下代码:

    function moveRows() {
var sheet = SpreadsheetApp.getActiveSheet();
var rowSpec = sheet.getRangeList(["B11","B15"]);
sheet.moveRows("B2","B12")
}

然而returns出现以下错误:

Exception: The parameters (String,String) don't match the method signature for SpreadsheetApp.Sheet.moveRows. moveRows @ Code.gs:4

根据我的搜索,我还没有找到移动多个不相邻行的方法,所以我的第一个问题是:这可能吗?

如果没有,是否有解决方法?如果有,方法是什么?

这是我正在研究的sheet:https://docs.google.com/spreadsheets/d/1BKOxgZmAIoAzpmrF5NBChjFMXheyUEkf7SXVXCJs3zw/edit?usp=sharing

修改点:

  • 在您的脚本中,未使用 var rowSpec = sheet.getRangeList(["B11","B15"]);
  • moveRows(rowSpec, destinationIndex) 的参数是 rowSpec(范围)和 destinationIndex(整数)。
  • 根据I am trying to move non-adjacent rows to specific rows on the same sheet和你的展示脚本,我认为你可能想从第2行移动到第12行。如果我的理解是正确的,修改如下?

修改后的脚本:

function moveRows2() {
  var obj = [{"fromRow": 2, "toRow": 12}];
  var sheet = SpreadsheetApp.getActiveSheet();
  obj.forEach(({fromRow, toRow}) =>
    sheet.moveRows(sheet.getRange(`${fromRow}:${fromRow}`), toRow)
  );
}
  • 当此脚本为运行时,第 2 行移动到第 11 行。

  • 如果要移动其他行,请将其添加到obj,如var obj = [{"fromRow": 2, "toRow": 12}, {"fromRow": 3, "toRow": 13},,,]

  • 或者,根据您的脚本,如果您想将单元格“B2”移动到单元格“B12”,进行以下修改怎么样?

      var obj = [{"fromCell": "B2", "toCell": "B12"}];
      var sheet = SpreadsheetApp.getActiveSheet();
      obj.forEach(({fromCell, toCell}) =>
        sheet.getRange(fromCell).moveTo(sheet.getRange(toCell))
      );
    
    • 在这种情况下,移动单元格值后的单元格变为空。

参考文献: