首页 > 解决方案 > Google AppScript 在输入日期时移动行

问题描述

我有一个 Google 表格,其中有一个复选框列 (26) 和一个日期列 (27)。有两个影响此选项卡的活动脚本。

  1. 单击复选框 (26) 时,我有一个自动添加日期 (27) 的脚本。
  2. 单击复选框 (26) 时,我有一个将行移动到另一个选项卡的脚本。

我遇到的问题是,有时在添加日期之前移动了行。(下面粘贴的脚本)

如何更改脚本#2,以便在将任何日期添加到 Col 27 时而不是在 Col 26 中单击复选框时移动该行?

任何帮助深表感谢:

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 26 or 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  if(s.getName() == "APPROVAL QUEUE" && r.getColumn() == 26 && r.getValue() == true) {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("COMPLETED ORDERS");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

标签: google-apps-script

解决方案


让这个函数不是 onEdit 函数,而是常规函数怎么样。然后在放入日期的 onEdit 脚本中调用此函数。这样它就完成了日期的输入,然后运行脚本来移动该行数据。您甚至可以放置一个 Utilities.sleep(1000) (1000 微秒是一秒)来延迟脚本移动行。


推荐阅读