このドキュメントでは、spreadsheets.values リソースの基本的な使用方法について説明します。
スプレッドシートには複数のシートを含めることができ、各シートには任意の数の行または列を含めることができます。セルは、特定の行と列が交差する位置であり、データ値が含まれている場合があります。Google Sheets API は、値の読み取りと書き込みを可能にする spreadsheets.values リソースを提供します。
シートに行を挿入したり、書式設定やその他のプロパティを更新したりする必要がある場合は、スプレッドシートを更新するで説明されているように、spreadsheets リソースの batchUpdate メソッドを使用する必要があります。
リソース メソッド
spreadsheets.values リソースは、特定タスクの値を読み書きするための次のメソッドを提供します。
| 範囲アクセス | 読書 | 文章作成 |
|---|---|---|
| 単一範囲 | spreadsheets.values.get |
spreadsheets.values.update |
| 複数の範囲 | spreadsheets.values.batchGet |
spreadsheets.values.batchUpdate |
| 追加する | spreadsheets.values.append |
一般に、複数の読み取りまたは更新を batchGet メソッドと batchUpdate メソッド(それぞれ)で組み合わせると、効率が向上するため、おすすめです。
これらの各メソッドのコードサンプルは、基本的な読み取りと基本的な書き込みのサンプルページで確認できます。すべてのコードサンプルについては、サンプル概要ページをご覧ください。
セルの値を読み取る
シートからデータ値を読み取るには、スプレッドシート ID と範囲の A1 表記が必要です。シート ID(A1:B2)を指定せずに範囲を指定すると、リクエストはスプレッドシートの最初のシートで実行されます。スプレッドシート ID と A1 形式の詳細については、Google Sheets API の概要をご覧ください。
いくつかのオプションのクエリ パラメータで、出力の形式を制御します。
| Format パラメータ | デフォルト値 |
|---|---|
majorDimension |
行 |
valueRenderOption |
FORMATTED_VALUE |
dateTimeRenderOption |
SERIAL_NUMBER |
valueRenderOption が FORMATTED_VALUE でない場合にのみ dateTimeRenderOption を使用してください。
返されるデータ量に明確な上限はありません。エラーはデータを返しません。末尾の空の行と列は省略されます。
単一取得メソッドとバッチ取得メソッドについては、以降のセクションで説明します。基本的な読み取りオペレーションのコードサンプルについては、基本的な読み取りをご覧ください。
単一の範囲から値を読み取る
スプレッドシートから単一の値の範囲を読み取るには、spreadsheets.values.get リクエストを使用します。
Apps Script
Java
JavaScript
Node.js
PHP
Python
Ruby
このリクエストへのレスポンスは、spreadsheets.values リソースの一部である ValueRange オブジェクトとして返されます。
複数の範囲から値を読み取る
スプレッドシートから複数の不連続な値の範囲を読み取るには、取得する範囲を複数指定できる spreadsheets.values.batchGet リクエストを使用します。
Apps Script
Java
JavaScript
Node.js
PHP
Python
Ruby
このリクエストに対するレスポンスは、spreadsheetId と ValueRange オブジェクトのリストを含む BatchGetValuesResponse オブジェクトとして返されます。
セル値を書き込む
シートに書き込むには、スプレッドシート ID、A1 表記のセル範囲、適切なリクエスト本文オブジェクト内に書き込むデータが必要です。スプレッドシート ID と A1 形式について詳しくは、 Google Sheets API の概要をご覧ください。
いくつかのクエリ パラメータは、データの書き込み方法とレスポンスの形式を制御します。
| 書き込みパラメータ | デフォルト値 |
|---|---|
valueInputOption |
(必須) |
includeValuesInResponse |
false |
responseValueRenderOption |
FORMATTED_VALUE |
responseDateTimeRenderOption |
SERIAL_NUMBER |
必須の valueInputOption パラメータは、入力データの解釈方法を制御します。(一括更新の場合、このパラメータはリクエスト本文で指定します)。サポートされているオプションは次の表のとおりです。
ValueInputOption |
説明 |
|---|---|
RAW |
入力は解析されず、文字列として挿入されます。たとえば、「=1+2」と入力すると、数式ではなく文字列「=1+2」がセルに配置されます。(ブール値や数値などの文字列以外の値は、常に RAW として処理されます)。 |
USER_ENTERED |
入力は、スプレッドシートの UI に入力された場合とまったく同じように解析されます。たとえば、「2016 年 3 月 1 日」は日付に、「=1+2」は数式になります。形式は推測することもできます。たとえば、「$100.15」は通貨形式の数値になります。 |
responseValueRenderOption が FORMATTED_VALUE でない場合にのみ responseDateTimeRenderOption を使用してください。
単一更新メソッドとバッチ アップデート メソッドについては、以降のセクションで説明します。基本的な書き込みオペレーションのコードサンプルについては、基本的な書き込みをご覧ください。
単一の範囲に値を書き込む
単一の範囲にデータを書き込むには、spreadsheets.values.update リクエストを使用します。
Apps Script
Java
JavaScript
Node.js
PHP
Python
Ruby
更新リクエストの本文は ValueRange オブジェクトである必要がありますが、必須フィールドは values のみです。range を指定する場合は、URL の範囲と一致する必要があります。ValueRange で、必要に応じて majorDimension を指定できます。デフォルトでは ROWS が使用されます。COLUMNS が指定されている場合、各内部配列は行ではなく列に書き込まれます。
更新時に、データのない値はスキップされます。データをクリアするには、空の文字列("")を使用します。また、spreadsheets.values.batchClear メソッドを使用すると、複数の範囲の値を置き換えることなくクリアできます。
デベロッパー メタデータを使用している場合は、spreadsheets.values.batchGetByDataFilter、spreadsheets.values.batchUpdateByDataFilter、spreadsheets.values.batchClearByDataFilter メソッドを使用して値を読み取り、更新、クリアするデータフィルタの使用方法については、デベロッパー メタデータ ガイドをご覧ください。
複数の範囲に値を書き込む
複数の連続しない範囲を書き込む場合は、spreadsheets.values.batchUpdate リクエストを使用できます。
Apps Script
Java
JavaScript
Node.js
PHP
Python
Ruby
バッチ アップデート リクエストの本文は、ValueInputOption と ValueRange オブジェクトのリスト(書き込まれた範囲ごとに 1 つ)を含む BatchUpdateValuesRequest オブジェクトである必要があります。各 ValueRange オブジェクトは、独自の range、majorDimension、入力データを指定します。
値を追加する
シート内のデータのテーブルの後にデータを追加するには、spreadsheets.values.append リクエストを使用します。
Apps Script
Java
JavaScript
Node.js
PHP
Python
Ruby
更新リクエストの本文は ValueRange オブジェクトである必要がありますが、必須フィールドは values のみです。range を指定する場合は、URL の範囲と一致する必要があります。ValueRange で、必要に応じて majorDimension を指定できます。デフォルトでは ROWS が使用されます。COLUMNS が指定されている場合、各内部配列は行ではなく列に書き込まれます。
入力範囲は、既存のデータを検索し、その範囲内の「テーブル」を見つけるために使用されます。値は、テーブルの先頭列から、テーブルの次の行に追加されます。たとえば、次のような Sheet1 を考えます。
| A | B | C | D | E | |
| 1 | x | y | z | ||
| 2 | x | y | z | ||
| 3 | |||||
| 4 | x | y | |||
| 5 | y | z | |||
| 6 | x | y | z | ||
| 7 |
シートには、A1:C2 と B4:D6 の 2 つのテーブルがあります。追加された値は、次のすべての range 入力で B7 から始まります。
Sheet1。シート内のすべてのデータが検査され、B4:D6のテーブルが最後のテーブルであると判断されるためです。B4またはC5:D5。どちらもB4:D6テーブルに存在するためです。B2:D4。範囲内の最後のテーブルはB4:D6テーブルであるため(A1:C2テーブルも含まれていますが)。A3:G10。範囲内の最後のテーブルはB4:D6テーブルであるため(開始はそれより前で、終了はそれより後ですが)。
次の range 入力では、B7 での書き込みは開始されません。
A1はA3から書き込みを開始します。これはA1:C2テーブルにあるためです。E4はどのテーブルにもないため、E4で書き込みを開始します。(A4も同じ理由でA4での書き込みを開始します)。
また、テーブルを上書きするか、新しいデータの新しい行を挿入するかを選択することもできます。デフォルトでは、入力はテーブルの後のデータを上書きします。新しいデータを新しい行に書き込むには、InsertDataOption を使用して insertDataOption=INSERT_ROWS を指定します。
スプレッドシートのセル数と行数の上限について詳しくは、Google ドライブに保存可能なファイルをご覧ください。