日付と数値の形式

日時と数値の表示形式を使用すると、シートでのデータの表示方法を制御できます。Google スプレッドシートでは一般的な形式がいくつか用意されていますが、独自の形式を定義することもできます。

スプレッドシート UI では、[表示形式] > [数値] メニューを使用して、セルに数値形式と日付形式を適用します。Sheets API では、spreadsheets.batchUpdate メソッド呼び出しを使用してこれらの形式を設定し、UpdateCellsRequest または RepeatCellRequest を送信します。

このページでは、API リクエストに含めることができる新しい日付と数値の形式パターンを定義する方法について説明します。サンプルの範囲にカスタムの日時または 10 進数形式を設定するでは、API を使用して書式パターンを設定する方法を示しています。形式の実際のレンダリングは、スプレッドシートの locale によって異なります。このガイドでは、localeen_US であることを前提としています。スプレッドシートの locale を確認するには、spreadsheets.get リクエストを使用して SpreadsheetProperties を読み取ります。

日付と時刻の値について

Google スプレッドシートでは、他のほとんどのスプレッドシート アプリケーションと同様に、日付と時刻の値を 10 進数として扱います。これにより、数式でそれらに対して算術を実行できるため、日または週の増分、2 つの日時の加算または減算、その他の同様の操作を行うことができます。

スプレッドシートでは、スプレッドシートで一般的に使用されるエポック日の形式を使用します。値の整数部分(小数点の左側)は、1899 年 12 月 30 日からの日数を数えます。小数部(小数点の右側)は、時間を 1 日の小数としてカウントします。たとえば、1900 年 1 月 1 日正午は 2.5、1899 年 12 月 30 日から 2 日後であるため 2、正午が半日であるため 0.5 です。1900 年 2 月 1 日午後 3 時は 33.625 です。

スプレッドシートでは、1900 年をうるう年ではなく一般的な年として正しく扱います。

日付と時刻の表示形式パターン

日時形式パターンはトークン部分文字列の文字列で、解析時に対応する日時要素(月や時間など)に置き換えられます。

日付と時刻形式のトークン

次の表に、日時形式パターンで使用できるトークン部分文字列の定義を示します。+ 文字は、前の文字が 1 回以上出現し、パターンに一致することを示します。以下の表に記載されていない文字はリテラルとして扱われ、変更されずに出力されます。

トークン 説明
h 時間帯。AM または PM のインジケーターが文字列に含まれるかどうかに応じて、12 時間形式と 24 時間形式を切り替えます。
hh+ 前と同じですが、1 ~ 9 の前に 0 が付きます。
m 前の非リテラル トークンが「時間」または次のトークンが秒の場合は、時間内の分を表します(先頭に 0 は付けません)。それ以外の場合は、月を数字で表します(先頭に 0 は付けません)。
M 月(先頭に 0 は付けません)。このトークンは、パターンに 1 分ではなく 1 か月と明示するために使用します。
mm m と同じですが、どちらの場合も先頭に 0 が付きます。
MM 先頭に 0 が付いた月。このトークンは、パターンに 1 分ではなく 1 か月と明示するために使用します。
mmm 3 文字の月の略語(例: 「Feb」)。
mmmm 完全な月の名前。mmmmmm+ もこれと一致します。
mmmmm 月の最初の文字(たとえば、6 月を表す「J」)。
s 秒。先頭に 0 は付けません。
ss 秒(先頭に 0 を付けます)。
[h+] ある期間の経過時間数。文字数は最小桁数を示します(先頭に 0 が追加されます)。
[m+] ある期間の経過時間(分)。文字数は最小桁数を示します(先頭に 0 が追加されます)。
[s+] 期間の経過秒数。文字数は最小桁数を示します(先頭に 0 が追加されます)。
d 日(10 未満の数値の前に 0 を付けない)。
dd 日。10 未満の数字の前に 0 を付けます。
ddd 曜日。3 文字の略語(「Mon」など)。
dddd+ 曜日(フルネーム)。
y 2 桁の年。
yy
yyy 4 桁の年。
yyyy+
a/p 午前の場合は「a」、午後の場合は「p」を表示します。また、時間を 12 時間形式に変更します。トークン文字が大文字の場合は、出力も大文字になります。
am/pm 上記と同じですが、代わりに「AM」または「PM」と表示され、常に大文字で表記されます。
0 0.0 分の 1 秒です。00 を使用すると 2 桁に、000 を使用すると 3 桁(ミリ秒)に精度を上げることができます。
\ 次の文字をリテラル値として扱い、特別な意味を持つことはありません。
"text" 引用符で囲まれたテキストをすべてリテラルとして表示します。

日付と時刻の形式の例

次の表に、日時が Tuesday, April 5, 2016, 4:08:53.528 PM の場合のパターンの例と、それに対応する日時レンダリングを示します。表の 2 番目のセクションは、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 時 8 分
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 2016/04/05 火曜日 16:08
経過時間のパターン 3 hours, 13 minutes, 41.255 seconds
[hh]:[mm]:[ss].000 03:13:41.255
[mmmm]:[ss].000 0193:41.255

数値の表示形式パターン

数値形式パターンは、解析時に対応する数値表現に置き換えられるトークン部分文字列の文字列です。数値の表示形式パターンは、セミコロンで区切られた最大 4 つのセクションで構成されます。これらのセクションは、正の数、負の数、ゼロ、テキストに使用される形式を(この順序で)個別に定義します。

[POSITIVE FORMAT];[NEGATIVE FORMAT];[ZERO FORMAT];[TEXT FORMAT]

1 つのフォーマットに 4 つのセクションすべてを含める必要はありません。セクションを 1 つだけ含めると、その形式はすべての値に使用されます。2 つのセクションを使用すると、最初の表示形式がゼロと正の数に適用され、2 番目の表示形式が負の数に適用されます。3 つのセクションを使用すると、正の数、負の数、ゼロの数値に対して個別の表示形式を定義できます。次に例を示します。

[NUMBER FORMAT]
[POSITIVE/ZERO FORMAT];[NEGATIVE FORMAT]
[POSITIVE FORMAT];[NEGATIVE FORMAT];[ZERO FORMAT]

ただし、2 つ以上のセクションがあり、最後のセクションがテキスト形式の場合、そのセクションはテキスト形式として扱われ、残りのセクションは 1 つしかない場合と同様に動作します。したがって、最終的なテキスト形式を含めることで、次のような形式を定義できます。

[POSITIVE/ZERO FORMAT];[NEGATIVE FORMAT];[TEXT FORMAT]
[NUMBER FORMAT];[TEXT FORMAT]

セクションへの形式の解析は他の解析の前に行われるため、セクションの 1 つとして日付形式や時刻形式を含めることは可能です(ただし、実用性は限定的です)。

数値形式トークン

次の表は、セクションの値を表現する方法を定義するために、形式セクションで使用できるトークン部分文字列を定義しています。

トークン 説明
0 数値の数字を表します。数字が意味のない 0 の場合は、0 としてレンダリングされます。たとえば、数値形式 00.0 は、数値 3 を「03.0」としてレンダリングします。
# 数値の数字を表します。数字が意味のない 0 の場合、レンダリングされません。たとえば、数値形式 ##0 は、数値 12 を「12」としてレンダリングします。
? 数値の数字を表します。数字が意味のない 0 である場合、スペースとしてレンダリングされます。これは、固定幅フォントを使用するときに、列内の小数点を揃えるためによく使用されます。たとえば、数値形式 ???.??? は、数値 12.4 を「 12.4 」としてレンダリングします。
. 最初のピリオドは数値の小数点を表します。それ以降のピリオドはリテラルとしてレンダリングされます。表示形式に小数点を含めると、整数の場合でも小数点以下が常にレンダリングされます。たとえば、#0.# は数値 3 を「3.」としてレンダリングします。
% リテラルとして表示されますが、パーセンテージを読みやすくするために既存の数値に 100 を乗算してからレンダリングします。たとえば、数値形式 #% は、数値 0.25 を「25%」としてレンダリングします。
, 2 桁の文字(0#?)の間に存在する場合は、グループ化の区切り記号(1,000 単位でグループ化)を使用して数値全体を表示します。数字が数字の後に続くと、カンマごとに 1,000 ずつ数字がスケーリングされます(たとえば、#0.0,, という形式では、数値 12,200,000 は 12.2 とレンダリングされます)。
E- 数値を科学的な形式でレンダリングします。E の左側の書式は非指数部分に、E の右側の書式は指数部分に使用されます。E+ は正の指数に対して + 記号を示します。E- は負の指数の記号のみを表示します。小文字を使用した場合、出力 e も小文字になります。たとえば、数値形式 ##0.00#E+## は、数値 0.0000001 を「100.00E-9」としてレンダリングします。
E+
e-
e+
/ 2 桁の文字(0#?)の間に存在する場合、これらの数字グループを小数形式で扱います。たとえば、数値形式 0 #/# は、数値 23.25 を 23 1/4 としてレンダリングします。分母をリテラル整数にすることもできます。その場合は、その整数が分母になります。数値形式 0 #/8 では、数値 23.25 が 23 2/8 と表示されます。分子が 0 になると、小数部はレンダリングされません。数値形式 0 #/3 の数値 23.1 は、23 としてレンダリングされます(0.1 は 0/3 に丸められるため)。/ は、科学形式または小数点が含まれる形式と互換性がありません。
* これは、Microsoft Excel の数値形式との互換性を確保するために組み込まれています。現在無視されています。
_ アンダースコアトークンは次の文字をスキップしてスペースを表示します。これは、負の値がかっこで囲まれている数値形式を揃えるために使用されます。
\ 次の文字をリテラル値として扱い、特別な意味を持つことはありません。たとえば、数値形式 \#0 は、数値 10 を「#10」としてレンダリングします。
"text" 引用符で囲まれたテキストをすべてリテラルとして表示します。
@ セルにテキスト入力がある場合は、セルの生のテキストが挿入されます。他の特殊文字と互換性がなく、数値(一般的な形式として表示されます)には表示されません。
$ - + ( ) : space スプレッドシートでは、これらの文字はリテラルとして扱われ、変更されずに表示されます。

Meta の手順

また、各形式セクションには、形式の前に追加の手順を提供するオプションのメタ命令を [] 文字で囲むことができます。メタ命令には 2 つのタイプがあり、1 つのセクションで両方を使用できます。

手順 説明
[condition] セクションのデフォルトの正、負、ゼロの比較を別の条件式に置き換えます。たとえば、[<100]”Low”;[>1000]”High”;000 は、値が 100 未満の場合は「低」、1,000 を超える場合は「高」、その間にある値の場合は 3 桁の数字(先頭に 0)をレンダリングします。条件は最初の 2 つのサブ形式にのみ適用でき、数値が 2 つ以上一致する場合は、最初に一致したものが使用されます。3 つ目の書式がある場合は、「その他すべて」に使用されます。いずれかの書式と一致しない場合、数値はセル幅いっぱいに「#」で表示されます。存在する場合は、4 番目の形式が常にテキストに使用されます。
[Color] or [Color#] このサブフォーマットでレンダリングされる値が、指定されたテキスト色で表示されます。Color の有効な値は、黒、青、シアン、緑、マゼンタ、赤、白、黄です。Color# の「#」の有効な値は 0 ~ 56 です(このカラーパレットには、各数値に対応する色の一覧が示されています)。数値形式の色は、ユーザーがセルに入力した色をオーバーライドしますが、条件付き書式で設定された色はオーバーライドされません。

数値形式の例

次の表に、パターンの例と、それに対応する書式設定された数値のレンダリングを示します。

Number パターン 書式設定された値
12,345.125 ####.# 12,345.1
12.34 000.0000 012.3400
12 #.0# 12.0
5,125 # ???/??? 5.5
12000 #,### 12,000
1230000 0.0,,"M" 120 万以上
1234500000 0.00e+00 1.23e+09
123114.15115
MyText
###0.000;"TEXT: "_(@_) 123114.151
テキスト: MyText
1234
~ 1234
0
MyText
[Blue]#,##0;[Red]#,##0;[Green]0.0;[Magenta]_(@_) 1,234
1,234
0.0
MyText
1,005
32
527
[>1000]"HIGH";[Color43][<=200]"LOW";0000

0527