2017-07-29 79 views
1

我希望收集来自Google表单的数据的工作表删除旧数据。我在工作表中有这个脚本,但是当通过表单添加新数据时它似乎不运行。使用Google表单在工作表中删除旧数据行

function onEdit(e) { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("1054"); 
var datarange = sheet.getDataRange(); 
var lastrow = datarange.getLastRow(); 
var values = datarange.getValues();// get all data in a 2D array 

var currentDate = new Date(); 
var oneweekago = new Date(); 
oneweekago.setDate(currentDate.getDate() - 7); 

for (i=lastrow;i>=2;i--) { 
var tempdate = values[i-1][0]; 

if(tempdate < oneweekago) 
{ 
    sheet.deleteRow(i); 
} 

片它与被称为1054

我需要把appscript的形式?如果是这样,那会是什么?

+0

您必须“安装”和“在表单提交”触发器。将'onEdit(e)'重命名为别的东西。 'onEdit()'是一个“保留”函数名称。您不应该为“On Form Submit”触发器使用保留的函数名称。给它你自己独特的名字。然后从代码编辑器中单击“编辑”菜单和“当前项目触发器”并添加一个触发器。 –

+0

所以我需要在表单上放置一个脚本来运行表单中的脚本?我怎么做? –

+0

“表单提交”触发器可以添加到表格或电子表格中。将“On Form Submit”触发器添加到电子表格中会更加轻松。获取数据更容易,并且如果您希望代码影响电子表格,那么这是更直接的关系。在代码编辑器中,选择“帮助”,然后选择“文档”搜索单词“事件对象” –

回答

2

我认为最好是将工作表和单独附加的表单放在一起。以下是我在网站上的表单上所做的工作。

function formSubmitEvent(e) 
{ 
    var ss=SpreadsheetApp.openById('SpreadsheetID'); 
    var sht=ss.getSheetByName('ResponseReview');//this is another sheet I used for reviewing the responses. 
    sht.appendRow(e.values);//I append a row to the ResponseReview sheet 
    selfEmail(e.values);//and I send myself an email if my quota is above 75 
} 

即使你删除链接表的形式将继续增加数据离开的地方,因为它显然跟踪的下一行是什么样的旧数据。

一般来说,我只留下链接表。确实,我使用Googgle Apps Script创建了自己的表单,因此在我收到很多回复时,我将取消链接表单并删除它们,然后通过运行该脚本重新生成表单,并且将链接新的表单和表单,但是我将在另一张表格中继续审核流程,该表格还可以从提交的数据创建Google文档。从本质上来说,表单想要放置数据的位置并不重要,因为我捕获了onFormSubmit触发器,并将它放入了values数组的ResponseReview表单中。我可以用这张纸做任何我想要的,而不影响链接。