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



我正在处理的一段代码由两个函数组成 -generateIDonEdit(e)generateID- 使用模式生成一个数字,它工作正常。onEdit(e)是我遇到的问题。

在电子表格的 A 列中,用户从下拉列表中选择一个值(最初A 列为空,范围为从第2行到getLastRow(),第 1 行为标题)。 选择值后,我需要将generateID的结果插入到同一行的下一列 B中。 如果coumn 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返回一个range对象,而不是数组1。试试这个代替你的代码:

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

最新更新