0

我正在尝试使用 onFormSubmit 事件“远程”删除 Google 电子表格中的所有行。例如,当我在字段中包含单词“Purge”时,清除所有行。

我试过这个:

function onFormSubmit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var first = ss.getSheetByName("Form Responses");
  var CheckString=e.values[5];

  if (CheckString == ['purge'])
    first.clearContents();

}

但我得到了错误:

Start           Function        Error Message                                               Trigger     End
6/3/13 10:01 AM onFormSubmit    ReferenceError: "e" is not defined. (line 4, file "purge4") formSubmit  6/3/13 10:01 AM

我能做些什么呢?(或者,如果有人知道从 Access 或 Excel VBA 中擦除 Google 电子表格的方法,那就更好了!)

4

1 回答 1

1

您的触发器函数正在传递一个事件对象,但除非您在参数列表中命名该对象,否则您必须通过arguments.

尝试这个:

function onFormSubmit(e) {

这就是使您的功能正常工作所需要的一切。

或者,如果你想使用arguments,你必须改变你的代码来做这样的事情:

var CheckString=arguments[0].values[5];

不过,您还有其他问题。Range.clearContents()将删除您之前的所有回复,但也会删除问题/标题行,并且不会重置回复范围。

我已经重写了您的脚本以使用此答案tidy()中的函数变体。这将留下您的标题,并完全删除包含所有先前响应的行。

function onFormSubmit(e) {
  var CheckString=e.values[5];

  if (CheckString == ['purge']) {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var first = ss.getSheetByName("Form Responses");
    var numResponses = first.getDataRange().getNumRows() - 1;
    tidy(first,numResponses);
  }

}

/**
 * Prompt user for the number of form response rows to remove, then delete them.
 * Assumes that the form responses are in the active sheet, that there is one
 * row of 'headers' followed by responses (in row 2).
 *
 * @param {Sheet}  sheet    Sheet to be tidied.
 * @param {number} thisMany (Optional) The number of rows to remove. If not
 *                          specified, user will be prompted for input.
 */
function tidy(sheet,thisMany) {
  if (tidy.arguments.length == 0) {
    // Exception if no sheet provided
    throw new Error( 'Parameter "sheet" not defined' );
  }

  // else we assume we have a Sheet object for first argument

  if (tidy.arguments.length == 1)
    thisMany = Browser.inputBox("How many responses should be tidied?");

  sheet.deleteRows(2, thisMany);
}
于 2013-06-03T17:06:24.550 回答