如何在不使用Activate()方法的情况下编写onOpen触发的脚本

时间:2014-09-04 09:32:30

标签: google-apps-script

早上好,

我遇到一个脚本问题,它会在数据表后的第一个可用行打开电子表格。我对此很新,但正如我从研究中所理解的那样,onOpen触发器不适用于具有Activate()方法的脚本(我假设它们是getActiveRange()和setActiveRange()等。)

我真的很喜欢这个工作,但我现在只能通过在工作表顶部放置一个按钮来执行此操作,用户必须单击该按钮才能运行该脚本。我不知道如何用不同的方式写作,并且花了很长时间用谷歌搜索,但只得到对我帮助不大的东西。我的代码如下所示,我们非常感谢您在不使用Activate()方法的情况下提供的任何帮助。谢谢,MB

function onOpen() {   
var ss = SpreadsheetApp.getActiveSpreadsheet();   
var range = ss.getRange("A2");   
var rowCount = range.getValue() + 3;   
var newRange = ss.getRange("A" + rowCount);  
SpreadsheetApp.setActiveRange(newRange); };

第4行的值是指一个单元格中的值,它计算数据集中的行数(我在尝试使用脚本计算时遇到问题,因为数据集中有其他列会抛出getLastRow()等函数)。

1 个答案:

答案 0 :(得分:0)

issue 3928中所述,无法(截至2014年9月)在触发函数的单元格/范围/工作表上设置选择。

此问题已关闭,因为"不会修复"但最近重新开放 - 可能是因为很多人都非常失望(使用一个礼貌的词) - 所以我建议你加强这个问题,以提高其知名度和优先级。

与此同时,我担心除了继续使用旧版电子表格之外我们无能为力,但这种情况很有效。

关于计算单个列中最后一行的内容,这已成为one of the most popular thread on this forum的主题,请查看建议的解决方案(以及other similar threads)。