基本的な表現

Google Sheets API を使用すると、セル、範囲、範囲のセット、シート全体に値や数式を書き込むことができます。このページの例では、Sheets API の spreadsheets.values リソースを使用して一般的な書き込みオペレーションを行う方法を示しています。

なお、spreadsheet.batchUpdate メソッドを使用してセル値を書き込むこともできます。これは、spreadsheets.values リソースが影響しないセルの書式設定やその他のプロパティを同時に更新する場合に便利です。たとえば、セル数式とセル書式の両方を上書きしながら、あるシートから別のシートにセル範囲をコピーする場合は、spreadsheet.batchUpdateUpdateCellsRequest メソッドを使用します。

ただし、単純な値の書き込みには、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 オブジェクトの配列(更新された範囲ごとに 1 つ)で構成されます。次に例を示します。

{
  "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 データ 12,345 万台 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