【问题标题】:Why isn't my time based trigger working properly?为什么我的基于时间的触发器不能正常工作?
【发布时间】:2020-05-11 21:11:29
【问题描述】:

我通过复制单元格内的信息并将其粘贴到下面的单元格中记录了一个简单的谷歌表格宏(相对参考)。它在手动运行宏时工作正常,但是当我添加基于时间的触发器(每分钟)时,它只在单元格“A1”上运行,而不是在选定的单元格上运行,例如B2。

我需要基于时间的触发器,以便它适用于选定的单元格。

    function copy1() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet= SpreadsheetApp.getActiveSheet()
  spreadsheet.getCurrentCell().offset(1, 0).activate();
  spreadsheet.getCurrentCell().offset(-1, 0).copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};

【问题讨论】:

    标签: google-apps-script google-sheets triggers


    【解决方案1】:

    似乎当它自动运行时,初始单元格是 A1。您可以通过在代码的第 4 行说 offset(2,2) 来覆盖它。然后它应该始终使用该单元格。请记住,如果您创建一个相对引用,则在触发器运行时不一定会选择当前选定的单元格。

    【讨论】:

      【解决方案2】:

      更新:时间驱动的触发器无法检索当前单元格

      为什么?

      因为即使电子表格已关闭,时间驱动的触发器也会运行 - 在这种情况下没有当前单元格,但默认情况下,当您重新打开电子表格时,Google 表格总是将当前单元格重置为 A1 - 这是一个平局- 驱动触发器检索。

      好消息:最近引入了一个新的触发器 - onSelectionChange(e)

      每次更改选择时都会触发此触发器。

      例如,如果您从A1B2 之外单击,则B2 将被检测为带有event object e.range 的新选定单元格。

      示例:

      function onSelectionChange(e) {
        var cell = e.range;
         cell.copyTo(cell.offset(1, 0), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多