【问题标题】:How to write an onOpen triggered script without using Activate() methods如何在不使用 Activate() 方法的情况下编写 onOpen 触发脚本
【发布时间】:2014-09-04 09:32:30
【问题描述】:

早上好,

我遇到了一段脚本的问题,该脚本将在数据表之后的第一个可用行处打开电子表格。我对此很陌生,但据我了解,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() 之类的函数)。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

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

    此问题因“无法修复”而关闭,但最近重新打开 - 可能是因为很多人非常失望(使用礼貌用语) - 所以我建议您为这个问题加注星标以提高其知名度和优先级。

    与此同时,除了继续使用旧版本的电子表格之外,恐怕我们无能为力。

    关于你所说的计算单列中的最后一行,这是one of the most popular thread on this forum 的主题,请查看那里(以及other similar threads)建议的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      相关资源
      最近更新 更多