【问题标题】:Need to move rows from form generated sheet需要从表单生成的工作表中移动行
【发布时间】:2021-05-17 13:53:10
【问题描述】:

我有一个调查表,我需要我的团队查看一次,但之后我希望我的团队设置为“已关闭”的行到存档表。过去对于其他工作表,我使用过这个脚本,但它似乎不适用于表单链接工作表。经过研究,我发现您无法从表单链接表中剪切,但您可以删除行,我的理论是脚本正在尝试剪切,这就是为什么不起作用。 “复制”和删除方法是什么?

    function onEdit(event) {
  // assumes source data in sheet named Needed
  // target sheet of move to named Acquired
  // test column with yes/no is col 4 or D
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();
  var sheets = ["Form Responses", "Input"];
  if(sheets.includes(s.getName()) && r.getColumn() == 1 && r.getValue() == "Closed / Move to Archive") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Archive");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

非常感谢任何帮助

【问题讨论】:

  • 请分享一个示例电子表格。

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


【解决方案1】:

正如我想象的那样,问题是

moveTo(target)

我改成

copyTo(target)

现在它可以正常工作了

【讨论】:

    【解决方案2】:
    function onEdit(e) {
      var sh = e.range.getSheet();
      var sheets = ["Form Responses", "Input"];
      if(sheets.includes(sh.getName()) && e.range.columnStart == 4 && e.value == "Closed") {
        var tsh = e.source.getSheetByName("Archive");
        var tgt = tsh.getRange(tsh.getLastRow() + 1, 1);
        sh.getRange(e.range.rowStart, 1, 1, sh.getLastColumn()).copyTo(tgt);
        sh.deleteRow(e.range.rowStart);
      }
    }
    

    我的表单回复表:

    存档表:

    【讨论】:

    猜你喜欢
    • 2022-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-23
    相关资源
    最近更新 更多