删除Google个基于日期的表单提交

Delete Google Form submission based on date

我正在尝试从 Google 表单中删除超过设定年龄的回复。我有一个脚本可以为 sheet 执行此操作,但这不会从表单中删除响应。 从表单中删除所有回复不是一种选择,因为我需要保留不超过设定年龄的回复。 这是在 sheet 上运行的脚本,我需要在表单上使用它的等效脚本。

script working on sheet

function DeleteOldEntries() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  //give your sheet name below instead of Sheet1
  var sheet = ss.getSheetByName("Sheet 1");
  
  var datarange = sheet.getDataRange();
  var lastrow = datarange.getLastRow();


  var currentDate = new Date();
  var oneweekago = new Date();
  oneweekago.setDate(currentDate.getDate() - 1095);
    
  for (i=lastrow;i>=2;i--) {
    var tempdate = sheet.getRange(i, 1).getValue();
    
    if(tempdate < oneweekago)
    {
      sheet.deleteRow(i);
    }
  }
}

您需要编写一个脚本来删除表单中的响应,就像您为电子表格编写的一样。Please refer this link for deleting form single response by Id

回答

我创建了一个 Form 并设法删除了超过一周的提交。您必须使用几种方法来实现该目标:

步骤

  • 打开你的Form。您可以使用 getActiveForm if you are using an Apps Script project contained in a Form document. Otherwise, use openById or openByUrl
  • 获取所有 getResponses
  • 的回复
  • 得到每个 getTimestamp
  • timestamp
  • 用一个简单的if语句比较两个时间戳
  • 当条件为真时

代码

function deleteSubmissions(){

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

  var form = FormApp.getActiveForm() // FormApp.openById() | FormApp.openByUrl()
  var responses = form.getResponses()

  for (var i=0; i<responses.length; i++){
    var r = responses[i]
    var responseTime = r.getTimestamp()
    if (responseTime > oneweekago){
      var id = r.getId()
      form.deleteResponse(id)
    }
  }
}

参考文献: