Google 表格 - 发送等于 0 的单元格值的提交按钮

问题描述 投票:0回答:1

我有一个按钮脚本,该按钮会将特定单元格中的值从给定工作簿和工作表发送到不同工作簿中的另一个工作表:

function Jan() {
const ss = SpreadsheetApp.getActive();
const fsh = ss.getSheetByName("sheet1");
const dss = SpreadsheetApp.openById(gobj.globals.ssid);
const dsh = dss.getSheetByName("sheet2");
const rgl = fsh.getRangeList(["H2","D4","I5","J5","F24","F25","F26","F27","F28"]);
let vs = rgl.getRanges().map(r => !r.isBlank()?r.getValue():rgl).filter(e => e);
if (vs.length == rgl.getRanges().length) {
dsh.getRange(dsh.getLastRow() + 1, 1, 1, 17).setValues([vs]);
} else {throw new Error ("REQUIRED FIELD IS EMPTY");
return;
}
}

如您所见,当单元格为空时,此脚本将给出错误消息。但是,当单元格的值等于 0 时,它会执行相同的操作。有没有办法避免这种情况,并使脚本也提交 0 值,因为 0 是要发送的有效值?

google-sheets button
1个回答
0
投票

使用.getDisplayValue()

如果

.getValue()
函数无法识别 0 值,您可以使用
.getDisplayValue()
代替。要将此函数应用于您的代码,请替换:

let vs = rgl.getRanges().map(r => !r.isBlank()?r.getValue():rgl).filter(e => e);

与:

let vs = rgl.getRanges().map(r => !r.isBlank() ? r.getDisplayValue() : rgl).filter(e => e);

边注:

我注意到了:

const rgl = fsh.getRangeList(["H2","D4","I5","J5","F24","F25","F26","F27","F28"]);

数组中只有 9 个元素。您可能想要改变:

dsh.getRange(dsh.getLastRow() + 1, 1, 1, 17).setValues([vs]);

至:

dsh.getRange(dsh.getLastRow() + 1, 1, 1, 9).setValues([vs]);

因为你会得到关于不同数组大小/范围的错误。

参考:

© www.soinside.com 2019 - 2024. All rights reserved.