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 <C_CkJsonObjectW.h>
#include <C_CkHttpW.h>
#include <C_CkHttpResponseW.h>
void ChilkatSample(void)
{
BOOL success;
HCkJsonObjectW jsonToken;
HCkHttpW http;
const wchar_t *jsonResponse;
HCkJsonObjectW json;
const wchar_t *urlToUpdate;
const wchar_t *xyz;
HCkHttpResponseW resp;
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..
jsonToken = CkJsonObjectW_Create();
success = CkJsonObjectW_LoadFile(jsonToken,L"qa_data/tokens/googleSheets.json");
if (CkJsonObjectW_HasMember(jsonToken,L"access_token") == FALSE) {
wprintf(L"No access token found.\n");
CkJsonObjectW_Dispose(jsonToken);
return;
}
http = CkHttpW_Create();
CkHttpW_putAuthToken(http,CkJsonObjectW_stringOf(jsonToken,L"access_token"));
// First get the cells in the range A1:B5
CkHttpW_SetUrlVar(http,L"range",L"Sheet1!A1:B5");
CkHttpW_SetUrlVar(http,L"spreadsheetId",L"1_SO2L-Y6nCayNpNppJLF0r9yHB2UnaCleGCKeE4O0SA");
jsonResponse = CkHttpW_quickGetStr(http,L"https://sheets.googleapis.com/v4/spreadsheets/{$spreadsheetId}/values/{$range}");
if (CkHttpW_getLastMethodSuccess(http) == FALSE) {
wprintf(L"%s\n",CkHttpW_lastErrorText(http));
CkJsonObjectW_Dispose(jsonToken);
CkHttpW_Dispose(http);
return;
}
wprintf(L"%s\n",jsonResponse);
json = CkJsonObjectW_Create();
CkJsonObjectW_putEmitCompact(json,FALSE);
CkJsonObjectW_Load(json,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
CkJsonObjectW_putI(json,3);
CkJsonObjectW_putJ(json,1);
CkJsonObjectW_UpdateString(json,L"values[i][j]",L"$120");
CkJsonObjectW_putI(json,4);
CkJsonObjectW_UpdateString(json,L"values[i][j]",L"$155.50");
// Show the updated JSON.
wprintf(L"%s\n",CkJsonObjectW_emit(json));
// Update the Google Sheet using a PUT request.
CkJsonObjectW_putEmitCompact(json,TRUE);
urlToUpdate = L"https://sheets.googleapis.com/v4/spreadsheets/{$spreadsheetId}/values/{$range}?valueInputOption=USER_ENTERED";
xyz = CkHttpW_quickGetStr(http,urlToUpdate);
resp = CkHttpResponseW_Create();
success = CkHttpW_HttpJson(http,L"PUT",urlToUpdate,json,L"application/json",resp);
if (success == FALSE) {
wprintf(L"%s\n",CkHttpW_lastErrorText(http));
CkJsonObjectW_Dispose(jsonToken);
CkHttpW_Dispose(http);
CkJsonObjectW_Dispose(json);
CkHttpResponseW_Dispose(resp);
return;
}
// Examine the response..
wprintf(L"response status code = %d\n",CkHttpResponseW_getStatusCode(resp));
wprintf(L"response body:\n");
wprintf(L"%s\n",CkHttpResponseW_bodyStr(resp));
// A sample response body:
// {
// "spreadsheetId": "1_SO2L-Y6nCayNpNppJLF0r9yHB2UnaCleGCKeE4O0SA",
// "updatedRange": "Sheet1!A1:B5",
// "updatedRows": 5,
// "updatedColumns": 2,
// "updatedCells": 10
// }
CkJsonObjectW_Dispose(jsonToken);
CkHttpW_Dispose(http);
CkJsonObjectW_Dispose(json);
CkHttpResponseW_Dispose(resp);
}