移动行 google 个工作表

Moving rows google sheets

我正在尝试将数据行从 Sheet 1 传输到 Sheet 2。

谢谢

我相信你的目标如下。

  • 您的脚本运行良好。但是,您想减少脚本的处理成本。

这样的话,下面的修改怎么样?

修改后的脚本:

在此修改中,使用 setValues 复制行并使用表格 API 删除行。通过这个,我认为工艺成本可能会降低一点。所以,please enable Sheets API at Advanced Google services before you use this script.

function archive() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var firstSheet = ss.getSheetByName("Sheet 1");
  var firstSheetValues = firstSheet.getRange(1, 1, firstSheet.getLastRow(), firstSheet.getLastColumn()).getValues();
  var sheetId = firstSheet.getSheetId();
  var {values, requests} = firstSheetValues.reduce(function (o, r, i) {
    if (r[1] == "Archive") {
      o.values.push(r);
      o.requests.push({ deleteDimension: { range: { sheetId, startIndex: i, endIndex: i + 1, dimension: "ROWS" } } });
    }
    return o;
  }, { values: [], requests: [] });
  var secondSheet = ss.getSheetByName("Sheet 2");
  secondSheet.getRange(secondSheet.getLastRow() + 1, 1, values.length, values[0].length).setValues(values);
  Sheets.Spreadsheets.batchUpdate({requests: requests.reverse()}, ss.getId());
}

参考文献: