首页 > 解决方案 > 如何将谷歌表格中的一行数据复制到同一张表格中的另一个选项卡?

问题描述

扩展我的问题的表面细节;我有一个谷歌表格标签,每个星期一都会自动更新数据。我需要做的是将该行从 Google 表格中的选项卡复制到同一个拱形表格中的另一个选项卡。这个复制的行需要从前一行向下放置(第 1 周是第 1 行,第 2 周是第 2 行等)。

到目前为止,我已经为这个脚本设置了一个触发器,使其在每个星期一运行(所以我已经管理了简单的部分......)但我仍然无法弄清楚如何完成主要工作!我看过一些类似的代码(其中一个我已经粘贴在下面),当勾选一个框或在单元格中注意到某个值时,数据会移动到新工作表中,但我无法修改其中任何一个以适用于我的情况。

我对使用 Google Script 完全陌生,并且没有任何语言的背景,所以这方面的帮助会很棒!或者,如果有人知道无需脚本就可以执行此功能的方法,那就更好了!(我已经研究过使用 =today() 并使用我要查找的日期作为触发器,但当然会出现错误,因为单元格的文本是 '=today()' 而不是实际日期...)

function onEdit(event) {
  // assumes source data in sheet named main
  // target sheet of move to named Completed
  // getColumn with check-boxes is currently set to colu 4 or D
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "main" && r.getColumn() == 4 && r.getValue() == true) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Completed");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  } else if(s.getName() == "Completed" && r.getColumn() == 4 && r.getValue() == false) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("main");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-formula

解决方案


推荐阅读