日付と数値の形式

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

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

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

日付と時刻の値について

他のほとんどのスプレッドシート アプリケーションと同様に、スプレッドシートでは日付と時刻の値は小数値として扱われます。これにより、数式で演算を実行できるため、日数や週数を増やす、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 前のリテラル以外のトークンが時間で、次のトークンが秒の場合、それは 1 時間の分を表します(先頭の 0 なし)。それ以外の場合は、月を数値(先頭にゼロなし)で表します。
M 先頭にゼロを付けない月。このトークンを使用すると、パターンで分ではなく月を明示的に指定できます。
mm m と同じですが、どちらの場合も先頭に 0 が付いています。
MM 先頭にゼロが付いた月。このトークンを使用すると、パターンで分ではなく月を明示的に指定できます。
mmm 月の 3 文字の省略表記(例: Feb)。
mmmm 完全な月の名前。mmmmmm+ もこれに一致します。
mmmmm 月の最初の文字(6 月の場合は「J」など)。
s 秒(先頭にゼロは付けません)。
ss 秒(先頭にゼロが付いた数字)。
[h+] 期間内の経過時間(時間単位)。文字数は、最小桁数を示します(先頭に 0 が追加されます)。
[m+] 期間の経過時間(分)。文字数は、最小桁数を示します(先頭に 0 が追加されます)。
[s+] 期間の経過秒数。文字数は、最小桁数を示します(先頭に 0 が追加されます)。
d 月内の日付(10 未満の数字には先頭にゼロを付けない)。
dd 月内の日付(10 未満の数字には先頭にゼロが付きます)。
ddd 曜日の 3 文字の省略形(例: Mon)。
dddd+ 曜日(フルネーム)。
y 2 桁の年。
yy
yyy 4 桁の年。
yyyy+
a/p 午前の場合は「a」、午後の場合は「p」を表示します。また、時刻を 12 時間形式に変更します。トークンの文字が大文字の場合、出力も大文字になります。
am/pm 上記と同じですが、「AM」または「PM」と表示されます。常に大文字で表示されます。
0 10 分の 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 p
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 年 4 月 5 日(火)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]

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 数値内の 1 桁です。桁が無効な 0 の場合、0 としてレンダリングされます。たとえば、数値形式 00.0 は、数値 3 を「03.0」としてレンダリングします。
# 数値内の 1 桁です。桁が無効な 0 の場合、レンダリングされません。たとえば、数値形式 ##0 は、数値 12 を「12」としてレンダリングします。
? 数値内の 1 桁です。桁が無効な 0 の場合は、空白としてレンダリングされます。これは、固定幅フォントを使用するときに、列の小数点を揃えるためによく使用されます。たとえば、数値の表示形式 ???.??? は、数値 12.4 を「12.4」とレンダリングします。
. 最初のピリオドは、数値の小数点を表します。その後のピリオドはリテラルとしてレンダリングされます。形式に小数点を含めると、整数であっても常に小数点がレンダリングされます。たとえば、#0.# は数値 3 を「3.」としてレンダリングします。
% リテラルとして表示されますが、既存の数値はレンダリング前に 100 倍されるため、パーセンテージを読みやすくします。たとえば、数値の書式 #% は、数値 0.25 を「25%」としてレンダリングします。
, 2 桁の文字(0#?)の間に表示される場合は、数値全体がグループ化区切り文字(千単位のグループ化)でレンダリングされます。数字の後に続く場合は、カンマごとに 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 スプレッドシートでは、これらの文字はリテラルとして扱われ、変更されずに表示されます。

メタに関する手順

さらに、各形式セクションには、形式の前に追加の手順を指定するオプションのメタ インストラクション([] 文字で囲む)を含めることができます。メタ命令には 2 つのタイプがあり、特定のセクションでは両方を使用できます。

手順 説明
[condition] セクションのデフォルトの正、負、ゼロの比較を別の条件式に置き換えます。たとえば、[<100]”Low”;[>1000]”High”;000 は、100 未満の値には「低」、1,000 を超える値には「高」、それ以外の値には 3 桁の数字(先頭に 0 が付く)をレンダリングします。条件は最初の 2 つのサブフォーマットにのみ適用できます。数値が複数のサブフォーマットと一致する場合は、最初に一致したサブフォーマットが使用されます。3 つ目の形式がある場合は、それ以外の値に使用されます。それ以外の場合、数値がどちらの形式にも一致しない場合、セルの幅全体が「#」で埋め尽くされるようにレンダリングされます。存在する場合、テキストには常に 4 番目の形式が使用されます。
[Color] or [Color#] このサブフォーマットでレンダリングされる値を、指定したテキスト色で表示します。Color の有効な値は、Black、Blue、Cyan、Green、Magenta、Red、White、Yellow です。Color# の「#」の有効な値は 1 ~ 56 です(このカラーパレットには、各番号に対応する色のリストが表示されます)。数値形式の色は、セルにユーザーが入力した色をオーバーライドしますが、条件付き書式で設定された色はオーバーライドしません。

数値形式の例

次の表に、パターンの例と、それぞれフォーマットされた数値の表示を示します。

数値 パターン 書式設定された値
12345.125 ####.# 12345.1
12.34 000.0000 012.3400
12 #.0# 12.0
5.125 # ???/??? 5 1/8
12000 #,### 12,000
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