应用脚本活动报告/可视化

15
我为公司开发了一个应用脚本项目,用于跟踪我们的时间/费用。我按照以下方式构建了该项目:
  • 公司拥有付费的Gsuite帐户,该帐户拥有托管在公司Google驱动器上的所有电子表格。
  • 每个员工都有自己的“用户”电子表格,该电子表格从公司Gsuite帐户共享到员工的个人Gmail帐户中。
  • 每个用户电子表格都有一个容器绑定脚本,可以访问一个中央库脚本。
  • 库脚本允许我们集中更新脚本,并且对每个用户的影响是立即的。 它还防止用户看到中央脚本并干预它。
  • 每个用户容器绑定脚本都有可安装的触发器,这些触发器由公司帐户授权,因此运行的代码具有完全的权限来执行所需的操作。

这个设置对我们来说已经相当好用,大约有40个用户在使用。然而,这种设置的缺点是,由于所有脚本活动都是通过触发器由公司账户运行的,所以所有用户的活动都记录在单个公司账户下,并受到应用程序脚本服务器针对单个用户的配额限制。只要我们的脚本运行方式高效,这对我们还不是太大的问题。我尝试将该项目部署为我们公司的 Web 应用程序,但似乎没有一种好的方法来控制/限制用户访问中央文件。换句话说,如果该项目作为每个用户安装的 Web 应用程序运行,那么每个用户都需要访问项目在后台使用的所有中央电子表格。我们不想要这样。

因此,基于上述背景,我的问题是:如何高效地跟踪应用程序脚本的活动,以了解我们离达到服务器配额的限制有多近,并确定需要优化哪些函数?

我开始通过在“活动日志”电子表格中每次调用脚本时写入条目来跟踪项目活动。它记录了调用的函数是什么以及用户是谁,并且有一个开始时间和结束时间条目,因此我可以看到唯一执行花费了多长时间以及哪些失败了。这非常好,因为我可以实时查看项目活动并使用电子表格图表工具绘制图表。但问题在于,每次执行脚本都需要两个写操作:一个用于初始化,另一个用于完成。由于脚本每次在用户编辑其电子表格时都会被执行,因此在高流量期间,活动日志电子表格变得不可访问,并且出现错误。

因此,我已经过渡到通过将每个脚本文件连接到单个Google Cloud Platform(GCP)项目并使用Logger API来跟踪活动。写入日志比写入电子表格条目更有效,因此高流量错误几乎不会发生。现在的问题是,GCP日志浏览器不像电子表格那样易于使用,我无法绘制日志图表或总结活动以查看我们的服务器配额状况。

我花了一些时间来尝试自动从GCP导出日志,以便能够实时处理日志。我知道如何将日志下载为CSV文件,然后将其导入Google电子表格并进行所需的计算和绘图,但这是一个手动过程,并且无法显示实时数据。

我还发现如何通过设置“接收器”来将日志从GCP流式传输到“存储桶”中,理论上可以被其他服务读取。这让我很兴奋地尝试使用Google Data Studio,我看到它能够使用Google Cloud Storage“存储桶”作为数据源。不幸的是,Google Data Studio只能读取云存储中的CSV文件,而不能读取我的“接收器”在日志“存储桶”中生成的JSON文件。

所以我遇到了瓶颈。我在这里错过了什么吗?我只是想显示我们应用程序项目上的当前活动,以便能够识别失败的执行、查看总处理时间并按用户或函数对日志进行排序,以便快速确定需要优化脚本的位置。


2
我认为你可以尝试使用将日志导出到BigQuery的方法,然后从Data Studio中可视化数据。 - Hi_Esc
1
我认为你至少在问两个问题。但是,我会尝试澄清其中一个问题。 如果我们以你的问题标题作为主要关注点,那么我猜你想问的是,“如何将日志数据转换为csv格式,以便Data Studio可以使用?”在这种情况下,我认为你需要将数据导出(Sink)到Pub/Sub,然后Pub/Sub会将数据发送到某个地方进行转换为csv格式。你需要编写代码将数据转换为csv格式。Pub/Sub可以将数据发送到任何可以接收它的地方。 - Alan Wells
创建一个 BigQuery 的接收器,然后您可以将电子表格连接到 BigQuery... - miturbe
我来解释第一部分。Web应用程序可以作为您(部署者)或特定用户运行。如果您选择第一种方式,您不必向任何人提供访问Web应用程序所涉及的任何内容的权限。但是,根据安全设置,他们几乎肯定无法像使用电子表格时那样从他们的私人Gmail帐户访问Web应用程序。 - J. G.
澄清一下,您可以作为自己的身份运行Web应用程序,他们可以使用他们的办公室Gsuite帐户。当然,您可以将代码提供给他们,并让他们部署自己的版本...但这将抵消使用该应用程序的原因,我想。 - J. G.
显示剩余2条评论
1个回答

1

您已经在使用Apps Script的GCP端。

请查看指标资源浏览器,它让您可以查看每个资源的配额使用情况并自动生成图表。

但长期来看,我认为重新构建您的解决方案可能是更好的选择。至少,切换到通过Google表单提交数据将为您节省操作成本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接