Javascript 脚本移动到最后一行,但用户需要在输入数据之前单击

Javascript 脚本移动到最后一行,但用户需要在输入数据之前单击,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我当前的环境:Chrome、Win10、Thinkpad、FF、Win10、PC 从工作表上的按钮调用函数时,下面的脚本起作用,允许在包含数据的最后一行之后添加新行 但是,当我在键盘上键入任何内容时,输入的数据不会输入到单元格中 需要单击单元格才能接受键盘输入。 但是,当从脚本编辑器运行同一功能时,用户不必单击单元格中的键即可接受键盘输入。这是我需要的行动 我在一个新的电子表格中尝试了同样的方法,并使用了不同的浏览器和硬件,获得了相同的结果 这是应用程序脚本中的错误吗?有解决办法吗 以下是脚本:

我当前的环境:Chrome、Win10、Thinkpad、FF、Win10、PC

从工作表上的按钮调用函数时,下面的脚本起作用,允许在包含数据的最后一行之后添加新行

但是,当我在键盘上键入任何内容时,输入的数据不会输入到单元格中

需要单击单元格才能接受键盘输入。

但是,当从脚本编辑器运行同一功能时,用户不必单击单元格中的键即可接受键盘输入。这是我需要的行动

我在一个新的电子表格中尝试了同样的方法,并使用了不同的浏览器和硬件,获得了相同的结果

这是应用程序脚本中的错误吗?有解决办法吗

以下是脚本:

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();     
} 
更新: 我认为您当前的代码不起作用,因为它不会在最后一行内容后添加新行。这就是为什么我发布此解决方案来回答问题的这一部分,因为它也比您问题中的解决方案提供了实质性的改进。以下代码已经在谷歌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不包含空单元格时有效 在内容的第一行和最后一行之间;正如您的解决方案所示 同样的假设
参考资料:

我不确定我是否理解正确。您想在工作表的最后一行之后插入新行,还是想激活第一个空白单元格并让用户在其中输入数据是的,是后者-激活第一个空白单元格并让用户在其中输入数据我测试了它,对我来说,您的代码工作正常。您能否与我们共享此电子表格?您的意思是“单元格在
activate()
上的选择上有一个蓝色边框,但没有闪烁的光标”?您还说您已签入您的电脑。以包括该环境的详细信息(电脑浏览器、操作系统)。也请登录Firefox。评论不用于扩展讨论;这段对话已经结束。