javascript - 脚本移动到 LastRow,但用户需要在输入数据之前单击
问题描述
我目前的环境:Chrome、Win10、Thinkpad还有FF、Win10、PC
从工作表上的按钮调用函数时- 以下脚本有效,可以在 lastRow 之后添加一个新行,其中包含数据。
但是,当我在键盘上键入任何内容时,输入的数据不会输入到单元格中。
在接受键盘输入之前,需要单击该单元格。
但是,当从脚本编辑器运行相同的功能时,用户不必单击单元格即可接受键盘输入。这是我需要的操作。
我在新的电子表格中尝试了相同的方法,并使用了不同的浏览器和硬件,结果相同。
这是 App 脚本中的错误吗?有解决方法吗?
这是脚本:
function addVenue() {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Venues");
var column = ss.getRange('A:A');
var values = column.getValues();
//loop down until Venue name cell blank
var ct = 0;
while ( values[ct] && values[ct][0] != "" ) {
ct++;
}
ct++;
ss.getRange("A"+ct).activate();
}
解决方案
更新:
我认为您当前的代码不起作用,因为它不会在最后一行内容之后添加新行。这就是为什么我发布此解决方案来回答这部分问题的原因,因为它还提供了对您问题中的解决方案的实质性改进。以下代码已在google chrome (PC)上经过测试和运行,并从脚本编辑器执行。
单元格已激活,用户可以直接在该单元格中输入数据(无论其大小),而无需单击该单元格:
解决方案:
如果要在 A 列内容的最后一行之后添加一行:
function addVenue() { var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Venues"); var filledRows = ss.getRange("A1:A").getDisplayValues().filter(String).length; ss.insertRowsAfter(filledRows, 1); ss.getRange(filledRows+1,1).activate() }
限制:
- 此方法仅在 A 列的第一行和最后一行内容之间不包含空单元格时才有效;因为您的解决方案做出了相同的假设。
参考:
推荐阅读
- scheme - 二叉树插入节点过程未按预期工作(方案)
- ruby-on-rails - 在表单外添加自定义输入
- r - 为 ggplot2 facet 添加颜色条
- google-apps-script - 我需要一个应用程序脚本来复制和通过电子邮件发送文件
- c# - Web 方法未调用
- c# - System.Invalid.Operation.Exception
- regex - 匹配多个可选正则表达式组时重叠括号/括号
- postgresql - 使用 pyspark 连接到 Presto SQL 目录并在 postgresql db 上执行查询的 Pyspark 代码或步骤?
- php - Laravel 关系澄清
- c - C 文本对齐与填充