Sample code for 30+ languages & platforms
Zig

Google Sheets Conditional Formatting - Color Gradient

See more Google Sheets Examples

Add a conditional color gradient across a row

Chilkat Zig Downloads

Zig
const std = @import("std");
const chilkat = @import("chilkat");

pub fn main(init: std.process.Init) !void {
    const alloc = init.arena.allocator();

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    const http = try chilkat.Http.init();
    defer http.deinit();

    // Implements the following CURL command:

    // curl -H "Content-Type: application/json" \
    //    -H "Authorization: Bearer ACCESS_TOKEN" \
    //    -X POST \
    //    -d '{
    //   "requests": [
    //     {
    //       "addConditionalFormatRule": {
    //         "rule": {
    //           "ranges": [
    //             {
    //               "sheetId": sheetId,
    //               "startRowIndex": 9,
    //               "endRowIndex": 10,
    //             }
    //           ],
    //           "gradientRule": {
    //             "minpoint": {
    //               "color": {
    //                 "green": 0.2,
    //                 "red": 0.8
    //               },
    //               "type": "MIN"
    //             },
    //             "maxpoint": {
    //               "color": {
    //                 "green": 0.9
    //               },
    //               "type": "MAX"
    //             },
    //           }
    //         },
    //         "index": 0
    //       }
    //     },
    //     {
    //       "addConditionalFormatRule": {
    //         "rule": {
    //           "ranges": [
    //             {
    //               "sheetId": sheetId,
    //               "startRowIndex": 10,
    //               "endRowIndex": 11,
    //             }
    //           ],
    //           "gradientRule": {
    //             "minpoint": {
    //               "color": {
    //                 "green": 0.8,
    //                 "red": 0.8
    //               },
    //               "type": "NUMBER",
    //               "value": "0"
    //             },
    //             "maxpoint": {
    //               "color": {
    //                 "blue": 0.9,
    //                 "green": 0.5,
    //                 "red": 0.5
    //               },
    //               "type": "NUMBER",
    //               "value": "256"
    //             },
    //           }
    //         },
    //         "index": 1
    //       }
    //     },
    //   ]
    // }' https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate

    // Use the following online tool to generate HTTP code from a CURL command
    // Convert a cURL Command to HTTP Source Code

    // Use this online tool to generate code from sample JSON:
    // Generate Code to Create JSON

    // The following JSON is sent in the request body.

    // {
    //   "requests": [
    //     {
    //       "addConditionalFormatRule": {
    //         "rule": {
    //           "ranges": [
    //             {
    //               "sheetId": sheetId,
    //               "startRowIndex": 9,
    //               "endRowIndex": 10
    //             }
    //           ],
    //           "gradientRule": {
    //             "minpoint": {
    //               "color": {
    //                 "green": 0.2,
    //                 "red": 0.8
    //               },
    //               "type": "MIN"
    //             },
    //             "maxpoint": {
    //               "color": {
    //                 "green": 0.9
    //               },
    //               "type": "MAX"
    //             }
    //           }
    //         },
    //         "index": 0
    //       }
    //     },
    //     {
    //       "addConditionalFormatRule": {
    //         "rule": {
    //           "ranges": [
    //             {
    //               "sheetId": sheetId,
    //               "startRowIndex": 10,
    //               "endRowIndex": 11
    //             }
    //           ],
    //           "gradientRule": {
    //             "minpoint": {
    //               "color": {
    //                 "green": 0.8,
    //                 "red": 0.8
    //               },
    //               "type": "NUMBER",
    //               "value": "0"
    //             },
    //             "maxpoint": {
    //               "color": {
    //                 "blue": 0.9,
    //                 "green": 0.5,
    //                 "red": 0.5
    //               },
    //               "type": "NUMBER",
    //               "value": "256"
    //             }
    //           }
    //         },
    //         "index": 1
    //       }
    //     }
    //   ]
    // }

    const sheet_id = "YOUR_SHEET_ID";

    const json = try chilkat.JsonObject.init();
    defer json.deinit();
    json.updateString("requests[0].addConditionalFormatRule.rule.ranges[0].sheetId", sheet_id) catch {};
    json.updateInt("requests[0].addConditionalFormatRule.rule.ranges[0].startRowIndex", 9) catch {};
    json.updateInt("requests[0].addConditionalFormatRule.rule.ranges[0].endRowIndex", 10) catch {};
    json.updateNumber("requests[0].addConditionalFormatRule.rule.gradientRule.minpoint.color.green", "0.2") catch {};
    json.updateNumber("requests[0].addConditionalFormatRule.rule.gradientRule.minpoint.color.red", "0.8") catch {};
    json.updateString("requests[0].addConditionalFormatRule.rule.gradientRule.minpoint.type", "MIN") catch {};
    json.updateNumber("requests[0].addConditionalFormatRule.rule.gradientRule.maxpoint.color.green", "0.9") catch {};
    json.updateString("requests[0].addConditionalFormatRule.rule.gradientRule.maxpoint.type", "MAX") catch {};
    json.updateInt("requests[0].addConditionalFormatRule.index", 0) catch {};
    json.updateString("requests[1].addConditionalFormatRule.rule.ranges[0].sheetId", sheet_id) catch {};
    json.updateInt("requests[1].addConditionalFormatRule.rule.ranges[0].startRowIndex", 10) catch {};
    json.updateInt("requests[1].addConditionalFormatRule.rule.ranges[0].endRowIndex", 11) catch {};
    json.updateNumber("requests[1].addConditionalFormatRule.rule.gradientRule.minpoint.color.green", "0.8") catch {};
    json.updateNumber("requests[1].addConditionalFormatRule.rule.gradientRule.minpoint.color.red", "0.8") catch {};
    json.updateString("requests[1].addConditionalFormatRule.rule.gradientRule.minpoint.type", "NUMBER") catch {};
    json.updateString("requests[1].addConditionalFormatRule.rule.gradientRule.minpoint.value", "0") catch {};
    json.updateNumber("requests[1].addConditionalFormatRule.rule.gradientRule.maxpoint.color.blue", "0.9") catch {};
    json.updateNumber("requests[1].addConditionalFormatRule.rule.gradientRule.maxpoint.color.green", "0.5") catch {};
    json.updateNumber("requests[1].addConditionalFormatRule.rule.gradientRule.maxpoint.color.red", "0.5") catch {};
    json.updateString("requests[1].addConditionalFormatRule.rule.gradientRule.maxpoint.type", "NUMBER") catch {};
    json.updateString("requests[1].addConditionalFormatRule.rule.gradientRule.maxpoint.value", "256") catch {};
    json.updateInt("requests[1].addConditionalFormatRule.index", 1) catch {};

    // Adds the "Authorization: Bearer ACCESS_TOKEN" header.
    http.setAuthToken("ACCESS_TOKEN");
    http.setRequestHeader("Content-Type", "application/json");

    const resp = try chilkat.HttpResponse.init();
    defer resp.deinit();
    http.httpJson("POST", "https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}:batchUpdate", json, "application/json", resp) catch {
        std.debug.print("{s}\n", .{try http.getLastErrorText(alloc)});
        return;
    };

    std.debug.print("Status code: {d}\n", .{resp.getStatusCode()});
    std.debug.print("Response body:\n", .{});
    std.debug.print("{s}\n", .{try resp.getBodyStr(alloc)});
}