服务电子表格超时-优化宏脚本



上下文

我有一个g-sheet,它起到了一种";母版纸";其中,所有的东西都从一堆其他外部电子表格中涌入,这些电子表格全天都在实时更新。

我连接的每个外部电子表格,都通过导入范围功能路由到主电子表格中自己的选项卡

所有这些选项卡然后使用行ID#路由到一个主选项卡,这样每个人都可以在该选项卡上工作

问题

在这个所有东西都放在上面的主选项卡中,我有一个宏对行进行排序,将最新的行放在顶部,以及其他保持数据干净的事情。随着时间的推移,我会连接更多的图纸,并添加到宏中的数字中以容纳新行。

Macro几天前开始抛出";访问id为"的文档时服务电子表格超时;那么id就是master选项卡本身的id#。

要知道,在不使用大带宽宏的情况下,可能有更流畅的方法可以做到这一点,但优化脚本以最适合用例远远超出了我的经验水平。我的宏如下所示:

function MasterSormat2() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('D1').activate();
var criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues([''])
.build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(4, criteria);
criteria = SpreadsheetApp.newFilterCriteria()
.build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(4, criteria);
criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues([''])
.build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(4, criteria);
spreadsheet.getRange('A1:AP11001').activate();
spreadsheet.getActiveRange().offset(1, 0, spreadsheet.getActiveRange().getNumRows() - 1).sort({column: 4, ascending: false});
spreadsheet.getRange('A:AM').activate();
spreadsheet.getActiveRangeList().setFontFamily('Calibri')
.setHorizontalAlignment('left');
spreadsheet.getRange('P:S').activate();
spreadsheet.getActiveRangeList().setHorizontalAlignment('right');
spreadsheet.getRange('U:U').activate();
spreadsheet.getActiveRangeList().setHorizontalAlignment('right');
spreadsheet.getRange('AA:AG').activate();
spreadsheet.getActiveRangeList().setHorizontalAlignment('right');
spreadsheet.getRange('AL:AL').activate();
spreadsheet.getActiveRangeList().setHorizontalAlignment('right')
.setNumberFormat('"$"#,##0.00');
spreadsheet.getRange('D4').activate();
};

当谈到改进这一点时,有人能为我指明正确的方向吗?

感谢您在这里提供的任何帮助,我期待着进一步学习

Tl;Dr:

如果您能够再次录制宏,请考虑使用转到范围名称框,而不是使用鼠标在电子表格中从一个位置移动到另一个位置,因为每次单击工作表和范围都会添加一条激活相应工作表/范围的语句。.activate()方法通常比其他方法慢得多。

再次记录宏的另一种选择是删除像spreadsheet.getRange(harcoded_ref).activate()这样的语句,并用替换像spreadsheet.getActiveRangeList()这样的语句

  • CCD_ 4
  • CCD_ 5

等。

为此,您需要一些编写代码的技能、JavaScript知识和电子表格服务(ClassSpreadsheetApp(知识。为了能够在谷歌应用程序脚本中获得最佳性能,您应该考虑使用高级表单服务,更具体地说是spreadsheet.batchUpdate方法。


转到范围

尝试以下键盘快捷键

WindowsMac
Ctrl+Alt+
Ctrl+Alt+
+选项+
+选项+

相关内容

  • 没有找到相关文章

最新更新