在 Google Sheets 中建立甘特圖的方式,是在三個欄位中輸入專案排程——Task(任務)、Start date(開始日期)、End date(結束日期)——再加上兩個輔助欄位,分別用於偏移量與持續天數,然後把這份資料繪製成一張水平堆疊長條圖,並隱藏「起始偏移量」這個數列。一旦把偏移量數列設為不填色,剩下的每一根長條,就會對齊在同一個共用的日曆座標軸上,並在視覺上呈現出每項任務的時間範圍。這種 Sheets 做法,只使用內建的圖表編輯器,不需要任何附加元件,並且會把你的任務清單,讀取成一般的儲存格,因此你可以排序、篩選,並重複使用這份資料。麻煩之處在於手動設定:每一列的持續天數運算,都要手動加上去,圖表每次改動日期都會重新算繪,而且這個視覺呈現,會一直留在你的試算表裡,而不是匯出成一份乾淨的獨立檔案。如果只是想在 Sheets 裡快速看一眼的圖表,這樣就夠了。但如果你想要一個可下載、簡報就緒的 SVG 時間軸、又不想動手編輯圖表,一個專用的瀏覽器工具會是更快的路徑。

how to make gantt chart in google sheets
how to make gantt chart in google sheets

Google Sheets 甘特圖實際上是如何運作的

Google Sheets 並沒有內建原生的「甘特」圖表類型。大多數人口中的 Sheets 甘特圖,其實是一張水平堆疊長條圖,其中第一個數列——以天數計的起始偏移量——被設定成透明,讓第二個數列——以天數計的持續時間——畫出一根看得見的長條。接著,每一根長條都會沿著一條以日期為基礎的水平座標軸繪製,因此看得見的範圍,會對齊日曆上的天數,而不是任意的數字。

訣竅就在這個偏移量欄位上。Sheets 沒辦法直接繪製「這項任務從一月 1 日開始」這種資訊。它繪製的,是從整個專案最早的開始日期算起的天數。一旦這個偏移量被隱藏在一個透明填色後面,這根長條看起來就像是從一月 1 日開始的,儘管底層的數值,其實是從一個選定的錨定日期算起、經過的天數。有兩個輔助欄位,會幫你完成這項運算。

在 Google Sheets 中建立一張甘特圖

在一份全新的 Google Sheets 檔案中,依照下列步驟操作。這些步驟涵蓋的,是只使用內建圖表編輯器的標準堆疊長條甘特圖做法。

  1. 建立 A 到 E 欄,欄位標題分別是 Task、Start、End、Start Offset,與 Duration。
  2. 在 A 欄輸入你的任務,並在 B 欄與 C 欄輸入真實日期。請使用 YYYY-MM-DD 的格式,這樣不論你的 Sheets 地區設定是什麼,底層的序列日期都能保持明確無誤。
  3. 在 D2 中輸入 =B2 - MIN($B$2:$B$N),其中 N 是你最後一個任務所在的列。這會算出每項任務,比清單中最早的那項任務晚開始了幾天。
  4. 在 E2 中輸入 =C2 - B2 + 1,得到一個包含頭尾的持續天數。一項從 2025-01-01 到 2025-01-03 的任務,跨越的是三天,而不是兩天。
  5. 選取 A、D,與 E 欄。如果需要選取不相鄰的欄位,可以用 Ctrl/Cmd 加點擊。
  6. 點選「插入」>「圖表」。在圖表編輯器中,把圖表類型設為「長條圖」,並勾選「堆疊」選項。
  7. 在「自訂」分頁下,點擊「Start Offset」這個數列,把它的填色設為「無」,讓它變得看不見。
  8. 設定水平座標軸的格式。開啟「水平軸」,選擇把標籤當成文字處理,或是根據你的日期範圍,設定明確的最小值與最大值。
  9. 在「自訂」>「數列」>「Duration」>「資料標籤」下加上資料標籤,讓每根長條都顯示出以天數計的時間範圍。
  10. 重新命名圖表標題、調整可見數列的顏色,並調整圖表框架的大小,讓它符合你的版面。

這樣就能做出一張可以運作的 Sheets 甘特圖。以下是你剛剛建好的欄位配置速查表。

欄位標題用途範例
ATask人類可讀的任務名稱Design mockups
BStart真實的開始日期2025-01-01
CEnd真實的結束日期,含當天2025-01-03
DStart Offset距離整個專案最早開始日期的天數=B2-MIN($B$2:$B$N)
EDuration含頭尾的天數=C2-B2+1

為什麼 Sheets 圖表很快就會變得繁瑣

對少數幾項任務來說,這套設定運作得很乾淨,但隨著排程規模擴大,每多加一列,都會增加一點點摩擦,並不斷累積下去。

  • 每一項新任務,都需要一條全新的持續天數公式、一列額外的圖表資料,以及一次重新算繪,有時候還會改變座標軸的刻度。
  • 假日、工作日,與時區,都沒有被建模進去。Sheets 甘特圖會計算每一個日曆天,包括週末在內。
  • 編輯一個日期會移動長條,但不會驗證新的結束日期,是否仍然晚於開始日期。打錯字的日期,會悄悄地變成一根差一天的長條,而不會跳出錯誤訊息。
  • 這張圖表活在檔案裡面。要把它匯出成一張乾淨的圖片,通常代表要截圖、貼進投影片,或複製到另一份文件中。

如果你的排程很短、也很穩定,以上這些問題都無關緊要。但如果你要管理超過十項任務、要跟不會編輯試算表的人分享這張圖表,或是每週都要重新建一次,這些維護成本就是實實在在的。

試試 Gantt Chart Maker,取得一份可下載的 SVG

如果你想要一份可以直接放進投影片、或以檔案形式分享的獨立時間軸,Gantt Chart Maker 能把一份精簡的、類 CSV 的清單,完全在你的瀏覽器中,轉換成一個獨立的 SVG 檔案。你貼上你的排程、按下產生、確認預覽畫面,而你下載到的檔案,就是你剛剛檢視過的那個確切字串。

因為每一個任務、開始日期,以及結束日期,都會被驗證為 YYYY-MM-DD 格式、真正的公曆 UTC 日曆日期,因此差一天的錯誤,會在輸入階段就被抓出來,而不是等到長條圖對不齊了才顯現出來。含頭尾的結束日期,是內建的:一項從一月 1 日到一月 3 日的任務,會占用三個日曆格,而一項當天完成的任務,則只會占用一個格子。你的排程、標題,或 SVG,都不會有任何內容被上傳到 Lizely;解析、UTC 日期運算、SVG 建立、預覽算繪,以及下載,全都留在目前這個分頁中進行。

用 Gantt Chart Maker 做一張甘特圖

依照以下步驟,產生這份 SVG 時間軸。

  1. 開啟 Gantt Chart Maker,並可以選擇性地在標題欄位中輸入一個標題。標題最多可以有 100 個 UTF-16 編碼單位,並會用跟任務標籤一樣的方式進行 XML 跳脫處理。
  2. 在排程欄位中貼上 2 到 30 行任務資料,每行一項任務,格式恰好是 task,start,end——每一個非空白的行,恰好要有兩個逗號、YYYY-MM-DD 格式的真實 UTC 日期,且結束日期要等於或晚於開始日期。
  3. 點擊 Generate。剖析器會先檢查原始輸入是否在 20,000 個 UTF-16 編碼單位的預算之內,接著修剪每個欄位周圍的空白,然後拒絕任何逗號數量不是恰好兩個的行。單單一行格式錯誤,就會讓整個請求失敗,而不是產生一張不完整的圖表。
  4. 檢視預覽畫面。每一項被接受的任務,都會被畫成一個帶標籤的矩形,對照著同一條共用的 UTC 日曆座標軸。每一天的寬度,都等於繪圖區寬度除以含頭尾的天數範圍,因此各根長條會可預期地對齊。
  5. 看看座標軸。對於 62 天以內的排程,會顯示按天的刻度。較長的排程,則會切換成確定性的按月刻度,選定的原則是盡量維持大約九個標籤,同時仍然包含第一個與最後一個日期。每一項被接受的任務及其完整的日期範圍,都會保留在圖表中;刻度的切換,只是座標軸的取樣方式而已。
  6. 點擊 Download。匯出的檔案,就是預覽畫面所使用的那個確切 SVG 字串,包含安全的文字跳脫處理、格線、長條、標題提示文字,以及一個無障礙標籤。序列化後的輸出結果,會被檢查是否符合 100,000 個 UTF-16 編碼單位的預算。

以下是這個工具中座標軸模式的經驗法則。

排程長度刻度模式刻度標籤格式
62 天或以下按天刻度UTC YYYY-MM-DD
63 天或以上取樣後的按月刻度UTC YYYY-MM

這份獨立 SVG 裡包含什麼

這份下載檔案,並不是預覽畫面的截圖。它是預覽畫面算繪出來的同一段 XML 字串,只有在序列化時,座標才會被四捨五入。每一項任務,都會變成一個 <rect> 元素,依照完整的 UTC 天數偏移量放置,寬度等於它含頭尾的天數。刻度標籤,在按天模式下是 UTC YYYY-MM-DD,在按月模式下則是 UTC YYYY-MM。使用者輸入的字串,會經過 XML 實體跳脫處理,處理 & 符號、角括號、引號,以及撇號,因此像「Q&A review」或「<final>」這樣的標籤,仍然會以可見字元的形式顯示出來,而不會被當成標記語言解析。根據 W3C SVG 2 規範,這正是在 SVG 文件中安全顯示文字內容的標準做法。

這份 SVG,同時也包含一個固定 1,100 像素的邏輯寬度、一個取決於列數的高度、一個白色背景、格線、每根長條上的標題提示文字、一個 viewBox,以及一個無障礙角色加上 aria-label。標籤中看起來像程式碼的文字,仍然會顯示成一般的可見文字,而不會變成一個 SVG 元素。這張圖表,只描述日曆上的占用情況。它不會顯示百分比、相依關係、里程碑、工作日曆、假日、資源,或進度。如果你需要相依關係規劃、協作、稽核歷史,或營運層級的承諾,專用的專案管理軟體才是正確的工具。

什麼時候該繼續用 Sheets,什麼時候該換工具

當你想在儲存排程的同一個地方繼續編輯它、任務數量不多,而且一張嵌在試算表裡的圖表已經夠用時,Sheets 就是正確的答案。當你需要一份能脫離試算表獨立存在的可下載 SVG、當你想要嚴格的日期驗證,避免打錯字悄悄讓長條偏移,或是當你要展示這張圖表、而不是要維護它時,Gantt Chart Maker 就是正確的答案。

你也可以兩者並用。把已經存在你 Sheets 欄位中的同一份任務清單,貼進 Gantt Chart Maker,為投影片產生一份乾淨的獨立 SVG,同時把 Sheets 保留為可編輯的權威資料來源。如果你的團隊比較常用 Docs 而不是 Sheets,那裡也有一套平行的甘特圖做法可以使用。

如果你正在權衡各種選項,How to Make a Gantt Chart in Jira Without an Add-On 有詳細說明。

如果你正在權衡各種選項,Use an Online Whiteboard in Google Meet 有詳細說明。