首页 > 解决方案 > 脚本移动到 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();     
} 

标签: javascriptgoogle-apps-scriptgoogle-sheets

解决方案


更新:

我认为您当前的代码不起作用,因为它不会在最后一行内容之后添加新行。这就是为什么我发布此解决方案来回答这部分问题的原因,因为它还提供了对您问题中的解决方案的实质性改进。以下代码已在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 列的第一行和最后一行内容之间不包含空单元格时才有效;因为您的解决方案做出了相同的假设。

参考:


推荐阅读