【问题标题】:On Google Form Submit clear cells of active row in Google Sheets在谷歌表单上提交谷歌表格中活动行的清除单元格
【发布时间】:2018-08-30 17:55:32
【问题描述】:

我对谷歌工作表脚本很陌生,正在寻求帮助。我正在尝试制作一个谷歌脚本,该脚本将在用户提交后删除响应表中的单元格。由于这可能是表单编辑 url,它不一定是最后一行。

因此,每次提交/编辑表单时,都会清除 AN:AQ 列。

非常感谢任何帮助


对于遇到此问题的任何人,我都会将工作脚本添加到 OP 的问题中。

function onFormSubmit11(e) { 
   var range = e.range; 
   var ss = range.getSheet(); 
   var row = range.getRowIndex(); 

ss.getRange("AN"+row).clear(); 
ss.getRange("AO"+row).clear(); 
ss.getRange("AP"+row).clear() 
ss.getRange("AQ"+row).clear() 
} 

【问题讨论】:

  • 您是在目标电子表格还是在表单上添加触发器?事件对象的结构取决于您的选择。

标签: google-apps-script google-sheets google-forms


【解决方案1】:

Google 表单调用的电子表格触发器包含 Range 对象。您可以检索链接到范围的工作表以及链接到当前表单提交的行的索引。

function formTrigger(e) {
  var range = e.range;
  var sheet = range.getSheet();
  var rowIndex = row.getRowIndex();
  sheet.getRange(rowIndex + 1, 1).setValue("Hello");
}

【讨论】:

  • 嗨,阿米特,谢谢。我已添加代码并将脚本添加到项目的触发器中以在表单提交时运行。任何单元格中似乎都没有“你好”?谢谢
【解决方案2】:

您可以尝试一些简单的方法,例如通过链接的电子表格运行脚本的 onFormSubmit。每次提交表单时,下面的脚本都会清除 AN:AQ,这只是我认为您要求的内容的一半。

至于 edit,这是我在自己的问题中试图弄清楚的事情!

function onFormSubmit() {

var ss = SpreadsheetApp.getActiveSpreadsheet()
var sh = ss.getActiveSheet()

sh.getRange('AN1:AQ').clear();

}

你好,

在下面试试这个。和以前一样,确保您的触发器设置在 OnFormSubmit 上,并且它应该可以正常工作。我自己测试过,它只清除了行上的 AN:AQ 之间的范围(无论表单编辑的位置)。如果您想删除不同的部分,只需将 AN:AQ 替换为您希望清除的任何列。

function onFormSubmit(e) {

var range = e.range;
var ss = range.getSheet();
var row = range.getRowIndex(); 

ss.getRange("AN:AQ"+row).clear();

}

【讨论】:

  • 嗨 Rich,谢谢 - 我尝试了上面的代码,它有效,它清除了 AN1:AQ 中的所有数据......但是我希望只清除包含响应的行中的数据修改后的表格。
  • 我编辑了我的原始答案,应该可以完美运行。就算不是最下面一行!
  • Hmmmm.. 我已经更新了脚本,但恐怕什么都没有清除.. 感谢您的尝试
  • 你做了什么来更新它,只是粘贴在旧的上面?
  • @NiugeS 试试这个,打开您的回复表,工具 -> 脚本编辑器。将上面的脚本粘贴到脚本编辑器中(我的第二个版本)。转到编辑 - 当前项目触发器。从下拉列表、从电子表格、onFormSubmit 中单击 onFormSubmit。点击确定,然后提交表单/编辑现有回复。应该自动运行。
猜你喜欢
  • 2022-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多