以编程方式

时间:2015-10-21 12:39:00

标签: google-apps-script google-sheets google-form

我需要将我的Google表单保存在两个不同的表格中。

第一张纸将成为历史记录,另一张将被物流服务利用(当客户收到货物时,可能会删除一些行)。

我真的需要在第一张纸上保留所有回复,无论物流服务在第二张纸上做什么。

事实是;我正在使用formRat,但不再工作,我没有看到任何补充模块完全相同的事情。我自己编写剧本并不够好。

我试着在第二张表中写这个:

=ArrayFormula('first_sheet_name'!A:W)

但是当我尝试删除第二张纸上的一行时,几秒钟后会再次出现这一行,因为Google表格会重新计算它。

1 个答案:

答案 0 :(得分:2)

附加到表单响应电子表格的表单提交触发器脚本可以在到达时轻松地将响应复制到第二个表单。稍后在第二张纸上进行的任何修改都将继续存在。

以下是此类Installable Trigger Function的一个非常简单的示例。您需要使用电子表格2的工作表ID声明ss2ID。该脚本假定将响应复制到电子表格2中的第一个工作表,并填充所有表单答案。

function copyResponse( event ) {
  fixFormEvent( event );  // From https://stackoverflow.com/a/26975968/1677912
  var ss2Id = "---sheet-id---";
  var sheet2 = SpreadsheetApp.openById( secondSheetId ).getSheets()[0];
  sheet2.appendRow( [event.values] );
}

此功能使用e.values in google forms skips empty answers, is there a workaround?中的fixFormEvent( event )来确保新表格中的列与原始问题保持一致。