Google Sheets API を使用すると、セル、範囲、範囲のセット、シート全体に値と数式を書き込むことができます。このページの例では、Sheets API の
spreadsheets.values
リソースを使用して、一般的な書き込みオペレーションを行う方法を示します。
なお、
spreadsheet.batchUpdate
メソッドを使用してセル値を書き込むこともできます。これは、セル形式
や
spreadsheets.values
リソースでは影響しないその他のプロパティを同時に更新する場合に便利です。たとえば、セル数式とセル
形式の両方を上書きしながら、あるシートから別のシートにセルの範囲をコピーする場合は、
UpdateCellsRequest
メソッドを
spreadsheet.batchUpdateで使用します。
ただし、単純な値の書き込みの場合は、
spreadsheets.values.update
メソッドまたは
spreadsheets.values.batchUpdate
メソッドを使用する方が簡単です。
これらの例は、言語に依存しない HTTP リクエストの形式で示されています。Google API クライアント ライブラリを使用してさまざまな言語で書き込みを実装する方法については、セル値の読み取りと書き込みをご覧ください。
以下の例では、プレースホルダ SPREADSHEET_ID は、
スプレッドシート ID を指定する場所を示します。スプレッドシート ID は
スプレッドシートの URL から確認できます。書き込み先の範囲は、A1
形式で指定します。範囲の例は Sheet1!A1:D5 です。
単一の範囲に書き込む
新しい空白のスプレッドシートから開始して、次の
spreadsheets.values.update
コードサンプルは、範囲に値を書き込む方法を示しています。
ValueInputOption クエリ
パラメータは必須であり、書き込まれた値が解析されるかどうか(
文字列が日付に変換されるかどうかなど)を決定します。
リクエストの本文は、書き込む範囲の値を記述する
ValueRange
オブジェクトです。
majorDimension フィールド
は、配列が行ごとに整理された値のリストであることを示します。ターゲット範囲の既存の値は上書きされます。
リクエスト プロトコルを以下に示します。
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!A1:D5?valueInputOption=VALUE_INPUT_OPTION{
"range": "Sheet1!A1:D5",
"majorDimension": "ROWS",
"values": [
["Item", "Cost", "Stocked", "Ship Date"],
["Wheel", "$20.50", "4", "3/1/2016"],
["Door", "$15", "2", "3/15/2016"],
["Engine", "$100", "1", "3/20/2016"],
["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"]
],
}レスポンスは、次のような
UpdateValuesResponse
オブジェクトで構成されます。
{
"spreadsheetId": SPREADSHEET_ID,
"updatedRange": "Sheet1!A1:D5",
"updatedRows": 5,
"updatedColumns": 4,
"updatedCells": 20,
}結果のシートは次のようになります。
| A | B | C | D | |
| 1 | 項目 | 費用 | 在庫 | 発送日 |
| 2 | ホイール | $20.50 | 4 | 2016 年 3 月 1 日 |
| 3 | ドア | $15 | 2 | 2016 年 3 月 15 日 |
| 4 | エンジン | $100 | 1 | 2016 年 3 月 20 日 |
| 5 | 合計 | $135.5 | 7 | 2016 年 3 月 20 日 |
範囲に選択的に書き込む
範囲に値を書き込むときに、対応する配列要素を null に設定することで、既存のセルを変更しないようにすることができます。空の文字列("")を書き込むことで、セルをクリアすることもできます。
上記の例で生成されたものと同じデータを含むシートから開始して、次の
spreadsheets.values.update
コードサンプルは、範囲 B1:D4 に値を書き込む方法を示しています。一部のセルは変更せず、他のセルはクリアします。
ValueInputOption クエリ
パラメータは必須であり、書き込まれた値が解析されるかどうか(
文字列が日付に変換されるかどうかなど)を決定します。
リクエストの本文は、書き込む範囲の値を記述する
ValueRange
オブジェクトです。
majorDimension フィールド
は、配列が列ごとに整理された値のリストであることを示します。
リクエスト プロトコルを以下に示します。
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!B1?valueInputOption=VALUE_INPUT_OPTION{
"range": "Sheet1!B1",
"majorDimension": "COLUMNS",
"values": [
[null,"$1","$2", ""],
[],
[null,"4/1/2016", "4/15/2016", ""]
]
}ここの values フィールドには、範囲内の各列に加えられた変更が一覧表示されます。最初の配列は、B1 は変更せず(null 配列要素のため)、B4 はクリアする(空の文字列)ことを示しています。B2 と B3 の値は更新されます。3 番目の配列は、列 D に対して同じオペレーションを実行します。2 番目の空の配列は、列 C を変更しないことを示します。
レスポンスは、次のような
UpdateValuesResponse
オブジェクトで構成されます。
{
"spreadsheetId": SPREADSHEET_ID,
"updatedRange": "Sheet1!B1:D5",
"updatedRows": 3,
"updatedColumns": 2,
"updatedCells": 6,
}結果のシートは次のようになります。
| A | B | C | D | |
| 1 | 項目 | 費用 | 在庫 | 発送日 |
| 2 | ホイール | $1.00 | 4 | 2016 年 4 月 1 日 |
| 3 | ドア | $2 | 2 | 2016 年 4 月 15 日 |
| 4 | エンジン | 1 | ||
| 5 | 合計 | $3.00 | 7 | 2016 年 4 月 15 日 |
このリクエストによって直接変更されるわけではありませんが、「合計」行は、変更されたセルに依存する数式がセルに含まれているため、変更されます。
複数の範囲に書き込む
空白のシートから開始して、次の
spreadsheets.values.batchUpdate
コードサンプルは、範囲 Sheet1!A1:A4 と
Sheet1!B1:D2 に値を書き込む方法を示しています。ターゲット範囲の既存の値は上書きされます。リクエストの本文は、入力データの解釈方法を示す ValueInputOption オブジェクトと、書き込まれた各範囲に対応する ValueRange オブジェクトの配列で構成されます。
majorDimension フィールド
は、含まれる配列が列の配列として解釈されるか、行の配列として解釈されるかを決定します。
リクエスト プロトコルを以下に示します。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values:batchUpdate{
"valueInputOption": "VALUE_INPUT_OPTION",
"data": [
{
"range": "Sheet1!A1:A4",
"majorDimension": "COLUMNS",
"values": [
["Item", "Wheel", "Door", "Engine"]
]
},
{
"range": "Sheet1!B1:D2",
"majorDimension": "ROWS",
"values": [
["Cost", "Stocked", "Ship Date"],
["$20.50", "4", "3/1/2016"]
]
}
]
}レスポンスは、更新されたセルの統計情報を一覧表示するオブジェクト
と、
UpdateValuesResponse
オブジェクトの配列で構成されます。次に例を示します。
{
"spreadsheetId": SPREADSHEET_ID,
"totalUpdatedRows": 4,
"totalUpdatedColumns": 4,
"totalUpdatedCells": 10,
"totalUpdatedSheets": 1,
"responses": [
{
"spreadsheetId": SPREADSHEET_ID,
"updatedRange": "Sheet1!A1:A4",
"updatedRows": 4,
"updatedColumns": 1,
"updatedCells": 4,
},
{
"spreadsheetId": SPREADSHEET_ID,
"updatedRange": "Sheet1!B1:D2",
"updatedRows": 2,
"updatedColumns": 3,
"updatedCells": 6,
}
],
}結果のシートは次のようになります。
| A | B | C | D | |
| 1 | 項目 | 費用 | 在庫 | 発送日 |
| 2 | ホイール | $20.50 | 4 | 2016 年 3 月 1 日 |
| 3 | ドア | |||
| 4 | エンジン | |||
| 5 |
解析せずに値を書き込む
空白のシートから開始して、次の
spreadsheets.values.update
コードサンプルは、範囲 Sheet1!A1:E1 に値を書き込む方法を示しています。ただし、
RAW ValueInputOption
クエリ パラメータを使用して、書き込まれた文字列が数式、
ブール値、数値として解析されないようにします。文字列として表示され、シート内でテキストが均等割り付けされます。
リクエストの本文は、書き込む範囲の値を記述する
ValueRange
オブジェクトです。
majorDimension フィールド
は、配列が行ごとに整理された値のリストであることを示します。ターゲット範囲の既存の値は上書きされます。
リクエスト プロトコルを以下に示します。
PUT https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!A1:E1?valueInputOption=RAW{
"range": "Sheet1!A1:E1",
"majorDimension": "ROWS",
"values": [
["Data", 123.45, true, "=MAX(D2:D4)", "10"]
],
}レスポンスは、次のような
UpdateValuesResponse
オブジェクトで構成されます。
{
"spreadsheetId": SPREADSHEET_ID,
"updatedRange": "Sheet1!A1:E1",
"updatedRows": 1,
"updatedColumns": 5,
"updatedCells": 5,
}結果のシートは次のようになります。
| A | B | C | D | E | |
| 1 | データ | 123.45 | TRUE | =MAX(D2:D4) | 10 |
| 2 |
「TRUE」は中央揃えでブール値ですが、「123.45」は数値なので右揃え、「10」は文字列なので左揃えになります。数式は解析されず、文字列として表示されます。
値を追加する
次の表のようなシートから始めます。
| A | B | C | D | |
| 1 | 項目 | 費用 | 在庫 | 発送日 |
| 2 | ホイール | $20.50 | 4 | 2016 年 3 月 1 日 |
| 3 |
次の
spreadsheets.values.append
コードサンプルは、3 行目から始まる 2 つの新しい値の行を追加する方法を示しています。
ValueInputOption クエリ
パラメータは必須であり、書き込まれた値が解析されるかどうか(
文字列が日付に変換されるかどうかなど)を決定します。
リクエストの本文は、書き込む範囲の値を記述する
ValueRange
オブジェクトです。
majorDimension フィールド
は、配列が行ごとに整理された値のリストであることを示します。
リクエスト プロトコルを以下に示します。
POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID/values/Sheet1!A1:E1:append?valueInputOption=VALUE_INPUT_OPTION{
"range": "Sheet1!A1:E1",
"majorDimension": "ROWS",
"values": [
["Door", "$15", "2", "3/15/2016"],
["Engine", "$100", "1", "3/20/2016"],
],
}レスポンスは、次のような
AppendValuesResponse
オブジェクトで構成されます。
{
"spreadsheetId": SPREADSHEET_ID,
"tableRange": "Sheet1!A1:D2",
"updates": {
"spreadsheetId": SPREADSHEET_ID,
"updatedRange": "Sheet1!A3:D4",
"updatedRows": 2,
"updatedColumns": 4,
"updatedCells": 8,
}
}結果のシートは次のようになります。
| A | B | C | D | |
| 1 | 項目 | 費用 | 在庫 | 発送日 |
| 2 | ホイール | $20.50 | 4 | 2016 年 3 月 1 日 |
| 3 | ドア | $15 | 2 | 2016 年 3 月 15 日 |
| 4 | エンジン | $100 | 1 | 2016 年 3 月 20 日 |
| 5 |