Google Script与QUERY功能发生冲突的问题

问题描述 投票:0回答:1

我有一张表正在收集表格回复。然后,我使用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参数,所以它会立即再次拉入。

如何通过修改查询或修改脚本来确保它保持删除状态?

google-sheets google-sheets-formula google-sheets-query
1个回答
0
投票

正如您所推测的那样,这是因为原始响应表中的行仍然符合查询条件。您可以修改查询以排除任何唯一标识符,方法是检查它是否已显示在“已完成”表单中 - 假设列A是参考编号或时间戳,您可以尝试以下操作:

=QUERY(formsubmissions,"SELECT * where A <> "&Completed!A:A)

然后,它会在Completed A:A中检查相同值的数组,并将其从查询结果中排除(如果存在)。

© www.soinside.com 2019 - 2024. All rights reserved.