我一段时间以来一直在试图解决这个问题,但我还是无法理解。我试图获得一个范围,以便在单击按钮时可以将时间输入到单元格“ D4”或下一行“ D5”(如果“ D4”不为空)。我尝试了所有类型的编码,我无法解决,我想做的是单击一个按钮,然后将当前时间输入到“ D4:D10”范围内,然后跳至“ D14:D20”,然后在“ D20”之后是完整的代码,显示一个弹出窗口,单击“全部清除”按钮。我的“全部清除”功能正常运行,似乎可以找到该功能的范围,但我为此找不到。可能。请帮助...如果我能弄清楚如何正确输入'D4:10'范围,我可以弄清楚其余部分。
这是我到目前为止所拥有的
function setValue(cellName, value) {
SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).setValue(value);
}
function getValue(cellName) {
return SpreadsheetApp.getActiveSpreadsheet().getRange(cellName).getValue();
}
function getNextRow() {
return SpreadsheetApp.getActiveSpreadsheet().getRange("D4:D10").getLastRow + 1;
}
function addRecord(d, e,) {
var row = getNextRow();
setValue('D' + row, d);
setValue('E' + row, e);
}
function btn_start() {
addRecord(new Date());
}
function btn_stop() {
addRecord(new Date());
}
我相信您的目标如下。
Range Not Found
的原因。D4:D10
范围内的下一个空行。为此,这个答案如何?
Range Not Found
的原因是return SpreadsheetApp.getActiveSpreadsheet().getRange("D4:D10").getLastRow + 1;
。在这种情况下,getLastRow
不用作功能。由此,发生这种错误。为了避免此错误,请修改为return SpreadsheetApp.getActiveSpreadsheet().getRange("D4:D10").getLastRow() + 1;
。请将()
添加到getLastRow
。D4:D10
的范围内,SpreadsheetApp.getActiveSpreadsheet().getRange("D4:D10").getLastRow()
可能不合适。因为在这种情况下,该值总是放在行11
中。我认为可能需要对此进行修改。当上述几点反映到您的脚本时,它将变成如下。
function getNextRow() {
return SpreadsheetApp.getActiveSpreadsheet().getRange("D4:D10").getLastRow + 1;
}
return SpreadsheetApp.getActiveSpreadsheet().getRange("D4:D10").getLastRow() + 1;
。function getNextRow() {
const sheet = SpreadsheetApp.getActiveSpreadsheet();
for (var r = 4; r <= 10; r++) {
if (sheet.getRange("D" + r).isBlank()) {
return r;
}
}
}