google-apps-script - 宏运行后不点击就无法编辑字段
问题描述
我有一个 Google 表格工作簿,其中有一些定义为脚本的宏它们非常简单(添加行和格式)。脚本的最后一行激活了一个特定的单元格。我已将其中一个脚本链接到一个按钮。当我单击按钮时,宏按预期运行,并且单元格按预期突出显示,但是如果不双击单元格,我将无法编辑单元格。即使按“输入”键也不允许在单元格中输入文本。
我查看了开发人员参考资料,并尝试搜索互联网,但似乎没有任何搜索词组合可以准确描述此问题。
这是我正在使用的功能,我想在宏完成后编辑单元格 B3:
function Insert() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('3:3').activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getRange('F3').activate();
spreadsheet.getCurrentCell().setFormula('=IF(or(ISNUMBER(D3),ISNUMBER(E3)),sum(F4+D3-E3),"")');
spreadsheet.getActiveRangeList().setBorder(null, null, null, true, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID);
spreadsheet.getRange('B3').activate();
spreadsheet.getActiveRangeList().setBorder(null, true, null, null, null, null, '#000000', SpreadsheetApp.BorderStyle.SOLID);
spreadsheet.getRange('B3:F4').activate();
spreadsheet.getRange('B3').activate();
};
我希望能够在宏运行完成后立即开始在单元格中输入(或者如果需要,按“输入”键,然后开始输入)
解决方案
您的方法是将光标移动到指定单元格的正确方法之一。要在该单元格上写字,您可以按您所说的进行双击,但有更快的方法:
- 粘贴文本:只需按
CTRL + V
。 - 公式栏:单击一次并写入数据。
为澄清起见,公式栏在屏幕上方标有 ƒ 符号。如果它是隐藏的,你可以让它出现在View > Formula bar
. 我们希望这对您有用。请不要犹豫,向我们提供更多信息以获得进一步的帮助。
更新
单击按钮后,您无法直接写入单元格,因为单击按钮后按钮已被选中,而忽略了函数本身的结果。
我在研究自定义菜单时想到了这个功能的解决方法。可以使用您的功能创建新菜单;并且该菜单在被激活后会将光标留在单元格中,以便按照您最初的要求进行写入。
要获得该菜单,您需要在代码中添加以下函数:
function onOpen() {
var userInterface = SpreadsheetApp.getUi();
userInterface.createMenu("cawwot's menu").addItem('Insert', 'Insert').addToUi();
}
重新加载电子表格后,您将能够使用新菜单。
推荐阅读
- python - 我想让python说“请输入一个数字:”直到消费者输入一个数字
- c# - 通过 URL 传入 id 时的 Mvc Route 404
- java - 如何在 apache Beam 中调用 oracle 存储过程?
- c# - c# - 使用 roslyn 在运行时编译 c# 代码
- nsis - 写入自定义安装程序页面的标题部分(没有 MUI)
- java - sun.security.validator.ValidatorException: :无法找到请求目标的有效证书路径
- react-native - React-Native:启用“全屏模式”时如何获取设备的完整高度?
- azure - properties.search.query 不是有效的日志或指标查询
- java - 每次我运行代码时的其他字段位置
- java - Robotframework.request - 如何使用内容“multipart/form-data”和键值发出 POST 请求