嘉盛集团 嘉盛集团新闻 高级Google Apps脚本示例:将工作表连接到Google Drive和幻灯片

高级Google Apps脚本示例:将工作表连接到Google Drive和幻灯片

卓有成效的管理者知道时间是限制因素……也许没有什么比他们对时间的温柔呵护更能让卓有成效的管理者与众不同。 彼得…

卓有成效的管理者知道时间是限制因素……也许没有什么比他们对时间的温柔呵护更能让卓有成效的管理者与众不同。

彼得·德鲁克

时间是我们最宝贵的资源。我们希望尽可能把钱花在影响力最大、最具价值增值的活动上,这不仅是因为这些活动通常具有最高的货币价值,也是为了不断挑战自我,最大限度地提高我们的工作满意度。

为了更好地利用时间,有很多方法可以提高你的效率和生产力。在之前一篇关于Google Sheets的文章中,我详细阐述了在线协作的力量是如何提高生产力的关键之一。

在另一篇文章中,我展示了Python编程语言如何成为金融专业人士的强大分析和任务自动化工具。

受此启发,我现在想展示一个Google Apps脚本教程。Google Apps Script允许您用JavaScript编写脚本和程序来自动化、连接和扩展Google G套件中的产品,包括工作表、文档、幻灯片、Gmail、Drive和其他几个产品。学习它需要时间投资,编写脚本也是如此,但生产率的提高和它带来的额外机会使它非常值得。

作为第一步,让我们从一个熟悉的概念开始:宏。

在Google Sheets中记录和使用宏

如果您花了大量时间使用Excel,那么您一定会在某个时候接触到Excel的VBA(Visual Basic for Applications)宏界面。要么自己录制或撰写,要么借用他人创作的内容。

宏是自动化重复而乏味的工作流程的好方法。VBA可能不是一门你花了很多时间去学习的语言,但它的美妙之处在于,为了提高工作效率和创建自己的宏,你并不真的需要学习它。您可以简单地记录您想要自动化的工作流,然后进入代码并进行任何需要的小更改以使宏更通用。

在某些方面,对于如何向非技术人员介绍编码,VBA是一个伟大而被遗忘的教训。与阅读教科书和被动观看教程相比,您可以记录动作并填充代码以供以后查看的方式确实是一种更加实用的学习方式。

谷歌工作表中也有VBA的相同录音功能。下面是如何使用它的一个简单示例:

让我们从一些示例数据开始,使用IMPORTHTML查询导入一个表。在这个例子中,我从维基百科下载了全球15家最大对冲基金的名单。不言而喻,但是,这是一个任意的例子;目的是让你更专注于应用而不是主题。

用于导入表的示例数据。

宏记录过程通过以下菜单路径启动:工具》宏》记录宏。

然后我们浏览我们想要记录的动作(PC格式):

  1. 选择第一行
  2. 按Shift + Ctrl +向下键选择所有内容
  3. Ctrl + C复制
  4. Shift + F11创建新工作表
  5. 给工作表取一个新名称
  6. 按Shift + Control + V粘贴值

完成后,按底部宏窗口上的保存按钮,给它一个名称和一个可选的键盘快捷键。

对于可以通过这些相同步骤完全复制的简单操作,该过程将在此结束,您可以直接开始使用宏。但是在这种情况下,我们需要在代码可用之前进行一些更改。例如,我们每次复制到的工作表需要有不同的名称。让我们看看如何做到这一点。

手动编写Google Apps脚本

现在我们将首次看到Google Apps脚本的基本结构;在谷歌服务器上运行的编程平台。这为我们的宏提供了动力,并允许您为应用程序本身创建非常复杂的工作流,甚至是插件。它不仅可以用来自动化电子表格工作,而且实际上可以自动化谷歌G套件中几乎所有相互关联的工作。

Apps脚本的编程语言是 Java Script语言,这是最受欢迎的编程语言之一,这意味着有丰富的资源可供任何想要广泛学习的人使用。但是,就像VBA一样,您真的不需要这样做:您可以使用相同的记录功能,只需执行您希望能够自动重复的步骤。录音的输出可能看起来很粗糙,很可能与您想要完成的任务不完全匹配,但它将提供一个足够坚实的起点。现在让我们为刚刚录制的脚本执行此操作。

在记录时,注意不要意外记录您不想在最终记录中捕获的任何额外步骤是有意义的,但这有时很难避免:像在按下停止记录按钮之前选择不同的单元格这样简单的事情将被捕获,并随后在每次运行脚本时重复。编辑脚本的第一步是清理并删除任何此类步骤。让我们进入文件菜单中的工具》脚本编辑器。

脚本编辑器

如果您了解JavaScript,您会立即意识到这一点,并且您可能还会惊讶地看到“var”关键字而不是现代JavaScript中常见的“let”或“const”。这反映了一个事实,即Apps脚本中的JavaScript版本相当旧,不支持该语言的许多最新功能。最后,我将为那些想使用最新语言特性的人介绍一种变通方法。

当您第一次运行该脚本时,它会要求授权,这是有意义的,因为脚本可以修改(并可能删除)您的所有数据。您很可能会从其他谷歌产品中识别出授权过程。

现在我们可以开始修改代码了。我们需要做的更改很小,但是如果您第一次这样做,可能仍然需要快速搜索Sheets Apps脚本文档和/或快速查找JavaScript概念,例如处理日期。在这里,JavaScript是一种如此广泛使用的语言这一事实就派上了用场:如果您以简单明了的方式表达搜索词,通常可以很快找到针对您所面临的任何问题或功能的解决方案。

在这个版本的脚本中,对原始记录版本所做的更改是,我们现在用今天的日期来命名我们创建的新工作表,而不是硬编码的名称。此外,我们还更改了末尾的复制路径以引用这个新工作表。最后四行还演示了如何执行一些格式化操作,如更改单元格的值、调整列的大小和隐藏网格线。


现在运行该脚本将显示新工作表确实是以今天的日期命名的,并且包含从主工作表中作为值(而不是公式)复制的信息。

现在可以使用相同的记录过程添加可视化图表。我用这个创建了三个简单的图表。

绘制可视化图表。

清理每一项的代码如下所示:


同样,如果有些选项看起来令人困惑,也不要担心:这都是自动生成的,您只需要理解足够多的内容,以删除不必要的步骤,并可能在以后进行小调整。

高级Google Apps脚本示例:将工作表连接到Google Drive和幻灯片

现在一切都开始成形了,但是如果我们想要的实际输出不是电子表格而是演示文稿呢?如果是这样的话,那么这里的大部分工作可能仍然是手动的,如果我们需要重复这样做,我们并没有节省多少时间。

现在,让我们探索一下使用电子表格中的示例数据自动创建演示文稿会是什么样子。

这一练习现在变得更加高级,原因有二:

  1. 除了工作表外,我们还需要熟悉如何使用Google Slides(和Google Drive)。
  2. 在幻灯片中,或者一般在G Suite应用程序之间工作时,没有“录制宏”功能可用。这意味着您需要对Apps脚本有足够的了解(并能自如地浏览每个G Suite产品的文档),以便从头开始编写脚本。

下一个示例旨在为您提供一些基本的构建模块,帮助您入门并熟悉它。

首先,让我们创建一个模板,稍后我们希望使用我们的脚本填充内容。这是我整理的两张简单的演示幻灯片:

每周报告模板。

接下来,您将需要获取该模板的ID,因为您将不得不在脚本中引用它。在潜意识中,您会多次看到这个ID,因为它实际上是您在浏览器的URL中看到的随机字符和数字序列:

https://docs.google.com/presentation/p/这是您的演示文稿ID/edit#slide=id.p。

现在我们必须在原始脚本中添加以下几行。这将再次提示授权,这次是访问您的Google Drive。


如果您运行此代码片段,您不会看到任何即时的视觉反馈,但是如果您查看Google Drive中存储模板的文件夹,您会发现确实创建了模板的副本,并且文件名中包含今天的日期。我们有了一个良好的开端!

现在让我们使用更多的构建块开始用内容填充它,以编程方式而不是手动方式。将以下行添加到同一函数中:


现在事情变得有点有趣了,因为我们已经更改了第一页以包含今天的日期。在幻灯片中,与在工作表中一样,您使用的对象(由类表示)每个都有属性和方法(即附加功能)。它们以层次结构进行组织,SpreadsheetsApp、DriveApp或SlidesApp是顶级对象。在上面的代码片段中,我们需要一步一步地在这个层次结构中移动,以到达我们想要编辑的元素,在本例中:文本框中的文本。实际上,这意味着遍历Presentation、Slide、PageElement和Shape对象,直到最终找到我们想要编辑的TextRange对象。

跟踪您正在处理的对象类型可能会令人困惑,并且由于试图对错误的对象应用操作而导致的错误可能很难解决。不幸的是,脚本编辑器本身的帮助功能和错误消息并不总是提供很多指导,值得庆幸的是,这种关注至少会改进您的质量控制实践。

创建了演示文稿并更新了标题后,现在是时候将我们的一张新图表插入其中了。记住对象的层次结构,下面的代码现在应该是有意义的:


如果运行完整的脚本,输出演示应该如下所示:

样品展示

希望这个例子说明了原则,并为您开始自己的实验提供了灵感。如果你仔细想想,我敢肯定你能找到至少几个今天在你的公司里完成的手工工作的例子,这些工作确实应该以这种方式自动化。用于腾出时间来思考、分析和做出判断,而不是机械地将数据从一种格式和/或位置转换到另一种格式和/或位置。
改善开发体验
如前所述,Google Apps脚本支持的JavaScript版本较旧,在线脚本编辑器的功能非常有限。如果你只是记录一个宏或写几十行,你不会真的注意到。然而,如果您确实有雄心勃勃的计划来自动化每周或每月报告的所有方面,或者想要构建插件,那么您将很高兴知道有一个命令行工具允许您使用自己喜欢的开发环境进行开发。

如果您达到了这样的熟练程度,那么您可能还想利用JavaScript提供的最新功能,甚至可能更多,因为通过命令行工具,您还可以使用TypeScript进行开发。

使用Python进行Google Sheets编程

如果您发现使用应用程序脚本不是您的菜,那么根据使用情况,还有其他选择。如果你想做更高级的数字运算,与API或数据库连接,或者只是喜欢Python编程语言而不是JavaScript,那么谷歌的联合实验室是一个无价的产品。它给你一个运行在谷歌服务器上的Jupyter笔记本,让你可以编写与谷歌硬盘文件无缝集成的Python脚本,并通过“gspread”库轻松处理电子表格数据。

我在一篇关于如何将Python用于金融功能的文章中概述了Python的许多优势,该文章也是在商业和金融环境中使用Python和Jupyter笔记本的温和介绍。对我来说,一个非常重要的好处是,与Apps脚本不同,Colaboratory中的Python笔记本是交互式的,因此您可以在执行每行或一小块代码后看到结果(或错误消息)。

高级Google Apps脚本示例:将工作表连接到Google Drive和幻灯片

自动化会让人上瘾

这篇Google Apps脚本教程展示了通过Google编码语言可能实现的功能。可能性几乎是无穷无尽的。然而,如果你没有技术背景,代码示例可能会让人望而生畏,你可能会想,从学习Google Apps脚本中获得的生产力收益可能不足以抵消学习它所需时间的重大投资。

当然,这取决于许多因素,包括你将来担任什么样的角色。但是,即使你不期望做任何类似于这里所示的例子的事情,了解什么是可能的以及大约需要多少工作才能实现也可以引发关于如何提高公司、客户或你自己的生产力的想法和想法。

就我个人而言,我可以证明坐下来按下按钮在不到一分钟的时间内完成一小时的繁琐手工工作的满足感。在这样做了50次之后,你会感谢一开始花了几个小时拼凑起来的东西,这最终让你有时间去追求更有价值的东西。过一段时间后,这些可伸缩性优势确实会让人上瘾。

本文来自网络,不代表嘉盛集团立场,转载请注明出处:http://www.tuban.cc/2088/.html

作者: admin

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部