Google脚本 - 根据回复将新提交内容移至另一个工作表

时间:2013-04-02 15:52:02

标签: forms triggers google-apps-script google-sheets onsubmit

我正在尝试创建一个脚本,该脚本将采用新的表单响应并根据提交的信息将其移动到另一个表单。例如,假设表单有两个答案选项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函数,但这不起作用。如果有人能帮助我,我真的很感激。

谢谢,

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

在比较变量时尝试一些不那么广泛的东西,例如,提交的表单是一个常量且已经存在的地址。

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

我没有对此进行测试,但希望它有助于在我最近发现它的开发者指南中查找Event Objects并且它澄清了很多

答案 2 :(得分:0)

可以通过以下方式设置触发器:enter image description here 然后设置它:enter image description here