我有一张纸正在收集表格答复。然后,我使用QUERY函数使用以下公式将所有数据提取到单独的工作表中:
=QUERY(formsubmissions,"SELECT *")
其中formsubmissions
在“命名范围”中。
一旦执行了四个步骤,用户便选择Completed =Ýes',它将触发以下脚本:
function onEdit() {
var sheetNameToWatch = "R+R;
var columnNumberToWatch = 15;
var valueToWatch = "Yes";
var sheetNameToMoveTheRowTo = "Completed";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
此脚本将正确执行并正常运行,将行移至Çompleted
工作表中并从活动工作表中删除。但是,该行仅在瞬间被删除,并且几乎在瞬间出现。我猜这是因为它仍然与QUERY参数匹配,因此立即将其再次拉入。
如何通过修改查询或修改脚本确保它保持删除状态?
答案 0 :(得分:0)
如您所料,发生这种情况是因为原始响应表中的行仍满足查询条件。您可以通过检查查询是否未显示在“已完成”工作表中来修改查询以排除任何唯一标识符-假设A列是参考数字或时间戳,则可以尝试以下操作:
public function collections()
{
return $this->belongsToMany(Collection::class, 'collection_products', 'product_id', 'collection_id');
}
然后,它检查Completed A:A中的数组是否具有相同的值,并将其从查询结果中排除(如果存在)。