Arrays 添加新值时使用onEdit(e)更新单元格

Arrays 添加新值时使用onEdit(e)更新单元格,arrays,google-apps-script,google-sheets,Arrays,Google Apps Script,Google Sheets,我正在处理的一段代码由两个函数组成——generateID和onEdite。 generateID-使用模式生成一个数字,它工作正常。 onEdite是我有争议的人 在电子表格的A列中,用户从下拉列表中选择一个值。最初,A列为空,范围从第2行到getLastRow,第1行为标题。 一旦选择了该值,我需要将generateID的结果插入到同一行的下一列B中。 若从下拉列表中选择更改列a中的值,则需要generateID更新其值 以下是我迄今为止所做的尝试: function onEdit(e) {

我正在处理的一段代码由两个函数组成——generateID和onEdite。 generateID-使用模式生成一个数字,它工作正常。 onEdite是我有争议的人

在电子表格的A列中,用户从下拉列表中选择一个值。最初,A列为空,范围从第2行到getLastRow,第1行为标题。 一旦选择了该值,我需要将generateID的结果插入到同一行的下一列B中。 若从下拉列表中选择更改列a中的值,则需要generateID更新其值

以下是我迄今为止所做的尝试:

function onEdit(e) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var activeSheet = ss.getSheetByName("TEMP");
  var range = activeSheet.getRange(2, 1, activeSheet.getLastRow(), 1).getValues(); 

  for (var i =0; i < range.length; i ++) {
    if (e.range [i][0] !== "") {
       activeSheet.getRange(i + 2, 2, 1, 1).setValue(generateID());
    };
  };
};
onEdit似乎是观察范围变化的正确选择。对于e,代码似乎根本不起作用。以onEdit的方式尝试,但不正确。 请在这方面提供帮助。 谢谢。

e.range返回范围对象,而不是数组。请尝试以下操作,而不是使用您的代码:

e.value !=='' ? e.range.offset(0,1).setValue(generateID()) : null

您的问题可能在e行范围[i][0]!==范围不是数组。试试e.range.getValues[i][0]