本文說明如何定義新的日期和數字格式模式,並加入 API 要求。
你可以透過日期時間和數字格式,控制資料在工作表中的顯示方式。Google 試算表提供了一些可選用的常見格式,但您也可以自行定義格式。
在試算表 UI 中,您可以依序點選「格式」 >「數字」選單,將數字和日期格式套用至儲存格。在 Google Sheets API 中,您可以使用 spreadsheets.batchUpdate 方法呼叫來設定這些格式,以傳送 UpdateCellsRequest 或 RepeatCellRequest。在要求中,您可以指定 NumberFormatType (例如 NUMBER、CURRENCY、PERCENT、DATE 或 TIME) 和選用的 pattern 字串,藉此設定 NumberFormat 物件。如果省略 pattern,試算表會根據試算表的 locale,為指定的 type 使用預設格式模式 (例如 en_US 中的 CURRENCY 為 $1,000.12)。
為範圍設定自訂日期時間或十進位格式範例說明如何使用 Sheets API 設定格式模式。請注意,格式的實際顯示方式取決於試算表的 locale。本文假設 locale 為 en_US。如要判斷試算表的 locale,請使用 spreadsheets 資源的 spreadsheets.get 方法,讀取 SpreadsheetProperties 物件。
關於日期和時間值
與大多數其他試算表應用程式一樣,Google 試算表會將日期和時間值視為十進位值。這樣一來,您就能在公式中對這些值執行算術運算,例如增加天數或週數、加減兩個日期和時間,以及執行其他類似運算。
試算表會使用試算表常用的紀元日期格式。值的整數部分 (小數點左側) 會從 1899 年 12 月 30 日起開始計算日期。小數部分 (小數點右側) 則代表一天中的時間。舉例來說,1900 年 1 月 1 日中午是 2.5、2,因為這是 1899 年 12 月 30 日之後的 2 天,而 0.5 是因為中午是半天。1900 年 2 月 1 日下午 3 點是 33.625。
Google 試算表會正確地將 1900 年視為平年,而非閏年。日期和時間序號不會儲存時區偏移值。而是根據試算表的 timeZone,您可以使用 spreadsheets.get 方法從 SpreadsheetProperties 物件讀取。
日期和時間格式模式
日期時間格式模式是一串符記子字串,Google 試算表在剖析時會將其替換為對應的日期時間元素 (例如月份或小時)。
日期和時間格式權杖
下表定義了可用於日期時間格式模式的權杖子字串。+ 字元表示前一個字元可以出現一或多次,且仍符合模式。試算表會將未列於本表中的字元視為常值,並直接輸出,不進行任何變更。
| 權杖 | 說明 |
|---|---|
h |
當日時段。根據字串中是否有上午或下午指標,切換 12 小時和 24 小時格式。 |
hh+ |
與前一項相同,但 1 到 9 前面會加上 0。 |
m |
如果前一個非文字符記是小時,或後一個非文字符記是秒,則代表小時中的分鐘 (不含前置 0)。否則,系統會以數字表示月份 (不含前置 0)。 |
M |
月份,前方不加 0。請使用這個權杖,在模式中明確指定月份,而非分鐘。 |
mm |
與 m 相同,但兩種情況都會在前面加上 0。 |
MM |
月份,前方加 0。請使用這個權杖,在模式中明確指定月份,而非分鐘。 |
mmm |
月份的三個字母縮寫 (例如「Feb」)。 |
mmmm |
月份全名。mmmmmm+ 也符合這項條件。 |
mmmmm |
月份的第一個字母 (例如「J」代表 June)。 |
s |
一分鐘內的第幾秒,前方不加 0。 |
ss |
一分鐘內的第幾秒,前方加 0。 |
[h+] |
一段時間內經過的小時數。字母數量代表最少位數 (會加上前置 0)。 |
[m+] |
時間長度內經過的分鐘數。字母數量代表最少位數 (會加上前置 0)。 |
[s+] |
時間長度中經過的秒數。字母數量代表最少位數 (會加上前置 0)。 |
d |
日期,小於 10 的數字前不加 0。 |
dd |
日期,小於 10 的數字前方會加上 0。 |
ddd |
星期幾,三個字母的縮寫 (例如「Mon」)。 |
dddd+ |
星期幾,全名。 |
y |
2 位數年份。 |
yy |
|
yyy |
4 位數的年份。 |
yyyy+ |
|
a/p |
上午顯示「a」,下午顯示「p」。此外,小時也會變更為 12 小時制。如果符記字母為大寫,輸出內容也會是大寫。 |
am/pm |
與上述相同,但會顯示「AM」或「PM」,且一律大寫。 |
0 |
十分之一秒。您可以使用 00 將精確度提高至兩位數,或使用 000 將精確度提高至三位數 (毫秒)。 |
\ |
將下一個字元視為常值,而非可能具有的任何特殊意義。 |
"text" |
將引號內的任何文字顯示為常值。 |
日期和時間格式範例
假設日期和時間為 Tuesday, April 5, 2016, 4:08:53.528 PM,下表列出一些模式範例,以及對應的日期時間呈現方式。表格的第二部分顯示經過時間格式範例,經過時間為 3 hours, 13 minutes, 41.255 seconds:
| 日期時間模式 | Tuesday, April 5, 2016, 4:08:53.528 PM |
|---|---|
h:mm:ss.00 a/p |
下午 4:08:53.53 |
hh:mm A/P".M." |
下午 4:08 |
yyyy-mm-dd |
2016-04-05 |
mmmm d \[dddd\] |
4 月 5 日 [星期二] |
h PM, ddd mmm dd |
4 月 5 日星期二下午 4 點 |
dddd, m/d/yy at h:mm |
4/5/16 週二 16:08 |
| 經過時間模式 | 3 hours, 13 minutes, 41.255 seconds |
[hh] |
03 |
[mmmm] |
0193 |
[ss] |
11621 |
數字格式模式
「數字格式模式」是一串符記子字串,Google 試算表在剖析時會將其替換為對應的數字表示法。數字格式模式最多可包含四個部分,以分號分隔,分別定義正數、負數、零和文字 (依此順序) 的格式:
[POSITIVE FORMAT];[NEGATIVE FORMAT];[ZERO FORMAT];[TEXT FORMAT]
格式中不一定要包含所有四個部分。如果只加入一個部分,試算表會將該格式套用至所有值。如果使用兩個區段,則第一個格式會套用至零和正數,第二個格式則會套用至負數。使用三個區段,分別定義正數、負數和零的格式。例如:
[NUMBER FORMAT] [POSITIVE/ZERO FORMAT];[NEGATIVE FORMAT] [POSITIVE FORMAT];[NEGATIVE FORMAT];[ZERO FORMAT]
不過,如果有多個區段,且最後一個區段是文字格式,試算表會將該區段視為文字格式,其他區段則會視為少一個區段。因此,只要加入最終文字格式,就能定義下列格式:
[POSITIVE/ZERO FORMAT];[NEGATIVE FORMAT];[TEXT FORMAT] [NUMBER FORMAT];[TEXT FORMAT]
系統會先將格式剖析為區段,再進行其他剖析,因此可以將日期或時間格式納入其中一個區段 (但這項功能的作用有限)。
數字格式權杖
下表定義了可在格式區段中使用的權杖子字串,用於定義如何表示該區段的值。
| 權杖 | 說明 |
|---|---|
0 |
代表數字中的某個位數。如果數字是不重要的 0,則會顯示為 0。舉例來說,數字格式 00.0 會將數字 3 顯示為「03.0」。 |
# |
代表數字中的某個位數。如果數字是不重要的 0,則不會顯示。舉例來說,數字格式 ##0 會將數字 12 顯示為「12」。 |
? |
代表數字中的某個位數。如果數字是不重要的 0,則會顯示為空格。使用固定寬度字型時,通常會用來對齊資料欄中的小數點。舉例來說,數字格式 ???.??? 會將數字 12.4 顯示為「12.4」。 |
. |
第一個句號代表數字中的小數點。後續的句號則會顯示為常值。如果您在格式中加入小數點,系統一律會顯示小數點,即使是整數也一樣。例如,#0.# 會將數字 3 顯示為「3.」。 |
% |
顯示為常值,但也會在顯示前將現有數字乘以 100,讓百分比更易於閱讀。舉例來說,數字格式 #% 會將數字 0.25 顯示為「25%」。 |
, |
如果出現在兩個數字字元 (0、# 或 ?) 之間,則會使用分組分隔符 (以千為單位分組) 顯示整個數字。如果逗號位於數字字元之後,則每出現一個逗號,數字就會縮小一千倍 (例如,格式 #0.0,, 會將數字 12,200,000 顯示為 12.2)。 |
E- |
以科學格式顯示數字,E 左側的格式用於非指數部分,E 右側的格式用於指數部分。E+ 會為正指數顯示 + 符號。E- 只會顯示負指數的符號。如果使用小寫,輸出內容 e 也會是小寫。舉例來說,數字格式 ##0.00#E+## 會將數字 0.0000001 顯示為「100.00E-9」。 |
E+ |
|
e- |
|
e+ |
|
/ |
如果出現在兩個數字字元 (0、# 或 ?) 之間,系統會將這些數字群組視為分數格式。舉例來說,數字格式 0 #/# 會將數字 23.25 顯示為 23 1/4。分母也可以是整數常值,在這種情況下,系統會強制將該整數做為分母。數字格式 0 #/8 會將數字 23.25 顯示為 23 2/8。如果分子為 0,則不會顯示分數部分。數字 23.1 採用數字格式 0 #/3 時,會顯示為 23 (因為 0.1 會四捨五入為 0/3)。/ 與科學格式或含有小數點的格式不相容。 |
* |
為與 Microsoft Excel 數字格式相容而提供。 試算表會忽略這個符記。 |
_ |
略過下一個字元,並顯示空格。使用這個符記,可對齊負值前後有括號的數字格式。 |
\ |
將下一個字元視為常值,而非可能具有的任何特殊意義。舉例來說,數字格式 \#0 會將數字 10 算繪為「#10」。 |
"text" |
將引號內的任何文字顯示為常值。 |
@ |
如果儲存格有文字輸入,則會插入儲存格的原始文字。不與任何其他特殊字元相容,且不會顯示數值 (數值會以一般格式顯示)。 |
$ - + ( ) : space |
試算表會將這些字元和常見的貨幣符號 (例如 $、€、£ 和 ¥) 視為常值,並原樣顯示。 |
Meta 指令
此外,每個格式區段都可以有選用的中繼指令,這些指令會以 [] 字元括住,並放在格式前面,提供額外指示:
| 指令 | 說明 |
|---|---|
[condition] |
將該區段預設的正值、負值或零值比較,替換為其他條件運算式。舉例來說,[<100]"Low";[>1000]"High";000 會針對低於 100 的值顯示「Low」字樣,針對高於 1000 的值顯示「High」字樣,並針對介於兩者之間的值顯示三位數數字 (開頭為 0)。你只能對前兩種子格式套用條件,如果數字符合多個條件,試算表會使用第一個相符的條件。如果有第三種格式,試算表會將其用於「其他所有項目」;否則,如果數字不符合任一格式,試算表會在整個儲存格寬度中顯示所有「#」字元。如果存在,第四種格式一律用於文字。 |
[Color] or [Color#] |
使這個子格式轉譯的任何值都以指定的文字顏色顯示。Color 的有效值為 Black、Blue、Cyan、Green、Magenta、Red、White 或 Yellow。Color# 中「#」的有效值為 1 到 56。數字格式顏色會覆寫使用者在儲存格中輸入的任何顏色,但不會覆寫條件式格式設定的顏色。這個調色盤會顯示與每個數字對應的顏色清單。這些函式是以 Microsoft Excel 中的 ColorIndex 屬性為基礎。 |
[$currency] |
以文字形式顯示指定的貨幣符號或代碼 (例如 [$€]#,##0.00 或 [$CAD]#,##0.00)。如果在連字號後方加上選用的語言代碼 (例如 [$CAD-1009]),試算表會忽略語言代碼。 |
數字格式範例
下表列出一些模式範例,以及對應的格式化數字呈現方式:
| 數字 | 模式 | 格式化值 |
|---|---|---|
| 12345.125 | ####.# |
12345.1 |
| 12.34 | 000.0000 |
012.3400 |
| 12 | #.0# |
12.0 |
| 5.125 | # ???/??? |
5 1/8 |
| 12000 | #,### |
12,000 |
| 1234.56 -1234.56 |
$#,##0.00;($#,##0.00) |
$1,234.56 ($1,234.56) |
| 1230000 | 0.0,,"M" |
120 萬 |
| 1234500000 | 0.00e+00 |
1.23e+09 |
| 123114.15115 MyText |
###0.000;"TEXT: "_(@_) |
123114.151 TEXT: MyText |
| 1234 -1234 0 MyText |
[Blue]#,##0;[Red]#,##0;[Green]0.0;[Magenta]_(@_) |
1,234 1,234 0.0 MyText |
| 1005 32 527 |
[>1000]"HIGH";[Color43][<=200]"LOW";0000 |
最高溫 最低溫 0527 |