Sample code for 30+ languages & platforms
Dart Requires Chilkat v11.0.0+

Google Sheets - Update (Set Values in a Range)

See more Google Sheets Examples

Sets values in a range of a spreadsheet. This example will demonstrate by first getting a range, then changing some values in the JSON, and then HTTPS PUT the changes back to the Google Sheet.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  // This example uses a previously obtained access token having permission for the 
  // Google Sheets scope.

  // In this example, Get Google Sheets OAuth2 Access Token, the access
  // token was saved to a JSON file.  This example fetches the access token from the file..
  final jsonToken = CkJsonObject();
  jsonToken.loadFile('qa_data/tokens/googleSheets.json');
  if (!jsonToken.hasMember('access_token')) {
    print('No access token found.');
    return;
  }

  final http = CkHttp();
  http.authToken = jsonToken.stringOf('access_token');

  // First get the cells in the range A1:B5
  http.setUrlVar('range', 'Sheet1!A1:B5');
  http.setUrlVar('spreadsheetId', '1_SO2L-Y6nCayNpNppJLF0r9yHB2UnaCleGCKeE4O0SA');
  final String jsonResponse;
  try {
    jsonResponse = http.quickGetStr('https://sheets.googleapis.com/v4/spreadsheets/{\$spreadsheetId}/values/{\$range}');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  print(jsonResponse);

  final json = CkJsonObject();
  json.emitCompact = false;
  json.load(jsonResponse);

  // A sample response is shown below.

  // {
  //   "range": "Sheet1!A1:B5",
  //   "majorDimension": "ROWS",
  //   "values": [
  //     [
  //       "Item",
  //       "Cost"
  //     ],
  //     [
  //       "Wheel",
  //       "$20.50"
  //     ],
  //     [
  //       "Door",
  //       "$15"
  //     ],
  //     [
  //       "Engine",
  //       "$100"
  //     ],
  //     [
  //       "Totals",
  //       "$135.50"
  //     ]
  //   ]
  // }

  // We're going to change the cost of the Engine to $120, and the Totals to $155.50

  json.i = 3;
  json.j = 1;
  json.updateString('values[i][j]', '\$120');
  json.i = 4;
  json.updateString('values[i][j]', '\$155.50');

  // Show the updated JSON.
  print(json.emit());

  // Update the Google Sheet using a PUT request.
  json.emitCompact = true;
  final urlToUpdate = 'https://sheets.googleapis.com/v4/spreadsheets/{\$spreadsheetId}/values/{\$range}?valueInputOption=USER_ENTERED';
  final xyz = http.quickGetStr(urlToUpdate);
  final resp = CkHttpResponse();
  try {
    http.httpJson('PUT', urlToUpdate, json, 'application/json', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Examine the response..
  print('response status code = ${resp.statusCode}');
  print('response body:');
  print(resp.bodyStr);

  // A sample response body:

  // {
  //   "spreadsheetId": "1_SO2L-Y6nCayNpNppJLF0r9yHB2UnaCleGCKeE4O0SA",
  //   "updatedRange": "Sheet1!A1:B5",
  //   "updatedRows": 5,
  //   "updatedColumns": 2,
  //   "updatedCells": 10
  // }
}