Forms 谷歌脚本-根据回复将新提交的内容移动到另一个页面

Forms 谷歌脚本-根据回复将新提交的内容移动到另一个页面,forms,triggers,google-apps-script,google-sheets,onsubmit,Forms,Triggers,Google Apps Script,Google Sheets,Onsubmit,我正在尝试创建一个脚本,它将采用新的表单响应,并根据提交的信息将其移动到另一个工作表。例如,假设表单有两个答案选项A、B。电子表格有三张纸;表单响应,工作表A,工作表B。如果有人提交表单并选择A,我需要将新行从“表单响应”移动到“工作表A”。我发现其他人的脚本正是这样做的,但使用OnEdit函数。我不知道在提交新表单响应时如何修改此脚本以使其工作 function onEdit(event) { var ss = SpreadsheetApp.getActiveSpreadsheet(); va

我正在尝试创建一个脚本,它将采用新的表单响应,并根据提交的信息将其移动到另一个工作表。例如,假设表单有两个答案选项A、B。电子表格有三张纸;表单响应,工作表A,工作表B。如果有人提交表单并选择A,我需要将新行从“表单响应”移动到“工作表A”。我发现其他人的脚本正是这样做的,但使用OnEdit函数。我不知道在提交新表单响应时如何修改此脚本以使其工作

function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();

if(s.getName() == "Form Responses" && r.getColumn() == 2 && r.getValue() == "A") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Sheet A");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
  }
}
我使用了可安装触发器,并用onFormSubmit替换了OnEdit函数,但这不起作用。如果有人能帮我,我会非常感激的


谢谢,

我有一个电子表格,收集表格提交,然后有额外的表格,根据答案过滤掉这些提交。所有这些都只是公式。这也能起到作用吗?

在比较变量时,尝试一些不太宽泛的方法,例如,提交内容发送到的工作表是一个常量且已存在的地址

function formSubmission() {
 var s = SpreadsheetApp.getActiveSheet();
 var data = range.getValues(); // range is a constant that always contains the submitted answers
 var numCol = range.getLastColumn();
 var row = s.getActiveRow;
 var targetinfo = s.getRange(row,(Yourcolumn#here).getValue);
    if(targetinfo() == "Desired Sheet Name") {
      var targetSheet = ss.getSheetByName("Sheet A");
      var targetrow = targetSheet.getLastrow()+1);
      var Targetcol = numCol();
      targetSheet.getRange(targetrow,1,1,Targetcol).setValues(data);
     }
  }

我没有对此进行测试,但希望它能帮助我在《开发人员指南》中查找,我最近刚刚找到了它,它澄清了很多问题。可以通过以下步骤设置触发器:
然后将其设置为:

以使您的答案有用,请进一步指定您的解决方案的工作方式以及它对所提出的问题的工作方式。想想部分屏幕截图,你使用了哪些公式以及如何。。。谢谢你的贡献!我的案例Formdata捕捉到了提交的内容。额外工作表中的公式可能在cel B2中,类似于=QUERY('Formdata'!A2:Z;“Select*where B='aswerB'”;0),后面的单元格后面是公式=CONTINUE(B2,2,1)谢谢您的建议。我之所以要编写脚本,是因为最终会有其他人修改提交的数据。通过公式,数据将位于多个位置,因此我们需要更改包含提交内容的表格中的原始数据,以及收集数据的附加表格(因为提交后将填写附加字段)。希望这是有意义的。但是使用公式,当提交的数据发生变化时,其他工作表将重新计算并显示调整后的数据。您将面临的最大问题是,在您让他人乱动提交的数据后,您的表单提交行为将不可预测。最佳做法始终是保护此工作表,让人们只处理复制的数据。脚本会将提交的数据复制到另一个工作表中,这样表单提交工作表就不会被触动(我会隐藏它)。如果我使用公式并保护表单提交,我将永远无法修改提交的数据,即使是在新的工作表上,因为查询公式将始终覆盖对原始数据所做的任何更改。