Unicode C++
Unicode C++
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 Unicode C++ Downloads
#include <CkJsonObjectW.h>
#include <CkHttpW.h>
#include <CkHttpResponseW.h>
void ChilkatSample(void)
{
bool success = false;
// 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..
CkJsonObjectW jsonToken;
success = jsonToken.LoadFile(L"qa_data/tokens/googleSheets.json");
if (jsonToken.HasMember(L"access_token") == false) {
wprintf(L"No access token found.\n");
return;
}
CkHttpW http;
http.put_AuthToken(jsonToken.stringOf(L"access_token"));
// First get the cells in the range A1:B5
http.SetUrlVar(L"range",L"Sheet1!A1:B5");
http.SetUrlVar(L"spreadsheetId",L"1_SO2L-Y6nCayNpNppJLF0r9yHB2UnaCleGCKeE4O0SA");
const wchar_t *jsonResponse = http.quickGetStr(L"https://sheets.googleapis.com/v4/spreadsheets/{$spreadsheetId}/values/{$range}");
if (http.get_LastMethodSuccess() == false) {
wprintf(L"%s\n",http.lastErrorText());
return;
}
wprintf(L"%s\n",jsonResponse);
CkJsonObjectW json;
json.put_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.put_I(3);
json.put_J(1);
json.UpdateString(L"values[i][j]",L"$120");
json.put_I(4);
json.UpdateString(L"values[i][j]",L"$155.50");
// Show the updated JSON.
wprintf(L"%s\n",json.emit());
// Update the Google Sheet using a PUT request.
json.put_EmitCompact(true);
const wchar_t *urlToUpdate = L"https://sheets.googleapis.com/v4/spreadsheets/{$spreadsheetId}/values/{$range}?valueInputOption=USER_ENTERED";
const wchar_t *xyz = http.quickGetStr(urlToUpdate);
CkHttpResponseW resp;
success = http.HttpJson(L"PUT",urlToUpdate,json,L"application/json",resp);
if (success == false) {
wprintf(L"%s\n",http.lastErrorText());
return;
}
// Examine the response..
wprintf(L"response status code = %d\n",resp.get_StatusCode());
wprintf(L"response body:\n");
wprintf(L"%s\n",resp.bodyStr());
// A sample response body:
// {
// "spreadsheetId": "1_SO2L-Y6nCayNpNppJLF0r9yHB2UnaCleGCKeE4O0SA",
// "updatedRange": "Sheet1!A1:B5",
// "updatedRows": 5,
// "updatedColumns": 2,
// "updatedCells": 10
// }
}