【问题标题】:Maintain active row after insertRows在 insertRows 之后保持活动行
【发布时间】:2020-08-18 21:23:45
【问题描述】:

在 onEdit 函数中使用 insertRows 后,有没有办法将选择保留在原始活动行上?

function onEdit(e) {
    [snip]
    SpreadsheetApp.getActiveSheet().insertRows(3, 3);
}

我希望能够离开我正在编辑的单元格,让 onEdit() 触发,但我可以继续输入我正在工作的行的下一个单元格以及任何后续单元格。

如果我从具有 onEdit() 函数的单元格中跳出,我在下一个单元格中键入的任何内容都将与我离开的单元格位于同一行。但是,下次我使用 tab 时(如果 onEdit() 已完成),我将返回到调用 insertRows() 函数之前所在的电子表格行。

我希望能够继续处理新的电子表格行(这是我正在处理的数据行),无论 onEdit() 可能需要多长时间才能运行。

在这张图片screen shot 中,当调用 onEdit() 时,我正在处理第 13 行。 insertRows() 添加了新的第 13-16 行。我能够在第 17 行的第 15 号旁边输入“是”和“是”,然后 onEdit() 完成,我输入的下一个单元格又回到了第 13 行。我正在寻找一种能够继续跳动的方法并让选定的单元格成为我用紫色而不是蓝色突出显示的单元格。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    如果您正在缓慢地编辑电子表格(合理的速度),这应该足够了。但是,如果您以 120wpm 的速度输入内容,它会中断。希望对您有所帮助。

    function onEdit(e) {
      [snip]
      const sheet = SpreadsheetApp.getActiveSheet();
      
      sheet.insertRows(3, 3);
      //gets the current cell
      const curCell = sheet.getCurrentCell();
      const curColumn = curCell.getColumn();
      const curRow = curCell.getRow();
      //shift the row down by numRowsInserted and col by 1 because you tabbed away
      sheet.setActiveRange(sheet.getRange(curRow+3, curColumn+1));
      
    }
    

    【讨论】:

    • 很遗憾没有。下一个字段可能只是一个复选框,我(用户)可能会很快退出,您的建议会将他们跳回他们已经离开的单元格。不过感谢您的想法。
    猜你喜欢
    • 2013-06-04
    • 1970-01-01
    • 2013-05-06
    • 1970-01-01
    • 1970-01-01
    • 2017-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多