【发布时间】:2021-07-09 18:39:12
【问题描述】:
我有一个大型脚本项目,我已经从事了几年的工作,我们公司正在使用它来跟踪制造环境中的生产。通常,为跟踪工具加载 Web 界面的 doGet 函数将在 5-15 秒内执行,并且非常快速且响应迅速。但是,从昨天早上开始,该函数每次执行需要 60-90 秒,有时 Web 应用程序根本没有打开(即使我在 doGet 函数的日志中没有遇到故障)。我从上周开始休假,我是唯一可以访问代码的开发人员,因此代码库中没有任何变化,Google 工作表中的基础数据似乎没有任何重大变化要么。
我已缩小范围,发现从/向 Google 表格读取/写入数据是速度变慢的主要原因。我正在使用 getValues() 批量读取数据,但是在 ~850 行 x 9 列上对该函数的一次调用现在需要将近 20 秒,其中 doGet 函数(包括 3-4 个 getValues 调用)运行比几天前还少。
我完全不知道如何调试这个问题。如果有帮助,这里是我的 doGet 函数开头的几行代码。该函数还有更多内容,但我可以查看 Logger 语句上的时间戳来判断此 getValues 运行速度太慢。
var ss = SpreadsheetApp.openById("SPREADSHEETIDHERE");
var pst = ss.getSheetByName("Panel Status Tracker");
Logger.log("Start Panel Data Get")
var panelData = pst.getRange(9, 1, pst.getLastRow()-8, 8).getValues();
Logger.log("End Panel Data Get")
TIA!
【问题讨论】:
-
感谢库珀的反馈,但我不确定还能提供什么。 doGet 中的 getValues 调用运行良好,但现在不行。出于安全原因,我不能让其他人访问我的工作表以运行我的脚本,所以我试图找出为什么读取操作突然运行如此缓慢。在此之前我的代码中没有任何其他被调用的代码,虽然在它之后有代码被调用,但时间戳已经确定我发布的 sn-p 中存在问题。
-
那么我建议学习如何更好地使用调试器或 Logger.log() 或 console.log。看来您将不得不解决自己的问题
-
Cooper 实在是太无益了,感谢社区的热烈欢迎。我不确定 Loggers 会提供什么其他信息,因为它只是对 Google 服务器的调用突然大幅减慢的情况,但如果你能指出我的资源,我总是很高兴学习。
-
您分享的代码是来自谷歌应用程序脚本文档的简单代码,我想您已经知道它在哪里了。如果您可以提供 minimal reproducible example ,您的问题就没什么好说的了。
标签: google-apps-script google-sheets