Swift
Swift
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 Swift Downloads
func chilkatTest() {
var success: Bool = 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..
let jsonToken = CkoJsonObject()!
success = jsonToken.loadFile(path: "qa_data/tokens/googleSheets.json")
if jsonToken.hasMember(jsonPath: "access_token") == false {
print("No access token found.")
return
}
let http = CkoHttp()!
http.authToken = jsonToken.string(of: "access_token")
// First get the cells in the range A1:B5
http.setUrlVar(name: "range", value: "Sheet1!A1:B5")
http.setUrlVar(name: "spreadsheetId", value: "1_SO2L-Y6nCayNpNppJLF0r9yHB2UnaCleGCKeE4O0SA")
var jsonResponse: String? = http.quickGetStr(url: "https://sheets.googleapis.com/v4/spreadsheets/{$spreadsheetId}/values/{$range}")
if http.lastMethodSuccess == false {
print("\(http.lastErrorText!)")
return
}
print("\(jsonResponse!)")
let json = CkoJsonObject()!
json.emitCompact = false
json.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
json.i = 3
json.j = 1
json.updateString(jsonPath: "values[i][j]", value: "$120")
json.i = 4
json.updateString(jsonPath: "values[i][j]", value: "$155.50")
// Show the updated JSON.
print("\(json.emit()!)")
// Update the Google Sheet using a PUT request.
json.emitCompact = true
var urlToUpdate: String? = "https://sheets.googleapis.com/v4/spreadsheets/{$spreadsheetId}/values/{$range}?valueInputOption=USER_ENTERED"
var xyz: String? = http.quickGetStr(url: urlToUpdate)
let resp = CkoHttpResponse()!
success = http.httpJson(verb: "PUT", url: urlToUpdate, json: json, contentType: "application/json", response: resp)
if success == false {
print("\(http.lastErrorText!)")
return
}
// Examine the response..
print("response status code = \(resp.statusCode.intValue)")
print("response body:")
print("\(resp.bodyStr!)")
// A sample response body:
// {
// "spreadsheetId": "1_SO2L-Y6nCayNpNppJLF0r9yHB2UnaCleGCKeE4O0SA",
// "updatedRange": "Sheet1!A1:B5",
// "updatedRows": 5,
// "updatedColumns": 2,
// "updatedCells": 10
// }
}