【问题标题】:How to add an input parameter to onEdit Function如何向 onEdit 函数添加输入参数
【发布时间】:2017-03-25 07:59:16
【问题描述】:

我正在尝试使用 google sheet 脚本编辑器创建自定义 onEdit 函数。我想知道是否可以添加诸如 onEdit(e,row) 之类的输入参数,其中 row 是我用来指定目标单元格的整数。这是我的菜鸟代码:

function onEdit(e,row) {

// writes the current date to the cell in column B on the same row when a cell in a specific column is edited

var sheetNameToWatch = "M2"; 
var columnNumberToWatch = /* column  */ 7; // column A = 1, B = 2, etc.

var ss = SpreadsheetApp.getActiveSpreadsheet();  // not used atm
var sheet = SpreadsheetApp.getActiveSheet();   // sheet on which changes are tracked
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("GRID-TRACKING")  // sheet that contains formula cells
var range = sheet.getActiveCell();  // active cell is cell being edited

if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch) {
 var targetCell = sheet2.getRange(row, 2);  // I want the input parameter to control the "row" so I can autofill
 targetCell.setValue("" + Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd"));   // writes current date to cell
 }
}

我正在使用它来将工作表“M2”列 G 上任何编辑的最新日期写入带有公式(“GRID-TRACKING”)的工作表。我将公式放在 A 列中并将日期写入 B 列。问题是我的“行”变量未定义......如果我用固定数字替换它并且根本不尝试添加参数它工作正常,但我需要一个可以自动填充的参数。

在单元格中我的公式是 =onedit(cell,row)

谢谢,

郁闷

【问题讨论】:

  • 您不能将任何其他参数输入到 onEdit。你只是希望它发生在同一行吗?为什么不使用通过的event object?
  • 阅读 onEdit 文档,了解它的用途。

标签: google-apps-script google-sheets


【解决方案1】:

您不能将任何其他变量传递给onEdit。但是,如果您将其用作公式,我真的不明白为什么您甚至需要onEdit 触发器,它也可以成功地成为thisFunc()。正如我在代码中看到的,您甚至不使用事件对象,因此绝对没有理由使用 onEdit。您还必须考虑到它会在您编辑电子表格上的任何单元格时启动。

【讨论】:

    【解决方案2】:

    简答

    如果您想使用两个或多个参数,请为您的函数使用另一个名称,而不是 onEdit。

    说明

    在 Google Apps 脚本中,onEdit 是保留的函数名称。如果您不遵循使用保留函数名称的准则,您可能会得到意想不到的结果。

    参考文献

    【讨论】:

      猜你喜欢
      • 2021-10-17
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-27
      • 1970-01-01
      相关资源
      最近更新 更多