删除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语句比较两个时间戳
- 当条件为真时
- 通过getId
获取响应的id
- 删除带有deleteResponse
的回复
代码
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)
}
}
}
参考文献:
我正在尝试从 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 aForm
document. Otherwise, use openById or openByUrl - 获取所有 getResponses 的回复
- 得到每个 getTimestamp 的
- 用一个简单的if语句比较两个时间戳
- 当条件为真时
- 通过getId 获取响应的id
- 删除带有deleteResponse 的回复
timestamp
代码
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)
}
}
}