我們多少都有聽說過,某個大神讓周遭工作都腳本化,所以平時都躺著工作的都市傳說。但是實際上,要真的把這個概念放到現實中執行,往往卻不是這麼容易。本次分享,會主要介紹用來控制 G Suite 以及各種 Google 服務的腳本語言 Google Apps Script (GAS) 以及應用範例。
透過 GAS 多樣化的功能以及 serverless 的特性,自動控制工作中常見的 Gmail, calendar, form, spreadsheet 等服務,自動追蹤股票,自動產生工作報表等等,還可以結合 GAS 的 HtmlService, 以及外部的 Glide 等服務,架出可以馬上使用的網站甚至是 App,使用上不但免費,而且也省下部署 server 跟資料庫的麻煩過程,有效減少工作量,實踐懶人工作!
2. 1. RPA 概念念與⾃自動化的難題
2. Google Apps Script 的優勢
3. 開發案例例分享
• 業務流程⾃自動化(⾃自動產⽣生給客⼾戶的成效報表)
• 報名系統⾃自動化(⾃自動回信,資料整合)
• 股票盯盤(⾃自動抓10多個網站的資訊,⾃自動通知)
4. 活⽤用 GAS 提升穩定性
⼤大綱
⽤用 G o o g l e A p p s S c r i p t 挑 戰 輕 鬆 R P A
推廣利利⽤用 Google Apps Script
來來實踐辦公室 RPA,讓繁瑣
⼯工作⾃自動化,提升⼯工作效率!
8. 什什麼是 RPA (Robotic Process Automation) ?
R P A 概 念念 與 ⾃自 動 化 的 難 題
那麼......這麼好的東⻄西要怎麼開始呢?
Where to start?
9. 標準 RPA Side Project 專案流程圖
R P A 概 念念 與 ⾃自 動 化 的 難 題
我有⼀個
⼤膽的想法
忙,是治療⼀切
精神病的良藥
⼈⽣已經
如此艱難
吹呀吹呀
我的驕傲放縱
Deploy Server
EnvironmentDatabase
rollback
Server Cost
DB server
12. G o o g l e A p p s S c r i p t 介 紹
透過 Spreadsheet 直接充當資料庫,
在服務前期,資料格式不確定時,可避
免調整資料庫的⿇麻煩,達到快速開發
可以透過 Spreadsheet 儲存
⼤大多數功能可以在 Google Apps Script
免費額度中完成,⽽而且如果是 GSuite
的話,還能獲得進⼀一步擴充!
⼤大抵上免費
GAS 是⼀一個 serverless 服務,開發者
無須處理理伺服器,也沒有環境問題,
所有服務直接運⾏行行在 Google 雲端上
無需處理理 Server side
GAS 可以呼叫許多常⽤用的 Google 服務,
很多功能都無需另外建置,⽽而且無痛整合
GSuite 功能,非常適合⽣生產⼒力力⼯工具開發
連動 Google 服務
GAS 非常適合⽤用來來開發簡單服務 or GSuite related service
Latest Update:June 12, 2020
13. G o o g l e A p p s S c r i p t 介 紹
要能夠躺著⼯工作,我會需要什什麼功能?
午餐機器⼈人為例例:
Input Output
Magic
Million Dollar Idea!!!
14. G o o g l e A p p s S c r i p t 介 紹
要能夠躺著⼯工作,我會需要什什麼功能?
午餐機器⼈人為例例:
Input Output
Magic
Interface Interface
Database
15. G o o g l e A p p s S c r i p t 介 紹
要能夠躺著⼯工作,我會需要什什麼功能?
午餐機器⼈人為例例:
Input Output
Magic
Interface Interface
Database
Server
16. G o o g l e A p p s S c r i p t 介 紹
要能夠躺著⼯工作,我會需要什什麼功能?
午餐機器⼈人為例例:
Input Output
Magic
Interface Interface
Database
Production
Server
Development
Server
Deploy
17. G o o g l e A p p s S c r i p t 介 紹
要能夠躺著⼯工作,我會需要什什麼功能?
午餐機器⼈人為例例:
Input Output
Magic
Spreadsheet
Interface Interface
Focus Here!!
18. G o o g l e A p p s S c r i p t 介 紹
要能夠躺著⼯工作,我會需要什什麼功能?
Input Output
Magic
HtmlService /
Google Form /
API
HtmlOutput / TextOutput
+ Google Site
Spreadsheet
+ Glide App => pwa
Spreadsheet
Cloud SQL
BigQuery
doGet function
doPost function
Trigger
by event, by time
20. G o o g l e A p p s S c r i p t S i d e P r o j e c t 案 例例 - 簡 化 ⼯工 作 流 程
⾃自動化數據報表
每天都要⽣生⼀一堆數據報表給各家客⼾戶,
不但要⼿手動去網站抓資料,還要再⼈人⼯工 Key 成⽂文件,再寄出
⾃自動從服務中抓取今天的數據,⾃自動整理理並寫入⽂文件,
做成最後報告(還可以⾃自動寄給客⼾戶!)
21. 廣告服務的⾃自動化報表(⼤大約 5-6 hrs)
廣告聯聯播網(Ad Network)
Web 廣告投放平台(SSP)
App 廣告投放平台(SSP)
有報表
無報表
GmailApp.search
BigQuery.Jobs.query
按客⼾戶訂單分配 +
處理理資料
DriveApp.makeCopy(template)
SpreadsheetApp
HtmlService
GmailApp.send
DriveApp
寄給客⼾戶
塞進精美表單
資料留留檔
or UrlFetchApp
Triggered at
10 ~ 11 am daily
G o o g l e A p p s S c r i p t S i d e P r o j e c t 案 例例 - 簡 化 ⼯工 作 流 程
22. G o o g l e A p p s S c r i p t S i d e P r o j e c t 案 例例 - 簡 單 的 ⼩小 S i d e P r o j e c t
⾃自動股票盯盤
每天都要花時間盯股票走勢,希望⼀一次可以追蹤⼤大量量股票,
⽽而且同時紀錄不同網站上⾯面蒐集到的各種數據分析
每天⾃自動爬 300 多隻股票,5000 多個網⾴頁的資料,
把相關的信號分析都跑⼀一遍,⽽而且⾃自動寄信通知美⽇日⾏行行情,
然後做成⼀一個簡單網站提供觀察
24. ⽤用 Google Apps Script 當作網⾴頁後端
function doGet(e){
switch(e.parameter.mode){
case ‘foo’:
return fooController(params)
}
}
透過 doGet, doPost 處理理 HTTP GET, HTTP post 請求
function fooController(params){
Do something
Call Model for stored data
return HtmlService.createTemplateFromFile(‘fooView')
}
function barController(params){
Do something
Call Model for stored data
return HtmlService.createTemplateFromFile(‘barView’)
}
Route
Controller
Model View
G o o g l e A p p s S c r i p t S i d e P r o j e c t 案 例例 - 簡 單 的 ⼩小 S i d e P r o j e c t
25. G o o g l e A p p s S c r i p t S i d e P r o j e c t 案 例例 - 商 業 模 式 P r o t o t y p e
獵頭⼯工作⾃自動化系統
獵頭⼯工作⼀一直都是⼈人⼒力力密集的產業,通常需要很多⼈人⼯工 Keyin 資料,
收發信件,約 calendar 時間等等的聯聯絡⼯工作
透過 Google Form, Gmail 組合快速把獵頭的瑣碎⼯工作⾃自動化
配合 Glide App 打造出 Mobile Solution
30. 克 服 G o o g l e A p p s S c r i p t 的 缺 點
Function 時長限制(6 分鐘,30 分鐘)
Free Gmail Account (6 mins per task) G Suite Users (30 mins per task)
31. 克 服 G o o g l e A p p s S c r i p t 的 缺 點
Function 時長限制(6 分鐘,30 分鐘)
var cache = CacheService.getScriptCache();
var cached = cache.get(“rss-feed-contents”);
cache.put("rss-feed-contents", contents, 1500); // cache for 25 minutes
Trigger 1 Trigger 2
Use cache
Trigger 設置只能到⼩小時
但是每天執⾏行行時間是固定的
GAS 有時候真的是
很慢...很慢...
32. 克 服 G o o g l e A p p s S c r i p t 的 缺 點
遇到不能改的 User Agent ……
User-Agent: Mozilla/5.0 (compatible; GoogleDocs; script; +http://docs.google.com)
User-Agent: Mozilla/5.0 (compatible; Google-Apps-Script)
.
.
.
.
User-Agent,你今晚的惡惡夢
Mobile Web Only Q_Q
Apps Script
計画通り
33. 克 服 G o o g l e A p p s S c r i p t 的 缺 點
不明原因的 Error 們
Spreadsheet 無法正常回應
「我們很抱歉」錯誤
1. 超出 Error Handling 的範圍,會需要⽤用多隻 Trigger 併⾏行行的⽅方式來來解決
2. 設定錯誤通知( Trigger 中可以設定⼀一有錯誤⾺馬上 Email 通知)
執⾏行行流程
Try & Catch
執⾏行行 Spreadsheet App
34. 克 服 G o o g l e A p p s S c r i p t 的 缺 點
建立⼀一個好的開發環境
可以在取檔案名字時,
⽤用 “/” 來來創建資料夾了了!
使⽤用 Dark Mode 保護眼睛,告別葉黃素(誤)
⼀一鍵 push / pull 檔案到 GitHub remote
35. 1. Google Apps Script 有免費,不⽤用處理理 Server,可以⽤用
Spreadsheet 等特點,非常⽤用來來適合做簡單⼩小 Side
2. 透過 Google Apps Script 可以輕易易連結起 Gmail, Google
Drive, Docs, Form, Translate 等 GSuite 服務,還可以
host 網⾴頁,開 API 等,很適合⽤用來來做辦公室的 RPA ⼯工具
3. Google Apps Script 雖然有不少限制,不過正快速發展中
總結
⽤用 G o o g l e A p p s S c r i p t 挑 戰 輕 鬆 R P A
我到底都看了了些什什麼?