D30 - 如何看自己需要哪篇 Apps Script 的功能?三十天 Apps Script 旅程的总整理

大家好,今天就是我们铁人赛的最後一天了,想要在今天帮大家做个整理表,这样也比较好找资料。如果有兴趣,心路历程在最後面,或许可以给想要写 GAS 的人参考。

还是先讲一下必要须知

考量到大部分的人没有追连载,到这边应该是想要快速找哪边可以帮助你。这很重要没错,但也请要先了解一下 Google Apps Script 的使用情境之一——


这边是假设一搬人行政文书使用的流程优化,如果本身就是要开发用 GAS 写出来的产品那就另当别论

另外,在开发之前,请确认三件事——

  • 确认想要做的动作是否在官方的扣打(Quota) 内,不然要额外付费喔
  • 有程序基础,我这边的定义范围是至少 Google 的 Tech Dev Guide 有刷过一遍
  • 有 Google 帐号,主要是能开 Google Workspace

文章列表

首先,这几天 Google Apps Script 的清单如下——

GAS 基本操作

主要内容有提到 GAS 的基本介面、Trigger 与 debug 方式之一(Log)。

日期 主题 内容概述
D1 谁适合使用 Google Apps Script (GAS)呀? 基本范围与文章目标族群界定
D2 Google Apps Script (GAS) 环境设定与设定打包 基本操作介面熟悉与功能大致范围界定
D3 如何透过 Google Apps Script 的 Trigger 来建立一个自动开启、调整与关闭的 Google 表单? Trigger 介绍

Google Form

主要有提到怎麽样创造、读取、复制与更动表单。更细节有讲到自动开启或关闭(Trigger)、连结 Google Sheet 并寄出 Email 和连动 Google Calendar

日期 主题 内容概述
D3 如何透过 Google Apps Script 的 Trigger 来建立一个自动开启、调整与关闭的 Google 表单? 创造 Google From 并搭配 Trigger 的自动化案例
D4 如何透过 Google Apps Script 来整合 Google Form / Google Sheet 并自动寄出客制的 Email? Google 表单後续流程接续自动化寄信的案例
D11 (ㄧ)复制并客制你的 Google Form 用 GAS 依照范本写 Google Form 的案例
D12 (二)大幅度客制你的 Google Form 用 GAS 依照范本客制 Google Form 的案例,有针对细部元素特别说明
D13 (三)一次搜集很多 Google Form 内的回应 用 GAS 搜集多份 Google Form 内回应的案例

Gmail

Gmail 的部分,主要是有寄信、依据分类寄出客制化信件、寄出 HTML 与跟 Google Calendar 连动,最後还有股票价格通知信。

日期 主题 内容概述
D4 如何透过 Google Apps Script 来整合 Google Form / Google Sheet 并自动寄出客制的 Email? 针对不同收件人的寄件方式介绍
D5 如何用 Google Apps Script 搭配 HTML 客制 Google 表单的回应信件? 整合 Google Form 与信件的案例
D6 如何用 Google Apps Script 将 Google 表单收到的时间同步在 Google Calendar 上? 将 Google Form 透过 Sheet 整合一份 Calendar 的案例
D7 如何用 Google Apps Script 将 Google 表单的回应即时同步在多个行事历上? 将 Google Form 透过 Sheet 整合多份 Calendar 的案例
D25 (二)结合股票价格通知与信件 透过 Gmail 寄送 Google Sheet 中资料提示的案例

Google Calendar

Google Calendar 的部分,主要都是跟 Google Sheet 结合,不管是列出事件或是生成新的行程。

日期 主题 内容概述
D6 如何用 Google Apps Script 将 Google 表单收到的时间同步在 Google Calendar 上? 将 Google Sheet 中的资料同步到一份 Google Calendar 的案例
D7 如何用 Google Apps Script 将 Google 表单的回应即时同步在多个行事历上? 将 Google Sheet 中的资料同步到多份 Google Calendar 的案例
D8 如何用 Google Apps Script 将 Google Calendar 上的事件与更新全部列出到 Google Sheet 上? 将 Google Calendar 上的资料同步到 Google Sheet 上的方式

Google Drive

Google Drive 部分,则有列出 Google Drive 的资料夹与档案的相关资讯(名称、ID、大小、预览与权限等)、更改名称与转移权限、移动与删除档案。

日期 主题 内容概述
D9 (一)列出所有档案 ID 与相关资讯 给予 Google Drive 资料夹 ID 并读出里面资讯的案例
D10 (二)自动列出所有档案并设定权限 给予 Google Drive 资料夹 ID 并读出里头档案权限并更改
D22 (三)一次看完所有档案的预览 将档案的预览图透过 Google Slides 一次性地显现出来的案例

Google Docs

Google Docs 的部分,有提到架构的讲解、内容元素的层级,以及怎麽创造文件、依据范本复制文件与内部物件的读取、客制与删除。

日期 主题 内容概述
D14 (一) 以 NDA 为例的大架构与简单复制 Google Docs 的基本架构,与从 Google Sheet 中撷取资料并复制范本更改多份 Google Docs 的案例(Header / Footer / Name)
D15 (二)快速生出大量寄件信封资料 从 Google Sheet 中撷取资料并复制范本更改多份 Google Docs 的案例(Body Content)
D16 (三)Element 的读取与创造 用 GAS 读取与创造 Google Docs 内部一个个段落、表格与图片等的案例
D17 (四)Element 的删除与层级关系 Google Docs 的层级关系,以及用 GAS 删除与精细选择 Google Docs 内部一个个段落、表格与图片等的案例
D18 (五)Element 的更新 针对 Google Docs 中已有物件内容进行更新的方式
D19 (六)更改特定内容格式的 Attribute 操作技巧 针对 Google Docs 中的物件属性(外型)调整的方式

Google Slides

Google Slides 的部分,则是从简报的架构、创造与复制范本开始,有讲到更动简报的内容、更改或读取特定内容以及新增与放入图表等。

日期 主题 内容概述
D20 (一)架构拆解与更改文字 Google Slides 的架构,以及如何针对已有的内容文字进行读取与更改的案例
D21 (二)自动化爲铁人赛的每一篇贴文生封面图 依照范本投影片更改并生成多份 Slide 的案例
D22 (三)一次看完所有档案的预览 Google Slide 与其他资料源如 Google Drive 等连动的案例
D23 (四)ㄧ次抓出所有简报中的「特定文字」与备注 Google Slide 中针对特殊元件、文字进行读取并放到 Google Sheet 上的案例
D24 (ㄧ)自动化创造图表 在 Google Slide 上放入 Google Sheet 中图表的案例

Google Sheet

Google Sheet 的部分,除了创造、复制之外,就是有取得很多试算表内的资料,并进一步处理像是创造图表,或是将结果用信件做通知。

日期 主题 内容概述
D4 如何透过 Google Apps Script 来整合 Google Form / Google Sheet 并自动寄出客制的 Email? 从 Google Sheet 中寄信给不同收件人的案例,最基础的 Google Sheet 架构在这一篇
D6 如何用 Google Apps Script 将 Google 表单收到的时间同步在 Google Calendar 上? 从 Google Sheet 中同步 Google Calendar 的案例
D7 如何用 Google Apps Script 将 Google 表单的回应即时同步在多个行事历上? 从 Google Sheet 中同步到多份 Google Calendar 的案例
D8 如何用 Google Apps Script 将 Google Calendar 上的事件与更新全部列出到 Google Sheet 上? 在 Google Sheet 上抓到 Google Calendar 上的资料
D14 (一) 以 NDA 为例的大架构与简单复制 用 Google Sheet 的资料创造 Google Docs 的案例(Header / Footer / Name)
D15 (二)快速生出大量寄件信封资料 用 Google Sheet 的资料创造 Google Docs 的案例(Body Content)
D23 (四)ㄧ次抓出所有简报中的「特定文字」与备注 用 Google Sheet 列出 Google Slide 中的特殊物件上的案例
D24 (ㄧ)自动化创造图表 图表讲解与用 Google Sheet 创造图表放到 Google Slide的案例
D25 (二)结合股票价格通知与信件 将 Google Sheet 中的资料更新/提示寄送的案例
D26 (三)大量复制试算表并留下连结 将 Google Sheet 的资料表复制给不同使用者的案例(在「要整理面试官打的分数」的情境下)
D27 (四)蒐集大量试算表中的回应 将多份 Google Sheet 中的资料整理到一份的案例(在「要整理面试官打的分数」的情境下)

GAS 进阶操作

  • Add-On、HTML
日期 主题 内容概述
D5 如何用 Google Apps Script 搭配 HTML 客制 Google 表单的回应信件? 用 GAS 寄出 HTML 的案例
D28 (ㄧ) 变成可以 Add-On 似的 UI 将 GAS 的功能变成可以按的 UI
D29 (二)变成 WebApp / HTML Output 将 GAS 的功能变成可以互动的 HTML
D30 三十天 Apps Script 旅程的总整理 今天这篇总整理

回顾这三十天

好,接下来则是一些心路历程,分享给想踏入 GAS 坑的夥伴。

回看这三十天铁人赛的文章,平均每篇费时两个小时,字数在五千上下,要说的话就是,超级累啊啊啊啊啊啊。

过程中一度很想放弃,除了在看到 D20 前後时的文章大概都只有十来人阅读时,加上工作都忙到八九点,回家都十点了再加两个小时,总是压死线写出,中间也发生了不少是,像是这篇就是带家人到急诊室时打的,切记勿穿短裤拖鞋到急诊室,超冷。以及忙碌中对大纲不一定有灵感,中间有几度迷航,甚至出文章的品质下降,都是假日回来优化。但所幸有个转折,就是 D15 快速生出大量寄件信封资料 这篇。因为那时候刚好同事需要帮忙,就用这样的范本协助慢慢复制贴上的过程,看到能帮同事省时间,是蛮开心的。这篇同时也是自己最喜欢的文章。

不过,GAS 真的挺方便的,像是今天内容的 Markdown 表格其实就是用 GAS 帮我省了些时间。

三十天的过程中,主要的进步有几份——

  1. 文字上,比较会补起脉络。
  2. 视觉上,也比要会考虑排版,像是要生个封面图等等(欢迎参考 (二)自动化爲铁人赛的每一篇贴文生封面图)。
  3. 写扣上,同样复杂度的可以从原本的三十分钟缩短到大概十五分钟,此外因为更熟悉了,可以避开些不必要的雷。
  4. 录影速度快很多,从一开始影片中没有主体与对照,到後来比较知道要用分割画面。
  5. 想案例的速度快很多,一开始想要用哪个案例时会卡个半小时去耍废,後来大概十分钟就可以决定要用哪个案例。
  6. 抓架构上,读 Reference 抓出结构与架构的速度也快很多。之前少年的开发时期,在实作时大多都凭印象与 Stackoverflow 来开发,现在则可以快速扫过 Reference 并抓出架构。当然 Google Apps Script 的 API 文件很清晰也是能快速上手的原因之一。

尽管每次回头看自己写的文章,总是会想揍自己,大概跟回看国高中作文差不多等级,或是在看自己之前的 Code 那样。所以也帮自己下了几个坑——

  • 将前期文章的视觉做优化,不管是录影上还是
  • 将所有文章的 API 架构补起。因为上面有提到说之前开发时比要不读 Reference ,但现在知道抓其中的架构很重要,所以会想补起其他的架构
  • 将所有文章彼此的大纲补关联串起,还有很多想写的文章,包括 Gmail、Google Calendar 与透过 GAS 爬虫获取外部资料等细节。或许哪天会偷偷调整架构哈。

本身来说,我觉得用 GAS 对有需求的人来说,算是个简单上手的方式,Google 的产品都蛮有品质的,看到後端的程序码也往往会令人赞叹,甚至会发现些工程师彩蛋功能像是 developer metadata。过程算是会有些乐趣,不过如果能早点发想完大纲等,就不会其实白天如坐针毡,脑袋不是会飞去想到底要写什麽。总之,爬这座山的内容并不难,难的是每天要用合适的案例传达给读者。


那以上就是我们 GAS 的三十天,想谢谢每一位读者。铁人赛也到了终点,希望这些内容对大家有所帮助。如果还有问题,透过留言之外,也可以到 Facebook Group,想开很久这次铁人赛才真的开起来,欢迎来当 Founding Member。如果不想错过可以订阅按赞小铃铛(?),也欢迎留言跟我说你还想知道什麽做法/主题。我们有缘再见。


<<:  追求JS小姊姊系列 Day15 -- 方函式的能力展现:认识生成器,工具人更神气(下)

>>:  【第15天】训练模型-ResNet152V2

JS 01 - 序幕揭晓

大家好! 欢迎搭乘 JavaScript 观光巴士。 起程前,我们先用一个小测验作为旅程的序幕吧! ...

【DAY 05】HTML 标签的基本元素(二)

前言 忘记一天要发一篇,被自己笨死~~虽然中断了但我还是把它完成吧。 今天一样继续HTML语法吧 超...

[资料库] 学习笔记 - 商城交易之产生订单

这次练习的题目是做出商城中产生订单的功能 功能主要需求:产生订单 (目前一笔订单只能买一个品项)、库...

创建App-简单更改密码&教师代码

创建App-简单更改密码&教师代码 由於App的简单更改密码&教师代码的延伸界面没有...

Day 6:JUCE 框架基本架构

本文介绍 Projucer 建立的 GUI Application 框架基本架构。框架(Framew...