我一直在为我的公司开发一个应用程序脚本项目来跟踪我们的时间/费用。我已经像这样构建了项目:
这个设置对我们有大约 40 个用户来说效果很好。这种设置的缺点是,由于所有脚本活动都由公司帐户通过触发器运行,我们所有用户的活动都记录在单个公司帐户下,因此受到单个用户的应用程序脚本服务器配额的限制。只要我们的脚本运行效率高,这对我们来说还不是什么大问题。我已经考虑将这个项目部署为我们公司的网络应用程序,但似乎没有一个好的方法来控制/限制用户对中央文件的访问。换句话说,如果该项目作为由每个用户安装的 Web 应用程序运行,则每个用户都需要访问该项目在幕后使用的所有中央电子表格。我们不希望那样。
有了这样的背景,这是我的问题。我如何有效地跟踪应用程序脚本活动以查看我们离达到服务器配额有多近,并确定我的哪些功能需要优化?
每次调用脚本时,我都会通过在“活动日志”电子表格中写入一个条目来开始执行此操作。它跟踪调用了什么函数,用户是谁,它有一个开始时间条目和结束时间条目,所以我可以看到唯一的执行需要多长时间以及哪些失败。这很棒,因为我可以实时查看项目活动,并且可以使用电子表格图表工具绘制它。这开始崩溃的地方是脚本的每次执行都需要两个写操作:一个用于初始化,另一个用于完成。由于每次用户对其电子表格进行编辑时都会执行该脚本,因此在高流量期间,活动日志电子表格变得无法访问并且错误会到处抛出。
因此,我通过将每个脚本文件连接到单个 Google Cloud Platform (GCP) 项目并使用 Logger API 来过渡到跟踪活动。写入日志比向电子表格写入条目要高效得多,因此高流量错误几乎消失了。现在的问题是 GCP 日志浏览器不像电子表格那样易于使用,我无法绘制日志或总结活动以查看我们的服务器配额情况。
我现在花了一些时间试图弄清楚如何从 GCP 自动导出日志,以便我可以实时处理日志。我了解如何将日志下载为 csv 文件,然后我可以将其导入谷歌电子表格并进行我需要的计算和绘图,但这是一个手动过程,不显示实时数据。
我还想出了如何通过设置一个“接收器”将日志传输到理论上可以被其他服务读取的“存储桶”来从 GCP 流式传输日志。这让我兴奋地尝试使用 Google Data Studio,我看到它能够使用 Google Cloud Storage“存储桶”作为数据源。不幸的是,谷歌数据工作室只能读取云存储中的 csv 文件,而不能读取我的“接收器”在我的“存储桶”中为日志生成的 json 文件。
所以我撞墙了。我在这里错过了什么吗?我只是想获取显示我们应用程序脚本项目当前活动的实时数据,以便我可以识别失败的执行,查看总处理时间,并按用户或功能对日志进行排序,以便我可以快速确定需要优化脚本的位置。