我正在使用以下代码将整行数据从一张表格移动到另一张表格,这非常有效。
我正在使用AppSheet让用户访问和编辑阻止Sheets中onEdit功能的数据。 AppSheet建议我将此脚本更改为“基于时间的触发器”,以便应用程序中的编辑与直接在“表格”中编辑列的操作相同
有没有办法轻松做到这一点?
先谢谢你了!
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);
}
}
答案 0 :(得分:1)
正如您所看到的,函数名称为onEdit()
,这意味着它是基于编辑触发器的函数。换句话说,它应该在每次编辑中被触发并执行。
但现在你希望它基于时间而不是编辑。因此,您可以重命名该功能,并从此顶部菜单中为此功能创建基于时间的触发器。
步骤:
onEdit()
功能。也许您可以将其重命名为moveRow()
time based trigger
。确保您已授予适当的权限。您可以通过尝试手动运行该功能来检查这一点(通过从顶部选择功能下拉菜单并单击运行/执行图标)。