我已经编写了下面的脚本,因此Sheets会自动插入一个新行并将公式复制到该新行。
我已经指定我希望只有在对第2列或第4列进行更改时才能运行此函数,但无论列号如何,脚本都会运行,或者e.oldValue是否未定义。
两个问题:
1)我的代码忽略了列号和数据验证有什么问题?
2)如果一个值被赋予一个单元格并被擦除,那么该单元格是否会恢复为未定义或者它的值是否为“”?
代码:
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var activeCell = sheet.getActiveCell();
var activeColumn = activeCell.getColumn();
var walkoutRange = sheet.getRange(7, 17, 1);
var walkoutFormula = walkoutRange.getFormulas();
Logger.log(walkoutFormula);
var newRange = sheet.getRange((activeCell.getRow() + 1), 17, 1)
if (sheet.getName() != "Form") {
if (activeColumn === 2 || 4) {
if (e.oldValue === undefined) {
sheet.insertRowAfter(activeCell.getRow());
newRange.setFormula(walkoutFormula);
}
}
}
};
答案 0 :(得分:0)
以下行中存在未被捕获的错误:
if (activeColumn === 2 || 4) {
应该是:
if (activeColumn === 2 || activeColumn === 4) {
条件测试:
activeColumn === 2 || 4
始终返回true
;
function test() {
var activeColumn = 9;
Logger.log('is it true: ' + Boolean(activeColumn === 2 || 4))//returns true
if (activeColumn === 2 || 4) {
Logger.log(Boolean(activeColumn === 2 || 4))
};
};