使用链接到脚本的按钮时,选定的单元格不会更新

Selected cell does not update when using button linked to script

我有一个 sheet 供用户输入现金计数和他们的首字母,然后点击一个按钮,该按钮运行一个脚本并将这些输入存储在 table。

问题是,如果用户键入信息(例如他们的姓名首字母)并在没有先按下 Return 或选择其他单元格的情况下点击按钮,则不会保存信息。

我见过类似的 post: How to force flush a user's input? 并尝试了解决方案,但有些解决方案不起作用,而 none 正是我要找的。我知道我可以使用复选框而不是按钮,但我想找到一种方法来做到这一点而不诉诸于此。 table 是收银台的现金计数,因此并非所有单元格都需要一个值(例如,可能没有 100 美元的纸币),我不知道哪个是最后编辑的单元格。

[数据][1] [1]: https://i.stack.imgur.com/mdKXk.png

代码:

function Accept() { 
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var db = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DATA");
  var vals = db.getRange("B:B").getValues();
  var last = vals.filter(String).length;
  var ui = SpreadsheetApp.getUi();
  var user = ui.prompt("Notes:");
  var values = [[
      sheet.getRange("I7").getValue(),    //Date/Time
      sheet.getRange("N16").getValue(),   //Amount
      sheet.getRange("E17").getValue(),   //Initials
      user.getResponseText(),             //Notes
    ]];
  db.getRange(last+1,2,1,4).setValues(values);
}

一个解决方案是使用复选框作为 接受 按钮,并使用 onEdit(e) simple trigger 到 运行 您的 Accept()函数。

查看示例代码的 checkboxButtons_ 脚本。