我正在处理的一段代码由两个函数组成 -generateID
和onEdit(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