【问题标题】:Apps script get current cell value before it's submitted应用程序脚本在提交之前获取当前单元格值
【发布时间】:2025-12-08 03:30:01
【问题描述】:

我遇到了一个看似简单的问题,但我不知道它是否有解决方案或解决方法。我基本上是在为用户创建一个搜索字段来查询谷歌表格中的外部数据库,并带有一个搜索图标(绘图)来执行脚本,如下所示:

当用户写入值时,按回车键然后单击图标,我得到正确的值。但是,如果用户正在编辑并且只是单击图标,则不会提交单元格编辑,并且我在 Range.getValue() 中获得的值是先前的单元格值。这对用户来说有点烦人。是否有解决方法来获取正在编辑的值或强制提交当前值,然后再将其放入应用程序脚本中?谢谢

【问题讨论】:

  • 在侧边栏或对话框中创建 html ui
  • 没有一些工作是不可能的。您始终可以使用 onEdit 触发器并添加一些逻辑,以便触发器仅在 B2 是编辑范围时运行

标签: google-apps-script google-sheets range


【解决方案1】:

以下是使用侧边栏的方法:

这两个函数都在 Code.gs 中:

function quizar() {
  var html='Quizar:<br /><form><input type="text" name="text1"/><br /><input type="button" value="Submit" onClick="google.script.run.submit(this.parentNode);" /></form>';
  SpreadsheetApp.getUi().showSidebar(HtmlService.createHtmlOutput(html));
}

function submit(obj) {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet10');
  var rg=sh.getRange(2,2).setValue(obj.text1);
  SpreadsheetApp.flush();
}

只需运行 quizar()。

【讨论】: