找不到Google表格范围

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

我一段时间以来一直在试图解决这个问题,但我还是无法理解。我试图获得一个范围,以便在单击按钮时可以将时间输入到单元格“ 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.png

google-apps-script google-sheets
1个回答
0
投票

我相信您的目标如下。

  • 您想知道发生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;
    }
  }
}

参考:

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