在运行脚本以清除范围

时间:2016-08-14 16:52:08

标签: google-apps-script

我是一名编程经验有限的小学老师,但如果它简化了我的生活,我喜欢尝试解决问题。 :)

我为学生创建了一个Google表格,让他们每天选择午餐。

我设置了一个脚本,触发器在每晚午夜和凌晨1点之间清除表单,它看起来像这样:

function clearRange() {
//replace 'Sheet1' with your actual sheet name
var sheet = SpreadsheetApp.getActive().getSheetByName('Lunch');
sheet.getRange('A2:G25').clearContent();}

脚本本身可行 - 但是,现在,每当添加新条目时,它们都会添加到清除旧条目的正下方的电子表格行中。因此,如果我周一有二十名学生回复,那么电子表格中填写了第2-21行,这些行在周一/周二上午的某个时间清除,第二天,响应填满第22-42行等等。

如何在我的脚本中编辑或添加一些内容,强制它在我的电子表格的第2行清除旧条目后放置所有新条目?

如果这个问题已经得到解答,请指出我的方向。

谢谢!

2 个答案:

答案 0 :(得分:0)

您正在使用.clearContent()方法,Google表单会根据电子表格中的行跟踪回复,您需要使用deleteRows(rowPosition, howMany)完全删除该行,如下所示:

SELECT * FROM @tablename 

注意:这不会重新启动您在Google表单用户界面中看到的计数器:

enter image description here

为此,您需要使用deleteAllResponses()

FormApp Class

答案 1 :(得分:0)

您需要删除包含表单提交的行,而不是从单元格中清除内容。

以下是适用于您的修改后的代码。另外,请确保没有任何冻结行。

function clearRange() {
  //replace 'Sheet1' with your actual sheet name
  var sheet = SpreadsheetApp.getActive().getSheetByName('Lunch');

  //get last row, this will be used to count how many rows to delete
  var lr = sheet.getLastRow();

  //delete row from 2 to last row
  sheet.deleteRows(2, lr-1);
}