- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
FormResponse 不应该有 remove 或 delete 响应方法吗? https://developers.google.com/apps-script/reference/forms/form-response
是否存在,我只是在文档中遗漏了它?
我在这里谈论的是响应,而不是项目。
最佳答案
不,不在那里。并且没有外部 API 来填补空白。
所以这是一个疯狂的想法。
您可以编写一个脚本来获取所有响应,调用 deleteAllResponses()
,然后写回除您要删除的响应之外的所有响应。然后您将获得反射(reflect)您关心的回复的摘要信息,但您会丢失提交日期(......您可以将其作为电子表格中的非表单数据添加)和提交者用户 ID(仅在 Apps Domains 中, 并且您可以再次将其保留在表单之外)。
妥协是否可以接受取决于您对表单数据的预期用途。
这是一个包含表单的脚本,具有简单的菜单和 UI,将删除指示的响应。已删除回复的内容会被记录下来。
/**
* Adds a custom menu to the active form, containing a single menu item for
* invoking deleteResponsesUI() specified below.
*/
function onOpen() {
FormApp.getUi()
.createMenu('My Menu')
.addItem('Delete response(s)', 'deleteResponsesUI')
.addToUi();
}
/**
* UI for Forms function, deleteResponses().
*/
function deleteResponsesUI() {
var ui = FormApp.getUi();
var response = ui.prompt("Delete Response(s)",
"List of resonse #s to delete, separated by commas",
ui.ButtonSet.OK_CANCEL);
if (response.getSelectedButton() == ui.Button.OK) {
var deleteCSV = response.getResponseText();
var numDeleted = deleteResponses(deleteCSV.split(/ *, */));
ui.alert("Deleted "+numDeleted+" responses.", ui.ButtonSet.OK);
}
}
/**
* Deletes the indicated response(s) from the form.
* CAVEAT: Timestamps for all remaining responses will be changed.
* Deleted responses are logged, but cannot be recovered.
*
* @parameter {Number or Number[]} Reponse(s) to be deleted, 0-indexed.
*
* @returns {Number} Number of responses that were deleted.
*/
function deleteResponses(trash) {
if (!trash) throw new Error( "Missing parameter(s)" );
Logger.log(JSON.stringify(trash))
if (!Array.isArray(trash)) trash = [trash]; // If we didn't get an array, fix it
var form = FormApp.getActiveForm();
var responses = form.getResponses();
// Really feels like we should ask "ARE YOU REALLY, REALLY SURE?"
form.deleteAllResponses();
var numDeleted = 0;
for (var i = 0; i < responses.length; i++) {
if ( trash.indexOf(i.toString()) !== -1 ) {
// This response to be deleted
Logger.log( "Deleted response: " + JSON.stringify(itemizeResponse(responses[i] )) )
numDeleted++
}
else {
// This response to be kept
var newResponse = form.createResponse();
var itemResponses = responses[i].getItemResponses();
for (var j = 0; j < itemResponses.length; j++) {
newResponse.withItemResponse(itemResponses[j]);
}
newResponse.submit();
}
}
return numDeleted
}
/**
* Returns item responses as a javascript object (name/value pairs).
*
* @param {Response} Form Response object
*
* @returns Simple object with all item responses + timestamp
*/
function itemizeResponse(response) {
if (!response) throw new Error( "Missing parameter(s)" );
var itemResponses = response.getItemResponses();
var itemizedResponse = {"Timestamp":response.getTimestamp()};
for (var j = 0; j < itemResponses.length; j++) {
itemizedResponse[itemResponses[j].getItem().getTitle()] = itemResponses[j].getResponse();
}
return itemizedResponse;
}
关于google-apps-script - 如何删除 FormApp 中的个人回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27241007/
I recently asked a question about how to add items to a Google Form from a Google Spreadsheet .而且效果很
我有一个脚本可以记录电子表格中所有更改的日志: function onEdit() { var timestamp = new Date(); var ss = SpreadsheetApp.
FormResponse 不应该有 remove 或 delete 响应方法吗? https://developers.google.com/apps-script/reference/forms/f
我正在创建一个 Google Apps 脚本,我想在其中使用 FormApp获取事件表单的服务,但它不断抛出异常: You do not have permission to call FormApp
我编写了一个谷歌电子表格脚本,它解析电子表格并使用数据创建一个表单。 创建表单后,我可以手动转到表单设置 -> 测验,然后“进行测验”。完成测验后,我可以手动为每个问题分配分数和正确答案。 有谁知道在
正如标题所示,我正在尝试从脚本获取 Google 表单的 UI,以便我可以向用户显示一个包含一些信息的警报框。 这是函数的相关部分: function Foobar(){ ... va
我是 python 的新手,我正在使用 View 、url 来处理表单...我的项目名称是 projec1,我的应用程序名称是 usersapp 这是我的 **usersapp/views.py **
我是一名优秀的程序员,十分优秀!