Google apps script 使用基于时间的操作而不是OneEdit将整行移动到另一个工作表

Google apps script 使用基于时间的操作而不是OneEdit将整行移动到另一个工作表,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我使用以下代码将整行数据从一个工作表移动到另一个工作表,这非常有效 我正在使用AppSheet供用户访问和编辑数据,这些数据阻止了工作表中的OneEdit功能。AppSheet建议我将此脚本更改为“基于时间的触发器”,以便应用程序中的编辑与直接在“Sheets”中编辑列具有相同的操作 有没有一种方法可以轻松做到这一点 提前谢谢你 function onEdit(event) { // assumes source data in sheet named Needed // tar

我使用以下代码将整行数据从一个工作表移动到另一个工作表,这非常有效

我正在使用AppSheet供用户访问和编辑数据,这些数据阻止了工作表中的OneEdit功能。AppSheet建议我将此脚本更改为“基于时间的触发器”,以便应用程序中的编辑与直接在“Sheets”中编辑列具有相同的操作

有没有一种方法可以轻松做到这一点

提前谢谢你

    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();

  if(s.getName() == "Stock" && r.getColumn() == 14 && r.getValue() == "Booked") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Bookings");
    var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).moveTo(target);
    s.deleteRow(row);
  }
}

如您所见,函数名为
onEdit()
,这意味着它是一个基于编辑触发器的函数。换句话说,它应该在每次编辑中被触发和执行。 但现在您希望它基于时间,而不是编辑。因此,您可以重命名该函数,并从顶部菜单为此函数创建基于时间的触发器

步骤:

  • 重命名
    onEdit()
    函数。也许您可以将其重命名为
    moveRow()
  • 从顶部菜单栏中选择基于时间的触发器
  • 从下拉列表中选择合适的时间表和此功能
  • 保存更改

  • 确保您已授予适当的权限。您可以通过尝试手动运行该函数一次来检查这一点(从顶部的“选择函数”下拉列表中选择它,然后单击“运行/执行”图标)。

    Hi-Umair!谢谢你的回复。但是,我确实尝试过,第6行和第7行返回一个错误,因为这是一个“事件源”。抱歉,如果这似乎是一个愚蠢的问题,因为我是一个完全的新手,但有一个替代的获取源代码?我尝试删除源中的事件部分,它返回了错误,并且事件对象只有在被某些编辑或更改触发时才会出现,在该对象中有关于在何处、进行了什么等类型的编辑或更改的数据。由于基于时间的触发器基于时间而不是编辑或更改,所以它不会发送任何事件对象。若你们能向我解释你们的最终目标是什么,也许我能在移除事件对象方面帮你们更多。