分析每天在幹嘛!Google Sheets to Calendar-【附程式碼】

Ivan Yang
Google工具
Published in
8 min readAug 25, 2022

業務?你到底是真忙還是瞎忙?

👉【行銷搬進大程式】給您更多實用文章與免費教學影片,附贈Python程式碼!

不管我們是在安排學習計畫,還是業務活動,時間的規畫都是非常重要的。在筆者業務的經驗中,業務最值錢的就是時間,因為業務沒有所謂的上下班,工作即是生活,因此做業務更需要時間上的調配,否則只會覺得無時無刻都在上班。

若我們能將Google Sheets的行程表,自動新增到Google Calendar裡面,此後便可以在Google Sheets上面進行分析,而Google Calendar只是用來快速查看,或者與同事分享各自行程(可見:同事今天去哪裡?把團隊每個人行程表共享)。

市面上工具比較

插件搜尋結果

在開始打造之前,必須要先做好市調,若我們想要的功能,已經有提供外掛插件了,那也沒有自己寫程式的必要了。筆者經過搜尋後,找到以下三個插件,符合我們的需求:

  1. Calendar to Sheet
  2. Sheet to Calendar Evento
  3. Calendar Events Creator

不管是哪個插件,功能與效能都是非常卓越的,但都是需要收費的。經過評估後,筆者覺得開發這個功能並不難,因此選擇自行設計。

Calendar Events Creator的收費機制

開始前,先下載完整程式碼

👉第1步:創建Google Sheets

首先在Google雲端中新增一個Googe Sheets,並且設定好創立Google Calendar時所需要的資訊欄位,如下範例設定了「行程標題、日期、開始時間、結束時間、地點、備註」。

創建Google Sheets

當然,以上的欄位名稱皆可以自行更改,並不會影響程式碼的執行,但順序的部分會影響程式碼執行,因此建議在初次實作時,可以先參考筆者的順序,之後再改成自己喜歡的編排方式。

👉第2步:開啟Google App Script

點擊工具列中的「工具 -> 指令碼編輯器」,即可連接到該Google Sheets的Google Apps ScriptGoogle Apps Script是用來提供Google各項服務的延伸功能,當然包含各個Google服務的串接。

開啟Google App Script

另外Google Apps Script是以JavaScript為基礎所推出的腳本語言,因此若您熟悉JavaScript,那編輯起來會是得心應手喔!

👉第3步:連接Sheets & Calendar

在Google Calendar右上角的設定中,選擇「設定」,並到左方工具列中,選擇您想要連接的日曆類別。滾到下方後,就會找到「日曆ID」,並將其複製到getCalender方法中。

eventCal = getCalender("輸入Google Calender ID")
連接Sheets & Calendar

評估業務不只從業績,也能從行為

在文章同事今天去哪裡?把團隊每個人行程表共享當中,分享同事們如何分享對方的行程,很適合組織的整合。聰明的你一定立馬發現,如此一來若使用共享的日曆,是否能夠取得所有同事的行程呢?答案是可以的!

👉第4步:取得/新增Sheets資料

必須要取得Sheets的資料,才能將其放入Calender當中。getRange方法中需要輸入您想要匯入的資料欄位,在範例中為了方便,直接從A2一路到F1000,也就是1000筆資料都匯入。當然,A1 — F1是標題,因此不能匯入Calendar當中。

var signups = spreadsheet.getRange("輸入Sheets的資料範圍").getValues();
取得/新增Sheets資料

確認資料後,藉由for迴圈取得Sheets的每一列資料,如此才能將Sheets的美筆資料逐一上傳到Calendar當中。

輸入欄位後

👉第5步:解析個欄位資料

如同我們在Sheets當中的欄位設定,每筆資料裡面會有6個資訊,依照順序分別代表「行程標題、日期、開始時間、結束時間、地點、備註」。

解析個欄位資料

由於不同時間格式的問題,因此在時間的運算中,必須再將原本設定的時間加一天,才會與我們的預想相符。

theday.setDate(theday.getDate() + 1) // 必須加一天

👉第6步:判斷重複行程

由於每次新增行程的時候,所有行程都會被收錄,這會造成一個問題,就是每次執行會重複的建立原有的行程。為了避免這個狀況,創造doit變數,拿來放布林值。檢查當天行程的標題有無相符,若相符則doit為True,反之為False。

判斷重複行程

👉第7步:解決跨日問題

確認行程沒有重複後,本想可以直接建立行程了,但卻發生了以下錯誤:

Exception: Event start time must be before event end time.

錯誤的意思是,行程的開始時間比結束時間還要晚,這也是時間格式運算上所出現的錯誤,例如設定行程為早上11點到下午1點,但會被誤認為早上1點,避免此跨日問題的方式,便直接把結束時間加上12小時即可。

解決跨日問題

👉第8步:建立行程

最後一個步驟是建立行程。createEvent方法的詳細使用文件可以到詳細文件中查詢

/** 建立行程 */event= eventCal.createEvent( title, start, end, {location: location});

另外可以將行程的顏色更改,筆者是在團隊的日曆中使用這個工具,因此團隊的每個人所設定的行程顏色並不同,筆者被分配到的是紫色。想要不同顏色也可以參考這裡

event.setColor("3") // 設定顏色為紫色
顏色樣式代表數字

描述的部分無法在createEvent方法中新增,因此必須另外利用setDescription方法進行設定。

event.setDescription(descripion) // 設定描述

👉第9步:測試功能

先在Sheets中輸入一個行程來進行測試,如下圖輸入「AAA、2021–2–7、9:00、15:00、我的家、睡覺覺」。

輸入google sheets

接著來到App Script按下執行,便可在Calender中看到結果。當然第一次執行時需要進行驗證,否則若沒有驗證,便可以隨便連結到別人的Calender,那是嚴重侵犯隱私的。

測試功能

👉第10步:開啟自動更新

若每次新增行程,都要點開App Script去執行,是非常麻煩的。因此可以在「觸發條件」中新增觸發條件,選定要執行的function後,在選取活動類型中選擇「文件內容變更時」。

開啟自動更新

如此一來,每當Sheets表單一有更動,就會自動將資料新增到Calendar中了!有沒有很方便呢?

自動更新測試

完整程式碼:

參考資料:

Google App Script Document

👉想看更多Python實作教學影片【免費】👈

📌Python基礎課程

📌Line Bot 聊天機器人

📌行銷人轉職爬蟲王實戰|5大社群+2大電商

📌Telegram Bot 聊天機器人

📌實用工具

▶ 點此:https://marketingliveincode.com/
查看更多Python工具技巧、商業分析、教學影片

滿意我們餐點嗎?給點 Claps 吧👏👏
1. 我學習到了新的概念與工具 1–10+
2. 我理解了這篇內容所講述的工具與技巧 20–30+
3. 我可以將這篇的內容運用到學習和工作上20–30+

作者:楊超霆(行銷搬進大程式 創辦人)

--

--

Ivan Yang
Google工具

Marketing data analysis資深資料科學家。曾任中華電信AI專案講師、資策會AI講師、外貿協會講師、台科大行銷資料課程講師、就讀台科大資訊管理碩士班。著有《打造股市小秘書》《stp行銷策略之python商業應用實戰》。