【问题标题】:Moving rows google sheets移动行谷歌表
【发布时间】:2021-11-10 03:01:12
【问题描述】:

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

谢谢

【问题讨论】:

  • 参见 tag info page 了解“最佳实践” -> 获取值数组和 setValues 数组。

标签: google-apps-script google-sheets google-sheets-api


【解决方案1】:

我相信你的目标如下。

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

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

修改脚本:

在此修改中,使用 setValues 复制行并由 Sheets 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());
}

参考资料:

【讨论】:

  • 感谢您的帮助,您太棒了!还有一个问题,你能不能让它传输行和偏移+2列,这样当存档完成时,它会为A列中每一行的当前日期和时间加上时间戳,并在B列中标记行来自的工作表名称? “2021 年 11 月 15 日 | Sheet1 | 数据...”
  • @usernametaken 关于你的新问题,我愿意支持你。但不幸的是,我无法理解你的新问题。这是因为我的英语水平不好。我对此深表歉意。为了正确理解你的新问题,我可以问你它的细节吗?通过这个,我想尝试理解你的新问题。我可以解决你的第一个问题。但是,我深表歉意,我不能很快解决你的新问题。如果您能原谅我糟糕的英语水平,我将不胜感激。
  • 完全没问题!对于正在传输的行,我想添加时间戳并添加工作表名称。例如,如果我将工作表 1 中的一行归档到工作表 2,我希望将时间和原始工作表名称(“工作表 1”)添加到移动的每一行。
  • @usernametaken 感谢您的回复。我不得不再次为我糟糕的英语水平道歉。不幸的是,从您的回复中,我仍然无法想象您的新问题。但我想尝试理解你的新问题。那么你能给我时间来理解你的新问题吗?如果你能给我时间去做,我很高兴。我为我糟糕的英语水平深表歉意。如果您能原谅我糟糕的英语水平,我将不胜感激。
  • @usernametaken 虽然我不确定我是否能正确理解你的新问题,例如,将const date = new Date(); 放在var sheetId = firstSheet.getSheetId(); 之后,并从o.values.push(r); 修改为@987654329 @,这是您期望的结果吗?如果我误解了您的新问题,我再次道歉。
猜你喜欢
  • 2020-10-29
  • 2021-10-03
  • 2011-09-19
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多