Home | History | Annotate | Download | only in dyn
      1 <html><body>
      2 <style>
      3 
      4 body, h1, h2, h3, div, span, p, pre, a {
      5   margin: 0;
      6   padding: 0;
      7   border: 0;
      8   font-weight: inherit;
      9   font-style: inherit;
     10   font-size: 100%;
     11   font-family: inherit;
     12   vertical-align: baseline;
     13 }
     14 
     15 body {
     16   font-size: 13px;
     17   padding: 1em;
     18 }
     19 
     20 h1 {
     21   font-size: 26px;
     22   margin-bottom: 1em;
     23 }
     24 
     25 h2 {
     26   font-size: 24px;
     27   margin-bottom: 1em;
     28 }
     29 
     30 h3 {
     31   font-size: 20px;
     32   margin-bottom: 1em;
     33   margin-top: 1em;
     34 }
     35 
     36 pre, code {
     37   line-height: 1.5;
     38   font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
     39 }
     40 
     41 pre {
     42   margin-top: 0.5em;
     43 }
     44 
     45 h1, h2, h3, p {
     46   font-family: Arial, sans serif;
     47 }
     48 
     49 h1, h2, h3 {
     50   border-bottom: solid #CCC 1px;
     51 }
     52 
     53 .toc_element {
     54   margin-top: 0.5em;
     55 }
     56 
     57 .firstline {
     58   margin-left: 2 em;
     59 }
     60 
     61 .method  {
     62   margin-top: 1em;
     63   border: solid 1px #CCC;
     64   padding: 1em;
     65   background: #EEE;
     66 }
     67 
     68 .details {
     69   font-weight: bold;
     70   font-size: 14px;
     71 }
     72 
     73 </style>
     74 
     75 <h1><a href="sheets_v4.html">Google Sheets API</a> . <a href="sheets_v4.spreadsheets.html">spreadsheets</a></h1>
     76 <h2>Instance Methods</h2>
     77 <p class="toc_element">
     78   <code><a href="sheets_v4.spreadsheets.sheets.html">sheets()</a></code>
     79 </p>
     80 <p class="firstline">Returns the sheets Resource.</p>
     81 
     82 <p class="toc_element">
     83   <code><a href="sheets_v4.spreadsheets.values.html">values()</a></code>
     84 </p>
     85 <p class="firstline">Returns the values Resource.</p>
     86 
     87 <p class="toc_element">
     88   <code><a href="#batchUpdate">batchUpdate(spreadsheetId, body, x__xgafv=None)</a></code></p>
     89 <p class="firstline">Applies one or more updates to the spreadsheet.</p>
     90 <p class="toc_element">
     91   <code><a href="#create">create(body, x__xgafv=None)</a></code></p>
     92 <p class="firstline">Creates a spreadsheet, returning the newly created spreadsheet.</p>
     93 <p class="toc_element">
     94   <code><a href="#get">get(spreadsheetId, ranges=None, x__xgafv=None, includeGridData=None)</a></code></p>
     95 <p class="firstline">Returns the spreadsheet at the given ID.</p>
     96 <h3>Method Details</h3>
     97 <div class="method">
     98     <code class="details" id="batchUpdate">batchUpdate(spreadsheetId, body, x__xgafv=None)</code>
     99   <pre>Applies one or more updates to the spreadsheet.
    100 
    101 Each request is validated before
    102 being applied. If any request is not valid then the entire request will
    103 fail and nothing will be applied.
    104 
    105 Some requests have replies to
    106 give you some information about how
    107 they are applied. The replies will mirror the requests.  For example,
    108 if you applied 4 updates and the 3rd one had a reply, then the
    109 response will have 2 empty replies, the actual reply, and another empty
    110 reply, in that order.
    111 
    112 Due to the collaborative nature of spreadsheets, it is not guaranteed that
    113 the spreadsheet will reflect exactly your changes after this completes,
    114 however it is guaranteed that the updates in the request will be
    115 applied together atomically. Your changes may be altered with respect to
    116 collaborator changes. If there are no collaborators, the spreadsheet
    117 should reflect your changes.
    118 
    119 Args:
    120   spreadsheetId: string, The spreadsheet to apply the updates to. (required)
    121   body: object, The request body. (required)
    122     The object takes the form of:
    123 
    124 { # The request for updating any aspect of a spreadsheet.
    125     "responseRanges": [ # Limits the ranges included in the response spreadsheet.
    126         # Meaningful only if include_spreadsheet_response is 'true'.
    127       "A String",
    128     ],
    129     "requests": [ # A list of updates to apply to the spreadsheet.
    130         # Requests will be applied in the order they are specified.
    131         # If any request is not valid, no requests will be applied.
    132       { # A single kind of update to apply to a spreadsheet.
    133         "duplicateFilterView": { # Duplicates a particular filter view. # Duplicates a filter view.
    134           "filterId": 42, # The ID of the filter being duplicated.
    135         },
    136         "sortRange": { # Sorts data in rows based on a sort order per column. # Sorts data in a range.
    137           "range": { # A range on a sheet. # The range to sort.
    138               # All indexes are zero-based.
    139               # Indexes are half open, e.g the start index is inclusive
    140               # and the end index is exclusive -- [start_index, end_index).
    141               # Missing indexes indicate the range is unbounded on that side.
    142               #
    143               # For example, if `"Sheet1"` is sheet ID 0, then:
    144               #
    145               #   `Sheet1!A1:A1 == sheet_id: 0,
    146               #                   start_row_index: 0, end_row_index: 1,
    147               #                   start_column_index: 0, end_column_index: 1`
    148               #
    149               #   `Sheet1!A3:B4 == sheet_id: 0,
    150               #                   start_row_index: 2, end_row_index: 4,
    151               #                   start_column_index: 0, end_column_index: 2`
    152               #
    153               #   `Sheet1!A:B == sheet_id: 0,
    154               #                 start_column_index: 0, end_column_index: 2`
    155               #
    156               #   `Sheet1!A5:B == sheet_id: 0,
    157               #                  start_row_index: 4,
    158               #                  start_column_index: 0, end_column_index: 2`
    159               #
    160               #   `Sheet1 == sheet_id:0`
    161               #
    162               # The start index must always be less than or equal to the end index.
    163               # If the start index equals the end index, then the range is empty.
    164               # Empty ranges are typically not meaningful and are usually rendered in the
    165               # UI as `#REF!`.
    166             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
    167             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
    168             "sheetId": 42, # The sheet this range is on.
    169             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
    170             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
    171           },
    172           "sortSpecs": [ # The sort order per column. Later specifications are used when values
    173               # are equal in the earlier specifications.
    174             { # A sort order associated with a specific column or row.
    175               "sortOrder": "A String", # The order data should be sorted.
    176               "dimensionIndex": 42, # The dimension the sort should be applied to.
    177             },
    178           ],
    179         },
    180         "updateEmbeddedObjectPosition": { # Update an embedded object's position (such as a moving or resizing a # Updates an embedded object's (e.g. chart, image) position.
    181             # chart or image).
    182           "newPosition": { # The position of an embedded object such as a chart. # An explicit position to move the embedded object to.
    183               # If newPosition.sheetId is set,
    184               # a new sheet with that ID will be created.
    185               # If newPosition.newSheet is set to true,
    186               # a new sheet will be created with an ID that will be chosen for you.
    187             "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
    188                 # is chosen for you. Used only when writing.
    189             "sheetId": 42, # The sheet this is on. Set only if the embedded object
    190                 # is on its own sheet. Must be non-negative.
    191             "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
    192               "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
    193                   # All indexes are zero-based.
    194                 "rowIndex": 42, # The row index of the coordinate.
    195                 "columnIndex": 42, # The column index of the coordinate.
    196                 "sheetId": 42, # The sheet this coordinate is on.
    197               },
    198               "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
    199                   # from the anchor cell.
    200               "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
    201               "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
    202                   # from the anchor cell.
    203               "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
    204             },
    205           },
    206           "fields": "A String", # The fields of OverlayPosition
    207               # that should be updated when setting a new position. Used only if
    208               # newPosition.overlayPosition
    209               # is set, in which case at least one field must
    210               # be specified.  The root `newPosition.overlayPosition` is implied and
    211               # should not be specified.
    212               # A single `"*"` can be used as short-hand for listing every field.
    213           "objectId": 42, # The ID of the object to moved.
    214         },
    215         "updateConditionalFormatRule": { # Updates a conditional format rule at the given index, # Updates an existing conditional format rule.
    216             # or moves a conditional format rule to another index.
    217           "index": 42, # The zero-based index of the rule that should be replaced or moved.
    218           "newIndex": 42, # The zero-based new index the rule should end up at.
    219           "sheetId": 42, # The sheet of the rule to move.  Required if new_index is set,
    220               # unused otherwise.
    221           "rule": { # A rule describing a conditional format. # The rule that should replace the rule at the given index.
    222             "ranges": [ # The ranges that will be formatted if the condition is true.
    223                 # All the ranges must be on the same grid.
    224               { # A range on a sheet.
    225                   # All indexes are zero-based.
    226                   # Indexes are half open, e.g the start index is inclusive
    227                   # and the end index is exclusive -- [start_index, end_index).
    228                   # Missing indexes indicate the range is unbounded on that side.
    229                   #
    230                   # For example, if `"Sheet1"` is sheet ID 0, then:
    231                   #
    232                   #   `Sheet1!A1:A1 == sheet_id: 0,
    233                   #                   start_row_index: 0, end_row_index: 1,
    234                   #                   start_column_index: 0, end_column_index: 1`
    235                   #
    236                   #   `Sheet1!A3:B4 == sheet_id: 0,
    237                   #                   start_row_index: 2, end_row_index: 4,
    238                   #                   start_column_index: 0, end_column_index: 2`
    239                   #
    240                   #   `Sheet1!A:B == sheet_id: 0,
    241                   #                 start_column_index: 0, end_column_index: 2`
    242                   #
    243                   #   `Sheet1!A5:B == sheet_id: 0,
    244                   #                  start_row_index: 4,
    245                   #                  start_column_index: 0, end_column_index: 2`
    246                   #
    247                   #   `Sheet1 == sheet_id:0`
    248                   #
    249                   # The start index must always be less than or equal to the end index.
    250                   # If the start index equals the end index, then the range is empty.
    251                   # Empty ranges are typically not meaningful and are usually rendered in the
    252                   # UI as `#REF!`.
    253                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
    254                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
    255                 "sheetId": 42, # The sheet this range is on.
    256                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
    257                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
    258               },
    259             ],
    260             "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
    261               "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
    262                   # the format will be applied.
    263                   # BooleanConditions are used by conditional formatting,
    264                   # data validation, and the criteria in filters.
    265                 "values": [ # The values of the condition. The number of supported values depends
    266                     # on the condition type.  Some support zero values,
    267                     # others one or two values,
    268                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
    269                   { # The value of the condition.
    270                     "relativeDate": "A String", # A relative date (based on the current date).
    271                         # Valid only if the type is
    272                         # DATE_BEFORE,
    273                         # DATE_AFTER,
    274                         # DATE_ON_OR_BEFORE or
    275                         # DATE_ON_OR_AFTER.
    276                         #
    277                         # Relative dates are not supported in data validation.
    278                         # They are supported only in conditional formatting and
    279                         # conditional filters.
    280                     "userEnteredValue": "A String", # A value the condition is based on.
    281                         # The value will be parsed as if the user typed into a cell.
    282                         # Formulas are supported (and must begin with an `=`).
    283                   },
    284                 ],
    285                 "type": "A String", # The type of condition.
    286               },
    287               "format": { # The format of a cell. # The format to apply.
    288                   # Conditional formatting can only apply a subset of formatting:
    289                   # bold, italic,
    290                   # strikethrough,
    291                   # foreground color &
    292                   # background color.
    293                 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
    294                   "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
    295                       # the user's locale will be used if necessary for the given type.
    296                       # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
    297                       # information about the supported patterns.
    298                   "type": "A String", # The type of the number format.
    299                       # When writing, this field must be set.
    300                 },
    301                 "textDirection": "A String", # The direction of the text in the cell.
    302                 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
    303                     # When updating padding, every field must be specified.
    304                   "top": 42, # The top padding of the cell.
    305                   "right": 42, # The right padding of the cell.
    306                   "bottom": 42, # The bottom padding of the cell.
    307                   "left": 42, # The left padding of the cell.
    308                 },
    309                 "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
    310                 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
    311                     # for simplicity of conversion to/from color representations in various
    312                     # languages over compactness; for example, the fields of this representation
    313                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
    314                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
    315                     # method in iOS; and, with just a little work, it can be easily formatted into
    316                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
    317                     #
    318                     # Example (Java):
    319                     #
    320                     #      import com.google.type.Color;
    321                     #
    322                     #      // ...
    323                     #      public static java.awt.Color fromProto(Color protocolor) {
    324                     #        float alpha = protocolor.hasAlpha()
    325                     #            ? protocolor.getAlpha().getValue()
    326                     #            : 1.0;
    327                     #
    328                     #        return new java.awt.Color(
    329                     #            protocolor.getRed(),
    330                     #            protocolor.getGreen(),
    331                     #            protocolor.getBlue(),
    332                     #            alpha);
    333                     #      }
    334                     #
    335                     #      public static Color toProto(java.awt.Color color) {
    336                     #        float red = (float) color.getRed();
    337                     #        float green = (float) color.getGreen();
    338                     #        float blue = (float) color.getBlue();
    339                     #        float denominator = 255.0;
    340                     #        Color.Builder resultBuilder =
    341                     #            Color
    342                     #                .newBuilder()
    343                     #                .setRed(red / denominator)
    344                     #                .setGreen(green / denominator)
    345                     #                .setBlue(blue / denominator);
    346                     #        int alpha = color.getAlpha();
    347                     #        if (alpha != 255) {
    348                     #          result.setAlpha(
    349                     #              FloatValue
    350                     #                  .newBuilder()
    351                     #                  .setValue(((float) alpha) / denominator)
    352                     #                  .build());
    353                     #        }
    354                     #        return resultBuilder.build();
    355                     #      }
    356                     #      // ...
    357                     #
    358                     # Example (iOS / Obj-C):
    359                     #
    360                     #      // ...
    361                     #      static UIColor* fromProto(Color* protocolor) {
    362                     #         float red = [protocolor red];
    363                     #         float green = [protocolor green];
    364                     #         float blue = [protocolor blue];
    365                     #         FloatValue* alpha_wrapper = [protocolor alpha];
    366                     #         float alpha = 1.0;
    367                     #         if (alpha_wrapper != nil) {
    368                     #           alpha = [alpha_wrapper value];
    369                     #         }
    370                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
    371                     #      }
    372                     #
    373                     #      static Color* toProto(UIColor* color) {
    374                     #          CGFloat red, green, blue, alpha;
    375                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
    376                     #            return nil;
    377                     #          }
    378                     #          Color* result = [Color alloc] init];
    379                     #          [result setRed:red];
    380                     #          [result setGreen:green];
    381                     #          [result setBlue:blue];
    382                     #          if (alpha <= 0.9999) {
    383                     #            [result setAlpha:floatWrapperWithValue(alpha)];
    384                     #          }
    385                     #          [result autorelease];
    386                     #          return result;
    387                     #     }
    388                     #     // ...
    389                     #
    390                     #  Example (JavaScript):
    391                     #
    392                     #     // ...
    393                     #
    394                     #     var protoToCssColor = function(rgb_color) {
    395                     #        var redFrac = rgb_color.red || 0.0;
    396                     #        var greenFrac = rgb_color.green || 0.0;
    397                     #        var blueFrac = rgb_color.blue || 0.0;
    398                     #        var red = Math.floor(redFrac * 255);
    399                     #        var green = Math.floor(greenFrac * 255);
    400                     #        var blue = Math.floor(blueFrac * 255);
    401                     #
    402                     #        if (!('alpha' in rgb_color)) {
    403                     #           return rgbToCssColor_(red, green, blue);
    404                     #        }
    405                     #
    406                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
    407                     #        var rgbParams = [red, green, blue].join(',');
    408                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
    409                     #     };
    410                     #
    411                     #     var rgbToCssColor_ = function(red, green, blue) {
    412                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
    413                     #       var hexString = rgbNumber.toString(16);
    414                     #       var missingZeros = 6 - hexString.length;
    415                     #       var resultBuilder = ['#'];
    416                     #       for (var i = 0; i < missingZeros; i++) {
    417                     #          resultBuilder.push('0');
    418                     #       }
    419                     #       resultBuilder.push(hexString);
    420                     #       return resultBuilder.join('');
    421                     #     };
    422                     #
    423                     #     // ...
    424                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
    425                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
    426                       # the final pixel color is defined by the equation:
    427                       #
    428                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
    429                       #
    430                       # This means that a value of 1.0 corresponds to a solid color, whereas
    431                       # a value of 0.0 corresponds to a completely transparent color. This
    432                       # uses a wrapper message rather than a simple float scalar so that it is
    433                       # possible to distinguish between a default value and the value being unset.
    434                       # If omitted, this color object is to be rendered as a solid color
    435                       # (as if the alpha value had been explicitly given with a value of 1.0).
    436                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
    437                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
    438                 },
    439                 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
    440                 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
    441                     # Absent values indicate that the field isn't specified.
    442                   "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
    443                       # for simplicity of conversion to/from color representations in various
    444                       # languages over compactness; for example, the fields of this representation
    445                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
    446                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
    447                       # method in iOS; and, with just a little work, it can be easily formatted into
    448                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
    449                       #
    450                       # Example (Java):
    451                       #
    452                       #      import com.google.type.Color;
    453                       #
    454                       #      // ...
    455                       #      public static java.awt.Color fromProto(Color protocolor) {
    456                       #        float alpha = protocolor.hasAlpha()
    457                       #            ? protocolor.getAlpha().getValue()
    458                       #            : 1.0;
    459                       #
    460                       #        return new java.awt.Color(
    461                       #            protocolor.getRed(),
    462                       #            protocolor.getGreen(),
    463                       #            protocolor.getBlue(),
    464                       #            alpha);
    465                       #      }
    466                       #
    467                       #      public static Color toProto(java.awt.Color color) {
    468                       #        float red = (float) color.getRed();
    469                       #        float green = (float) color.getGreen();
    470                       #        float blue = (float) color.getBlue();
    471                       #        float denominator = 255.0;
    472                       #        Color.Builder resultBuilder =
    473                       #            Color
    474                       #                .newBuilder()
    475                       #                .setRed(red / denominator)
    476                       #                .setGreen(green / denominator)
    477                       #                .setBlue(blue / denominator);
    478                       #        int alpha = color.getAlpha();
    479                       #        if (alpha != 255) {
    480                       #          result.setAlpha(
    481                       #              FloatValue
    482                       #                  .newBuilder()
    483                       #                  .setValue(((float) alpha) / denominator)
    484                       #                  .build());
    485                       #        }
    486                       #        return resultBuilder.build();
    487                       #      }
    488                       #      // ...
    489                       #
    490                       # Example (iOS / Obj-C):
    491                       #
    492                       #      // ...
    493                       #      static UIColor* fromProto(Color* protocolor) {
    494                       #         float red = [protocolor red];
    495                       #         float green = [protocolor green];
    496                       #         float blue = [protocolor blue];
    497                       #         FloatValue* alpha_wrapper = [protocolor alpha];
    498                       #         float alpha = 1.0;
    499                       #         if (alpha_wrapper != nil) {
    500                       #           alpha = [alpha_wrapper value];
    501                       #         }
    502                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
    503                       #      }
    504                       #
    505                       #      static Color* toProto(UIColor* color) {
    506                       #          CGFloat red, green, blue, alpha;
    507                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
    508                       #            return nil;
    509                       #          }
    510                       #          Color* result = [Color alloc] init];
    511                       #          [result setRed:red];
    512                       #          [result setGreen:green];
    513                       #          [result setBlue:blue];
    514                       #          if (alpha <= 0.9999) {
    515                       #            [result setAlpha:floatWrapperWithValue(alpha)];
    516                       #          }
    517                       #          [result autorelease];
    518                       #          return result;
    519                       #     }
    520                       #     // ...
    521                       #
    522                       #  Example (JavaScript):
    523                       #
    524                       #     // ...
    525                       #
    526                       #     var protoToCssColor = function(rgb_color) {
    527                       #        var redFrac = rgb_color.red || 0.0;
    528                       #        var greenFrac = rgb_color.green || 0.0;
    529                       #        var blueFrac = rgb_color.blue || 0.0;
    530                       #        var red = Math.floor(redFrac * 255);
    531                       #        var green = Math.floor(greenFrac * 255);
    532                       #        var blue = Math.floor(blueFrac * 255);
    533                       #
    534                       #        if (!('alpha' in rgb_color)) {
    535                       #           return rgbToCssColor_(red, green, blue);
    536                       #        }
    537                       #
    538                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
    539                       #        var rgbParams = [red, green, blue].join(',');
    540                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
    541                       #     };
    542                       #
    543                       #     var rgbToCssColor_ = function(red, green, blue) {
    544                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
    545                       #       var hexString = rgbNumber.toString(16);
    546                       #       var missingZeros = 6 - hexString.length;
    547                       #       var resultBuilder = ['#'];
    548                       #       for (var i = 0; i < missingZeros; i++) {
    549                       #          resultBuilder.push('0');
    550                       #       }
    551                       #       resultBuilder.push(hexString);
    552                       #       return resultBuilder.join('');
    553                       #     };
    554                       #
    555                       #     // ...
    556                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
    557                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
    558                         # the final pixel color is defined by the equation:
    559                         #
    560                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
    561                         #
    562                         # This means that a value of 1.0 corresponds to a solid color, whereas
    563                         # a value of 0.0 corresponds to a completely transparent color. This
    564                         # uses a wrapper message rather than a simple float scalar so that it is
    565                         # possible to distinguish between a default value and the value being unset.
    566                         # If omitted, this color object is to be rendered as a solid color
    567                         # (as if the alpha value had been explicitly given with a value of 1.0).
    568                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
    569                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
    570                   },
    571                   "bold": True or False, # True if the text is bold.
    572                   "strikethrough": True or False, # True if the text has a strikethrough.
    573                   "fontFamily": "A String", # The font family.
    574                   "fontSize": 42, # The size of the font.
    575                   "italic": True or False, # True if the text is italicized.
    576                   "underline": True or False, # True if the text is underlined.
    577                 },
    578                 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
    579                   "angle": 42, # The angle between the standard orientation and the desired orientation.
    580                       # Measured in degrees. Valid values are between -90 and 90. Positive
    581                       # angles are angled upwards, negative are angled downwards.
    582                       #
    583                       # Note: For LTR text direction positive angles are in the counterclockwise
    584                       # direction, whereas for RTL they are in the clockwise direction
    585                   "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
    586                       # characters is unchanged.
    587                       # For example:
    588                       #
    589                       #     | V |
    590                       #     | e |
    591                       #     | r |
    592                       #     | t |
    593                       #     | i |
    594                       #     | c |
    595                       #     | a |
    596                       #     | l |
    597                 },
    598                 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
    599                 "borders": { # The borders of the cell. # The borders of the cell.
    600                   "top": { # A border along a cell. # The top border of the cell.
    601                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
    602                         # for simplicity of conversion to/from color representations in various
    603                         # languages over compactness; for example, the fields of this representation
    604                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
    605                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
    606                         # method in iOS; and, with just a little work, it can be easily formatted into
    607                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
    608                         #
    609                         # Example (Java):
    610                         #
    611                         #      import com.google.type.Color;
    612                         #
    613                         #      // ...
    614                         #      public static java.awt.Color fromProto(Color protocolor) {
    615                         #        float alpha = protocolor.hasAlpha()
    616                         #            ? protocolor.getAlpha().getValue()
    617                         #            : 1.0;
    618                         #
    619                         #        return new java.awt.Color(
    620                         #            protocolor.getRed(),
    621                         #            protocolor.getGreen(),
    622                         #            protocolor.getBlue(),
    623                         #            alpha);
    624                         #      }
    625                         #
    626                         #      public static Color toProto(java.awt.Color color) {
    627                         #        float red = (float) color.getRed();
    628                         #        float green = (float) color.getGreen();
    629                         #        float blue = (float) color.getBlue();
    630                         #        float denominator = 255.0;
    631                         #        Color.Builder resultBuilder =
    632                         #            Color
    633                         #                .newBuilder()
    634                         #                .setRed(red / denominator)
    635                         #                .setGreen(green / denominator)
    636                         #                .setBlue(blue / denominator);
    637                         #        int alpha = color.getAlpha();
    638                         #        if (alpha != 255) {
    639                         #          result.setAlpha(
    640                         #              FloatValue
    641                         #                  .newBuilder()
    642                         #                  .setValue(((float) alpha) / denominator)
    643                         #                  .build());
    644                         #        }
    645                         #        return resultBuilder.build();
    646                         #      }
    647                         #      // ...
    648                         #
    649                         # Example (iOS / Obj-C):
    650                         #
    651                         #      // ...
    652                         #      static UIColor* fromProto(Color* protocolor) {
    653                         #         float red = [protocolor red];
    654                         #         float green = [protocolor green];
    655                         #         float blue = [protocolor blue];
    656                         #         FloatValue* alpha_wrapper = [protocolor alpha];
    657                         #         float alpha = 1.0;
    658                         #         if (alpha_wrapper != nil) {
    659                         #           alpha = [alpha_wrapper value];
    660                         #         }
    661                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
    662                         #      }
    663                         #
    664                         #      static Color* toProto(UIColor* color) {
    665                         #          CGFloat red, green, blue, alpha;
    666                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
    667                         #            return nil;
    668                         #          }
    669                         #          Color* result = [Color alloc] init];
    670                         #          [result setRed:red];
    671                         #          [result setGreen:green];
    672                         #          [result setBlue:blue];
    673                         #          if (alpha <= 0.9999) {
    674                         #            [result setAlpha:floatWrapperWithValue(alpha)];
    675                         #          }
    676                         #          [result autorelease];
    677                         #          return result;
    678                         #     }
    679                         #     // ...
    680                         #
    681                         #  Example (JavaScript):
    682                         #
    683                         #     // ...
    684                         #
    685                         #     var protoToCssColor = function(rgb_color) {
    686                         #        var redFrac = rgb_color.red || 0.0;
    687                         #        var greenFrac = rgb_color.green || 0.0;
    688                         #        var blueFrac = rgb_color.blue || 0.0;
    689                         #        var red = Math.floor(redFrac * 255);
    690                         #        var green = Math.floor(greenFrac * 255);
    691                         #        var blue = Math.floor(blueFrac * 255);
    692                         #
    693                         #        if (!('alpha' in rgb_color)) {
    694                         #           return rgbToCssColor_(red, green, blue);
    695                         #        }
    696                         #
    697                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
    698                         #        var rgbParams = [red, green, blue].join(',');
    699                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
    700                         #     };
    701                         #
    702                         #     var rgbToCssColor_ = function(red, green, blue) {
    703                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
    704                         #       var hexString = rgbNumber.toString(16);
    705                         #       var missingZeros = 6 - hexString.length;
    706                         #       var resultBuilder = ['#'];
    707                         #       for (var i = 0; i < missingZeros; i++) {
    708                         #          resultBuilder.push('0');
    709                         #       }
    710                         #       resultBuilder.push(hexString);
    711                         #       return resultBuilder.join('');
    712                         #     };
    713                         #
    714                         #     // ...
    715                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
    716                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
    717                           # the final pixel color is defined by the equation:
    718                           #
    719                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
    720                           #
    721                           # This means that a value of 1.0 corresponds to a solid color, whereas
    722                           # a value of 0.0 corresponds to a completely transparent color. This
    723                           # uses a wrapper message rather than a simple float scalar so that it is
    724                           # possible to distinguish between a default value and the value being unset.
    725                           # If omitted, this color object is to be rendered as a solid color
    726                           # (as if the alpha value had been explicitly given with a value of 1.0).
    727                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
    728                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
    729                     },
    730                     "width": 42, # The width of the border, in pixels.
    731                         # Deprecated; the width is determined by the "style" field.
    732                     "style": "A String", # The style of the border.
    733                   },
    734                   "right": { # A border along a cell. # The right border of the cell.
    735                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
    736                         # for simplicity of conversion to/from color representations in various
    737                         # languages over compactness; for example, the fields of this representation
    738                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
    739                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
    740                         # method in iOS; and, with just a little work, it can be easily formatted into
    741                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
    742                         #
    743                         # Example (Java):
    744                         #
    745                         #      import com.google.type.Color;
    746                         #
    747                         #      // ...
    748                         #      public static java.awt.Color fromProto(Color protocolor) {
    749                         #        float alpha = protocolor.hasAlpha()
    750                         #            ? protocolor.getAlpha().getValue()
    751                         #            : 1.0;
    752                         #
    753                         #        return new java.awt.Color(
    754                         #            protocolor.getRed(),
    755                         #            protocolor.getGreen(),
    756                         #            protocolor.getBlue(),
    757                         #            alpha);
    758                         #      }
    759                         #
    760                         #      public static Color toProto(java.awt.Color color) {
    761                         #        float red = (float) color.getRed();
    762                         #        float green = (float) color.getGreen();
    763                         #        float blue = (float) color.getBlue();
    764                         #        float denominator = 255.0;
    765                         #        Color.Builder resultBuilder =
    766                         #            Color
    767                         #                .newBuilder()
    768                         #                .setRed(red / denominator)
    769                         #                .setGreen(green / denominator)
    770                         #                .setBlue(blue / denominator);
    771                         #        int alpha = color.getAlpha();
    772                         #        if (alpha != 255) {
    773                         #          result.setAlpha(
    774                         #              FloatValue
    775                         #                  .newBuilder()
    776                         #                  .setValue(((float) alpha) / denominator)
    777                         #                  .build());
    778                         #        }
    779                         #        return resultBuilder.build();
    780                         #      }
    781                         #      // ...
    782                         #
    783                         # Example (iOS / Obj-C):
    784                         #
    785                         #      // ...
    786                         #      static UIColor* fromProto(Color* protocolor) {
    787                         #         float red = [protocolor red];
    788                         #         float green = [protocolor green];
    789                         #         float blue = [protocolor blue];
    790                         #         FloatValue* alpha_wrapper = [protocolor alpha];
    791                         #         float alpha = 1.0;
    792                         #         if (alpha_wrapper != nil) {
    793                         #           alpha = [alpha_wrapper value];
    794                         #         }
    795                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
    796                         #      }
    797                         #
    798                         #      static Color* toProto(UIColor* color) {
    799                         #          CGFloat red, green, blue, alpha;
    800                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
    801                         #            return nil;
    802                         #          }
    803                         #          Color* result = [Color alloc] init];
    804                         #          [result setRed:red];
    805                         #          [result setGreen:green];
    806                         #          [result setBlue:blue];
    807                         #          if (alpha <= 0.9999) {
    808                         #            [result setAlpha:floatWrapperWithValue(alpha)];
    809                         #          }
    810                         #          [result autorelease];
    811                         #          return result;
    812                         #     }
    813                         #     // ...
    814                         #
    815                         #  Example (JavaScript):
    816                         #
    817                         #     // ...
    818                         #
    819                         #     var protoToCssColor = function(rgb_color) {
    820                         #        var redFrac = rgb_color.red || 0.0;
    821                         #        var greenFrac = rgb_color.green || 0.0;
    822                         #        var blueFrac = rgb_color.blue || 0.0;
    823                         #        var red = Math.floor(redFrac * 255);
    824                         #        var green = Math.floor(greenFrac * 255);
    825                         #        var blue = Math.floor(blueFrac * 255);
    826                         #
    827                         #        if (!('alpha' in rgb_color)) {
    828                         #           return rgbToCssColor_(red, green, blue);
    829                         #        }
    830                         #
    831                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
    832                         #        var rgbParams = [red, green, blue].join(',');
    833                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
    834                         #     };
    835                         #
    836                         #     var rgbToCssColor_ = function(red, green, blue) {
    837                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
    838                         #       var hexString = rgbNumber.toString(16);
    839                         #       var missingZeros = 6 - hexString.length;
    840                         #       var resultBuilder = ['#'];
    841                         #       for (var i = 0; i < missingZeros; i++) {
    842                         #          resultBuilder.push('0');
    843                         #       }
    844                         #       resultBuilder.push(hexString);
    845                         #       return resultBuilder.join('');
    846                         #     };
    847                         #
    848                         #     // ...
    849                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
    850                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
    851                           # the final pixel color is defined by the equation:
    852                           #
    853                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
    854                           #
    855                           # This means that a value of 1.0 corresponds to a solid color, whereas
    856                           # a value of 0.0 corresponds to a completely transparent color. This
    857                           # uses a wrapper message rather than a simple float scalar so that it is
    858                           # possible to distinguish between a default value and the value being unset.
    859                           # If omitted, this color object is to be rendered as a solid color
    860                           # (as if the alpha value had been explicitly given with a value of 1.0).
    861                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
    862                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
    863                     },
    864                     "width": 42, # The width of the border, in pixels.
    865                         # Deprecated; the width is determined by the "style" field.
    866                     "style": "A String", # The style of the border.
    867                   },
    868                   "bottom": { # A border along a cell. # The bottom border of the cell.
    869                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
    870                         # for simplicity of conversion to/from color representations in various
    871                         # languages over compactness; for example, the fields of this representation
    872                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
    873                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
    874                         # method in iOS; and, with just a little work, it can be easily formatted into
    875                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
    876                         #
    877                         # Example (Java):
    878                         #
    879                         #      import com.google.type.Color;
    880                         #
    881                         #      // ...
    882                         #      public static java.awt.Color fromProto(Color protocolor) {
    883                         #        float alpha = protocolor.hasAlpha()
    884                         #            ? protocolor.getAlpha().getValue()
    885                         #            : 1.0;
    886                         #
    887                         #        return new java.awt.Color(
    888                         #            protocolor.getRed(),
    889                         #            protocolor.getGreen(),
    890                         #            protocolor.getBlue(),
    891                         #            alpha);
    892                         #      }
    893                         #
    894                         #      public static Color toProto(java.awt.Color color) {
    895                         #        float red = (float) color.getRed();
    896                         #        float green = (float) color.getGreen();
    897                         #        float blue = (float) color.getBlue();
    898                         #        float denominator = 255.0;
    899                         #        Color.Builder resultBuilder =
    900                         #            Color
    901                         #                .newBuilder()
    902                         #                .setRed(red / denominator)
    903                         #                .setGreen(green / denominator)
    904                         #                .setBlue(blue / denominator);
    905                         #        int alpha = color.getAlpha();
    906                         #        if (alpha != 255) {
    907                         #          result.setAlpha(
    908                         #              FloatValue
    909                         #                  .newBuilder()
    910                         #                  .setValue(((float) alpha) / denominator)
    911                         #                  .build());
    912                         #        }
    913                         #        return resultBuilder.build();
    914                         #      }
    915                         #      // ...
    916                         #
    917                         # Example (iOS / Obj-C):
    918                         #
    919                         #      // ...
    920                         #      static UIColor* fromProto(Color* protocolor) {
    921                         #         float red = [protocolor red];
    922                         #         float green = [protocolor green];
    923                         #         float blue = [protocolor blue];
    924                         #         FloatValue* alpha_wrapper = [protocolor alpha];
    925                         #         float alpha = 1.0;
    926                         #         if (alpha_wrapper != nil) {
    927                         #           alpha = [alpha_wrapper value];
    928                         #         }
    929                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
    930                         #      }
    931                         #
    932                         #      static Color* toProto(UIColor* color) {
    933                         #          CGFloat red, green, blue, alpha;
    934                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
    935                         #            return nil;
    936                         #          }
    937                         #          Color* result = [Color alloc] init];
    938                         #          [result setRed:red];
    939                         #          [result setGreen:green];
    940                         #          [result setBlue:blue];
    941                         #          if (alpha <= 0.9999) {
    942                         #            [result setAlpha:floatWrapperWithValue(alpha)];
    943                         #          }
    944                         #          [result autorelease];
    945                         #          return result;
    946                         #     }
    947                         #     // ...
    948                         #
    949                         #  Example (JavaScript):
    950                         #
    951                         #     // ...
    952                         #
    953                         #     var protoToCssColor = function(rgb_color) {
    954                         #        var redFrac = rgb_color.red || 0.0;
    955                         #        var greenFrac = rgb_color.green || 0.0;
    956                         #        var blueFrac = rgb_color.blue || 0.0;
    957                         #        var red = Math.floor(redFrac * 255);
    958                         #        var green = Math.floor(greenFrac * 255);
    959                         #        var blue = Math.floor(blueFrac * 255);
    960                         #
    961                         #        if (!('alpha' in rgb_color)) {
    962                         #           return rgbToCssColor_(red, green, blue);
    963                         #        }
    964                         #
    965                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
    966                         #        var rgbParams = [red, green, blue].join(',');
    967                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
    968                         #     };
    969                         #
    970                         #     var rgbToCssColor_ = function(red, green, blue) {
    971                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
    972                         #       var hexString = rgbNumber.toString(16);
    973                         #       var missingZeros = 6 - hexString.length;
    974                         #       var resultBuilder = ['#'];
    975                         #       for (var i = 0; i < missingZeros; i++) {
    976                         #          resultBuilder.push('0');
    977                         #       }
    978                         #       resultBuilder.push(hexString);
    979                         #       return resultBuilder.join('');
    980                         #     };
    981                         #
    982                         #     // ...
    983                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
    984                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
    985                           # the final pixel color is defined by the equation:
    986                           #
    987                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
    988                           #
    989                           # This means that a value of 1.0 corresponds to a solid color, whereas
    990                           # a value of 0.0 corresponds to a completely transparent color. This
    991                           # uses a wrapper message rather than a simple float scalar so that it is
    992                           # possible to distinguish between a default value and the value being unset.
    993                           # If omitted, this color object is to be rendered as a solid color
    994                           # (as if the alpha value had been explicitly given with a value of 1.0).
    995                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
    996                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
    997                     },
    998                     "width": 42, # The width of the border, in pixels.
    999                         # Deprecated; the width is determined by the "style" field.
   1000                     "style": "A String", # The style of the border.
   1001                   },
   1002                   "left": { # A border along a cell. # The left border of the cell.
   1003                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   1004                         # for simplicity of conversion to/from color representations in various
   1005                         # languages over compactness; for example, the fields of this representation
   1006                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   1007                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   1008                         # method in iOS; and, with just a little work, it can be easily formatted into
   1009                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   1010                         #
   1011                         # Example (Java):
   1012                         #
   1013                         #      import com.google.type.Color;
   1014                         #
   1015                         #      // ...
   1016                         #      public static java.awt.Color fromProto(Color protocolor) {
   1017                         #        float alpha = protocolor.hasAlpha()
   1018                         #            ? protocolor.getAlpha().getValue()
   1019                         #            : 1.0;
   1020                         #
   1021                         #        return new java.awt.Color(
   1022                         #            protocolor.getRed(),
   1023                         #            protocolor.getGreen(),
   1024                         #            protocolor.getBlue(),
   1025                         #            alpha);
   1026                         #      }
   1027                         #
   1028                         #      public static Color toProto(java.awt.Color color) {
   1029                         #        float red = (float) color.getRed();
   1030                         #        float green = (float) color.getGreen();
   1031                         #        float blue = (float) color.getBlue();
   1032                         #        float denominator = 255.0;
   1033                         #        Color.Builder resultBuilder =
   1034                         #            Color
   1035                         #                .newBuilder()
   1036                         #                .setRed(red / denominator)
   1037                         #                .setGreen(green / denominator)
   1038                         #                .setBlue(blue / denominator);
   1039                         #        int alpha = color.getAlpha();
   1040                         #        if (alpha != 255) {
   1041                         #          result.setAlpha(
   1042                         #              FloatValue
   1043                         #                  .newBuilder()
   1044                         #                  .setValue(((float) alpha) / denominator)
   1045                         #                  .build());
   1046                         #        }
   1047                         #        return resultBuilder.build();
   1048                         #      }
   1049                         #      // ...
   1050                         #
   1051                         # Example (iOS / Obj-C):
   1052                         #
   1053                         #      // ...
   1054                         #      static UIColor* fromProto(Color* protocolor) {
   1055                         #         float red = [protocolor red];
   1056                         #         float green = [protocolor green];
   1057                         #         float blue = [protocolor blue];
   1058                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   1059                         #         float alpha = 1.0;
   1060                         #         if (alpha_wrapper != nil) {
   1061                         #           alpha = [alpha_wrapper value];
   1062                         #         }
   1063                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   1064                         #      }
   1065                         #
   1066                         #      static Color* toProto(UIColor* color) {
   1067                         #          CGFloat red, green, blue, alpha;
   1068                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   1069                         #            return nil;
   1070                         #          }
   1071                         #          Color* result = [Color alloc] init];
   1072                         #          [result setRed:red];
   1073                         #          [result setGreen:green];
   1074                         #          [result setBlue:blue];
   1075                         #          if (alpha <= 0.9999) {
   1076                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   1077                         #          }
   1078                         #          [result autorelease];
   1079                         #          return result;
   1080                         #     }
   1081                         #     // ...
   1082                         #
   1083                         #  Example (JavaScript):
   1084                         #
   1085                         #     // ...
   1086                         #
   1087                         #     var protoToCssColor = function(rgb_color) {
   1088                         #        var redFrac = rgb_color.red || 0.0;
   1089                         #        var greenFrac = rgb_color.green || 0.0;
   1090                         #        var blueFrac = rgb_color.blue || 0.0;
   1091                         #        var red = Math.floor(redFrac * 255);
   1092                         #        var green = Math.floor(greenFrac * 255);
   1093                         #        var blue = Math.floor(blueFrac * 255);
   1094                         #
   1095                         #        if (!('alpha' in rgb_color)) {
   1096                         #           return rgbToCssColor_(red, green, blue);
   1097                         #        }
   1098                         #
   1099                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   1100                         #        var rgbParams = [red, green, blue].join(',');
   1101                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   1102                         #     };
   1103                         #
   1104                         #     var rgbToCssColor_ = function(red, green, blue) {
   1105                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   1106                         #       var hexString = rgbNumber.toString(16);
   1107                         #       var missingZeros = 6 - hexString.length;
   1108                         #       var resultBuilder = ['#'];
   1109                         #       for (var i = 0; i < missingZeros; i++) {
   1110                         #          resultBuilder.push('0');
   1111                         #       }
   1112                         #       resultBuilder.push(hexString);
   1113                         #       return resultBuilder.join('');
   1114                         #     };
   1115                         #
   1116                         #     // ...
   1117                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   1118                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   1119                           # the final pixel color is defined by the equation:
   1120                           #
   1121                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   1122                           #
   1123                           # This means that a value of 1.0 corresponds to a solid color, whereas
   1124                           # a value of 0.0 corresponds to a completely transparent color. This
   1125                           # uses a wrapper message rather than a simple float scalar so that it is
   1126                           # possible to distinguish between a default value and the value being unset.
   1127                           # If omitted, this color object is to be rendered as a solid color
   1128                           # (as if the alpha value had been explicitly given with a value of 1.0).
   1129                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   1130                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   1131                     },
   1132                     "width": 42, # The width of the border, in pixels.
   1133                         # Deprecated; the width is determined by the "style" field.
   1134                     "style": "A String", # The style of the border.
   1135                   },
   1136                 },
   1137                 "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   1138               },
   1139             },
   1140             "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
   1141                 # the interpolation points listed. The format of a cell will vary
   1142                 # based on its contents as compared to the values of the interpolation
   1143                 # points.
   1144               "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
   1145                   # These pin the gradient color scale according to the color,
   1146                   # type and value chosen.
   1147                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   1148                     # for simplicity of conversion to/from color representations in various
   1149                     # languages over compactness; for example, the fields of this representation
   1150                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   1151                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   1152                     # method in iOS; and, with just a little work, it can be easily formatted into
   1153                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   1154                     #
   1155                     # Example (Java):
   1156                     #
   1157                     #      import com.google.type.Color;
   1158                     #
   1159                     #      // ...
   1160                     #      public static java.awt.Color fromProto(Color protocolor) {
   1161                     #        float alpha = protocolor.hasAlpha()
   1162                     #            ? protocolor.getAlpha().getValue()
   1163                     #            : 1.0;
   1164                     #
   1165                     #        return new java.awt.Color(
   1166                     #            protocolor.getRed(),
   1167                     #            protocolor.getGreen(),
   1168                     #            protocolor.getBlue(),
   1169                     #            alpha);
   1170                     #      }
   1171                     #
   1172                     #      public static Color toProto(java.awt.Color color) {
   1173                     #        float red = (float) color.getRed();
   1174                     #        float green = (float) color.getGreen();
   1175                     #        float blue = (float) color.getBlue();
   1176                     #        float denominator = 255.0;
   1177                     #        Color.Builder resultBuilder =
   1178                     #            Color
   1179                     #                .newBuilder()
   1180                     #                .setRed(red / denominator)
   1181                     #                .setGreen(green / denominator)
   1182                     #                .setBlue(blue / denominator);
   1183                     #        int alpha = color.getAlpha();
   1184                     #        if (alpha != 255) {
   1185                     #          result.setAlpha(
   1186                     #              FloatValue
   1187                     #                  .newBuilder()
   1188                     #                  .setValue(((float) alpha) / denominator)
   1189                     #                  .build());
   1190                     #        }
   1191                     #        return resultBuilder.build();
   1192                     #      }
   1193                     #      // ...
   1194                     #
   1195                     # Example (iOS / Obj-C):
   1196                     #
   1197                     #      // ...
   1198                     #      static UIColor* fromProto(Color* protocolor) {
   1199                     #         float red = [protocolor red];
   1200                     #         float green = [protocolor green];
   1201                     #         float blue = [protocolor blue];
   1202                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   1203                     #         float alpha = 1.0;
   1204                     #         if (alpha_wrapper != nil) {
   1205                     #           alpha = [alpha_wrapper value];
   1206                     #         }
   1207                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   1208                     #      }
   1209                     #
   1210                     #      static Color* toProto(UIColor* color) {
   1211                     #          CGFloat red, green, blue, alpha;
   1212                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   1213                     #            return nil;
   1214                     #          }
   1215                     #          Color* result = [Color alloc] init];
   1216                     #          [result setRed:red];
   1217                     #          [result setGreen:green];
   1218                     #          [result setBlue:blue];
   1219                     #          if (alpha <= 0.9999) {
   1220                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   1221                     #          }
   1222                     #          [result autorelease];
   1223                     #          return result;
   1224                     #     }
   1225                     #     // ...
   1226                     #
   1227                     #  Example (JavaScript):
   1228                     #
   1229                     #     // ...
   1230                     #
   1231                     #     var protoToCssColor = function(rgb_color) {
   1232                     #        var redFrac = rgb_color.red || 0.0;
   1233                     #        var greenFrac = rgb_color.green || 0.0;
   1234                     #        var blueFrac = rgb_color.blue || 0.0;
   1235                     #        var red = Math.floor(redFrac * 255);
   1236                     #        var green = Math.floor(greenFrac * 255);
   1237                     #        var blue = Math.floor(blueFrac * 255);
   1238                     #
   1239                     #        if (!('alpha' in rgb_color)) {
   1240                     #           return rgbToCssColor_(red, green, blue);
   1241                     #        }
   1242                     #
   1243                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   1244                     #        var rgbParams = [red, green, blue].join(',');
   1245                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   1246                     #     };
   1247                     #
   1248                     #     var rgbToCssColor_ = function(red, green, blue) {
   1249                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   1250                     #       var hexString = rgbNumber.toString(16);
   1251                     #       var missingZeros = 6 - hexString.length;
   1252                     #       var resultBuilder = ['#'];
   1253                     #       for (var i = 0; i < missingZeros; i++) {
   1254                     #          resultBuilder.push('0');
   1255                     #       }
   1256                     #       resultBuilder.push(hexString);
   1257                     #       return resultBuilder.join('');
   1258                     #     };
   1259                     #
   1260                     #     // ...
   1261                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   1262                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   1263                       # the final pixel color is defined by the equation:
   1264                       #
   1265                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   1266                       #
   1267                       # This means that a value of 1.0 corresponds to a solid color, whereas
   1268                       # a value of 0.0 corresponds to a completely transparent color. This
   1269                       # uses a wrapper message rather than a simple float scalar so that it is
   1270                       # possible to distinguish between a default value and the value being unset.
   1271                       # If omitted, this color object is to be rendered as a solid color
   1272                       # (as if the alpha value had been explicitly given with a value of 1.0).
   1273                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   1274                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   1275                 },
   1276                 "type": "A String", # How the value should be interpreted.
   1277                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   1278                     # Unused if type is MIN or
   1279                     # MAX.
   1280               },
   1281               "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
   1282                   # These pin the gradient color scale according to the color,
   1283                   # type and value chosen.
   1284                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   1285                     # for simplicity of conversion to/from color representations in various
   1286                     # languages over compactness; for example, the fields of this representation
   1287                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   1288                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   1289                     # method in iOS; and, with just a little work, it can be easily formatted into
   1290                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   1291                     #
   1292                     # Example (Java):
   1293                     #
   1294                     #      import com.google.type.Color;
   1295                     #
   1296                     #      // ...
   1297                     #      public static java.awt.Color fromProto(Color protocolor) {
   1298                     #        float alpha = protocolor.hasAlpha()
   1299                     #            ? protocolor.getAlpha().getValue()
   1300                     #            : 1.0;
   1301                     #
   1302                     #        return new java.awt.Color(
   1303                     #            protocolor.getRed(),
   1304                     #            protocolor.getGreen(),
   1305                     #            protocolor.getBlue(),
   1306                     #            alpha);
   1307                     #      }
   1308                     #
   1309                     #      public static Color toProto(java.awt.Color color) {
   1310                     #        float red = (float) color.getRed();
   1311                     #        float green = (float) color.getGreen();
   1312                     #        float blue = (float) color.getBlue();
   1313                     #        float denominator = 255.0;
   1314                     #        Color.Builder resultBuilder =
   1315                     #            Color
   1316                     #                .newBuilder()
   1317                     #                .setRed(red / denominator)
   1318                     #                .setGreen(green / denominator)
   1319                     #                .setBlue(blue / denominator);
   1320                     #        int alpha = color.getAlpha();
   1321                     #        if (alpha != 255) {
   1322                     #          result.setAlpha(
   1323                     #              FloatValue
   1324                     #                  .newBuilder()
   1325                     #                  .setValue(((float) alpha) / denominator)
   1326                     #                  .build());
   1327                     #        }
   1328                     #        return resultBuilder.build();
   1329                     #      }
   1330                     #      // ...
   1331                     #
   1332                     # Example (iOS / Obj-C):
   1333                     #
   1334                     #      // ...
   1335                     #      static UIColor* fromProto(Color* protocolor) {
   1336                     #         float red = [protocolor red];
   1337                     #         float green = [protocolor green];
   1338                     #         float blue = [protocolor blue];
   1339                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   1340                     #         float alpha = 1.0;
   1341                     #         if (alpha_wrapper != nil) {
   1342                     #           alpha = [alpha_wrapper value];
   1343                     #         }
   1344                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   1345                     #      }
   1346                     #
   1347                     #      static Color* toProto(UIColor* color) {
   1348                     #          CGFloat red, green, blue, alpha;
   1349                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   1350                     #            return nil;
   1351                     #          }
   1352                     #          Color* result = [Color alloc] init];
   1353                     #          [result setRed:red];
   1354                     #          [result setGreen:green];
   1355                     #          [result setBlue:blue];
   1356                     #          if (alpha <= 0.9999) {
   1357                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   1358                     #          }
   1359                     #          [result autorelease];
   1360                     #          return result;
   1361                     #     }
   1362                     #     // ...
   1363                     #
   1364                     #  Example (JavaScript):
   1365                     #
   1366                     #     // ...
   1367                     #
   1368                     #     var protoToCssColor = function(rgb_color) {
   1369                     #        var redFrac = rgb_color.red || 0.0;
   1370                     #        var greenFrac = rgb_color.green || 0.0;
   1371                     #        var blueFrac = rgb_color.blue || 0.0;
   1372                     #        var red = Math.floor(redFrac * 255);
   1373                     #        var green = Math.floor(greenFrac * 255);
   1374                     #        var blue = Math.floor(blueFrac * 255);
   1375                     #
   1376                     #        if (!('alpha' in rgb_color)) {
   1377                     #           return rgbToCssColor_(red, green, blue);
   1378                     #        }
   1379                     #
   1380                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   1381                     #        var rgbParams = [red, green, blue].join(',');
   1382                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   1383                     #     };
   1384                     #
   1385                     #     var rgbToCssColor_ = function(red, green, blue) {
   1386                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   1387                     #       var hexString = rgbNumber.toString(16);
   1388                     #       var missingZeros = 6 - hexString.length;
   1389                     #       var resultBuilder = ['#'];
   1390                     #       for (var i = 0; i < missingZeros; i++) {
   1391                     #          resultBuilder.push('0');
   1392                     #       }
   1393                     #       resultBuilder.push(hexString);
   1394                     #       return resultBuilder.join('');
   1395                     #     };
   1396                     #
   1397                     #     // ...
   1398                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   1399                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   1400                       # the final pixel color is defined by the equation:
   1401                       #
   1402                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   1403                       #
   1404                       # This means that a value of 1.0 corresponds to a solid color, whereas
   1405                       # a value of 0.0 corresponds to a completely transparent color. This
   1406                       # uses a wrapper message rather than a simple float scalar so that it is
   1407                       # possible to distinguish between a default value and the value being unset.
   1408                       # If omitted, this color object is to be rendered as a solid color
   1409                       # (as if the alpha value had been explicitly given with a value of 1.0).
   1410                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   1411                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   1412                 },
   1413                 "type": "A String", # How the value should be interpreted.
   1414                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   1415                     # Unused if type is MIN or
   1416                     # MAX.
   1417               },
   1418               "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
   1419                   # These pin the gradient color scale according to the color,
   1420                   # type and value chosen.
   1421                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   1422                     # for simplicity of conversion to/from color representations in various
   1423                     # languages over compactness; for example, the fields of this representation
   1424                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   1425                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   1426                     # method in iOS; and, with just a little work, it can be easily formatted into
   1427                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   1428                     #
   1429                     # Example (Java):
   1430                     #
   1431                     #      import com.google.type.Color;
   1432                     #
   1433                     #      // ...
   1434                     #      public static java.awt.Color fromProto(Color protocolor) {
   1435                     #        float alpha = protocolor.hasAlpha()
   1436                     #            ? protocolor.getAlpha().getValue()
   1437                     #            : 1.0;
   1438                     #
   1439                     #        return new java.awt.Color(
   1440                     #            protocolor.getRed(),
   1441                     #            protocolor.getGreen(),
   1442                     #            protocolor.getBlue(),
   1443                     #            alpha);
   1444                     #      }
   1445                     #
   1446                     #      public static Color toProto(java.awt.Color color) {
   1447                     #        float red = (float) color.getRed();
   1448                     #        float green = (float) color.getGreen();
   1449                     #        float blue = (float) color.getBlue();
   1450                     #        float denominator = 255.0;
   1451                     #        Color.Builder resultBuilder =
   1452                     #            Color
   1453                     #                .newBuilder()
   1454                     #                .setRed(red / denominator)
   1455                     #                .setGreen(green / denominator)
   1456                     #                .setBlue(blue / denominator);
   1457                     #        int alpha = color.getAlpha();
   1458                     #        if (alpha != 255) {
   1459                     #          result.setAlpha(
   1460                     #              FloatValue
   1461                     #                  .newBuilder()
   1462                     #                  .setValue(((float) alpha) / denominator)
   1463                     #                  .build());
   1464                     #        }
   1465                     #        return resultBuilder.build();
   1466                     #      }
   1467                     #      // ...
   1468                     #
   1469                     # Example (iOS / Obj-C):
   1470                     #
   1471                     #      // ...
   1472                     #      static UIColor* fromProto(Color* protocolor) {
   1473                     #         float red = [protocolor red];
   1474                     #         float green = [protocolor green];
   1475                     #         float blue = [protocolor blue];
   1476                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   1477                     #         float alpha = 1.0;
   1478                     #         if (alpha_wrapper != nil) {
   1479                     #           alpha = [alpha_wrapper value];
   1480                     #         }
   1481                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   1482                     #      }
   1483                     #
   1484                     #      static Color* toProto(UIColor* color) {
   1485                     #          CGFloat red, green, blue, alpha;
   1486                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   1487                     #            return nil;
   1488                     #          }
   1489                     #          Color* result = [Color alloc] init];
   1490                     #          [result setRed:red];
   1491                     #          [result setGreen:green];
   1492                     #          [result setBlue:blue];
   1493                     #          if (alpha <= 0.9999) {
   1494                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   1495                     #          }
   1496                     #          [result autorelease];
   1497                     #          return result;
   1498                     #     }
   1499                     #     // ...
   1500                     #
   1501                     #  Example (JavaScript):
   1502                     #
   1503                     #     // ...
   1504                     #
   1505                     #     var protoToCssColor = function(rgb_color) {
   1506                     #        var redFrac = rgb_color.red || 0.0;
   1507                     #        var greenFrac = rgb_color.green || 0.0;
   1508                     #        var blueFrac = rgb_color.blue || 0.0;
   1509                     #        var red = Math.floor(redFrac * 255);
   1510                     #        var green = Math.floor(greenFrac * 255);
   1511                     #        var blue = Math.floor(blueFrac * 255);
   1512                     #
   1513                     #        if (!('alpha' in rgb_color)) {
   1514                     #           return rgbToCssColor_(red, green, blue);
   1515                     #        }
   1516                     #
   1517                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   1518                     #        var rgbParams = [red, green, blue].join(',');
   1519                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   1520                     #     };
   1521                     #
   1522                     #     var rgbToCssColor_ = function(red, green, blue) {
   1523                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   1524                     #       var hexString = rgbNumber.toString(16);
   1525                     #       var missingZeros = 6 - hexString.length;
   1526                     #       var resultBuilder = ['#'];
   1527                     #       for (var i = 0; i < missingZeros; i++) {
   1528                     #          resultBuilder.push('0');
   1529                     #       }
   1530                     #       resultBuilder.push(hexString);
   1531                     #       return resultBuilder.join('');
   1532                     #     };
   1533                     #
   1534                     #     // ...
   1535                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   1536                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   1537                       # the final pixel color is defined by the equation:
   1538                       #
   1539                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   1540                       #
   1541                       # This means that a value of 1.0 corresponds to a solid color, whereas
   1542                       # a value of 0.0 corresponds to a completely transparent color. This
   1543                       # uses a wrapper message rather than a simple float scalar so that it is
   1544                       # possible to distinguish between a default value and the value being unset.
   1545                       # If omitted, this color object is to be rendered as a solid color
   1546                       # (as if the alpha value had been explicitly given with a value of 1.0).
   1547                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   1548                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   1549                 },
   1550                 "type": "A String", # How the value should be interpreted.
   1551                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   1552                     # Unused if type is MIN or
   1553                     # MAX.
   1554               },
   1555             },
   1556           },
   1557         },
   1558         "updateProtectedRange": { # Updates an existing protected range with the specified # Updates a protected range.
   1559             # protectedRangeId.
   1560           "fields": "A String", # The fields that should be updated.  At least one field must be specified.
   1561               # The root `protectedRange` is implied and should not be specified.
   1562               # A single `"*"` can be used as short-hand for listing every field.
   1563           "protectedRange": { # A protected range. # The protected range to update with the new properties.
   1564             "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
   1565                 # Unprotected ranges are only supported on protected sheets.
   1566               { # A range on a sheet.
   1567                   # All indexes are zero-based.
   1568                   # Indexes are half open, e.g the start index is inclusive
   1569                   # and the end index is exclusive -- [start_index, end_index).
   1570                   # Missing indexes indicate the range is unbounded on that side.
   1571                   #
   1572                   # For example, if `"Sheet1"` is sheet ID 0, then:
   1573                   #
   1574                   #   `Sheet1!A1:A1 == sheet_id: 0,
   1575                   #                   start_row_index: 0, end_row_index: 1,
   1576                   #                   start_column_index: 0, end_column_index: 1`
   1577                   #
   1578                   #   `Sheet1!A3:B4 == sheet_id: 0,
   1579                   #                   start_row_index: 2, end_row_index: 4,
   1580                   #                   start_column_index: 0, end_column_index: 2`
   1581                   #
   1582                   #   `Sheet1!A:B == sheet_id: 0,
   1583                   #                 start_column_index: 0, end_column_index: 2`
   1584                   #
   1585                   #   `Sheet1!A5:B == sheet_id: 0,
   1586                   #                  start_row_index: 4,
   1587                   #                  start_column_index: 0, end_column_index: 2`
   1588                   #
   1589                   #   `Sheet1 == sheet_id:0`
   1590                   #
   1591                   # The start index must always be less than or equal to the end index.
   1592                   # If the start index equals the end index, then the range is empty.
   1593                   # Empty ranges are typically not meaningful and are usually rendered in the
   1594                   # UI as `#REF!`.
   1595                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   1596                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   1597                 "sheetId": 42, # The sheet this range is on.
   1598                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   1599                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   1600               },
   1601             ],
   1602             "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
   1603                 # protected area.
   1604                 # This field is read-only.
   1605             "description": "A String", # The description of this protected range.
   1606             "namedRangeId": "A String", # The named range this protected range is backed by, if any.
   1607                 #
   1608                 # When writing, only one of range or named_range_id
   1609                 # may be set.
   1610             "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
   1611                 # This field is only visible to users with edit access to the protected
   1612                 # range and the document.
   1613                 # Editors are not supported with warning_only protection.
   1614               "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
   1615                   # range.  Domain protection is only supported on documents within a domain.
   1616               "users": [ # The email addresses of users with edit access to the protected range.
   1617                 "A String",
   1618               ],
   1619               "groups": [ # The email addresses of groups with edit access to the protected range.
   1620                 "A String",
   1621               ],
   1622             },
   1623             "protectedRangeId": 42, # The ID of the protected range.
   1624                 # This field is read-only.
   1625             "warningOnly": True or False, # True if this protected range will show a warning when editing.
   1626                 # Warning-based protection means that every user can edit data in the
   1627                 # protected range, except editing will prompt a warning asking the user
   1628                 # to confirm the edit.
   1629                 #
   1630                 # When writing: if this field is true, then editors is ignored.
   1631                 # Additionally, if this field is changed from true to false and the
   1632                 # `editors` field is not set (nor included in the field mask), then
   1633                 # the editors will be set to all the editors in the document.
   1634             "range": { # A range on a sheet. # The range that is being protected.
   1635                 # The range may be fully unbounded, in which case this is considered
   1636                 # a protected sheet.
   1637                 #
   1638                 # When writing, only one of range or named_range_id
   1639                 # may be set.
   1640                 # All indexes are zero-based.
   1641                 # Indexes are half open, e.g the start index is inclusive
   1642                 # and the end index is exclusive -- [start_index, end_index).
   1643                 # Missing indexes indicate the range is unbounded on that side.
   1644                 #
   1645                 # For example, if `"Sheet1"` is sheet ID 0, then:
   1646                 #
   1647                 #   `Sheet1!A1:A1 == sheet_id: 0,
   1648                 #                   start_row_index: 0, end_row_index: 1,
   1649                 #                   start_column_index: 0, end_column_index: 1`
   1650                 #
   1651                 #   `Sheet1!A3:B4 == sheet_id: 0,
   1652                 #                   start_row_index: 2, end_row_index: 4,
   1653                 #                   start_column_index: 0, end_column_index: 2`
   1654                 #
   1655                 #   `Sheet1!A:B == sheet_id: 0,
   1656                 #                 start_column_index: 0, end_column_index: 2`
   1657                 #
   1658                 #   `Sheet1!A5:B == sheet_id: 0,
   1659                 #                  start_row_index: 4,
   1660                 #                  start_column_index: 0, end_column_index: 2`
   1661                 #
   1662                 #   `Sheet1 == sheet_id:0`
   1663                 #
   1664                 # The start index must always be less than or equal to the end index.
   1665                 # If the start index equals the end index, then the range is empty.
   1666                 # Empty ranges are typically not meaningful and are usually rendered in the
   1667                 # UI as `#REF!`.
   1668               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   1669               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   1670               "sheetId": 42, # The sheet this range is on.
   1671               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   1672               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   1673             },
   1674           },
   1675         },
   1676         "deleteDimension": { # Deletes the dimensions from the sheet. # Deletes rows or columns in a sheet.
   1677           "range": { # A range along a single dimension on a sheet. # The dimensions to delete from the sheet.
   1678               # All indexes are zero-based.
   1679               # Indexes are half open: the start index is inclusive
   1680               # and the end index is exclusive.
   1681               # Missing indexes indicate the range is unbounded on that side.
   1682             "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
   1683             "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
   1684             "dimension": "A String", # The dimension of the span.
   1685             "sheetId": 42, # The sheet this span is on.
   1686           },
   1687         },
   1688         "addProtectedRange": { # Adds a new protected range. # Adds a protected range.
   1689           "protectedRange": { # A protected range. # The protected range to be added. The
   1690               # protectedRangeId field is optional; if
   1691               # one is not set, an id will be randomly generated. (It is an error to
   1692               # specify the ID of a range that already exists.)
   1693             "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
   1694                 # Unprotected ranges are only supported on protected sheets.
   1695               { # A range on a sheet.
   1696                   # All indexes are zero-based.
   1697                   # Indexes are half open, e.g the start index is inclusive
   1698                   # and the end index is exclusive -- [start_index, end_index).
   1699                   # Missing indexes indicate the range is unbounded on that side.
   1700                   #
   1701                   # For example, if `"Sheet1"` is sheet ID 0, then:
   1702                   #
   1703                   #   `Sheet1!A1:A1 == sheet_id: 0,
   1704                   #                   start_row_index: 0, end_row_index: 1,
   1705                   #                   start_column_index: 0, end_column_index: 1`
   1706                   #
   1707                   #   `Sheet1!A3:B4 == sheet_id: 0,
   1708                   #                   start_row_index: 2, end_row_index: 4,
   1709                   #                   start_column_index: 0, end_column_index: 2`
   1710                   #
   1711                   #   `Sheet1!A:B == sheet_id: 0,
   1712                   #                 start_column_index: 0, end_column_index: 2`
   1713                   #
   1714                   #   `Sheet1!A5:B == sheet_id: 0,
   1715                   #                  start_row_index: 4,
   1716                   #                  start_column_index: 0, end_column_index: 2`
   1717                   #
   1718                   #   `Sheet1 == sheet_id:0`
   1719                   #
   1720                   # The start index must always be less than or equal to the end index.
   1721                   # If the start index equals the end index, then the range is empty.
   1722                   # Empty ranges are typically not meaningful and are usually rendered in the
   1723                   # UI as `#REF!`.
   1724                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   1725                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   1726                 "sheetId": 42, # The sheet this range is on.
   1727                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   1728                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   1729               },
   1730             ],
   1731             "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
   1732                 # protected area.
   1733                 # This field is read-only.
   1734             "description": "A String", # The description of this protected range.
   1735             "namedRangeId": "A String", # The named range this protected range is backed by, if any.
   1736                 #
   1737                 # When writing, only one of range or named_range_id
   1738                 # may be set.
   1739             "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
   1740                 # This field is only visible to users with edit access to the protected
   1741                 # range and the document.
   1742                 # Editors are not supported with warning_only protection.
   1743               "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
   1744                   # range.  Domain protection is only supported on documents within a domain.
   1745               "users": [ # The email addresses of users with edit access to the protected range.
   1746                 "A String",
   1747               ],
   1748               "groups": [ # The email addresses of groups with edit access to the protected range.
   1749                 "A String",
   1750               ],
   1751             },
   1752             "protectedRangeId": 42, # The ID of the protected range.
   1753                 # This field is read-only.
   1754             "warningOnly": True or False, # True if this protected range will show a warning when editing.
   1755                 # Warning-based protection means that every user can edit data in the
   1756                 # protected range, except editing will prompt a warning asking the user
   1757                 # to confirm the edit.
   1758                 #
   1759                 # When writing: if this field is true, then editors is ignored.
   1760                 # Additionally, if this field is changed from true to false and the
   1761                 # `editors` field is not set (nor included in the field mask), then
   1762                 # the editors will be set to all the editors in the document.
   1763             "range": { # A range on a sheet. # The range that is being protected.
   1764                 # The range may be fully unbounded, in which case this is considered
   1765                 # a protected sheet.
   1766                 #
   1767                 # When writing, only one of range or named_range_id
   1768                 # may be set.
   1769                 # All indexes are zero-based.
   1770                 # Indexes are half open, e.g the start index is inclusive
   1771                 # and the end index is exclusive -- [start_index, end_index).
   1772                 # Missing indexes indicate the range is unbounded on that side.
   1773                 #
   1774                 # For example, if `"Sheet1"` is sheet ID 0, then:
   1775                 #
   1776                 #   `Sheet1!A1:A1 == sheet_id: 0,
   1777                 #                   start_row_index: 0, end_row_index: 1,
   1778                 #                   start_column_index: 0, end_column_index: 1`
   1779                 #
   1780                 #   `Sheet1!A3:B4 == sheet_id: 0,
   1781                 #                   start_row_index: 2, end_row_index: 4,
   1782                 #                   start_column_index: 0, end_column_index: 2`
   1783                 #
   1784                 #   `Sheet1!A:B == sheet_id: 0,
   1785                 #                 start_column_index: 0, end_column_index: 2`
   1786                 #
   1787                 #   `Sheet1!A5:B == sheet_id: 0,
   1788                 #                  start_row_index: 4,
   1789                 #                  start_column_index: 0, end_column_index: 2`
   1790                 #
   1791                 #   `Sheet1 == sheet_id:0`
   1792                 #
   1793                 # The start index must always be less than or equal to the end index.
   1794                 # If the start index equals the end index, then the range is empty.
   1795                 # Empty ranges are typically not meaningful and are usually rendered in the
   1796                 # UI as `#REF!`.
   1797               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   1798               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   1799               "sheetId": 42, # The sheet this range is on.
   1800               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   1801               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   1802             },
   1803           },
   1804         },
   1805         "deleteEmbeddedObject": { # Deletes the embedded object with the given ID. # Deletes an embedded object (e.g, chart, image) in a sheet.
   1806           "objectId": 42, # The ID of the embedded object to delete.
   1807         },
   1808         "pasteData": { # Inserts data into the spreadsheet starting at the specified coordinate. # Pastes data (HTML or delimited) into a sheet.
   1809           "coordinate": { # A coordinate in a sheet. # The coordinate at which the data should start being inserted.
   1810               # All indexes are zero-based.
   1811             "rowIndex": 42, # The row index of the coordinate.
   1812             "columnIndex": 42, # The column index of the coordinate.
   1813             "sheetId": 42, # The sheet this coordinate is on.
   1814           },
   1815           "data": "A String", # The data to insert.
   1816           "delimiter": "A String", # The delimiter in the data.
   1817           "html": True or False, # True if the data is HTML.
   1818           "type": "A String", # How the data should be pasted.
   1819         },
   1820         "updateSpreadsheetProperties": { # Updates properties of a spreadsheet. # Updates the spreadsheet's properties.
   1821           "fields": "A String", # The fields that should be updated.  At least one field must be specified.
   1822               # The root 'properties' is implied and should not be specified.
   1823               # A single `"*"` can be used as short-hand for listing every field.
   1824           "properties": { # Properties of a spreadsheet. # The properties to update.
   1825             "title": "A String", # The title of the spreadsheet.
   1826             "locale": "A String", # The locale of the spreadsheet in one of the following formats:
   1827                 #
   1828                 # * an ISO 639-1 language code such as `en`
   1829                 #
   1830                 # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
   1831                 #
   1832                 # * a combination of the ISO language code and country code, such as `en_US`
   1833                 #
   1834                 # Note: when updating this field, not all locales/languages are supported.
   1835             "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
   1836                 # CellData.effectiveFormat will not be set if the
   1837                 # cell's format is equal to this default format.
   1838                 # This field is read-only.
   1839               "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   1840                 "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   1841                     # the user's locale will be used if necessary for the given type.
   1842                     # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   1843                     # information about the supported patterns.
   1844                 "type": "A String", # The type of the number format.
   1845                     # When writing, this field must be set.
   1846               },
   1847               "textDirection": "A String", # The direction of the text in the cell.
   1848               "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   1849                   # When updating padding, every field must be specified.
   1850                 "top": 42, # The top padding of the cell.
   1851                 "right": 42, # The right padding of the cell.
   1852                 "bottom": 42, # The bottom padding of the cell.
   1853                 "left": 42, # The left padding of the cell.
   1854               },
   1855               "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   1856               "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   1857                   # for simplicity of conversion to/from color representations in various
   1858                   # languages over compactness; for example, the fields of this representation
   1859                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   1860                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   1861                   # method in iOS; and, with just a little work, it can be easily formatted into
   1862                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   1863                   #
   1864                   # Example (Java):
   1865                   #
   1866                   #      import com.google.type.Color;
   1867                   #
   1868                   #      // ...
   1869                   #      public static java.awt.Color fromProto(Color protocolor) {
   1870                   #        float alpha = protocolor.hasAlpha()
   1871                   #            ? protocolor.getAlpha().getValue()
   1872                   #            : 1.0;
   1873                   #
   1874                   #        return new java.awt.Color(
   1875                   #            protocolor.getRed(),
   1876                   #            protocolor.getGreen(),
   1877                   #            protocolor.getBlue(),
   1878                   #            alpha);
   1879                   #      }
   1880                   #
   1881                   #      public static Color toProto(java.awt.Color color) {
   1882                   #        float red = (float) color.getRed();
   1883                   #        float green = (float) color.getGreen();
   1884                   #        float blue = (float) color.getBlue();
   1885                   #        float denominator = 255.0;
   1886                   #        Color.Builder resultBuilder =
   1887                   #            Color
   1888                   #                .newBuilder()
   1889                   #                .setRed(red / denominator)
   1890                   #                .setGreen(green / denominator)
   1891                   #                .setBlue(blue / denominator);
   1892                   #        int alpha = color.getAlpha();
   1893                   #        if (alpha != 255) {
   1894                   #          result.setAlpha(
   1895                   #              FloatValue
   1896                   #                  .newBuilder()
   1897                   #                  .setValue(((float) alpha) / denominator)
   1898                   #                  .build());
   1899                   #        }
   1900                   #        return resultBuilder.build();
   1901                   #      }
   1902                   #      // ...
   1903                   #
   1904                   # Example (iOS / Obj-C):
   1905                   #
   1906                   #      // ...
   1907                   #      static UIColor* fromProto(Color* protocolor) {
   1908                   #         float red = [protocolor red];
   1909                   #         float green = [protocolor green];
   1910                   #         float blue = [protocolor blue];
   1911                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   1912                   #         float alpha = 1.0;
   1913                   #         if (alpha_wrapper != nil) {
   1914                   #           alpha = [alpha_wrapper value];
   1915                   #         }
   1916                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   1917                   #      }
   1918                   #
   1919                   #      static Color* toProto(UIColor* color) {
   1920                   #          CGFloat red, green, blue, alpha;
   1921                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   1922                   #            return nil;
   1923                   #          }
   1924                   #          Color* result = [Color alloc] init];
   1925                   #          [result setRed:red];
   1926                   #          [result setGreen:green];
   1927                   #          [result setBlue:blue];
   1928                   #          if (alpha <= 0.9999) {
   1929                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   1930                   #          }
   1931                   #          [result autorelease];
   1932                   #          return result;
   1933                   #     }
   1934                   #     // ...
   1935                   #
   1936                   #  Example (JavaScript):
   1937                   #
   1938                   #     // ...
   1939                   #
   1940                   #     var protoToCssColor = function(rgb_color) {
   1941                   #        var redFrac = rgb_color.red || 0.0;
   1942                   #        var greenFrac = rgb_color.green || 0.0;
   1943                   #        var blueFrac = rgb_color.blue || 0.0;
   1944                   #        var red = Math.floor(redFrac * 255);
   1945                   #        var green = Math.floor(greenFrac * 255);
   1946                   #        var blue = Math.floor(blueFrac * 255);
   1947                   #
   1948                   #        if (!('alpha' in rgb_color)) {
   1949                   #           return rgbToCssColor_(red, green, blue);
   1950                   #        }
   1951                   #
   1952                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   1953                   #        var rgbParams = [red, green, blue].join(',');
   1954                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   1955                   #     };
   1956                   #
   1957                   #     var rgbToCssColor_ = function(red, green, blue) {
   1958                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   1959                   #       var hexString = rgbNumber.toString(16);
   1960                   #       var missingZeros = 6 - hexString.length;
   1961                   #       var resultBuilder = ['#'];
   1962                   #       for (var i = 0; i < missingZeros; i++) {
   1963                   #          resultBuilder.push('0');
   1964                   #       }
   1965                   #       resultBuilder.push(hexString);
   1966                   #       return resultBuilder.join('');
   1967                   #     };
   1968                   #
   1969                   #     // ...
   1970                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   1971                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   1972                     # the final pixel color is defined by the equation:
   1973                     #
   1974                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   1975                     #
   1976                     # This means that a value of 1.0 corresponds to a solid color, whereas
   1977                     # a value of 0.0 corresponds to a completely transparent color. This
   1978                     # uses a wrapper message rather than a simple float scalar so that it is
   1979                     # possible to distinguish between a default value and the value being unset.
   1980                     # If omitted, this color object is to be rendered as a solid color
   1981                     # (as if the alpha value had been explicitly given with a value of 1.0).
   1982                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   1983                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   1984               },
   1985               "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   1986               "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   1987                   # Absent values indicate that the field isn't specified.
   1988                 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   1989                     # for simplicity of conversion to/from color representations in various
   1990                     # languages over compactness; for example, the fields of this representation
   1991                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   1992                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   1993                     # method in iOS; and, with just a little work, it can be easily formatted into
   1994                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   1995                     #
   1996                     # Example (Java):
   1997                     #
   1998                     #      import com.google.type.Color;
   1999                     #
   2000                     #      // ...
   2001                     #      public static java.awt.Color fromProto(Color protocolor) {
   2002                     #        float alpha = protocolor.hasAlpha()
   2003                     #            ? protocolor.getAlpha().getValue()
   2004                     #            : 1.0;
   2005                     #
   2006                     #        return new java.awt.Color(
   2007                     #            protocolor.getRed(),
   2008                     #            protocolor.getGreen(),
   2009                     #            protocolor.getBlue(),
   2010                     #            alpha);
   2011                     #      }
   2012                     #
   2013                     #      public static Color toProto(java.awt.Color color) {
   2014                     #        float red = (float) color.getRed();
   2015                     #        float green = (float) color.getGreen();
   2016                     #        float blue = (float) color.getBlue();
   2017                     #        float denominator = 255.0;
   2018                     #        Color.Builder resultBuilder =
   2019                     #            Color
   2020                     #                .newBuilder()
   2021                     #                .setRed(red / denominator)
   2022                     #                .setGreen(green / denominator)
   2023                     #                .setBlue(blue / denominator);
   2024                     #        int alpha = color.getAlpha();
   2025                     #        if (alpha != 255) {
   2026                     #          result.setAlpha(
   2027                     #              FloatValue
   2028                     #                  .newBuilder()
   2029                     #                  .setValue(((float) alpha) / denominator)
   2030                     #                  .build());
   2031                     #        }
   2032                     #        return resultBuilder.build();
   2033                     #      }
   2034                     #      // ...
   2035                     #
   2036                     # Example (iOS / Obj-C):
   2037                     #
   2038                     #      // ...
   2039                     #      static UIColor* fromProto(Color* protocolor) {
   2040                     #         float red = [protocolor red];
   2041                     #         float green = [protocolor green];
   2042                     #         float blue = [protocolor blue];
   2043                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   2044                     #         float alpha = 1.0;
   2045                     #         if (alpha_wrapper != nil) {
   2046                     #           alpha = [alpha_wrapper value];
   2047                     #         }
   2048                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   2049                     #      }
   2050                     #
   2051                     #      static Color* toProto(UIColor* color) {
   2052                     #          CGFloat red, green, blue, alpha;
   2053                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   2054                     #            return nil;
   2055                     #          }
   2056                     #          Color* result = [Color alloc] init];
   2057                     #          [result setRed:red];
   2058                     #          [result setGreen:green];
   2059                     #          [result setBlue:blue];
   2060                     #          if (alpha <= 0.9999) {
   2061                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   2062                     #          }
   2063                     #          [result autorelease];
   2064                     #          return result;
   2065                     #     }
   2066                     #     // ...
   2067                     #
   2068                     #  Example (JavaScript):
   2069                     #
   2070                     #     // ...
   2071                     #
   2072                     #     var protoToCssColor = function(rgb_color) {
   2073                     #        var redFrac = rgb_color.red || 0.0;
   2074                     #        var greenFrac = rgb_color.green || 0.0;
   2075                     #        var blueFrac = rgb_color.blue || 0.0;
   2076                     #        var red = Math.floor(redFrac * 255);
   2077                     #        var green = Math.floor(greenFrac * 255);
   2078                     #        var blue = Math.floor(blueFrac * 255);
   2079                     #
   2080                     #        if (!('alpha' in rgb_color)) {
   2081                     #           return rgbToCssColor_(red, green, blue);
   2082                     #        }
   2083                     #
   2084                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   2085                     #        var rgbParams = [red, green, blue].join(',');
   2086                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   2087                     #     };
   2088                     #
   2089                     #     var rgbToCssColor_ = function(red, green, blue) {
   2090                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   2091                     #       var hexString = rgbNumber.toString(16);
   2092                     #       var missingZeros = 6 - hexString.length;
   2093                     #       var resultBuilder = ['#'];
   2094                     #       for (var i = 0; i < missingZeros; i++) {
   2095                     #          resultBuilder.push('0');
   2096                     #       }
   2097                     #       resultBuilder.push(hexString);
   2098                     #       return resultBuilder.join('');
   2099                     #     };
   2100                     #
   2101                     #     // ...
   2102                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   2103                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   2104                       # the final pixel color is defined by the equation:
   2105                       #
   2106                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   2107                       #
   2108                       # This means that a value of 1.0 corresponds to a solid color, whereas
   2109                       # a value of 0.0 corresponds to a completely transparent color. This
   2110                       # uses a wrapper message rather than a simple float scalar so that it is
   2111                       # possible to distinguish between a default value and the value being unset.
   2112                       # If omitted, this color object is to be rendered as a solid color
   2113                       # (as if the alpha value had been explicitly given with a value of 1.0).
   2114                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   2115                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   2116                 },
   2117                 "bold": True or False, # True if the text is bold.
   2118                 "strikethrough": True or False, # True if the text has a strikethrough.
   2119                 "fontFamily": "A String", # The font family.
   2120                 "fontSize": 42, # The size of the font.
   2121                 "italic": True or False, # True if the text is italicized.
   2122                 "underline": True or False, # True if the text is underlined.
   2123               },
   2124               "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   2125                 "angle": 42, # The angle between the standard orientation and the desired orientation.
   2126                     # Measured in degrees. Valid values are between -90 and 90. Positive
   2127                     # angles are angled upwards, negative are angled downwards.
   2128                     #
   2129                     # Note: For LTR text direction positive angles are in the counterclockwise
   2130                     # direction, whereas for RTL they are in the clockwise direction
   2131                 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   2132                     # characters is unchanged.
   2133                     # For example:
   2134                     #
   2135                     #     | V |
   2136                     #     | e |
   2137                     #     | r |
   2138                     #     | t |
   2139                     #     | i |
   2140                     #     | c |
   2141                     #     | a |
   2142                     #     | l |
   2143               },
   2144               "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   2145               "borders": { # The borders of the cell. # The borders of the cell.
   2146                 "top": { # A border along a cell. # The top border of the cell.
   2147                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   2148                       # for simplicity of conversion to/from color representations in various
   2149                       # languages over compactness; for example, the fields of this representation
   2150                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   2151                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   2152                       # method in iOS; and, with just a little work, it can be easily formatted into
   2153                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   2154                       #
   2155                       # Example (Java):
   2156                       #
   2157                       #      import com.google.type.Color;
   2158                       #
   2159                       #      // ...
   2160                       #      public static java.awt.Color fromProto(Color protocolor) {
   2161                       #        float alpha = protocolor.hasAlpha()
   2162                       #            ? protocolor.getAlpha().getValue()
   2163                       #            : 1.0;
   2164                       #
   2165                       #        return new java.awt.Color(
   2166                       #            protocolor.getRed(),
   2167                       #            protocolor.getGreen(),
   2168                       #            protocolor.getBlue(),
   2169                       #            alpha);
   2170                       #      }
   2171                       #
   2172                       #      public static Color toProto(java.awt.Color color) {
   2173                       #        float red = (float) color.getRed();
   2174                       #        float green = (float) color.getGreen();
   2175                       #        float blue = (float) color.getBlue();
   2176                       #        float denominator = 255.0;
   2177                       #        Color.Builder resultBuilder =
   2178                       #            Color
   2179                       #                .newBuilder()
   2180                       #                .setRed(red / denominator)
   2181                       #                .setGreen(green / denominator)
   2182                       #                .setBlue(blue / denominator);
   2183                       #        int alpha = color.getAlpha();
   2184                       #        if (alpha != 255) {
   2185                       #          result.setAlpha(
   2186                       #              FloatValue
   2187                       #                  .newBuilder()
   2188                       #                  .setValue(((float) alpha) / denominator)
   2189                       #                  .build());
   2190                       #        }
   2191                       #        return resultBuilder.build();
   2192                       #      }
   2193                       #      // ...
   2194                       #
   2195                       # Example (iOS / Obj-C):
   2196                       #
   2197                       #      // ...
   2198                       #      static UIColor* fromProto(Color* protocolor) {
   2199                       #         float red = [protocolor red];
   2200                       #         float green = [protocolor green];
   2201                       #         float blue = [protocolor blue];
   2202                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   2203                       #         float alpha = 1.0;
   2204                       #         if (alpha_wrapper != nil) {
   2205                       #           alpha = [alpha_wrapper value];
   2206                       #         }
   2207                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   2208                       #      }
   2209                       #
   2210                       #      static Color* toProto(UIColor* color) {
   2211                       #          CGFloat red, green, blue, alpha;
   2212                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   2213                       #            return nil;
   2214                       #          }
   2215                       #          Color* result = [Color alloc] init];
   2216                       #          [result setRed:red];
   2217                       #          [result setGreen:green];
   2218                       #          [result setBlue:blue];
   2219                       #          if (alpha <= 0.9999) {
   2220                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   2221                       #          }
   2222                       #          [result autorelease];
   2223                       #          return result;
   2224                       #     }
   2225                       #     // ...
   2226                       #
   2227                       #  Example (JavaScript):
   2228                       #
   2229                       #     // ...
   2230                       #
   2231                       #     var protoToCssColor = function(rgb_color) {
   2232                       #        var redFrac = rgb_color.red || 0.0;
   2233                       #        var greenFrac = rgb_color.green || 0.0;
   2234                       #        var blueFrac = rgb_color.blue || 0.0;
   2235                       #        var red = Math.floor(redFrac * 255);
   2236                       #        var green = Math.floor(greenFrac * 255);
   2237                       #        var blue = Math.floor(blueFrac * 255);
   2238                       #
   2239                       #        if (!('alpha' in rgb_color)) {
   2240                       #           return rgbToCssColor_(red, green, blue);
   2241                       #        }
   2242                       #
   2243                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   2244                       #        var rgbParams = [red, green, blue].join(',');
   2245                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   2246                       #     };
   2247                       #
   2248                       #     var rgbToCssColor_ = function(red, green, blue) {
   2249                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   2250                       #       var hexString = rgbNumber.toString(16);
   2251                       #       var missingZeros = 6 - hexString.length;
   2252                       #       var resultBuilder = ['#'];
   2253                       #       for (var i = 0; i < missingZeros; i++) {
   2254                       #          resultBuilder.push('0');
   2255                       #       }
   2256                       #       resultBuilder.push(hexString);
   2257                       #       return resultBuilder.join('');
   2258                       #     };
   2259                       #
   2260                       #     // ...
   2261                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   2262                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   2263                         # the final pixel color is defined by the equation:
   2264                         #
   2265                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   2266                         #
   2267                         # This means that a value of 1.0 corresponds to a solid color, whereas
   2268                         # a value of 0.0 corresponds to a completely transparent color. This
   2269                         # uses a wrapper message rather than a simple float scalar so that it is
   2270                         # possible to distinguish between a default value and the value being unset.
   2271                         # If omitted, this color object is to be rendered as a solid color
   2272                         # (as if the alpha value had been explicitly given with a value of 1.0).
   2273                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   2274                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   2275                   },
   2276                   "width": 42, # The width of the border, in pixels.
   2277                       # Deprecated; the width is determined by the "style" field.
   2278                   "style": "A String", # The style of the border.
   2279                 },
   2280                 "right": { # A border along a cell. # The right border of the cell.
   2281                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   2282                       # for simplicity of conversion to/from color representations in various
   2283                       # languages over compactness; for example, the fields of this representation
   2284                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   2285                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   2286                       # method in iOS; and, with just a little work, it can be easily formatted into
   2287                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   2288                       #
   2289                       # Example (Java):
   2290                       #
   2291                       #      import com.google.type.Color;
   2292                       #
   2293                       #      // ...
   2294                       #      public static java.awt.Color fromProto(Color protocolor) {
   2295                       #        float alpha = protocolor.hasAlpha()
   2296                       #            ? protocolor.getAlpha().getValue()
   2297                       #            : 1.0;
   2298                       #
   2299                       #        return new java.awt.Color(
   2300                       #            protocolor.getRed(),
   2301                       #            protocolor.getGreen(),
   2302                       #            protocolor.getBlue(),
   2303                       #            alpha);
   2304                       #      }
   2305                       #
   2306                       #      public static Color toProto(java.awt.Color color) {
   2307                       #        float red = (float) color.getRed();
   2308                       #        float green = (float) color.getGreen();
   2309                       #        float blue = (float) color.getBlue();
   2310                       #        float denominator = 255.0;
   2311                       #        Color.Builder resultBuilder =
   2312                       #            Color
   2313                       #                .newBuilder()
   2314                       #                .setRed(red / denominator)
   2315                       #                .setGreen(green / denominator)
   2316                       #                .setBlue(blue / denominator);
   2317                       #        int alpha = color.getAlpha();
   2318                       #        if (alpha != 255) {
   2319                       #          result.setAlpha(
   2320                       #              FloatValue
   2321                       #                  .newBuilder()
   2322                       #                  .setValue(((float) alpha) / denominator)
   2323                       #                  .build());
   2324                       #        }
   2325                       #        return resultBuilder.build();
   2326                       #      }
   2327                       #      // ...
   2328                       #
   2329                       # Example (iOS / Obj-C):
   2330                       #
   2331                       #      // ...
   2332                       #      static UIColor* fromProto(Color* protocolor) {
   2333                       #         float red = [protocolor red];
   2334                       #         float green = [protocolor green];
   2335                       #         float blue = [protocolor blue];
   2336                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   2337                       #         float alpha = 1.0;
   2338                       #         if (alpha_wrapper != nil) {
   2339                       #           alpha = [alpha_wrapper value];
   2340                       #         }
   2341                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   2342                       #      }
   2343                       #
   2344                       #      static Color* toProto(UIColor* color) {
   2345                       #          CGFloat red, green, blue, alpha;
   2346                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   2347                       #            return nil;
   2348                       #          }
   2349                       #          Color* result = [Color alloc] init];
   2350                       #          [result setRed:red];
   2351                       #          [result setGreen:green];
   2352                       #          [result setBlue:blue];
   2353                       #          if (alpha <= 0.9999) {
   2354                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   2355                       #          }
   2356                       #          [result autorelease];
   2357                       #          return result;
   2358                       #     }
   2359                       #     // ...
   2360                       #
   2361                       #  Example (JavaScript):
   2362                       #
   2363                       #     // ...
   2364                       #
   2365                       #     var protoToCssColor = function(rgb_color) {
   2366                       #        var redFrac = rgb_color.red || 0.0;
   2367                       #        var greenFrac = rgb_color.green || 0.0;
   2368                       #        var blueFrac = rgb_color.blue || 0.0;
   2369                       #        var red = Math.floor(redFrac * 255);
   2370                       #        var green = Math.floor(greenFrac * 255);
   2371                       #        var blue = Math.floor(blueFrac * 255);
   2372                       #
   2373                       #        if (!('alpha' in rgb_color)) {
   2374                       #           return rgbToCssColor_(red, green, blue);
   2375                       #        }
   2376                       #
   2377                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   2378                       #        var rgbParams = [red, green, blue].join(',');
   2379                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   2380                       #     };
   2381                       #
   2382                       #     var rgbToCssColor_ = function(red, green, blue) {
   2383                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   2384                       #       var hexString = rgbNumber.toString(16);
   2385                       #       var missingZeros = 6 - hexString.length;
   2386                       #       var resultBuilder = ['#'];
   2387                       #       for (var i = 0; i < missingZeros; i++) {
   2388                       #          resultBuilder.push('0');
   2389                       #       }
   2390                       #       resultBuilder.push(hexString);
   2391                       #       return resultBuilder.join('');
   2392                       #     };
   2393                       #
   2394                       #     // ...
   2395                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   2396                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   2397                         # the final pixel color is defined by the equation:
   2398                         #
   2399                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   2400                         #
   2401                         # This means that a value of 1.0 corresponds to a solid color, whereas
   2402                         # a value of 0.0 corresponds to a completely transparent color. This
   2403                         # uses a wrapper message rather than a simple float scalar so that it is
   2404                         # possible to distinguish between a default value and the value being unset.
   2405                         # If omitted, this color object is to be rendered as a solid color
   2406                         # (as if the alpha value had been explicitly given with a value of 1.0).
   2407                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   2408                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   2409                   },
   2410                   "width": 42, # The width of the border, in pixels.
   2411                       # Deprecated; the width is determined by the "style" field.
   2412                   "style": "A String", # The style of the border.
   2413                 },
   2414                 "bottom": { # A border along a cell. # The bottom border of the cell.
   2415                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   2416                       # for simplicity of conversion to/from color representations in various
   2417                       # languages over compactness; for example, the fields of this representation
   2418                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   2419                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   2420                       # method in iOS; and, with just a little work, it can be easily formatted into
   2421                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   2422                       #
   2423                       # Example (Java):
   2424                       #
   2425                       #      import com.google.type.Color;
   2426                       #
   2427                       #      // ...
   2428                       #      public static java.awt.Color fromProto(Color protocolor) {
   2429                       #        float alpha = protocolor.hasAlpha()
   2430                       #            ? protocolor.getAlpha().getValue()
   2431                       #            : 1.0;
   2432                       #
   2433                       #        return new java.awt.Color(
   2434                       #            protocolor.getRed(),
   2435                       #            protocolor.getGreen(),
   2436                       #            protocolor.getBlue(),
   2437                       #            alpha);
   2438                       #      }
   2439                       #
   2440                       #      public static Color toProto(java.awt.Color color) {
   2441                       #        float red = (float) color.getRed();
   2442                       #        float green = (float) color.getGreen();
   2443                       #        float blue = (float) color.getBlue();
   2444                       #        float denominator = 255.0;
   2445                       #        Color.Builder resultBuilder =
   2446                       #            Color
   2447                       #                .newBuilder()
   2448                       #                .setRed(red / denominator)
   2449                       #                .setGreen(green / denominator)
   2450                       #                .setBlue(blue / denominator);
   2451                       #        int alpha = color.getAlpha();
   2452                       #        if (alpha != 255) {
   2453                       #          result.setAlpha(
   2454                       #              FloatValue
   2455                       #                  .newBuilder()
   2456                       #                  .setValue(((float) alpha) / denominator)
   2457                       #                  .build());
   2458                       #        }
   2459                       #        return resultBuilder.build();
   2460                       #      }
   2461                       #      // ...
   2462                       #
   2463                       # Example (iOS / Obj-C):
   2464                       #
   2465                       #      // ...
   2466                       #      static UIColor* fromProto(Color* protocolor) {
   2467                       #         float red = [protocolor red];
   2468                       #         float green = [protocolor green];
   2469                       #         float blue = [protocolor blue];
   2470                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   2471                       #         float alpha = 1.0;
   2472                       #         if (alpha_wrapper != nil) {
   2473                       #           alpha = [alpha_wrapper value];
   2474                       #         }
   2475                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   2476                       #      }
   2477                       #
   2478                       #      static Color* toProto(UIColor* color) {
   2479                       #          CGFloat red, green, blue, alpha;
   2480                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   2481                       #            return nil;
   2482                       #          }
   2483                       #          Color* result = [Color alloc] init];
   2484                       #          [result setRed:red];
   2485                       #          [result setGreen:green];
   2486                       #          [result setBlue:blue];
   2487                       #          if (alpha <= 0.9999) {
   2488                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   2489                       #          }
   2490                       #          [result autorelease];
   2491                       #          return result;
   2492                       #     }
   2493                       #     // ...
   2494                       #
   2495                       #  Example (JavaScript):
   2496                       #
   2497                       #     // ...
   2498                       #
   2499                       #     var protoToCssColor = function(rgb_color) {
   2500                       #        var redFrac = rgb_color.red || 0.0;
   2501                       #        var greenFrac = rgb_color.green || 0.0;
   2502                       #        var blueFrac = rgb_color.blue || 0.0;
   2503                       #        var red = Math.floor(redFrac * 255);
   2504                       #        var green = Math.floor(greenFrac * 255);
   2505                       #        var blue = Math.floor(blueFrac * 255);
   2506                       #
   2507                       #        if (!('alpha' in rgb_color)) {
   2508                       #           return rgbToCssColor_(red, green, blue);
   2509                       #        }
   2510                       #
   2511                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   2512                       #        var rgbParams = [red, green, blue].join(',');
   2513                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   2514                       #     };
   2515                       #
   2516                       #     var rgbToCssColor_ = function(red, green, blue) {
   2517                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   2518                       #       var hexString = rgbNumber.toString(16);
   2519                       #       var missingZeros = 6 - hexString.length;
   2520                       #       var resultBuilder = ['#'];
   2521                       #       for (var i = 0; i < missingZeros; i++) {
   2522                       #          resultBuilder.push('0');
   2523                       #       }
   2524                       #       resultBuilder.push(hexString);
   2525                       #       return resultBuilder.join('');
   2526                       #     };
   2527                       #
   2528                       #     // ...
   2529                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   2530                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   2531                         # the final pixel color is defined by the equation:
   2532                         #
   2533                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   2534                         #
   2535                         # This means that a value of 1.0 corresponds to a solid color, whereas
   2536                         # a value of 0.0 corresponds to a completely transparent color. This
   2537                         # uses a wrapper message rather than a simple float scalar so that it is
   2538                         # possible to distinguish between a default value and the value being unset.
   2539                         # If omitted, this color object is to be rendered as a solid color
   2540                         # (as if the alpha value had been explicitly given with a value of 1.0).
   2541                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   2542                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   2543                   },
   2544                   "width": 42, # The width of the border, in pixels.
   2545                       # Deprecated; the width is determined by the "style" field.
   2546                   "style": "A String", # The style of the border.
   2547                 },
   2548                 "left": { # A border along a cell. # The left border of the cell.
   2549                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   2550                       # for simplicity of conversion to/from color representations in various
   2551                       # languages over compactness; for example, the fields of this representation
   2552                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   2553                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   2554                       # method in iOS; and, with just a little work, it can be easily formatted into
   2555                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   2556                       #
   2557                       # Example (Java):
   2558                       #
   2559                       #      import com.google.type.Color;
   2560                       #
   2561                       #      // ...
   2562                       #      public static java.awt.Color fromProto(Color protocolor) {
   2563                       #        float alpha = protocolor.hasAlpha()
   2564                       #            ? protocolor.getAlpha().getValue()
   2565                       #            : 1.0;
   2566                       #
   2567                       #        return new java.awt.Color(
   2568                       #            protocolor.getRed(),
   2569                       #            protocolor.getGreen(),
   2570                       #            protocolor.getBlue(),
   2571                       #            alpha);
   2572                       #      }
   2573                       #
   2574                       #      public static Color toProto(java.awt.Color color) {
   2575                       #        float red = (float) color.getRed();
   2576                       #        float green = (float) color.getGreen();
   2577                       #        float blue = (float) color.getBlue();
   2578                       #        float denominator = 255.0;
   2579                       #        Color.Builder resultBuilder =
   2580                       #            Color
   2581                       #                .newBuilder()
   2582                       #                .setRed(red / denominator)
   2583                       #                .setGreen(green / denominator)
   2584                       #                .setBlue(blue / denominator);
   2585                       #        int alpha = color.getAlpha();
   2586                       #        if (alpha != 255) {
   2587                       #          result.setAlpha(
   2588                       #              FloatValue
   2589                       #                  .newBuilder()
   2590                       #                  .setValue(((float) alpha) / denominator)
   2591                       #                  .build());
   2592                       #        }
   2593                       #        return resultBuilder.build();
   2594                       #      }
   2595                       #      // ...
   2596                       #
   2597                       # Example (iOS / Obj-C):
   2598                       #
   2599                       #      // ...
   2600                       #      static UIColor* fromProto(Color* protocolor) {
   2601                       #         float red = [protocolor red];
   2602                       #         float green = [protocolor green];
   2603                       #         float blue = [protocolor blue];
   2604                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   2605                       #         float alpha = 1.0;
   2606                       #         if (alpha_wrapper != nil) {
   2607                       #           alpha = [alpha_wrapper value];
   2608                       #         }
   2609                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   2610                       #      }
   2611                       #
   2612                       #      static Color* toProto(UIColor* color) {
   2613                       #          CGFloat red, green, blue, alpha;
   2614                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   2615                       #            return nil;
   2616                       #          }
   2617                       #          Color* result = [Color alloc] init];
   2618                       #          [result setRed:red];
   2619                       #          [result setGreen:green];
   2620                       #          [result setBlue:blue];
   2621                       #          if (alpha <= 0.9999) {
   2622                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   2623                       #          }
   2624                       #          [result autorelease];
   2625                       #          return result;
   2626                       #     }
   2627                       #     // ...
   2628                       #
   2629                       #  Example (JavaScript):
   2630                       #
   2631                       #     // ...
   2632                       #
   2633                       #     var protoToCssColor = function(rgb_color) {
   2634                       #        var redFrac = rgb_color.red || 0.0;
   2635                       #        var greenFrac = rgb_color.green || 0.0;
   2636                       #        var blueFrac = rgb_color.blue || 0.0;
   2637                       #        var red = Math.floor(redFrac * 255);
   2638                       #        var green = Math.floor(greenFrac * 255);
   2639                       #        var blue = Math.floor(blueFrac * 255);
   2640                       #
   2641                       #        if (!('alpha' in rgb_color)) {
   2642                       #           return rgbToCssColor_(red, green, blue);
   2643                       #        }
   2644                       #
   2645                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   2646                       #        var rgbParams = [red, green, blue].join(',');
   2647                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   2648                       #     };
   2649                       #
   2650                       #     var rgbToCssColor_ = function(red, green, blue) {
   2651                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   2652                       #       var hexString = rgbNumber.toString(16);
   2653                       #       var missingZeros = 6 - hexString.length;
   2654                       #       var resultBuilder = ['#'];
   2655                       #       for (var i = 0; i < missingZeros; i++) {
   2656                       #          resultBuilder.push('0');
   2657                       #       }
   2658                       #       resultBuilder.push(hexString);
   2659                       #       return resultBuilder.join('');
   2660                       #     };
   2661                       #
   2662                       #     // ...
   2663                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   2664                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   2665                         # the final pixel color is defined by the equation:
   2666                         #
   2667                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   2668                         #
   2669                         # This means that a value of 1.0 corresponds to a solid color, whereas
   2670                         # a value of 0.0 corresponds to a completely transparent color. This
   2671                         # uses a wrapper message rather than a simple float scalar so that it is
   2672                         # possible to distinguish between a default value and the value being unset.
   2673                         # If omitted, this color object is to be rendered as a solid color
   2674                         # (as if the alpha value had been explicitly given with a value of 1.0).
   2675                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   2676                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   2677                   },
   2678                   "width": 42, # The width of the border, in pixels.
   2679                       # Deprecated; the width is determined by the "style" field.
   2680                   "style": "A String", # The style of the border.
   2681                 },
   2682               },
   2683               "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   2684             },
   2685             "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
   2686             "iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
   2687                 # calculation.  Absence of this field means that circular references will
   2688                 # result in calculation errors.
   2689                 # calculation.
   2690               "convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
   2691                   # less than this threshold value, the calculation rounds stop.
   2692               "maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
   2693                   # rounds to perform.
   2694             },
   2695             "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
   2696                 # `America/New_York`. If the time zone isn't recognized, this may
   2697                 # be a custom time zone such as `GMT-07:00`.
   2698           },
   2699         },
   2700         "appendCells": { # Adds new cells after the last row with data in a sheet, # Appends cells after the last row with data in a sheet.
   2701             # inserting new rows into the sheet if necessary.
   2702           "fields": "A String", # The fields of CellData that should be updated.
   2703               # At least one field must be specified.
   2704               # The root is the CellData; 'row.values.' should not be specified.
   2705               # A single `"*"` can be used as short-hand for listing every field.
   2706           "rows": [ # The data to append.
   2707             { # Data about each cell in a row.
   2708               "values": [ # The values in the row, one per column.
   2709                 { # Data about a specific cell.
   2710                   "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
   2711                       # is computed dynamically based on its data, grouping, filters, values,
   2712                       # etc. Only the top-left cell of the pivot table contains the pivot table
   2713                       # definition. The other cells will contain the calculated values of the
   2714                       # results of the pivot in their effective_value fields.
   2715                     "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
   2716                         # or vertically (as rows).
   2717                     "rows": [ # Each row grouping in the pivot table.
   2718                       { # A single grouping (either row or column) in a pivot table.
   2719                         "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   2720                         "valueMetadata": [ # Metadata about values in the grouping.
   2721                           { # Metadata about a value in a pivot grouping.
   2722                             "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   2723                             "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   2724                                 # (Note that formulaValue is not valid,
   2725                                 #  because the values will be calculated.)
   2726                               "stringValue": "A String", # Represents a string value.
   2727                                   # Leading single quotes are not included. For example, if the user typed
   2728                                   # `'123` into the UI, this would be represented as a `stringValue` of
   2729                                   # `"123"`.
   2730                               "boolValue": True or False, # Represents a boolean value.
   2731                               "errorValue": { # An error in a cell. # Represents an error.
   2732                                   # This field is read-only.
   2733                                 "message": "A String", # A message with more information about the error
   2734                                     # (in the spreadsheet's locale).
   2735                                 "type": "A String", # The type of error.
   2736                               },
   2737                               "formulaValue": "A String", # Represents a formula.
   2738                               "numberValue": 3.14, # Represents a double value.
   2739                                   # Note: Dates, Times and DateTimes are represented as doubles in
   2740                                   # "serial number" format.
   2741                             },
   2742                           },
   2743                         ],
   2744                         "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   2745                             # If not specified, sorting is alphabetical by this group's values.
   2746                           "buckets": [ # Determines the bucket from which values are chosen to sort.
   2747                               #
   2748                               # For example, in a pivot table with one row group & two column groups,
   2749                               # the row group can list up to two values. The first value corresponds
   2750                               # to a value within the first column group, and the second value
   2751                               # corresponds to a value in the second column group.  If no values
   2752                               # are listed, this would indicate that the row should be sorted according
   2753                               # to the "Grand Total" over the column groups. If a single value is listed,
   2754                               # this would correspond to using the "Total" of that bucket.
   2755                             { # The kinds of value that a cell in a spreadsheet can have.
   2756                               "stringValue": "A String", # Represents a string value.
   2757                                   # Leading single quotes are not included. For example, if the user typed
   2758                                   # `'123` into the UI, this would be represented as a `stringValue` of
   2759                                   # `"123"`.
   2760                               "boolValue": True or False, # Represents a boolean value.
   2761                               "errorValue": { # An error in a cell. # Represents an error.
   2762                                   # This field is read-only.
   2763                                 "message": "A String", # A message with more information about the error
   2764                                     # (in the spreadsheet's locale).
   2765                                 "type": "A String", # The type of error.
   2766                               },
   2767                               "formulaValue": "A String", # Represents a formula.
   2768                               "numberValue": 3.14, # Represents a double value.
   2769                                   # Note: Dates, Times and DateTimes are represented as doubles in
   2770                                   # "serial number" format.
   2771                             },
   2772                           ],
   2773                           "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   2774                               # grouping should be sorted by.
   2775                         },
   2776                         "sortOrder": "A String", # The order the values in this group should be sorted.
   2777                         "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   2778                             #
   2779                             # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   2780                             # means this group refers to column `C`, whereas the offset `1` would refer
   2781                             # to column `D`.
   2782                       },
   2783                     ],
   2784                     "source": { # A range on a sheet. # The range the pivot table is reading data from.
   2785                         # All indexes are zero-based.
   2786                         # Indexes are half open, e.g the start index is inclusive
   2787                         # and the end index is exclusive -- [start_index, end_index).
   2788                         # Missing indexes indicate the range is unbounded on that side.
   2789                         #
   2790                         # For example, if `"Sheet1"` is sheet ID 0, then:
   2791                         #
   2792                         #   `Sheet1!A1:A1 == sheet_id: 0,
   2793                         #                   start_row_index: 0, end_row_index: 1,
   2794                         #                   start_column_index: 0, end_column_index: 1`
   2795                         #
   2796                         #   `Sheet1!A3:B4 == sheet_id: 0,
   2797                         #                   start_row_index: 2, end_row_index: 4,
   2798                         #                   start_column_index: 0, end_column_index: 2`
   2799                         #
   2800                         #   `Sheet1!A:B == sheet_id: 0,
   2801                         #                 start_column_index: 0, end_column_index: 2`
   2802                         #
   2803                         #   `Sheet1!A5:B == sheet_id: 0,
   2804                         #                  start_row_index: 4,
   2805                         #                  start_column_index: 0, end_column_index: 2`
   2806                         #
   2807                         #   `Sheet1 == sheet_id:0`
   2808                         #
   2809                         # The start index must always be less than or equal to the end index.
   2810                         # If the start index equals the end index, then the range is empty.
   2811                         # Empty ranges are typically not meaningful and are usually rendered in the
   2812                         # UI as `#REF!`.
   2813                       "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   2814                       "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   2815                       "sheetId": 42, # The sheet this range is on.
   2816                       "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   2817                       "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   2818                     },
   2819                     "values": [ # A list of values to include in the pivot table.
   2820                       { # The definition of how a value in a pivot table should be calculated.
   2821                         "formula": "A String", # A custom formula to calculate the value.  The formula must start
   2822                             # with an `=` character.
   2823                         "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
   2824                             #
   2825                             # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   2826                             # means this value refers to column `C`, whereas the offset `1` would
   2827                             # refer to column `D`.
   2828                         "summarizeFunction": "A String", # A function to summarize the value.
   2829                             # If formula is set, the only supported values are
   2830                             # SUM and
   2831                             # CUSTOM.
   2832                             # If sourceColumnOffset is set, then `CUSTOM`
   2833                             # is not supported.
   2834                         "name": "A String", # A name to use for the value. This is only used if formula was set.
   2835                             # Otherwise, the column name is used.
   2836                       },
   2837                     ],
   2838                     "criteria": { # An optional mapping of filters per source column offset.
   2839                         #
   2840                         # The filters will be applied before aggregating data into the pivot table.
   2841                         # The map's key is the column offset of the source range that you want to
   2842                         # filter, and the value is the criteria for that column.
   2843                         #
   2844                         # For example, if the source was `C10:E15`, a key of `0` will have the filter
   2845                         # for column `C`, whereas the key `1` is for column `D`.
   2846                       "a_key": { # Criteria for showing/hiding rows in a pivot table.
   2847                         "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
   2848                           "A String",
   2849                         ],
   2850                       },
   2851                     },
   2852                     "columns": [ # Each column grouping in the pivot table.
   2853                       { # A single grouping (either row or column) in a pivot table.
   2854                         "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   2855                         "valueMetadata": [ # Metadata about values in the grouping.
   2856                           { # Metadata about a value in a pivot grouping.
   2857                             "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   2858                             "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   2859                                 # (Note that formulaValue is not valid,
   2860                                 #  because the values will be calculated.)
   2861                               "stringValue": "A String", # Represents a string value.
   2862                                   # Leading single quotes are not included. For example, if the user typed
   2863                                   # `'123` into the UI, this would be represented as a `stringValue` of
   2864                                   # `"123"`.
   2865                               "boolValue": True or False, # Represents a boolean value.
   2866                               "errorValue": { # An error in a cell. # Represents an error.
   2867                                   # This field is read-only.
   2868                                 "message": "A String", # A message with more information about the error
   2869                                     # (in the spreadsheet's locale).
   2870                                 "type": "A String", # The type of error.
   2871                               },
   2872                               "formulaValue": "A String", # Represents a formula.
   2873                               "numberValue": 3.14, # Represents a double value.
   2874                                   # Note: Dates, Times and DateTimes are represented as doubles in
   2875                                   # "serial number" format.
   2876                             },
   2877                           },
   2878                         ],
   2879                         "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   2880                             # If not specified, sorting is alphabetical by this group's values.
   2881                           "buckets": [ # Determines the bucket from which values are chosen to sort.
   2882                               #
   2883                               # For example, in a pivot table with one row group & two column groups,
   2884                               # the row group can list up to two values. The first value corresponds
   2885                               # to a value within the first column group, and the second value
   2886                               # corresponds to a value in the second column group.  If no values
   2887                               # are listed, this would indicate that the row should be sorted according
   2888                               # to the "Grand Total" over the column groups. If a single value is listed,
   2889                               # this would correspond to using the "Total" of that bucket.
   2890                             { # The kinds of value that a cell in a spreadsheet can have.
   2891                               "stringValue": "A String", # Represents a string value.
   2892                                   # Leading single quotes are not included. For example, if the user typed
   2893                                   # `'123` into the UI, this would be represented as a `stringValue` of
   2894                                   # `"123"`.
   2895                               "boolValue": True or False, # Represents a boolean value.
   2896                               "errorValue": { # An error in a cell. # Represents an error.
   2897                                   # This field is read-only.
   2898                                 "message": "A String", # A message with more information about the error
   2899                                     # (in the spreadsheet's locale).
   2900                                 "type": "A String", # The type of error.
   2901                               },
   2902                               "formulaValue": "A String", # Represents a formula.
   2903                               "numberValue": 3.14, # Represents a double value.
   2904                                   # Note: Dates, Times and DateTimes are represented as doubles in
   2905                                   # "serial number" format.
   2906                             },
   2907                           ],
   2908                           "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   2909                               # grouping should be sorted by.
   2910                         },
   2911                         "sortOrder": "A String", # The order the values in this group should be sorted.
   2912                         "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   2913                             #
   2914                             # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   2915                             # means this group refers to column `C`, whereas the offset `1` would refer
   2916                             # to column `D`.
   2917                       },
   2918                     ],
   2919                   },
   2920                   "hyperlink": "A String", # A hyperlink this cell points to, if any.
   2921                       # This field is read-only.  (To set it, use a `=HYPERLINK` formula
   2922                       # in the userEnteredValue.formulaValue
   2923                       # field.)
   2924                   "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
   2925                       # the calculated value.  For cells with literals, this will be
   2926                       # the same as the user_entered_value.
   2927                       # This field is read-only.
   2928                     "stringValue": "A String", # Represents a string value.
   2929                         # Leading single quotes are not included. For example, if the user typed
   2930                         # `'123` into the UI, this would be represented as a `stringValue` of
   2931                         # `"123"`.
   2932                     "boolValue": True or False, # Represents a boolean value.
   2933                     "errorValue": { # An error in a cell. # Represents an error.
   2934                         # This field is read-only.
   2935                       "message": "A String", # A message with more information about the error
   2936                           # (in the spreadsheet's locale).
   2937                       "type": "A String", # The type of error.
   2938                     },
   2939                     "formulaValue": "A String", # Represents a formula.
   2940                     "numberValue": 3.14, # Represents a double value.
   2941                         # Note: Dates, Times and DateTimes are represented as doubles in
   2942                         # "serial number" format.
   2943                   },
   2944                   "formattedValue": "A String", # The formatted value of the cell.
   2945                       # This is the value as it's shown to the user.
   2946                       # This field is read-only.
   2947                   "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
   2948                       # Note: Dates, Times and DateTimes are represented as doubles in
   2949                       # serial number format.
   2950                     "stringValue": "A String", # Represents a string value.
   2951                         # Leading single quotes are not included. For example, if the user typed
   2952                         # `'123` into the UI, this would be represented as a `stringValue` of
   2953                         # `"123"`.
   2954                     "boolValue": True or False, # Represents a boolean value.
   2955                     "errorValue": { # An error in a cell. # Represents an error.
   2956                         # This field is read-only.
   2957                       "message": "A String", # A message with more information about the error
   2958                           # (in the spreadsheet's locale).
   2959                       "type": "A String", # The type of error.
   2960                     },
   2961                     "formulaValue": "A String", # Represents a formula.
   2962                     "numberValue": 3.14, # Represents a double value.
   2963                         # Note: Dates, Times and DateTimes are represented as doubles in
   2964                         # "serial number" format.
   2965                   },
   2966                   "note": "A String", # Any note on the cell.
   2967                   "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
   2968                       # This includes the results of applying any conditional formatting and,
   2969                       # if the cell contains a formula, the computed number format.
   2970                       # If the effective format is the default format, effective format will
   2971                       # not be written.
   2972                       # This field is read-only.
   2973                     "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   2974                       "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   2975                           # the user's locale will be used if necessary for the given type.
   2976                           # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   2977                           # information about the supported patterns.
   2978                       "type": "A String", # The type of the number format.
   2979                           # When writing, this field must be set.
   2980                     },
   2981                     "textDirection": "A String", # The direction of the text in the cell.
   2982                     "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   2983                         # When updating padding, every field must be specified.
   2984                       "top": 42, # The top padding of the cell.
   2985                       "right": 42, # The right padding of the cell.
   2986                       "bottom": 42, # The bottom padding of the cell.
   2987                       "left": 42, # The left padding of the cell.
   2988                     },
   2989                     "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   2990                     "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   2991                         # for simplicity of conversion to/from color representations in various
   2992                         # languages over compactness; for example, the fields of this representation
   2993                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   2994                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   2995                         # method in iOS; and, with just a little work, it can be easily formatted into
   2996                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   2997                         #
   2998                         # Example (Java):
   2999                         #
   3000                         #      import com.google.type.Color;
   3001                         #
   3002                         #      // ...
   3003                         #      public static java.awt.Color fromProto(Color protocolor) {
   3004                         #        float alpha = protocolor.hasAlpha()
   3005                         #            ? protocolor.getAlpha().getValue()
   3006                         #            : 1.0;
   3007                         #
   3008                         #        return new java.awt.Color(
   3009                         #            protocolor.getRed(),
   3010                         #            protocolor.getGreen(),
   3011                         #            protocolor.getBlue(),
   3012                         #            alpha);
   3013                         #      }
   3014                         #
   3015                         #      public static Color toProto(java.awt.Color color) {
   3016                         #        float red = (float) color.getRed();
   3017                         #        float green = (float) color.getGreen();
   3018                         #        float blue = (float) color.getBlue();
   3019                         #        float denominator = 255.0;
   3020                         #        Color.Builder resultBuilder =
   3021                         #            Color
   3022                         #                .newBuilder()
   3023                         #                .setRed(red / denominator)
   3024                         #                .setGreen(green / denominator)
   3025                         #                .setBlue(blue / denominator);
   3026                         #        int alpha = color.getAlpha();
   3027                         #        if (alpha != 255) {
   3028                         #          result.setAlpha(
   3029                         #              FloatValue
   3030                         #                  .newBuilder()
   3031                         #                  .setValue(((float) alpha) / denominator)
   3032                         #                  .build());
   3033                         #        }
   3034                         #        return resultBuilder.build();
   3035                         #      }
   3036                         #      // ...
   3037                         #
   3038                         # Example (iOS / Obj-C):
   3039                         #
   3040                         #      // ...
   3041                         #      static UIColor* fromProto(Color* protocolor) {
   3042                         #         float red = [protocolor red];
   3043                         #         float green = [protocolor green];
   3044                         #         float blue = [protocolor blue];
   3045                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   3046                         #         float alpha = 1.0;
   3047                         #         if (alpha_wrapper != nil) {
   3048                         #           alpha = [alpha_wrapper value];
   3049                         #         }
   3050                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   3051                         #      }
   3052                         #
   3053                         #      static Color* toProto(UIColor* color) {
   3054                         #          CGFloat red, green, blue, alpha;
   3055                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   3056                         #            return nil;
   3057                         #          }
   3058                         #          Color* result = [Color alloc] init];
   3059                         #          [result setRed:red];
   3060                         #          [result setGreen:green];
   3061                         #          [result setBlue:blue];
   3062                         #          if (alpha <= 0.9999) {
   3063                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   3064                         #          }
   3065                         #          [result autorelease];
   3066                         #          return result;
   3067                         #     }
   3068                         #     // ...
   3069                         #
   3070                         #  Example (JavaScript):
   3071                         #
   3072                         #     // ...
   3073                         #
   3074                         #     var protoToCssColor = function(rgb_color) {
   3075                         #        var redFrac = rgb_color.red || 0.0;
   3076                         #        var greenFrac = rgb_color.green || 0.0;
   3077                         #        var blueFrac = rgb_color.blue || 0.0;
   3078                         #        var red = Math.floor(redFrac * 255);
   3079                         #        var green = Math.floor(greenFrac * 255);
   3080                         #        var blue = Math.floor(blueFrac * 255);
   3081                         #
   3082                         #        if (!('alpha' in rgb_color)) {
   3083                         #           return rgbToCssColor_(red, green, blue);
   3084                         #        }
   3085                         #
   3086                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   3087                         #        var rgbParams = [red, green, blue].join(',');
   3088                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   3089                         #     };
   3090                         #
   3091                         #     var rgbToCssColor_ = function(red, green, blue) {
   3092                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   3093                         #       var hexString = rgbNumber.toString(16);
   3094                         #       var missingZeros = 6 - hexString.length;
   3095                         #       var resultBuilder = ['#'];
   3096                         #       for (var i = 0; i < missingZeros; i++) {
   3097                         #          resultBuilder.push('0');
   3098                         #       }
   3099                         #       resultBuilder.push(hexString);
   3100                         #       return resultBuilder.join('');
   3101                         #     };
   3102                         #
   3103                         #     // ...
   3104                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   3105                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   3106                           # the final pixel color is defined by the equation:
   3107                           #
   3108                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   3109                           #
   3110                           # This means that a value of 1.0 corresponds to a solid color, whereas
   3111                           # a value of 0.0 corresponds to a completely transparent color. This
   3112                           # uses a wrapper message rather than a simple float scalar so that it is
   3113                           # possible to distinguish between a default value and the value being unset.
   3114                           # If omitted, this color object is to be rendered as a solid color
   3115                           # (as if the alpha value had been explicitly given with a value of 1.0).
   3116                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   3117                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   3118                     },
   3119                     "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   3120                     "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   3121                         # Absent values indicate that the field isn't specified.
   3122                       "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   3123                           # for simplicity of conversion to/from color representations in various
   3124                           # languages over compactness; for example, the fields of this representation
   3125                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   3126                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   3127                           # method in iOS; and, with just a little work, it can be easily formatted into
   3128                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   3129                           #
   3130                           # Example (Java):
   3131                           #
   3132                           #      import com.google.type.Color;
   3133                           #
   3134                           #      // ...
   3135                           #      public static java.awt.Color fromProto(Color protocolor) {
   3136                           #        float alpha = protocolor.hasAlpha()
   3137                           #            ? protocolor.getAlpha().getValue()
   3138                           #            : 1.0;
   3139                           #
   3140                           #        return new java.awt.Color(
   3141                           #            protocolor.getRed(),
   3142                           #            protocolor.getGreen(),
   3143                           #            protocolor.getBlue(),
   3144                           #            alpha);
   3145                           #      }
   3146                           #
   3147                           #      public static Color toProto(java.awt.Color color) {
   3148                           #        float red = (float) color.getRed();
   3149                           #        float green = (float) color.getGreen();
   3150                           #        float blue = (float) color.getBlue();
   3151                           #        float denominator = 255.0;
   3152                           #        Color.Builder resultBuilder =
   3153                           #            Color
   3154                           #                .newBuilder()
   3155                           #                .setRed(red / denominator)
   3156                           #                .setGreen(green / denominator)
   3157                           #                .setBlue(blue / denominator);
   3158                           #        int alpha = color.getAlpha();
   3159                           #        if (alpha != 255) {
   3160                           #          result.setAlpha(
   3161                           #              FloatValue
   3162                           #                  .newBuilder()
   3163                           #                  .setValue(((float) alpha) / denominator)
   3164                           #                  .build());
   3165                           #        }
   3166                           #        return resultBuilder.build();
   3167                           #      }
   3168                           #      // ...
   3169                           #
   3170                           # Example (iOS / Obj-C):
   3171                           #
   3172                           #      // ...
   3173                           #      static UIColor* fromProto(Color* protocolor) {
   3174                           #         float red = [protocolor red];
   3175                           #         float green = [protocolor green];
   3176                           #         float blue = [protocolor blue];
   3177                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   3178                           #         float alpha = 1.0;
   3179                           #         if (alpha_wrapper != nil) {
   3180                           #           alpha = [alpha_wrapper value];
   3181                           #         }
   3182                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   3183                           #      }
   3184                           #
   3185                           #      static Color* toProto(UIColor* color) {
   3186                           #          CGFloat red, green, blue, alpha;
   3187                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   3188                           #            return nil;
   3189                           #          }
   3190                           #          Color* result = [Color alloc] init];
   3191                           #          [result setRed:red];
   3192                           #          [result setGreen:green];
   3193                           #          [result setBlue:blue];
   3194                           #          if (alpha <= 0.9999) {
   3195                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   3196                           #          }
   3197                           #          [result autorelease];
   3198                           #          return result;
   3199                           #     }
   3200                           #     // ...
   3201                           #
   3202                           #  Example (JavaScript):
   3203                           #
   3204                           #     // ...
   3205                           #
   3206                           #     var protoToCssColor = function(rgb_color) {
   3207                           #        var redFrac = rgb_color.red || 0.0;
   3208                           #        var greenFrac = rgb_color.green || 0.0;
   3209                           #        var blueFrac = rgb_color.blue || 0.0;
   3210                           #        var red = Math.floor(redFrac * 255);
   3211                           #        var green = Math.floor(greenFrac * 255);
   3212                           #        var blue = Math.floor(blueFrac * 255);
   3213                           #
   3214                           #        if (!('alpha' in rgb_color)) {
   3215                           #           return rgbToCssColor_(red, green, blue);
   3216                           #        }
   3217                           #
   3218                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   3219                           #        var rgbParams = [red, green, blue].join(',');
   3220                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   3221                           #     };
   3222                           #
   3223                           #     var rgbToCssColor_ = function(red, green, blue) {
   3224                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   3225                           #       var hexString = rgbNumber.toString(16);
   3226                           #       var missingZeros = 6 - hexString.length;
   3227                           #       var resultBuilder = ['#'];
   3228                           #       for (var i = 0; i < missingZeros; i++) {
   3229                           #          resultBuilder.push('0');
   3230                           #       }
   3231                           #       resultBuilder.push(hexString);
   3232                           #       return resultBuilder.join('');
   3233                           #     };
   3234                           #
   3235                           #     // ...
   3236                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   3237                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   3238                             # the final pixel color is defined by the equation:
   3239                             #
   3240                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   3241                             #
   3242                             # This means that a value of 1.0 corresponds to a solid color, whereas
   3243                             # a value of 0.0 corresponds to a completely transparent color. This
   3244                             # uses a wrapper message rather than a simple float scalar so that it is
   3245                             # possible to distinguish between a default value and the value being unset.
   3246                             # If omitted, this color object is to be rendered as a solid color
   3247                             # (as if the alpha value had been explicitly given with a value of 1.0).
   3248                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   3249                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   3250                       },
   3251                       "bold": True or False, # True if the text is bold.
   3252                       "strikethrough": True or False, # True if the text has a strikethrough.
   3253                       "fontFamily": "A String", # The font family.
   3254                       "fontSize": 42, # The size of the font.
   3255                       "italic": True or False, # True if the text is italicized.
   3256                       "underline": True or False, # True if the text is underlined.
   3257                     },
   3258                     "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   3259                       "angle": 42, # The angle between the standard orientation and the desired orientation.
   3260                           # Measured in degrees. Valid values are between -90 and 90. Positive
   3261                           # angles are angled upwards, negative are angled downwards.
   3262                           #
   3263                           # Note: For LTR text direction positive angles are in the counterclockwise
   3264                           # direction, whereas for RTL they are in the clockwise direction
   3265                       "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   3266                           # characters is unchanged.
   3267                           # For example:
   3268                           #
   3269                           #     | V |
   3270                           #     | e |
   3271                           #     | r |
   3272                           #     | t |
   3273                           #     | i |
   3274                           #     | c |
   3275                           #     | a |
   3276                           #     | l |
   3277                     },
   3278                     "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   3279                     "borders": { # The borders of the cell. # The borders of the cell.
   3280                       "top": { # A border along a cell. # The top border of the cell.
   3281                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   3282                             # for simplicity of conversion to/from color representations in various
   3283                             # languages over compactness; for example, the fields of this representation
   3284                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   3285                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   3286                             # method in iOS; and, with just a little work, it can be easily formatted into
   3287                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   3288                             #
   3289                             # Example (Java):
   3290                             #
   3291                             #      import com.google.type.Color;
   3292                             #
   3293                             #      // ...
   3294                             #      public static java.awt.Color fromProto(Color protocolor) {
   3295                             #        float alpha = protocolor.hasAlpha()
   3296                             #            ? protocolor.getAlpha().getValue()
   3297                             #            : 1.0;
   3298                             #
   3299                             #        return new java.awt.Color(
   3300                             #            protocolor.getRed(),
   3301                             #            protocolor.getGreen(),
   3302                             #            protocolor.getBlue(),
   3303                             #            alpha);
   3304                             #      }
   3305                             #
   3306                             #      public static Color toProto(java.awt.Color color) {
   3307                             #        float red = (float) color.getRed();
   3308                             #        float green = (float) color.getGreen();
   3309                             #        float blue = (float) color.getBlue();
   3310                             #        float denominator = 255.0;
   3311                             #        Color.Builder resultBuilder =
   3312                             #            Color
   3313                             #                .newBuilder()
   3314                             #                .setRed(red / denominator)
   3315                             #                .setGreen(green / denominator)
   3316                             #                .setBlue(blue / denominator);
   3317                             #        int alpha = color.getAlpha();
   3318                             #        if (alpha != 255) {
   3319                             #          result.setAlpha(
   3320                             #              FloatValue
   3321                             #                  .newBuilder()
   3322                             #                  .setValue(((float) alpha) / denominator)
   3323                             #                  .build());
   3324                             #        }
   3325                             #        return resultBuilder.build();
   3326                             #      }
   3327                             #      // ...
   3328                             #
   3329                             # Example (iOS / Obj-C):
   3330                             #
   3331                             #      // ...
   3332                             #      static UIColor* fromProto(Color* protocolor) {
   3333                             #         float red = [protocolor red];
   3334                             #         float green = [protocolor green];
   3335                             #         float blue = [protocolor blue];
   3336                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   3337                             #         float alpha = 1.0;
   3338                             #         if (alpha_wrapper != nil) {
   3339                             #           alpha = [alpha_wrapper value];
   3340                             #         }
   3341                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   3342                             #      }
   3343                             #
   3344                             #      static Color* toProto(UIColor* color) {
   3345                             #          CGFloat red, green, blue, alpha;
   3346                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   3347                             #            return nil;
   3348                             #          }
   3349                             #          Color* result = [Color alloc] init];
   3350                             #          [result setRed:red];
   3351                             #          [result setGreen:green];
   3352                             #          [result setBlue:blue];
   3353                             #          if (alpha <= 0.9999) {
   3354                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   3355                             #          }
   3356                             #          [result autorelease];
   3357                             #          return result;
   3358                             #     }
   3359                             #     // ...
   3360                             #
   3361                             #  Example (JavaScript):
   3362                             #
   3363                             #     // ...
   3364                             #
   3365                             #     var protoToCssColor = function(rgb_color) {
   3366                             #        var redFrac = rgb_color.red || 0.0;
   3367                             #        var greenFrac = rgb_color.green || 0.0;
   3368                             #        var blueFrac = rgb_color.blue || 0.0;
   3369                             #        var red = Math.floor(redFrac * 255);
   3370                             #        var green = Math.floor(greenFrac * 255);
   3371                             #        var blue = Math.floor(blueFrac * 255);
   3372                             #
   3373                             #        if (!('alpha' in rgb_color)) {
   3374                             #           return rgbToCssColor_(red, green, blue);
   3375                             #        }
   3376                             #
   3377                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   3378                             #        var rgbParams = [red, green, blue].join(',');
   3379                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   3380                             #     };
   3381                             #
   3382                             #     var rgbToCssColor_ = function(red, green, blue) {
   3383                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   3384                             #       var hexString = rgbNumber.toString(16);
   3385                             #       var missingZeros = 6 - hexString.length;
   3386                             #       var resultBuilder = ['#'];
   3387                             #       for (var i = 0; i < missingZeros; i++) {
   3388                             #          resultBuilder.push('0');
   3389                             #       }
   3390                             #       resultBuilder.push(hexString);
   3391                             #       return resultBuilder.join('');
   3392                             #     };
   3393                             #
   3394                             #     // ...
   3395                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   3396                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   3397                               # the final pixel color is defined by the equation:
   3398                               #
   3399                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   3400                               #
   3401                               # This means that a value of 1.0 corresponds to a solid color, whereas
   3402                               # a value of 0.0 corresponds to a completely transparent color. This
   3403                               # uses a wrapper message rather than a simple float scalar so that it is
   3404                               # possible to distinguish between a default value and the value being unset.
   3405                               # If omitted, this color object is to be rendered as a solid color
   3406                               # (as if the alpha value had been explicitly given with a value of 1.0).
   3407                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   3408                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   3409                         },
   3410                         "width": 42, # The width of the border, in pixels.
   3411                             # Deprecated; the width is determined by the "style" field.
   3412                         "style": "A String", # The style of the border.
   3413                       },
   3414                       "right": { # A border along a cell. # The right border of the cell.
   3415                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   3416                             # for simplicity of conversion to/from color representations in various
   3417                             # languages over compactness; for example, the fields of this representation
   3418                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   3419                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   3420                             # method in iOS; and, with just a little work, it can be easily formatted into
   3421                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   3422                             #
   3423                             # Example (Java):
   3424                             #
   3425                             #      import com.google.type.Color;
   3426                             #
   3427                             #      // ...
   3428                             #      public static java.awt.Color fromProto(Color protocolor) {
   3429                             #        float alpha = protocolor.hasAlpha()
   3430                             #            ? protocolor.getAlpha().getValue()
   3431                             #            : 1.0;
   3432                             #
   3433                             #        return new java.awt.Color(
   3434                             #            protocolor.getRed(),
   3435                             #            protocolor.getGreen(),
   3436                             #            protocolor.getBlue(),
   3437                             #            alpha);
   3438                             #      }
   3439                             #
   3440                             #      public static Color toProto(java.awt.Color color) {
   3441                             #        float red = (float) color.getRed();
   3442                             #        float green = (float) color.getGreen();
   3443                             #        float blue = (float) color.getBlue();
   3444                             #        float denominator = 255.0;
   3445                             #        Color.Builder resultBuilder =
   3446                             #            Color
   3447                             #                .newBuilder()
   3448                             #                .setRed(red / denominator)
   3449                             #                .setGreen(green / denominator)
   3450                             #                .setBlue(blue / denominator);
   3451                             #        int alpha = color.getAlpha();
   3452                             #        if (alpha != 255) {
   3453                             #          result.setAlpha(
   3454                             #              FloatValue
   3455                             #                  .newBuilder()
   3456                             #                  .setValue(((float) alpha) / denominator)
   3457                             #                  .build());
   3458                             #        }
   3459                             #        return resultBuilder.build();
   3460                             #      }
   3461                             #      // ...
   3462                             #
   3463                             # Example (iOS / Obj-C):
   3464                             #
   3465                             #      // ...
   3466                             #      static UIColor* fromProto(Color* protocolor) {
   3467                             #         float red = [protocolor red];
   3468                             #         float green = [protocolor green];
   3469                             #         float blue = [protocolor blue];
   3470                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   3471                             #         float alpha = 1.0;
   3472                             #         if (alpha_wrapper != nil) {
   3473                             #           alpha = [alpha_wrapper value];
   3474                             #         }
   3475                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   3476                             #      }
   3477                             #
   3478                             #      static Color* toProto(UIColor* color) {
   3479                             #          CGFloat red, green, blue, alpha;
   3480                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   3481                             #            return nil;
   3482                             #          }
   3483                             #          Color* result = [Color alloc] init];
   3484                             #          [result setRed:red];
   3485                             #          [result setGreen:green];
   3486                             #          [result setBlue:blue];
   3487                             #          if (alpha <= 0.9999) {
   3488                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   3489                             #          }
   3490                             #          [result autorelease];
   3491                             #          return result;
   3492                             #     }
   3493                             #     // ...
   3494                             #
   3495                             #  Example (JavaScript):
   3496                             #
   3497                             #     // ...
   3498                             #
   3499                             #     var protoToCssColor = function(rgb_color) {
   3500                             #        var redFrac = rgb_color.red || 0.0;
   3501                             #        var greenFrac = rgb_color.green || 0.0;
   3502                             #        var blueFrac = rgb_color.blue || 0.0;
   3503                             #        var red = Math.floor(redFrac * 255);
   3504                             #        var green = Math.floor(greenFrac * 255);
   3505                             #        var blue = Math.floor(blueFrac * 255);
   3506                             #
   3507                             #        if (!('alpha' in rgb_color)) {
   3508                             #           return rgbToCssColor_(red, green, blue);
   3509                             #        }
   3510                             #
   3511                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   3512                             #        var rgbParams = [red, green, blue].join(',');
   3513                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   3514                             #     };
   3515                             #
   3516                             #     var rgbToCssColor_ = function(red, green, blue) {
   3517                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   3518                             #       var hexString = rgbNumber.toString(16);
   3519                             #       var missingZeros = 6 - hexString.length;
   3520                             #       var resultBuilder = ['#'];
   3521                             #       for (var i = 0; i < missingZeros; i++) {
   3522                             #          resultBuilder.push('0');
   3523                             #       }
   3524                             #       resultBuilder.push(hexString);
   3525                             #       return resultBuilder.join('');
   3526                             #     };
   3527                             #
   3528                             #     // ...
   3529                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   3530                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   3531                               # the final pixel color is defined by the equation:
   3532                               #
   3533                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   3534                               #
   3535                               # This means that a value of 1.0 corresponds to a solid color, whereas
   3536                               # a value of 0.0 corresponds to a completely transparent color. This
   3537                               # uses a wrapper message rather than a simple float scalar so that it is
   3538                               # possible to distinguish between a default value and the value being unset.
   3539                               # If omitted, this color object is to be rendered as a solid color
   3540                               # (as if the alpha value had been explicitly given with a value of 1.0).
   3541                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   3542                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   3543                         },
   3544                         "width": 42, # The width of the border, in pixels.
   3545                             # Deprecated; the width is determined by the "style" field.
   3546                         "style": "A String", # The style of the border.
   3547                       },
   3548                       "bottom": { # A border along a cell. # The bottom border of the cell.
   3549                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   3550                             # for simplicity of conversion to/from color representations in various
   3551                             # languages over compactness; for example, the fields of this representation
   3552                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   3553                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   3554                             # method in iOS; and, with just a little work, it can be easily formatted into
   3555                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   3556                             #
   3557                             # Example (Java):
   3558                             #
   3559                             #      import com.google.type.Color;
   3560                             #
   3561                             #      // ...
   3562                             #      public static java.awt.Color fromProto(Color protocolor) {
   3563                             #        float alpha = protocolor.hasAlpha()
   3564                             #            ? protocolor.getAlpha().getValue()
   3565                             #            : 1.0;
   3566                             #
   3567                             #        return new java.awt.Color(
   3568                             #            protocolor.getRed(),
   3569                             #            protocolor.getGreen(),
   3570                             #            protocolor.getBlue(),
   3571                             #            alpha);
   3572                             #      }
   3573                             #
   3574                             #      public static Color toProto(java.awt.Color color) {
   3575                             #        float red = (float) color.getRed();
   3576                             #        float green = (float) color.getGreen();
   3577                             #        float blue = (float) color.getBlue();
   3578                             #        float denominator = 255.0;
   3579                             #        Color.Builder resultBuilder =
   3580                             #            Color
   3581                             #                .newBuilder()
   3582                             #                .setRed(red / denominator)
   3583                             #                .setGreen(green / denominator)
   3584                             #                .setBlue(blue / denominator);
   3585                             #        int alpha = color.getAlpha();
   3586                             #        if (alpha != 255) {
   3587                             #          result.setAlpha(
   3588                             #              FloatValue
   3589                             #                  .newBuilder()
   3590                             #                  .setValue(((float) alpha) / denominator)
   3591                             #                  .build());
   3592                             #        }
   3593                             #        return resultBuilder.build();
   3594                             #      }
   3595                             #      // ...
   3596                             #
   3597                             # Example (iOS / Obj-C):
   3598                             #
   3599                             #      // ...
   3600                             #      static UIColor* fromProto(Color* protocolor) {
   3601                             #         float red = [protocolor red];
   3602                             #         float green = [protocolor green];
   3603                             #         float blue = [protocolor blue];
   3604                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   3605                             #         float alpha = 1.0;
   3606                             #         if (alpha_wrapper != nil) {
   3607                             #           alpha = [alpha_wrapper value];
   3608                             #         }
   3609                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   3610                             #      }
   3611                             #
   3612                             #      static Color* toProto(UIColor* color) {
   3613                             #          CGFloat red, green, blue, alpha;
   3614                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   3615                             #            return nil;
   3616                             #          }
   3617                             #          Color* result = [Color alloc] init];
   3618                             #          [result setRed:red];
   3619                             #          [result setGreen:green];
   3620                             #          [result setBlue:blue];
   3621                             #          if (alpha <= 0.9999) {
   3622                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   3623                             #          }
   3624                             #          [result autorelease];
   3625                             #          return result;
   3626                             #     }
   3627                             #     // ...
   3628                             #
   3629                             #  Example (JavaScript):
   3630                             #
   3631                             #     // ...
   3632                             #
   3633                             #     var protoToCssColor = function(rgb_color) {
   3634                             #        var redFrac = rgb_color.red || 0.0;
   3635                             #        var greenFrac = rgb_color.green || 0.0;
   3636                             #        var blueFrac = rgb_color.blue || 0.0;
   3637                             #        var red = Math.floor(redFrac * 255);
   3638                             #        var green = Math.floor(greenFrac * 255);
   3639                             #        var blue = Math.floor(blueFrac * 255);
   3640                             #
   3641                             #        if (!('alpha' in rgb_color)) {
   3642                             #           return rgbToCssColor_(red, green, blue);
   3643                             #        }
   3644                             #
   3645                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   3646                             #        var rgbParams = [red, green, blue].join(',');
   3647                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   3648                             #     };
   3649                             #
   3650                             #     var rgbToCssColor_ = function(red, green, blue) {
   3651                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   3652                             #       var hexString = rgbNumber.toString(16);
   3653                             #       var missingZeros = 6 - hexString.length;
   3654                             #       var resultBuilder = ['#'];
   3655                             #       for (var i = 0; i < missingZeros; i++) {
   3656                             #          resultBuilder.push('0');
   3657                             #       }
   3658                             #       resultBuilder.push(hexString);
   3659                             #       return resultBuilder.join('');
   3660                             #     };
   3661                             #
   3662                             #     // ...
   3663                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   3664                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   3665                               # the final pixel color is defined by the equation:
   3666                               #
   3667                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   3668                               #
   3669                               # This means that a value of 1.0 corresponds to a solid color, whereas
   3670                               # a value of 0.0 corresponds to a completely transparent color. This
   3671                               # uses a wrapper message rather than a simple float scalar so that it is
   3672                               # possible to distinguish between a default value and the value being unset.
   3673                               # If omitted, this color object is to be rendered as a solid color
   3674                               # (as if the alpha value had been explicitly given with a value of 1.0).
   3675                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   3676                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   3677                         },
   3678                         "width": 42, # The width of the border, in pixels.
   3679                             # Deprecated; the width is determined by the "style" field.
   3680                         "style": "A String", # The style of the border.
   3681                       },
   3682                       "left": { # A border along a cell. # The left border of the cell.
   3683                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   3684                             # for simplicity of conversion to/from color representations in various
   3685                             # languages over compactness; for example, the fields of this representation
   3686                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   3687                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   3688                             # method in iOS; and, with just a little work, it can be easily formatted into
   3689                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   3690                             #
   3691                             # Example (Java):
   3692                             #
   3693                             #      import com.google.type.Color;
   3694                             #
   3695                             #      // ...
   3696                             #      public static java.awt.Color fromProto(Color protocolor) {
   3697                             #        float alpha = protocolor.hasAlpha()
   3698                             #            ? protocolor.getAlpha().getValue()
   3699                             #            : 1.0;
   3700                             #
   3701                             #        return new java.awt.Color(
   3702                             #            protocolor.getRed(),
   3703                             #            protocolor.getGreen(),
   3704                             #            protocolor.getBlue(),
   3705                             #            alpha);
   3706                             #      }
   3707                             #
   3708                             #      public static Color toProto(java.awt.Color color) {
   3709                             #        float red = (float) color.getRed();
   3710                             #        float green = (float) color.getGreen();
   3711                             #        float blue = (float) color.getBlue();
   3712                             #        float denominator = 255.0;
   3713                             #        Color.Builder resultBuilder =
   3714                             #            Color
   3715                             #                .newBuilder()
   3716                             #                .setRed(red / denominator)
   3717                             #                .setGreen(green / denominator)
   3718                             #                .setBlue(blue / denominator);
   3719                             #        int alpha = color.getAlpha();
   3720                             #        if (alpha != 255) {
   3721                             #          result.setAlpha(
   3722                             #              FloatValue
   3723                             #                  .newBuilder()
   3724                             #                  .setValue(((float) alpha) / denominator)
   3725                             #                  .build());
   3726                             #        }
   3727                             #        return resultBuilder.build();
   3728                             #      }
   3729                             #      // ...
   3730                             #
   3731                             # Example (iOS / Obj-C):
   3732                             #
   3733                             #      // ...
   3734                             #      static UIColor* fromProto(Color* protocolor) {
   3735                             #         float red = [protocolor red];
   3736                             #         float green = [protocolor green];
   3737                             #         float blue = [protocolor blue];
   3738                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   3739                             #         float alpha = 1.0;
   3740                             #         if (alpha_wrapper != nil) {
   3741                             #           alpha = [alpha_wrapper value];
   3742                             #         }
   3743                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   3744                             #      }
   3745                             #
   3746                             #      static Color* toProto(UIColor* color) {
   3747                             #          CGFloat red, green, blue, alpha;
   3748                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   3749                             #            return nil;
   3750                             #          }
   3751                             #          Color* result = [Color alloc] init];
   3752                             #          [result setRed:red];
   3753                             #          [result setGreen:green];
   3754                             #          [result setBlue:blue];
   3755                             #          if (alpha <= 0.9999) {
   3756                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   3757                             #          }
   3758                             #          [result autorelease];
   3759                             #          return result;
   3760                             #     }
   3761                             #     // ...
   3762                             #
   3763                             #  Example (JavaScript):
   3764                             #
   3765                             #     // ...
   3766                             #
   3767                             #     var protoToCssColor = function(rgb_color) {
   3768                             #        var redFrac = rgb_color.red || 0.0;
   3769                             #        var greenFrac = rgb_color.green || 0.0;
   3770                             #        var blueFrac = rgb_color.blue || 0.0;
   3771                             #        var red = Math.floor(redFrac * 255);
   3772                             #        var green = Math.floor(greenFrac * 255);
   3773                             #        var blue = Math.floor(blueFrac * 255);
   3774                             #
   3775                             #        if (!('alpha' in rgb_color)) {
   3776                             #           return rgbToCssColor_(red, green, blue);
   3777                             #        }
   3778                             #
   3779                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   3780                             #        var rgbParams = [red, green, blue].join(',');
   3781                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   3782                             #     };
   3783                             #
   3784                             #     var rgbToCssColor_ = function(red, green, blue) {
   3785                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   3786                             #       var hexString = rgbNumber.toString(16);
   3787                             #       var missingZeros = 6 - hexString.length;
   3788                             #       var resultBuilder = ['#'];
   3789                             #       for (var i = 0; i < missingZeros; i++) {
   3790                             #          resultBuilder.push('0');
   3791                             #       }
   3792                             #       resultBuilder.push(hexString);
   3793                             #       return resultBuilder.join('');
   3794                             #     };
   3795                             #
   3796                             #     // ...
   3797                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   3798                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   3799                               # the final pixel color is defined by the equation:
   3800                               #
   3801                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   3802                               #
   3803                               # This means that a value of 1.0 corresponds to a solid color, whereas
   3804                               # a value of 0.0 corresponds to a completely transparent color. This
   3805                               # uses a wrapper message rather than a simple float scalar so that it is
   3806                               # possible to distinguish between a default value and the value being unset.
   3807                               # If omitted, this color object is to be rendered as a solid color
   3808                               # (as if the alpha value had been explicitly given with a value of 1.0).
   3809                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   3810                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   3811                         },
   3812                         "width": 42, # The width of the border, in pixels.
   3813                             # Deprecated; the width is determined by the "style" field.
   3814                         "style": "A String", # The style of the border.
   3815                       },
   3816                     },
   3817                     "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   3818                   },
   3819                   "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
   3820                       #
   3821                       # When writing, the new format will be merged with the existing format.
   3822                     "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   3823                       "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   3824                           # the user's locale will be used if necessary for the given type.
   3825                           # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   3826                           # information about the supported patterns.
   3827                       "type": "A String", # The type of the number format.
   3828                           # When writing, this field must be set.
   3829                     },
   3830                     "textDirection": "A String", # The direction of the text in the cell.
   3831                     "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   3832                         # When updating padding, every field must be specified.
   3833                       "top": 42, # The top padding of the cell.
   3834                       "right": 42, # The right padding of the cell.
   3835                       "bottom": 42, # The bottom padding of the cell.
   3836                       "left": 42, # The left padding of the cell.
   3837                     },
   3838                     "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   3839                     "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   3840                         # for simplicity of conversion to/from color representations in various
   3841                         # languages over compactness; for example, the fields of this representation
   3842                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   3843                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   3844                         # method in iOS; and, with just a little work, it can be easily formatted into
   3845                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   3846                         #
   3847                         # Example (Java):
   3848                         #
   3849                         #      import com.google.type.Color;
   3850                         #
   3851                         #      // ...
   3852                         #      public static java.awt.Color fromProto(Color protocolor) {
   3853                         #        float alpha = protocolor.hasAlpha()
   3854                         #            ? protocolor.getAlpha().getValue()
   3855                         #            : 1.0;
   3856                         #
   3857                         #        return new java.awt.Color(
   3858                         #            protocolor.getRed(),
   3859                         #            protocolor.getGreen(),
   3860                         #            protocolor.getBlue(),
   3861                         #            alpha);
   3862                         #      }
   3863                         #
   3864                         #      public static Color toProto(java.awt.Color color) {
   3865                         #        float red = (float) color.getRed();
   3866                         #        float green = (float) color.getGreen();
   3867                         #        float blue = (float) color.getBlue();
   3868                         #        float denominator = 255.0;
   3869                         #        Color.Builder resultBuilder =
   3870                         #            Color
   3871                         #                .newBuilder()
   3872                         #                .setRed(red / denominator)
   3873                         #                .setGreen(green / denominator)
   3874                         #                .setBlue(blue / denominator);
   3875                         #        int alpha = color.getAlpha();
   3876                         #        if (alpha != 255) {
   3877                         #          result.setAlpha(
   3878                         #              FloatValue
   3879                         #                  .newBuilder()
   3880                         #                  .setValue(((float) alpha) / denominator)
   3881                         #                  .build());
   3882                         #        }
   3883                         #        return resultBuilder.build();
   3884                         #      }
   3885                         #      // ...
   3886                         #
   3887                         # Example (iOS / Obj-C):
   3888                         #
   3889                         #      // ...
   3890                         #      static UIColor* fromProto(Color* protocolor) {
   3891                         #         float red = [protocolor red];
   3892                         #         float green = [protocolor green];
   3893                         #         float blue = [protocolor blue];
   3894                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   3895                         #         float alpha = 1.0;
   3896                         #         if (alpha_wrapper != nil) {
   3897                         #           alpha = [alpha_wrapper value];
   3898                         #         }
   3899                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   3900                         #      }
   3901                         #
   3902                         #      static Color* toProto(UIColor* color) {
   3903                         #          CGFloat red, green, blue, alpha;
   3904                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   3905                         #            return nil;
   3906                         #          }
   3907                         #          Color* result = [Color alloc] init];
   3908                         #          [result setRed:red];
   3909                         #          [result setGreen:green];
   3910                         #          [result setBlue:blue];
   3911                         #          if (alpha <= 0.9999) {
   3912                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   3913                         #          }
   3914                         #          [result autorelease];
   3915                         #          return result;
   3916                         #     }
   3917                         #     // ...
   3918                         #
   3919                         #  Example (JavaScript):
   3920                         #
   3921                         #     // ...
   3922                         #
   3923                         #     var protoToCssColor = function(rgb_color) {
   3924                         #        var redFrac = rgb_color.red || 0.0;
   3925                         #        var greenFrac = rgb_color.green || 0.0;
   3926                         #        var blueFrac = rgb_color.blue || 0.0;
   3927                         #        var red = Math.floor(redFrac * 255);
   3928                         #        var green = Math.floor(greenFrac * 255);
   3929                         #        var blue = Math.floor(blueFrac * 255);
   3930                         #
   3931                         #        if (!('alpha' in rgb_color)) {
   3932                         #           return rgbToCssColor_(red, green, blue);
   3933                         #        }
   3934                         #
   3935                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   3936                         #        var rgbParams = [red, green, blue].join(',');
   3937                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   3938                         #     };
   3939                         #
   3940                         #     var rgbToCssColor_ = function(red, green, blue) {
   3941                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   3942                         #       var hexString = rgbNumber.toString(16);
   3943                         #       var missingZeros = 6 - hexString.length;
   3944                         #       var resultBuilder = ['#'];
   3945                         #       for (var i = 0; i < missingZeros; i++) {
   3946                         #          resultBuilder.push('0');
   3947                         #       }
   3948                         #       resultBuilder.push(hexString);
   3949                         #       return resultBuilder.join('');
   3950                         #     };
   3951                         #
   3952                         #     // ...
   3953                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   3954                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   3955                           # the final pixel color is defined by the equation:
   3956                           #
   3957                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   3958                           #
   3959                           # This means that a value of 1.0 corresponds to a solid color, whereas
   3960                           # a value of 0.0 corresponds to a completely transparent color. This
   3961                           # uses a wrapper message rather than a simple float scalar so that it is
   3962                           # possible to distinguish between a default value and the value being unset.
   3963                           # If omitted, this color object is to be rendered as a solid color
   3964                           # (as if the alpha value had been explicitly given with a value of 1.0).
   3965                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   3966                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   3967                     },
   3968                     "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   3969                     "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   3970                         # Absent values indicate that the field isn't specified.
   3971                       "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   3972                           # for simplicity of conversion to/from color representations in various
   3973                           # languages over compactness; for example, the fields of this representation
   3974                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   3975                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   3976                           # method in iOS; and, with just a little work, it can be easily formatted into
   3977                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   3978                           #
   3979                           # Example (Java):
   3980                           #
   3981                           #      import com.google.type.Color;
   3982                           #
   3983                           #      // ...
   3984                           #      public static java.awt.Color fromProto(Color protocolor) {
   3985                           #        float alpha = protocolor.hasAlpha()
   3986                           #            ? protocolor.getAlpha().getValue()
   3987                           #            : 1.0;
   3988                           #
   3989                           #        return new java.awt.Color(
   3990                           #            protocolor.getRed(),
   3991                           #            protocolor.getGreen(),
   3992                           #            protocolor.getBlue(),
   3993                           #            alpha);
   3994                           #      }
   3995                           #
   3996                           #      public static Color toProto(java.awt.Color color) {
   3997                           #        float red = (float) color.getRed();
   3998                           #        float green = (float) color.getGreen();
   3999                           #        float blue = (float) color.getBlue();
   4000                           #        float denominator = 255.0;
   4001                           #        Color.Builder resultBuilder =
   4002                           #            Color
   4003                           #                .newBuilder()
   4004                           #                .setRed(red / denominator)
   4005                           #                .setGreen(green / denominator)
   4006                           #                .setBlue(blue / denominator);
   4007                           #        int alpha = color.getAlpha();
   4008                           #        if (alpha != 255) {
   4009                           #          result.setAlpha(
   4010                           #              FloatValue
   4011                           #                  .newBuilder()
   4012                           #                  .setValue(((float) alpha) / denominator)
   4013                           #                  .build());
   4014                           #        }
   4015                           #        return resultBuilder.build();
   4016                           #      }
   4017                           #      // ...
   4018                           #
   4019                           # Example (iOS / Obj-C):
   4020                           #
   4021                           #      // ...
   4022                           #      static UIColor* fromProto(Color* protocolor) {
   4023                           #         float red = [protocolor red];
   4024                           #         float green = [protocolor green];
   4025                           #         float blue = [protocolor blue];
   4026                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   4027                           #         float alpha = 1.0;
   4028                           #         if (alpha_wrapper != nil) {
   4029                           #           alpha = [alpha_wrapper value];
   4030                           #         }
   4031                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   4032                           #      }
   4033                           #
   4034                           #      static Color* toProto(UIColor* color) {
   4035                           #          CGFloat red, green, blue, alpha;
   4036                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   4037                           #            return nil;
   4038                           #          }
   4039                           #          Color* result = [Color alloc] init];
   4040                           #          [result setRed:red];
   4041                           #          [result setGreen:green];
   4042                           #          [result setBlue:blue];
   4043                           #          if (alpha <= 0.9999) {
   4044                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   4045                           #          }
   4046                           #          [result autorelease];
   4047                           #          return result;
   4048                           #     }
   4049                           #     // ...
   4050                           #
   4051                           #  Example (JavaScript):
   4052                           #
   4053                           #     // ...
   4054                           #
   4055                           #     var protoToCssColor = function(rgb_color) {
   4056                           #        var redFrac = rgb_color.red || 0.0;
   4057                           #        var greenFrac = rgb_color.green || 0.0;
   4058                           #        var blueFrac = rgb_color.blue || 0.0;
   4059                           #        var red = Math.floor(redFrac * 255);
   4060                           #        var green = Math.floor(greenFrac * 255);
   4061                           #        var blue = Math.floor(blueFrac * 255);
   4062                           #
   4063                           #        if (!('alpha' in rgb_color)) {
   4064                           #           return rgbToCssColor_(red, green, blue);
   4065                           #        }
   4066                           #
   4067                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   4068                           #        var rgbParams = [red, green, blue].join(',');
   4069                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   4070                           #     };
   4071                           #
   4072                           #     var rgbToCssColor_ = function(red, green, blue) {
   4073                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   4074                           #       var hexString = rgbNumber.toString(16);
   4075                           #       var missingZeros = 6 - hexString.length;
   4076                           #       var resultBuilder = ['#'];
   4077                           #       for (var i = 0; i < missingZeros; i++) {
   4078                           #          resultBuilder.push('0');
   4079                           #       }
   4080                           #       resultBuilder.push(hexString);
   4081                           #       return resultBuilder.join('');
   4082                           #     };
   4083                           #
   4084                           #     // ...
   4085                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   4086                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   4087                             # the final pixel color is defined by the equation:
   4088                             #
   4089                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   4090                             #
   4091                             # This means that a value of 1.0 corresponds to a solid color, whereas
   4092                             # a value of 0.0 corresponds to a completely transparent color. This
   4093                             # uses a wrapper message rather than a simple float scalar so that it is
   4094                             # possible to distinguish between a default value and the value being unset.
   4095                             # If omitted, this color object is to be rendered as a solid color
   4096                             # (as if the alpha value had been explicitly given with a value of 1.0).
   4097                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   4098                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   4099                       },
   4100                       "bold": True or False, # True if the text is bold.
   4101                       "strikethrough": True or False, # True if the text has a strikethrough.
   4102                       "fontFamily": "A String", # The font family.
   4103                       "fontSize": 42, # The size of the font.
   4104                       "italic": True or False, # True if the text is italicized.
   4105                       "underline": True or False, # True if the text is underlined.
   4106                     },
   4107                     "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   4108                       "angle": 42, # The angle between the standard orientation and the desired orientation.
   4109                           # Measured in degrees. Valid values are between -90 and 90. Positive
   4110                           # angles are angled upwards, negative are angled downwards.
   4111                           #
   4112                           # Note: For LTR text direction positive angles are in the counterclockwise
   4113                           # direction, whereas for RTL they are in the clockwise direction
   4114                       "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   4115                           # characters is unchanged.
   4116                           # For example:
   4117                           #
   4118                           #     | V |
   4119                           #     | e |
   4120                           #     | r |
   4121                           #     | t |
   4122                           #     | i |
   4123                           #     | c |
   4124                           #     | a |
   4125                           #     | l |
   4126                     },
   4127                     "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   4128                     "borders": { # The borders of the cell. # The borders of the cell.
   4129                       "top": { # A border along a cell. # The top border of the cell.
   4130                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   4131                             # for simplicity of conversion to/from color representations in various
   4132                             # languages over compactness; for example, the fields of this representation
   4133                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   4134                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   4135                             # method in iOS; and, with just a little work, it can be easily formatted into
   4136                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   4137                             #
   4138                             # Example (Java):
   4139                             #
   4140                             #      import com.google.type.Color;
   4141                             #
   4142                             #      // ...
   4143                             #      public static java.awt.Color fromProto(Color protocolor) {
   4144                             #        float alpha = protocolor.hasAlpha()
   4145                             #            ? protocolor.getAlpha().getValue()
   4146                             #            : 1.0;
   4147                             #
   4148                             #        return new java.awt.Color(
   4149                             #            protocolor.getRed(),
   4150                             #            protocolor.getGreen(),
   4151                             #            protocolor.getBlue(),
   4152                             #            alpha);
   4153                             #      }
   4154                             #
   4155                             #      public static Color toProto(java.awt.Color color) {
   4156                             #        float red = (float) color.getRed();
   4157                             #        float green = (float) color.getGreen();
   4158                             #        float blue = (float) color.getBlue();
   4159                             #        float denominator = 255.0;
   4160                             #        Color.Builder resultBuilder =
   4161                             #            Color
   4162                             #                .newBuilder()
   4163                             #                .setRed(red / denominator)
   4164                             #                .setGreen(green / denominator)
   4165                             #                .setBlue(blue / denominator);
   4166                             #        int alpha = color.getAlpha();
   4167                             #        if (alpha != 255) {
   4168                             #          result.setAlpha(
   4169                             #              FloatValue
   4170                             #                  .newBuilder()
   4171                             #                  .setValue(((float) alpha) / denominator)
   4172                             #                  .build());
   4173                             #        }
   4174                             #        return resultBuilder.build();
   4175                             #      }
   4176                             #      // ...
   4177                             #
   4178                             # Example (iOS / Obj-C):
   4179                             #
   4180                             #      // ...
   4181                             #      static UIColor* fromProto(Color* protocolor) {
   4182                             #         float red = [protocolor red];
   4183                             #         float green = [protocolor green];
   4184                             #         float blue = [protocolor blue];
   4185                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   4186                             #         float alpha = 1.0;
   4187                             #         if (alpha_wrapper != nil) {
   4188                             #           alpha = [alpha_wrapper value];
   4189                             #         }
   4190                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   4191                             #      }
   4192                             #
   4193                             #      static Color* toProto(UIColor* color) {
   4194                             #          CGFloat red, green, blue, alpha;
   4195                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   4196                             #            return nil;
   4197                             #          }
   4198                             #          Color* result = [Color alloc] init];
   4199                             #          [result setRed:red];
   4200                             #          [result setGreen:green];
   4201                             #          [result setBlue:blue];
   4202                             #          if (alpha <= 0.9999) {
   4203                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   4204                             #          }
   4205                             #          [result autorelease];
   4206                             #          return result;
   4207                             #     }
   4208                             #     // ...
   4209                             #
   4210                             #  Example (JavaScript):
   4211                             #
   4212                             #     // ...
   4213                             #
   4214                             #     var protoToCssColor = function(rgb_color) {
   4215                             #        var redFrac = rgb_color.red || 0.0;
   4216                             #        var greenFrac = rgb_color.green || 0.0;
   4217                             #        var blueFrac = rgb_color.blue || 0.0;
   4218                             #        var red = Math.floor(redFrac * 255);
   4219                             #        var green = Math.floor(greenFrac * 255);
   4220                             #        var blue = Math.floor(blueFrac * 255);
   4221                             #
   4222                             #        if (!('alpha' in rgb_color)) {
   4223                             #           return rgbToCssColor_(red, green, blue);
   4224                             #        }
   4225                             #
   4226                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   4227                             #        var rgbParams = [red, green, blue].join(',');
   4228                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   4229                             #     };
   4230                             #
   4231                             #     var rgbToCssColor_ = function(red, green, blue) {
   4232                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   4233                             #       var hexString = rgbNumber.toString(16);
   4234                             #       var missingZeros = 6 - hexString.length;
   4235                             #       var resultBuilder = ['#'];
   4236                             #       for (var i = 0; i < missingZeros; i++) {
   4237                             #          resultBuilder.push('0');
   4238                             #       }
   4239                             #       resultBuilder.push(hexString);
   4240                             #       return resultBuilder.join('');
   4241                             #     };
   4242                             #
   4243                             #     // ...
   4244                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   4245                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   4246                               # the final pixel color is defined by the equation:
   4247                               #
   4248                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   4249                               #
   4250                               # This means that a value of 1.0 corresponds to a solid color, whereas
   4251                               # a value of 0.0 corresponds to a completely transparent color. This
   4252                               # uses a wrapper message rather than a simple float scalar so that it is
   4253                               # possible to distinguish between a default value and the value being unset.
   4254                               # If omitted, this color object is to be rendered as a solid color
   4255                               # (as if the alpha value had been explicitly given with a value of 1.0).
   4256                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   4257                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   4258                         },
   4259                         "width": 42, # The width of the border, in pixels.
   4260                             # Deprecated; the width is determined by the "style" field.
   4261                         "style": "A String", # The style of the border.
   4262                       },
   4263                       "right": { # A border along a cell. # The right border of the cell.
   4264                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   4265                             # for simplicity of conversion to/from color representations in various
   4266                             # languages over compactness; for example, the fields of this representation
   4267                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   4268                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   4269                             # method in iOS; and, with just a little work, it can be easily formatted into
   4270                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   4271                             #
   4272                             # Example (Java):
   4273                             #
   4274                             #      import com.google.type.Color;
   4275                             #
   4276                             #      // ...
   4277                             #      public static java.awt.Color fromProto(Color protocolor) {
   4278                             #        float alpha = protocolor.hasAlpha()
   4279                             #            ? protocolor.getAlpha().getValue()
   4280                             #            : 1.0;
   4281                             #
   4282                             #        return new java.awt.Color(
   4283                             #            protocolor.getRed(),
   4284                             #            protocolor.getGreen(),
   4285                             #            protocolor.getBlue(),
   4286                             #            alpha);
   4287                             #      }
   4288                             #
   4289                             #      public static Color toProto(java.awt.Color color) {
   4290                             #        float red = (float) color.getRed();
   4291                             #        float green = (float) color.getGreen();
   4292                             #        float blue = (float) color.getBlue();
   4293                             #        float denominator = 255.0;
   4294                             #        Color.Builder resultBuilder =
   4295                             #            Color
   4296                             #                .newBuilder()
   4297                             #                .setRed(red / denominator)
   4298                             #                .setGreen(green / denominator)
   4299                             #                .setBlue(blue / denominator);
   4300                             #        int alpha = color.getAlpha();
   4301                             #        if (alpha != 255) {
   4302                             #          result.setAlpha(
   4303                             #              FloatValue
   4304                             #                  .newBuilder()
   4305                             #                  .setValue(((float) alpha) / denominator)
   4306                             #                  .build());
   4307                             #        }
   4308                             #        return resultBuilder.build();
   4309                             #      }
   4310                             #      // ...
   4311                             #
   4312                             # Example (iOS / Obj-C):
   4313                             #
   4314                             #      // ...
   4315                             #      static UIColor* fromProto(Color* protocolor) {
   4316                             #         float red = [protocolor red];
   4317                             #         float green = [protocolor green];
   4318                             #         float blue = [protocolor blue];
   4319                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   4320                             #         float alpha = 1.0;
   4321                             #         if (alpha_wrapper != nil) {
   4322                             #           alpha = [alpha_wrapper value];
   4323                             #         }
   4324                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   4325                             #      }
   4326                             #
   4327                             #      static Color* toProto(UIColor* color) {
   4328                             #          CGFloat red, green, blue, alpha;
   4329                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   4330                             #            return nil;
   4331                             #          }
   4332                             #          Color* result = [Color alloc] init];
   4333                             #          [result setRed:red];
   4334                             #          [result setGreen:green];
   4335                             #          [result setBlue:blue];
   4336                             #          if (alpha <= 0.9999) {
   4337                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   4338                             #          }
   4339                             #          [result autorelease];
   4340                             #          return result;
   4341                             #     }
   4342                             #     // ...
   4343                             #
   4344                             #  Example (JavaScript):
   4345                             #
   4346                             #     // ...
   4347                             #
   4348                             #     var protoToCssColor = function(rgb_color) {
   4349                             #        var redFrac = rgb_color.red || 0.0;
   4350                             #        var greenFrac = rgb_color.green || 0.0;
   4351                             #        var blueFrac = rgb_color.blue || 0.0;
   4352                             #        var red = Math.floor(redFrac * 255);
   4353                             #        var green = Math.floor(greenFrac * 255);
   4354                             #        var blue = Math.floor(blueFrac * 255);
   4355                             #
   4356                             #        if (!('alpha' in rgb_color)) {
   4357                             #           return rgbToCssColor_(red, green, blue);
   4358                             #        }
   4359                             #
   4360                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   4361                             #        var rgbParams = [red, green, blue].join(',');
   4362                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   4363                             #     };
   4364                             #
   4365                             #     var rgbToCssColor_ = function(red, green, blue) {
   4366                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   4367                             #       var hexString = rgbNumber.toString(16);
   4368                             #       var missingZeros = 6 - hexString.length;
   4369                             #       var resultBuilder = ['#'];
   4370                             #       for (var i = 0; i < missingZeros; i++) {
   4371                             #          resultBuilder.push('0');
   4372                             #       }
   4373                             #       resultBuilder.push(hexString);
   4374                             #       return resultBuilder.join('');
   4375                             #     };
   4376                             #
   4377                             #     // ...
   4378                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   4379                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   4380                               # the final pixel color is defined by the equation:
   4381                               #
   4382                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   4383                               #
   4384                               # This means that a value of 1.0 corresponds to a solid color, whereas
   4385                               # a value of 0.0 corresponds to a completely transparent color. This
   4386                               # uses a wrapper message rather than a simple float scalar so that it is
   4387                               # possible to distinguish between a default value and the value being unset.
   4388                               # If omitted, this color object is to be rendered as a solid color
   4389                               # (as if the alpha value had been explicitly given with a value of 1.0).
   4390                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   4391                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   4392                         },
   4393                         "width": 42, # The width of the border, in pixels.
   4394                             # Deprecated; the width is determined by the "style" field.
   4395                         "style": "A String", # The style of the border.
   4396                       },
   4397                       "bottom": { # A border along a cell. # The bottom border of the cell.
   4398                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   4399                             # for simplicity of conversion to/from color representations in various
   4400                             # languages over compactness; for example, the fields of this representation
   4401                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   4402                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   4403                             # method in iOS; and, with just a little work, it can be easily formatted into
   4404                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   4405                             #
   4406                             # Example (Java):
   4407                             #
   4408                             #      import com.google.type.Color;
   4409                             #
   4410                             #      // ...
   4411                             #      public static java.awt.Color fromProto(Color protocolor) {
   4412                             #        float alpha = protocolor.hasAlpha()
   4413                             #            ? protocolor.getAlpha().getValue()
   4414                             #            : 1.0;
   4415                             #
   4416                             #        return new java.awt.Color(
   4417                             #            protocolor.getRed(),
   4418                             #            protocolor.getGreen(),
   4419                             #            protocolor.getBlue(),
   4420                             #            alpha);
   4421                             #      }
   4422                             #
   4423                             #      public static Color toProto(java.awt.Color color) {
   4424                             #        float red = (float) color.getRed();
   4425                             #        float green = (float) color.getGreen();
   4426                             #        float blue = (float) color.getBlue();
   4427                             #        float denominator = 255.0;
   4428                             #        Color.Builder resultBuilder =
   4429                             #            Color
   4430                             #                .newBuilder()
   4431                             #                .setRed(red / denominator)
   4432                             #                .setGreen(green / denominator)
   4433                             #                .setBlue(blue / denominator);
   4434                             #        int alpha = color.getAlpha();
   4435                             #        if (alpha != 255) {
   4436                             #          result.setAlpha(
   4437                             #              FloatValue
   4438                             #                  .newBuilder()
   4439                             #                  .setValue(((float) alpha) / denominator)
   4440                             #                  .build());
   4441                             #        }
   4442                             #        return resultBuilder.build();
   4443                             #      }
   4444                             #      // ...
   4445                             #
   4446                             # Example (iOS / Obj-C):
   4447                             #
   4448                             #      // ...
   4449                             #      static UIColor* fromProto(Color* protocolor) {
   4450                             #         float red = [protocolor red];
   4451                             #         float green = [protocolor green];
   4452                             #         float blue = [protocolor blue];
   4453                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   4454                             #         float alpha = 1.0;
   4455                             #         if (alpha_wrapper != nil) {
   4456                             #           alpha = [alpha_wrapper value];
   4457                             #         }
   4458                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   4459                             #      }
   4460                             #
   4461                             #      static Color* toProto(UIColor* color) {
   4462                             #          CGFloat red, green, blue, alpha;
   4463                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   4464                             #            return nil;
   4465                             #          }
   4466                             #          Color* result = [Color alloc] init];
   4467                             #          [result setRed:red];
   4468                             #          [result setGreen:green];
   4469                             #          [result setBlue:blue];
   4470                             #          if (alpha <= 0.9999) {
   4471                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   4472                             #          }
   4473                             #          [result autorelease];
   4474                             #          return result;
   4475                             #     }
   4476                             #     // ...
   4477                             #
   4478                             #  Example (JavaScript):
   4479                             #
   4480                             #     // ...
   4481                             #
   4482                             #     var protoToCssColor = function(rgb_color) {
   4483                             #        var redFrac = rgb_color.red || 0.0;
   4484                             #        var greenFrac = rgb_color.green || 0.0;
   4485                             #        var blueFrac = rgb_color.blue || 0.0;
   4486                             #        var red = Math.floor(redFrac * 255);
   4487                             #        var green = Math.floor(greenFrac * 255);
   4488                             #        var blue = Math.floor(blueFrac * 255);
   4489                             #
   4490                             #        if (!('alpha' in rgb_color)) {
   4491                             #           return rgbToCssColor_(red, green, blue);
   4492                             #        }
   4493                             #
   4494                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   4495                             #        var rgbParams = [red, green, blue].join(',');
   4496                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   4497                             #     };
   4498                             #
   4499                             #     var rgbToCssColor_ = function(red, green, blue) {
   4500                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   4501                             #       var hexString = rgbNumber.toString(16);
   4502                             #       var missingZeros = 6 - hexString.length;
   4503                             #       var resultBuilder = ['#'];
   4504                             #       for (var i = 0; i < missingZeros; i++) {
   4505                             #          resultBuilder.push('0');
   4506                             #       }
   4507                             #       resultBuilder.push(hexString);
   4508                             #       return resultBuilder.join('');
   4509                             #     };
   4510                             #
   4511                             #     // ...
   4512                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   4513                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   4514                               # the final pixel color is defined by the equation:
   4515                               #
   4516                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   4517                               #
   4518                               # This means that a value of 1.0 corresponds to a solid color, whereas
   4519                               # a value of 0.0 corresponds to a completely transparent color. This
   4520                               # uses a wrapper message rather than a simple float scalar so that it is
   4521                               # possible to distinguish between a default value and the value being unset.
   4522                               # If omitted, this color object is to be rendered as a solid color
   4523                               # (as if the alpha value had been explicitly given with a value of 1.0).
   4524                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   4525                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   4526                         },
   4527                         "width": 42, # The width of the border, in pixels.
   4528                             # Deprecated; the width is determined by the "style" field.
   4529                         "style": "A String", # The style of the border.
   4530                       },
   4531                       "left": { # A border along a cell. # The left border of the cell.
   4532                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   4533                             # for simplicity of conversion to/from color representations in various
   4534                             # languages over compactness; for example, the fields of this representation
   4535                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   4536                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   4537                             # method in iOS; and, with just a little work, it can be easily formatted into
   4538                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   4539                             #
   4540                             # Example (Java):
   4541                             #
   4542                             #      import com.google.type.Color;
   4543                             #
   4544                             #      // ...
   4545                             #      public static java.awt.Color fromProto(Color protocolor) {
   4546                             #        float alpha = protocolor.hasAlpha()
   4547                             #            ? protocolor.getAlpha().getValue()
   4548                             #            : 1.0;
   4549                             #
   4550                             #        return new java.awt.Color(
   4551                             #            protocolor.getRed(),
   4552                             #            protocolor.getGreen(),
   4553                             #            protocolor.getBlue(),
   4554                             #            alpha);
   4555                             #      }
   4556                             #
   4557                             #      public static Color toProto(java.awt.Color color) {
   4558                             #        float red = (float) color.getRed();
   4559                             #        float green = (float) color.getGreen();
   4560                             #        float blue = (float) color.getBlue();
   4561                             #        float denominator = 255.0;
   4562                             #        Color.Builder resultBuilder =
   4563                             #            Color
   4564                             #                .newBuilder()
   4565                             #                .setRed(red / denominator)
   4566                             #                .setGreen(green / denominator)
   4567                             #                .setBlue(blue / denominator);
   4568                             #        int alpha = color.getAlpha();
   4569                             #        if (alpha != 255) {
   4570                             #          result.setAlpha(
   4571                             #              FloatValue
   4572                             #                  .newBuilder()
   4573                             #                  .setValue(((float) alpha) / denominator)
   4574                             #                  .build());
   4575                             #        }
   4576                             #        return resultBuilder.build();
   4577                             #      }
   4578                             #      // ...
   4579                             #
   4580                             # Example (iOS / Obj-C):
   4581                             #
   4582                             #      // ...
   4583                             #      static UIColor* fromProto(Color* protocolor) {
   4584                             #         float red = [protocolor red];
   4585                             #         float green = [protocolor green];
   4586                             #         float blue = [protocolor blue];
   4587                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   4588                             #         float alpha = 1.0;
   4589                             #         if (alpha_wrapper != nil) {
   4590                             #           alpha = [alpha_wrapper value];
   4591                             #         }
   4592                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   4593                             #      }
   4594                             #
   4595                             #      static Color* toProto(UIColor* color) {
   4596                             #          CGFloat red, green, blue, alpha;
   4597                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   4598                             #            return nil;
   4599                             #          }
   4600                             #          Color* result = [Color alloc] init];
   4601                             #          [result setRed:red];
   4602                             #          [result setGreen:green];
   4603                             #          [result setBlue:blue];
   4604                             #          if (alpha <= 0.9999) {
   4605                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   4606                             #          }
   4607                             #          [result autorelease];
   4608                             #          return result;
   4609                             #     }
   4610                             #     // ...
   4611                             #
   4612                             #  Example (JavaScript):
   4613                             #
   4614                             #     // ...
   4615                             #
   4616                             #     var protoToCssColor = function(rgb_color) {
   4617                             #        var redFrac = rgb_color.red || 0.0;
   4618                             #        var greenFrac = rgb_color.green || 0.0;
   4619                             #        var blueFrac = rgb_color.blue || 0.0;
   4620                             #        var red = Math.floor(redFrac * 255);
   4621                             #        var green = Math.floor(greenFrac * 255);
   4622                             #        var blue = Math.floor(blueFrac * 255);
   4623                             #
   4624                             #        if (!('alpha' in rgb_color)) {
   4625                             #           return rgbToCssColor_(red, green, blue);
   4626                             #        }
   4627                             #
   4628                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   4629                             #        var rgbParams = [red, green, blue].join(',');
   4630                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   4631                             #     };
   4632                             #
   4633                             #     var rgbToCssColor_ = function(red, green, blue) {
   4634                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   4635                             #       var hexString = rgbNumber.toString(16);
   4636                             #       var missingZeros = 6 - hexString.length;
   4637                             #       var resultBuilder = ['#'];
   4638                             #       for (var i = 0; i < missingZeros; i++) {
   4639                             #          resultBuilder.push('0');
   4640                             #       }
   4641                             #       resultBuilder.push(hexString);
   4642                             #       return resultBuilder.join('');
   4643                             #     };
   4644                             #
   4645                             #     // ...
   4646                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   4647                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   4648                               # the final pixel color is defined by the equation:
   4649                               #
   4650                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   4651                               #
   4652                               # This means that a value of 1.0 corresponds to a solid color, whereas
   4653                               # a value of 0.0 corresponds to a completely transparent color. This
   4654                               # uses a wrapper message rather than a simple float scalar so that it is
   4655                               # possible to distinguish between a default value and the value being unset.
   4656                               # If omitted, this color object is to be rendered as a solid color
   4657                               # (as if the alpha value had been explicitly given with a value of 1.0).
   4658                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   4659                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   4660                         },
   4661                         "width": 42, # The width of the border, in pixels.
   4662                             # Deprecated; the width is determined by the "style" field.
   4663                         "style": "A String", # The style of the border.
   4664                       },
   4665                     },
   4666                     "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   4667                   },
   4668                   "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
   4669                       #
   4670                       # When writing, the new data validation rule will overwrite any prior rule.
   4671                     "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
   4672                         # If true, "List" conditions will show a dropdown.
   4673                     "strict": True or False, # True if invalid data should be rejected.
   4674                     "inputMessage": "A String", # A message to show the user when adding data to the cell.
   4675                     "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
   4676                         # BooleanConditions are used by conditional formatting,
   4677                         # data validation, and the criteria in filters.
   4678                       "values": [ # The values of the condition. The number of supported values depends
   4679                           # on the condition type.  Some support zero values,
   4680                           # others one or two values,
   4681                           # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   4682                         { # The value of the condition.
   4683                           "relativeDate": "A String", # A relative date (based on the current date).
   4684                               # Valid only if the type is
   4685                               # DATE_BEFORE,
   4686                               # DATE_AFTER,
   4687                               # DATE_ON_OR_BEFORE or
   4688                               # DATE_ON_OR_AFTER.
   4689                               #
   4690                               # Relative dates are not supported in data validation.
   4691                               # They are supported only in conditional formatting and
   4692                               # conditional filters.
   4693                           "userEnteredValue": "A String", # A value the condition is based on.
   4694                               # The value will be parsed as if the user typed into a cell.
   4695                               # Formulas are supported (and must begin with an `=`).
   4696                         },
   4697                       ],
   4698                       "type": "A String", # The type of condition.
   4699                     },
   4700                   },
   4701                   "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
   4702                       # on user entered strings, not formulas, bools, or numbers.
   4703                       # Runs start at specific indexes in the text and continue until the next
   4704                       # run. Properties of a run will continue unless explicitly changed
   4705                       # in a subsequent run (and properties of the first run will continue
   4706                       # the properties of the cell unless explicitly changed).
   4707                       #
   4708                       # When writing, the new runs will overwrite any prior runs.  When writing a
   4709                       # new user_entered_value, previous runs will be erased.
   4710                     { # A run of a text format. The format of this run continues until the start
   4711                         # index of the next run.
   4712                         # When updating, all fields must be set.
   4713                       "startIndex": 42, # The character index where this run starts.
   4714                       "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
   4715                           # Absent values indicate that the field isn't specified.
   4716                         "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   4717                             # for simplicity of conversion to/from color representations in various
   4718                             # languages over compactness; for example, the fields of this representation
   4719                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   4720                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   4721                             # method in iOS; and, with just a little work, it can be easily formatted into
   4722                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   4723                             #
   4724                             # Example (Java):
   4725                             #
   4726                             #      import com.google.type.Color;
   4727                             #
   4728                             #      // ...
   4729                             #      public static java.awt.Color fromProto(Color protocolor) {
   4730                             #        float alpha = protocolor.hasAlpha()
   4731                             #            ? protocolor.getAlpha().getValue()
   4732                             #            : 1.0;
   4733                             #
   4734                             #        return new java.awt.Color(
   4735                             #            protocolor.getRed(),
   4736                             #            protocolor.getGreen(),
   4737                             #            protocolor.getBlue(),
   4738                             #            alpha);
   4739                             #      }
   4740                             #
   4741                             #      public static Color toProto(java.awt.Color color) {
   4742                             #        float red = (float) color.getRed();
   4743                             #        float green = (float) color.getGreen();
   4744                             #        float blue = (float) color.getBlue();
   4745                             #        float denominator = 255.0;
   4746                             #        Color.Builder resultBuilder =
   4747                             #            Color
   4748                             #                .newBuilder()
   4749                             #                .setRed(red / denominator)
   4750                             #                .setGreen(green / denominator)
   4751                             #                .setBlue(blue / denominator);
   4752                             #        int alpha = color.getAlpha();
   4753                             #        if (alpha != 255) {
   4754                             #          result.setAlpha(
   4755                             #              FloatValue
   4756                             #                  .newBuilder()
   4757                             #                  .setValue(((float) alpha) / denominator)
   4758                             #                  .build());
   4759                             #        }
   4760                             #        return resultBuilder.build();
   4761                             #      }
   4762                             #      // ...
   4763                             #
   4764                             # Example (iOS / Obj-C):
   4765                             #
   4766                             #      // ...
   4767                             #      static UIColor* fromProto(Color* protocolor) {
   4768                             #         float red = [protocolor red];
   4769                             #         float green = [protocolor green];
   4770                             #         float blue = [protocolor blue];
   4771                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   4772                             #         float alpha = 1.0;
   4773                             #         if (alpha_wrapper != nil) {
   4774                             #           alpha = [alpha_wrapper value];
   4775                             #         }
   4776                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   4777                             #      }
   4778                             #
   4779                             #      static Color* toProto(UIColor* color) {
   4780                             #          CGFloat red, green, blue, alpha;
   4781                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   4782                             #            return nil;
   4783                             #          }
   4784                             #          Color* result = [Color alloc] init];
   4785                             #          [result setRed:red];
   4786                             #          [result setGreen:green];
   4787                             #          [result setBlue:blue];
   4788                             #          if (alpha <= 0.9999) {
   4789                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   4790                             #          }
   4791                             #          [result autorelease];
   4792                             #          return result;
   4793                             #     }
   4794                             #     // ...
   4795                             #
   4796                             #  Example (JavaScript):
   4797                             #
   4798                             #     // ...
   4799                             #
   4800                             #     var protoToCssColor = function(rgb_color) {
   4801                             #        var redFrac = rgb_color.red || 0.0;
   4802                             #        var greenFrac = rgb_color.green || 0.0;
   4803                             #        var blueFrac = rgb_color.blue || 0.0;
   4804                             #        var red = Math.floor(redFrac * 255);
   4805                             #        var green = Math.floor(greenFrac * 255);
   4806                             #        var blue = Math.floor(blueFrac * 255);
   4807                             #
   4808                             #        if (!('alpha' in rgb_color)) {
   4809                             #           return rgbToCssColor_(red, green, blue);
   4810                             #        }
   4811                             #
   4812                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   4813                             #        var rgbParams = [red, green, blue].join(',');
   4814                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   4815                             #     };
   4816                             #
   4817                             #     var rgbToCssColor_ = function(red, green, blue) {
   4818                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   4819                             #       var hexString = rgbNumber.toString(16);
   4820                             #       var missingZeros = 6 - hexString.length;
   4821                             #       var resultBuilder = ['#'];
   4822                             #       for (var i = 0; i < missingZeros; i++) {
   4823                             #          resultBuilder.push('0');
   4824                             #       }
   4825                             #       resultBuilder.push(hexString);
   4826                             #       return resultBuilder.join('');
   4827                             #     };
   4828                             #
   4829                             #     // ...
   4830                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   4831                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   4832                               # the final pixel color is defined by the equation:
   4833                               #
   4834                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   4835                               #
   4836                               # This means that a value of 1.0 corresponds to a solid color, whereas
   4837                               # a value of 0.0 corresponds to a completely transparent color. This
   4838                               # uses a wrapper message rather than a simple float scalar so that it is
   4839                               # possible to distinguish between a default value and the value being unset.
   4840                               # If omitted, this color object is to be rendered as a solid color
   4841                               # (as if the alpha value had been explicitly given with a value of 1.0).
   4842                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   4843                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   4844                         },
   4845                         "bold": True or False, # True if the text is bold.
   4846                         "strikethrough": True or False, # True if the text has a strikethrough.
   4847                         "fontFamily": "A String", # The font family.
   4848                         "fontSize": 42, # The size of the font.
   4849                         "italic": True or False, # True if the text is italicized.
   4850                         "underline": True or False, # True if the text is underlined.
   4851                       },
   4852                     },
   4853                   ],
   4854                 },
   4855               ],
   4856             },
   4857           ],
   4858           "sheetId": 42, # The sheet ID to append the data to.
   4859         },
   4860         "duplicateSheet": { # Duplicates the contents of a sheet. # Duplicates a sheet.
   4861           "sourceSheetId": 42, # The sheet to duplicate.
   4862           "insertSheetIndex": 42, # The zero-based index where the new sheet should be inserted.
   4863               # The index of all sheets after this are incremented.
   4864           "newSheetName": "A String", # The name of the new sheet.  If empty, a new name is chosen for you.
   4865           "newSheetId": 42, # If set, the ID of the new sheet. If not set, an ID is chosen.
   4866               # If set, the ID must not conflict with any existing sheet ID.
   4867               # If set, it must be non-negative.
   4868         },
   4869         "updateSheetProperties": { # Updates properties of the sheet with the specified # Updates a sheet's properties.
   4870             # sheetId.
   4871           "fields": "A String", # The fields that should be updated.  At least one field must be specified.
   4872               # The root `properties` is implied and should not be specified.
   4873               # A single `"*"` can be used as short-hand for listing every field.
   4874           "properties": { # Properties of a sheet. # The properties to update.
   4875             "sheetType": "A String", # The type of sheet. Defaults to GRID.
   4876                 # This field cannot be changed once set.
   4877             "index": 42, # The index of the sheet within the spreadsheet.
   4878                 # When adding or updating sheet properties, if this field
   4879                 # is excluded then the sheet will be added or moved to the end
   4880                 # of the sheet list. When updating sheet indices or inserting
   4881                 # sheets, movement is considered in "before the move" indexes.
   4882                 # For example, if there were 3 sheets (S1, S2, S3) in order to
   4883                 # move S1 ahead of S2 the index would have to be set to 2. A sheet
   4884                 # index update request will be ignored if the requested index is
   4885                 # identical to the sheets current index or if the requested new
   4886                 # index is equal to the current sheet index + 1.
   4887             "title": "A String", # The name of the sheet.
   4888             "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
   4889                 # (If the sheet is an object sheet, containing a chart or image, then
   4890                 # this field will be absent.)
   4891                 # When writing it is an error to set any grid properties on non-grid sheets.
   4892               "columnCount": 42, # The number of columns in the grid.
   4893               "frozenRowCount": 42, # The number of rows that are frozen in the grid.
   4894               "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
   4895               "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
   4896               "rowCount": 42, # The number of rows in the grid.
   4897             },
   4898             "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
   4899             "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
   4900                 # for simplicity of conversion to/from color representations in various
   4901                 # languages over compactness; for example, the fields of this representation
   4902                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   4903                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   4904                 # method in iOS; and, with just a little work, it can be easily formatted into
   4905                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   4906                 #
   4907                 # Example (Java):
   4908                 #
   4909                 #      import com.google.type.Color;
   4910                 #
   4911                 #      // ...
   4912                 #      public static java.awt.Color fromProto(Color protocolor) {
   4913                 #        float alpha = protocolor.hasAlpha()
   4914                 #            ? protocolor.getAlpha().getValue()
   4915                 #            : 1.0;
   4916                 #
   4917                 #        return new java.awt.Color(
   4918                 #            protocolor.getRed(),
   4919                 #            protocolor.getGreen(),
   4920                 #            protocolor.getBlue(),
   4921                 #            alpha);
   4922                 #      }
   4923                 #
   4924                 #      public static Color toProto(java.awt.Color color) {
   4925                 #        float red = (float) color.getRed();
   4926                 #        float green = (float) color.getGreen();
   4927                 #        float blue = (float) color.getBlue();
   4928                 #        float denominator = 255.0;
   4929                 #        Color.Builder resultBuilder =
   4930                 #            Color
   4931                 #                .newBuilder()
   4932                 #                .setRed(red / denominator)
   4933                 #                .setGreen(green / denominator)
   4934                 #                .setBlue(blue / denominator);
   4935                 #        int alpha = color.getAlpha();
   4936                 #        if (alpha != 255) {
   4937                 #          result.setAlpha(
   4938                 #              FloatValue
   4939                 #                  .newBuilder()
   4940                 #                  .setValue(((float) alpha) / denominator)
   4941                 #                  .build());
   4942                 #        }
   4943                 #        return resultBuilder.build();
   4944                 #      }
   4945                 #      // ...
   4946                 #
   4947                 # Example (iOS / Obj-C):
   4948                 #
   4949                 #      // ...
   4950                 #      static UIColor* fromProto(Color* protocolor) {
   4951                 #         float red = [protocolor red];
   4952                 #         float green = [protocolor green];
   4953                 #         float blue = [protocolor blue];
   4954                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   4955                 #         float alpha = 1.0;
   4956                 #         if (alpha_wrapper != nil) {
   4957                 #           alpha = [alpha_wrapper value];
   4958                 #         }
   4959                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   4960                 #      }
   4961                 #
   4962                 #      static Color* toProto(UIColor* color) {
   4963                 #          CGFloat red, green, blue, alpha;
   4964                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   4965                 #            return nil;
   4966                 #          }
   4967                 #          Color* result = [Color alloc] init];
   4968                 #          [result setRed:red];
   4969                 #          [result setGreen:green];
   4970                 #          [result setBlue:blue];
   4971                 #          if (alpha <= 0.9999) {
   4972                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   4973                 #          }
   4974                 #          [result autorelease];
   4975                 #          return result;
   4976                 #     }
   4977                 #     // ...
   4978                 #
   4979                 #  Example (JavaScript):
   4980                 #
   4981                 #     // ...
   4982                 #
   4983                 #     var protoToCssColor = function(rgb_color) {
   4984                 #        var redFrac = rgb_color.red || 0.0;
   4985                 #        var greenFrac = rgb_color.green || 0.0;
   4986                 #        var blueFrac = rgb_color.blue || 0.0;
   4987                 #        var red = Math.floor(redFrac * 255);
   4988                 #        var green = Math.floor(greenFrac * 255);
   4989                 #        var blue = Math.floor(blueFrac * 255);
   4990                 #
   4991                 #        if (!('alpha' in rgb_color)) {
   4992                 #           return rgbToCssColor_(red, green, blue);
   4993                 #        }
   4994                 #
   4995                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   4996                 #        var rgbParams = [red, green, blue].join(',');
   4997                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   4998                 #     };
   4999                 #
   5000                 #     var rgbToCssColor_ = function(red, green, blue) {
   5001                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   5002                 #       var hexString = rgbNumber.toString(16);
   5003                 #       var missingZeros = 6 - hexString.length;
   5004                 #       var resultBuilder = ['#'];
   5005                 #       for (var i = 0; i < missingZeros; i++) {
   5006                 #          resultBuilder.push('0');
   5007                 #       }
   5008                 #       resultBuilder.push(hexString);
   5009                 #       return resultBuilder.join('');
   5010                 #     };
   5011                 #
   5012                 #     // ...
   5013               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   5014               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   5015                   # the final pixel color is defined by the equation:
   5016                   #
   5017                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   5018                   #
   5019                   # This means that a value of 1.0 corresponds to a solid color, whereas
   5020                   # a value of 0.0 corresponds to a completely transparent color. This
   5021                   # uses a wrapper message rather than a simple float scalar so that it is
   5022                   # possible to distinguish between a default value and the value being unset.
   5023                   # If omitted, this color object is to be rendered as a solid color
   5024                   # (as if the alpha value had been explicitly given with a value of 1.0).
   5025               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   5026               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   5027             },
   5028             "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
   5029             "sheetId": 42, # The ID of the sheet. Must be non-negative.
   5030                 # This field cannot be changed once set.
   5031           },
   5032         },
   5033         "addChart": { # Adds a chart to a sheet in the spreadsheet. # Adds a chart.
   5034           "chart": { # A chart embedded in a sheet. # The chart that should be added to the spreadsheet, including the position
   5035               # where it should be placed. The chartId
   5036               # field is optional; if one is not set, an id will be randomly generated. (It
   5037               # is an error to specify the ID of a chart that already exists.)
   5038             "chartId": 42, # The ID of the chart.
   5039             "position": { # The position of an embedded object such as a chart. # The position of the chart.
   5040               "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
   5041                   # is chosen for you. Used only when writing.
   5042               "sheetId": 42, # The sheet this is on. Set only if the embedded object
   5043                   # is on its own sheet. Must be non-negative.
   5044               "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
   5045                 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
   5046                     # All indexes are zero-based.
   5047                   "rowIndex": 42, # The row index of the coordinate.
   5048                   "columnIndex": 42, # The column index of the coordinate.
   5049                   "sheetId": 42, # The sheet this coordinate is on.
   5050                 },
   5051                 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
   5052                     # from the anchor cell.
   5053                 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
   5054                 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
   5055                     # from the anchor cell.
   5056                 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
   5057               },
   5058             },
   5059             "spec": { # The specifications of a chart. # The specification of the chart.
   5060               "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
   5061               "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
   5062                 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
   5063                   "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   5064                     "sources": [ # The ranges of data for a series or domain.
   5065                         # Exactly one dimension must have a length of 1,
   5066                         # and all sources in the list must have the same dimension
   5067                         # with length 1.
   5068                         # The domain (if it exists) & all series must have the same number
   5069                         # of source ranges. If using more than one source range, then the source
   5070                         # range at a given offset must be contiguous across the domain and series.
   5071                         #
   5072                         # For example, these are valid configurations:
   5073                         #
   5074                         #     domain sources: A1:A5
   5075                         #     series1 sources: B1:B5
   5076                         #     series2 sources: D6:D10
   5077                         #
   5078                         #     domain sources: A1:A5, C10:C12
   5079                         #     series1 sources: B1:B5, D10:D12
   5080                         #     series2 sources: C1:C5, E10:E12
   5081                       { # A range on a sheet.
   5082                           # All indexes are zero-based.
   5083                           # Indexes are half open, e.g the start index is inclusive
   5084                           # and the end index is exclusive -- [start_index, end_index).
   5085                           # Missing indexes indicate the range is unbounded on that side.
   5086                           #
   5087                           # For example, if `"Sheet1"` is sheet ID 0, then:
   5088                           #
   5089                           #   `Sheet1!A1:A1 == sheet_id: 0,
   5090                           #                   start_row_index: 0, end_row_index: 1,
   5091                           #                   start_column_index: 0, end_column_index: 1`
   5092                           #
   5093                           #   `Sheet1!A3:B4 == sheet_id: 0,
   5094                           #                   start_row_index: 2, end_row_index: 4,
   5095                           #                   start_column_index: 0, end_column_index: 2`
   5096                           #
   5097                           #   `Sheet1!A:B == sheet_id: 0,
   5098                           #                 start_column_index: 0, end_column_index: 2`
   5099                           #
   5100                           #   `Sheet1!A5:B == sheet_id: 0,
   5101                           #                  start_row_index: 4,
   5102                           #                  start_column_index: 0, end_column_index: 2`
   5103                           #
   5104                           #   `Sheet1 == sheet_id:0`
   5105                           #
   5106                           # The start index must always be less than or equal to the end index.
   5107                           # If the start index equals the end index, then the range is empty.
   5108                           # Empty ranges are typically not meaningful and are usually rendered in the
   5109                           # UI as `#REF!`.
   5110                         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   5111                         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   5112                         "sheetId": 42, # The sheet this range is on.
   5113                         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   5114                         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   5115                       },
   5116                     ],
   5117                   },
   5118                 },
   5119                 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
   5120                   "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   5121                     "sources": [ # The ranges of data for a series or domain.
   5122                         # Exactly one dimension must have a length of 1,
   5123                         # and all sources in the list must have the same dimension
   5124                         # with length 1.
   5125                         # The domain (if it exists) & all series must have the same number
   5126                         # of source ranges. If using more than one source range, then the source
   5127                         # range at a given offset must be contiguous across the domain and series.
   5128                         #
   5129                         # For example, these are valid configurations:
   5130                         #
   5131                         #     domain sources: A1:A5
   5132                         #     series1 sources: B1:B5
   5133                         #     series2 sources: D6:D10
   5134                         #
   5135                         #     domain sources: A1:A5, C10:C12
   5136                         #     series1 sources: B1:B5, D10:D12
   5137                         #     series2 sources: C1:C5, E10:E12
   5138                       { # A range on a sheet.
   5139                           # All indexes are zero-based.
   5140                           # Indexes are half open, e.g the start index is inclusive
   5141                           # and the end index is exclusive -- [start_index, end_index).
   5142                           # Missing indexes indicate the range is unbounded on that side.
   5143                           #
   5144                           # For example, if `"Sheet1"` is sheet ID 0, then:
   5145                           #
   5146                           #   `Sheet1!A1:A1 == sheet_id: 0,
   5147                           #                   start_row_index: 0, end_row_index: 1,
   5148                           #                   start_column_index: 0, end_column_index: 1`
   5149                           #
   5150                           #   `Sheet1!A3:B4 == sheet_id: 0,
   5151                           #                   start_row_index: 2, end_row_index: 4,
   5152                           #                   start_column_index: 0, end_column_index: 2`
   5153                           #
   5154                           #   `Sheet1!A:B == sheet_id: 0,
   5155                           #                 start_column_index: 0, end_column_index: 2`
   5156                           #
   5157                           #   `Sheet1!A5:B == sheet_id: 0,
   5158                           #                  start_row_index: 4,
   5159                           #                  start_column_index: 0, end_column_index: 2`
   5160                           #
   5161                           #   `Sheet1 == sheet_id:0`
   5162                           #
   5163                           # The start index must always be less than or equal to the end index.
   5164                           # If the start index equals the end index, then the range is empty.
   5165                           # Empty ranges are typically not meaningful and are usually rendered in the
   5166                           # UI as `#REF!`.
   5167                         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   5168                         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   5169                         "sheetId": 42, # The sheet this range is on.
   5170                         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   5171                         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   5172                       },
   5173                     ],
   5174                   },
   5175                 },
   5176                 "threeDimensional": True or False, # True if the pie is three dimensional.
   5177                 "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
   5178                 "pieHole": 3.14, # The size of the hole in the pie chart.
   5179               },
   5180               "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
   5181                   # See BasicChartType for the list of all
   5182                   # charts this supports.
   5183                   # of charts this supports.
   5184                 "headerCount": 42, # The number of rows or columns in the data that are "headers".
   5185                     # If not set, Google Sheets will guess how many rows are headers based
   5186                     # on the data.
   5187                     #
   5188                     # (Note that BasicChartAxis.title may override the axis title
   5189                     #  inferred from the header values.)
   5190                 "series": [ # The data this chart is visualizing.
   5191                   { # A single series of data in a chart.
   5192                       # For example, if charting stock prices over time, multiple series may exist,
   5193                       # one for the "Open Price", "High Price", "Low Price" and "Close Price".
   5194                     "series": { # The data included in a domain or series. # The data being visualized in this chart series.
   5195                       "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   5196                         "sources": [ # The ranges of data for a series or domain.
   5197                             # Exactly one dimension must have a length of 1,
   5198                             # and all sources in the list must have the same dimension
   5199                             # with length 1.
   5200                             # The domain (if it exists) & all series must have the same number
   5201                             # of source ranges. If using more than one source range, then the source
   5202                             # range at a given offset must be contiguous across the domain and series.
   5203                             #
   5204                             # For example, these are valid configurations:
   5205                             #
   5206                             #     domain sources: A1:A5
   5207                             #     series1 sources: B1:B5
   5208                             #     series2 sources: D6:D10
   5209                             #
   5210                             #     domain sources: A1:A5, C10:C12
   5211                             #     series1 sources: B1:B5, D10:D12
   5212                             #     series2 sources: C1:C5, E10:E12
   5213                           { # A range on a sheet.
   5214                               # All indexes are zero-based.
   5215                               # Indexes are half open, e.g the start index is inclusive
   5216                               # and the end index is exclusive -- [start_index, end_index).
   5217                               # Missing indexes indicate the range is unbounded on that side.
   5218                               #
   5219                               # For example, if `"Sheet1"` is sheet ID 0, then:
   5220                               #
   5221                               #   `Sheet1!A1:A1 == sheet_id: 0,
   5222                               #                   start_row_index: 0, end_row_index: 1,
   5223                               #                   start_column_index: 0, end_column_index: 1`
   5224                               #
   5225                               #   `Sheet1!A3:B4 == sheet_id: 0,
   5226                               #                   start_row_index: 2, end_row_index: 4,
   5227                               #                   start_column_index: 0, end_column_index: 2`
   5228                               #
   5229                               #   `Sheet1!A:B == sheet_id: 0,
   5230                               #                 start_column_index: 0, end_column_index: 2`
   5231                               #
   5232                               #   `Sheet1!A5:B == sheet_id: 0,
   5233                               #                  start_row_index: 4,
   5234                               #                  start_column_index: 0, end_column_index: 2`
   5235                               #
   5236                               #   `Sheet1 == sheet_id:0`
   5237                               #
   5238                               # The start index must always be less than or equal to the end index.
   5239                               # If the start index equals the end index, then the range is empty.
   5240                               # Empty ranges are typically not meaningful and are usually rendered in the
   5241                               # UI as `#REF!`.
   5242                             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   5243                             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   5244                             "sheetId": 42, # The sheet this range is on.
   5245                             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   5246                             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   5247                           },
   5248                         ],
   5249                       },
   5250                     },
   5251                     "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
   5252                         # For example, if charting stocks over time, the "Volume" series
   5253                         # may want to be pinned to the right with the prices pinned to the left,
   5254                         # because the scale of trading volume is different than the scale of
   5255                         # prices.
   5256                         # It is an error to specify an axis that isn't a valid minor axis
   5257                         # for the chart's type.
   5258                     "type": "A String", # The type of this series. Valid only if the
   5259                         # chartType is
   5260                         # COMBO.
   5261                         # Different types will change the way the series is visualized.
   5262                         # Only LINE, AREA,
   5263                         # and COLUMN are supported.
   5264                   },
   5265                 ],
   5266                 "legendPosition": "A String", # The position of the chart legend.
   5267                 "domains": [ # The domain of data this is charting.
   5268                     # Only a single domain is supported.
   5269                   { # The domain of a chart.
   5270                       # For example, if charting stock prices over time, this would be the date.
   5271                     "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
   5272                         # this is the data representing the dates.
   5273                       "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   5274                         "sources": [ # The ranges of data for a series or domain.
   5275                             # Exactly one dimension must have a length of 1,
   5276                             # and all sources in the list must have the same dimension
   5277                             # with length 1.
   5278                             # The domain (if it exists) & all series must have the same number
   5279                             # of source ranges. If using more than one source range, then the source
   5280                             # range at a given offset must be contiguous across the domain and series.
   5281                             #
   5282                             # For example, these are valid configurations:
   5283                             #
   5284                             #     domain sources: A1:A5
   5285                             #     series1 sources: B1:B5
   5286                             #     series2 sources: D6:D10
   5287                             #
   5288                             #     domain sources: A1:A5, C10:C12
   5289                             #     series1 sources: B1:B5, D10:D12
   5290                             #     series2 sources: C1:C5, E10:E12
   5291                           { # A range on a sheet.
   5292                               # All indexes are zero-based.
   5293                               # Indexes are half open, e.g the start index is inclusive
   5294                               # and the end index is exclusive -- [start_index, end_index).
   5295                               # Missing indexes indicate the range is unbounded on that side.
   5296                               #
   5297                               # For example, if `"Sheet1"` is sheet ID 0, then:
   5298                               #
   5299                               #   `Sheet1!A1:A1 == sheet_id: 0,
   5300                               #                   start_row_index: 0, end_row_index: 1,
   5301                               #                   start_column_index: 0, end_column_index: 1`
   5302                               #
   5303                               #   `Sheet1!A3:B4 == sheet_id: 0,
   5304                               #                   start_row_index: 2, end_row_index: 4,
   5305                               #                   start_column_index: 0, end_column_index: 2`
   5306                               #
   5307                               #   `Sheet1!A:B == sheet_id: 0,
   5308                               #                 start_column_index: 0, end_column_index: 2`
   5309                               #
   5310                               #   `Sheet1!A5:B == sheet_id: 0,
   5311                               #                  start_row_index: 4,
   5312                               #                  start_column_index: 0, end_column_index: 2`
   5313                               #
   5314                               #   `Sheet1 == sheet_id:0`
   5315                               #
   5316                               # The start index must always be less than or equal to the end index.
   5317                               # If the start index equals the end index, then the range is empty.
   5318                               # Empty ranges are typically not meaningful and are usually rendered in the
   5319                               # UI as `#REF!`.
   5320                             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   5321                             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   5322                             "sheetId": 42, # The sheet this range is on.
   5323                             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   5324                             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   5325                           },
   5326                         ],
   5327                       },
   5328                     },
   5329                   },
   5330                 ],
   5331                 "chartType": "A String", # The type of the chart.
   5332                 "axis": [ # The axis on the chart.
   5333                   { # An axis of the chart.
   5334                       # A chart may not have more than one axis per
   5335                       # axis position.
   5336                     "position": "A String", # The position of this axis.
   5337                     "format": { # The format of a run of text in a cell. # The format of the title.
   5338                         # Only valid if the axis is not associated with the domain.
   5339                         # Absent values indicate that the field isn't specified.
   5340                       "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   5341                           # for simplicity of conversion to/from color representations in various
   5342                           # languages over compactness; for example, the fields of this representation
   5343                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   5344                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   5345                           # method in iOS; and, with just a little work, it can be easily formatted into
   5346                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   5347                           #
   5348                           # Example (Java):
   5349                           #
   5350                           #      import com.google.type.Color;
   5351                           #
   5352                           #      // ...
   5353                           #      public static java.awt.Color fromProto(Color protocolor) {
   5354                           #        float alpha = protocolor.hasAlpha()
   5355                           #            ? protocolor.getAlpha().getValue()
   5356                           #            : 1.0;
   5357                           #
   5358                           #        return new java.awt.Color(
   5359                           #            protocolor.getRed(),
   5360                           #            protocolor.getGreen(),
   5361                           #            protocolor.getBlue(),
   5362                           #            alpha);
   5363                           #      }
   5364                           #
   5365                           #      public static Color toProto(java.awt.Color color) {
   5366                           #        float red = (float) color.getRed();
   5367                           #        float green = (float) color.getGreen();
   5368                           #        float blue = (float) color.getBlue();
   5369                           #        float denominator = 255.0;
   5370                           #        Color.Builder resultBuilder =
   5371                           #            Color
   5372                           #                .newBuilder()
   5373                           #                .setRed(red / denominator)
   5374                           #                .setGreen(green / denominator)
   5375                           #                .setBlue(blue / denominator);
   5376                           #        int alpha = color.getAlpha();
   5377                           #        if (alpha != 255) {
   5378                           #          result.setAlpha(
   5379                           #              FloatValue
   5380                           #                  .newBuilder()
   5381                           #                  .setValue(((float) alpha) / denominator)
   5382                           #                  .build());
   5383                           #        }
   5384                           #        return resultBuilder.build();
   5385                           #      }
   5386                           #      // ...
   5387                           #
   5388                           # Example (iOS / Obj-C):
   5389                           #
   5390                           #      // ...
   5391                           #      static UIColor* fromProto(Color* protocolor) {
   5392                           #         float red = [protocolor red];
   5393                           #         float green = [protocolor green];
   5394                           #         float blue = [protocolor blue];
   5395                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   5396                           #         float alpha = 1.0;
   5397                           #         if (alpha_wrapper != nil) {
   5398                           #           alpha = [alpha_wrapper value];
   5399                           #         }
   5400                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   5401                           #      }
   5402                           #
   5403                           #      static Color* toProto(UIColor* color) {
   5404                           #          CGFloat red, green, blue, alpha;
   5405                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   5406                           #            return nil;
   5407                           #          }
   5408                           #          Color* result = [Color alloc] init];
   5409                           #          [result setRed:red];
   5410                           #          [result setGreen:green];
   5411                           #          [result setBlue:blue];
   5412                           #          if (alpha <= 0.9999) {
   5413                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   5414                           #          }
   5415                           #          [result autorelease];
   5416                           #          return result;
   5417                           #     }
   5418                           #     // ...
   5419                           #
   5420                           #  Example (JavaScript):
   5421                           #
   5422                           #     // ...
   5423                           #
   5424                           #     var protoToCssColor = function(rgb_color) {
   5425                           #        var redFrac = rgb_color.red || 0.0;
   5426                           #        var greenFrac = rgb_color.green || 0.0;
   5427                           #        var blueFrac = rgb_color.blue || 0.0;
   5428                           #        var red = Math.floor(redFrac * 255);
   5429                           #        var green = Math.floor(greenFrac * 255);
   5430                           #        var blue = Math.floor(blueFrac * 255);
   5431                           #
   5432                           #        if (!('alpha' in rgb_color)) {
   5433                           #           return rgbToCssColor_(red, green, blue);
   5434                           #        }
   5435                           #
   5436                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   5437                           #        var rgbParams = [red, green, blue].join(',');
   5438                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   5439                           #     };
   5440                           #
   5441                           #     var rgbToCssColor_ = function(red, green, blue) {
   5442                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   5443                           #       var hexString = rgbNumber.toString(16);
   5444                           #       var missingZeros = 6 - hexString.length;
   5445                           #       var resultBuilder = ['#'];
   5446                           #       for (var i = 0; i < missingZeros; i++) {
   5447                           #          resultBuilder.push('0');
   5448                           #       }
   5449                           #       resultBuilder.push(hexString);
   5450                           #       return resultBuilder.join('');
   5451                           #     };
   5452                           #
   5453                           #     // ...
   5454                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   5455                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   5456                             # the final pixel color is defined by the equation:
   5457                             #
   5458                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   5459                             #
   5460                             # This means that a value of 1.0 corresponds to a solid color, whereas
   5461                             # a value of 0.0 corresponds to a completely transparent color. This
   5462                             # uses a wrapper message rather than a simple float scalar so that it is
   5463                             # possible to distinguish between a default value and the value being unset.
   5464                             # If omitted, this color object is to be rendered as a solid color
   5465                             # (as if the alpha value had been explicitly given with a value of 1.0).
   5466                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   5467                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   5468                       },
   5469                       "bold": True or False, # True if the text is bold.
   5470                       "strikethrough": True or False, # True if the text has a strikethrough.
   5471                       "fontFamily": "A String", # The font family.
   5472                       "fontSize": 42, # The size of the font.
   5473                       "italic": True or False, # True if the text is italicized.
   5474                       "underline": True or False, # True if the text is underlined.
   5475                     },
   5476                     "title": "A String", # The title of this axis. If set, this overrides any title inferred
   5477                         # from headers of the data.
   5478                   },
   5479                 ],
   5480               },
   5481               "title": "A String", # The title of the chart.
   5482             },
   5483           },
   5484         },
   5485         "addConditionalFormatRule": { # Adds a new conditional format rule at the given index. # Adds a new conditional format rule.
   5486             # All subsequent rules' indexes are incremented.
   5487           "index": 42, # The zero-based index where the rule should be inserted.
   5488           "rule": { # A rule describing a conditional format. # The rule to add.
   5489             "ranges": [ # The ranges that will be formatted if the condition is true.
   5490                 # All the ranges must be on the same grid.
   5491               { # A range on a sheet.
   5492                   # All indexes are zero-based.
   5493                   # Indexes are half open, e.g the start index is inclusive
   5494                   # and the end index is exclusive -- [start_index, end_index).
   5495                   # Missing indexes indicate the range is unbounded on that side.
   5496                   #
   5497                   # For example, if `"Sheet1"` is sheet ID 0, then:
   5498                   #
   5499                   #   `Sheet1!A1:A1 == sheet_id: 0,
   5500                   #                   start_row_index: 0, end_row_index: 1,
   5501                   #                   start_column_index: 0, end_column_index: 1`
   5502                   #
   5503                   #   `Sheet1!A3:B4 == sheet_id: 0,
   5504                   #                   start_row_index: 2, end_row_index: 4,
   5505                   #                   start_column_index: 0, end_column_index: 2`
   5506                   #
   5507                   #   `Sheet1!A:B == sheet_id: 0,
   5508                   #                 start_column_index: 0, end_column_index: 2`
   5509                   #
   5510                   #   `Sheet1!A5:B == sheet_id: 0,
   5511                   #                  start_row_index: 4,
   5512                   #                  start_column_index: 0, end_column_index: 2`
   5513                   #
   5514                   #   `Sheet1 == sheet_id:0`
   5515                   #
   5516                   # The start index must always be less than or equal to the end index.
   5517                   # If the start index equals the end index, then the range is empty.
   5518                   # Empty ranges are typically not meaningful and are usually rendered in the
   5519                   # UI as `#REF!`.
   5520                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   5521                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   5522                 "sheetId": 42, # The sheet this range is on.
   5523                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   5524                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   5525               },
   5526             ],
   5527             "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
   5528               "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
   5529                   # the format will be applied.
   5530                   # BooleanConditions are used by conditional formatting,
   5531                   # data validation, and the criteria in filters.
   5532                 "values": [ # The values of the condition. The number of supported values depends
   5533                     # on the condition type.  Some support zero values,
   5534                     # others one or two values,
   5535                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   5536                   { # The value of the condition.
   5537                     "relativeDate": "A String", # A relative date (based on the current date).
   5538                         # Valid only if the type is
   5539                         # DATE_BEFORE,
   5540                         # DATE_AFTER,
   5541                         # DATE_ON_OR_BEFORE or
   5542                         # DATE_ON_OR_AFTER.
   5543                         #
   5544                         # Relative dates are not supported in data validation.
   5545                         # They are supported only in conditional formatting and
   5546                         # conditional filters.
   5547                     "userEnteredValue": "A String", # A value the condition is based on.
   5548                         # The value will be parsed as if the user typed into a cell.
   5549                         # Formulas are supported (and must begin with an `=`).
   5550                   },
   5551                 ],
   5552                 "type": "A String", # The type of condition.
   5553               },
   5554               "format": { # The format of a cell. # The format to apply.
   5555                   # Conditional formatting can only apply a subset of formatting:
   5556                   # bold, italic,
   5557                   # strikethrough,
   5558                   # foreground color &
   5559                   # background color.
   5560                 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   5561                   "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   5562                       # the user's locale will be used if necessary for the given type.
   5563                       # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   5564                       # information about the supported patterns.
   5565                   "type": "A String", # The type of the number format.
   5566                       # When writing, this field must be set.
   5567                 },
   5568                 "textDirection": "A String", # The direction of the text in the cell.
   5569                 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   5570                     # When updating padding, every field must be specified.
   5571                   "top": 42, # The top padding of the cell.
   5572                   "right": 42, # The right padding of the cell.
   5573                   "bottom": 42, # The bottom padding of the cell.
   5574                   "left": 42, # The left padding of the cell.
   5575                 },
   5576                 "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   5577                 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   5578                     # for simplicity of conversion to/from color representations in various
   5579                     # languages over compactness; for example, the fields of this representation
   5580                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   5581                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   5582                     # method in iOS; and, with just a little work, it can be easily formatted into
   5583                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   5584                     #
   5585                     # Example (Java):
   5586                     #
   5587                     #      import com.google.type.Color;
   5588                     #
   5589                     #      // ...
   5590                     #      public static java.awt.Color fromProto(Color protocolor) {
   5591                     #        float alpha = protocolor.hasAlpha()
   5592                     #            ? protocolor.getAlpha().getValue()
   5593                     #            : 1.0;
   5594                     #
   5595                     #        return new java.awt.Color(
   5596                     #            protocolor.getRed(),
   5597                     #            protocolor.getGreen(),
   5598                     #            protocolor.getBlue(),
   5599                     #            alpha);
   5600                     #      }
   5601                     #
   5602                     #      public static Color toProto(java.awt.Color color) {
   5603                     #        float red = (float) color.getRed();
   5604                     #        float green = (float) color.getGreen();
   5605                     #        float blue = (float) color.getBlue();
   5606                     #        float denominator = 255.0;
   5607                     #        Color.Builder resultBuilder =
   5608                     #            Color
   5609                     #                .newBuilder()
   5610                     #                .setRed(red / denominator)
   5611                     #                .setGreen(green / denominator)
   5612                     #                .setBlue(blue / denominator);
   5613                     #        int alpha = color.getAlpha();
   5614                     #        if (alpha != 255) {
   5615                     #          result.setAlpha(
   5616                     #              FloatValue
   5617                     #                  .newBuilder()
   5618                     #                  .setValue(((float) alpha) / denominator)
   5619                     #                  .build());
   5620                     #        }
   5621                     #        return resultBuilder.build();
   5622                     #      }
   5623                     #      // ...
   5624                     #
   5625                     # Example (iOS / Obj-C):
   5626                     #
   5627                     #      // ...
   5628                     #      static UIColor* fromProto(Color* protocolor) {
   5629                     #         float red = [protocolor red];
   5630                     #         float green = [protocolor green];
   5631                     #         float blue = [protocolor blue];
   5632                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   5633                     #         float alpha = 1.0;
   5634                     #         if (alpha_wrapper != nil) {
   5635                     #           alpha = [alpha_wrapper value];
   5636                     #         }
   5637                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   5638                     #      }
   5639                     #
   5640                     #      static Color* toProto(UIColor* color) {
   5641                     #          CGFloat red, green, blue, alpha;
   5642                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   5643                     #            return nil;
   5644                     #          }
   5645                     #          Color* result = [Color alloc] init];
   5646                     #          [result setRed:red];
   5647                     #          [result setGreen:green];
   5648                     #          [result setBlue:blue];
   5649                     #          if (alpha <= 0.9999) {
   5650                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   5651                     #          }
   5652                     #          [result autorelease];
   5653                     #          return result;
   5654                     #     }
   5655                     #     // ...
   5656                     #
   5657                     #  Example (JavaScript):
   5658                     #
   5659                     #     // ...
   5660                     #
   5661                     #     var protoToCssColor = function(rgb_color) {
   5662                     #        var redFrac = rgb_color.red || 0.0;
   5663                     #        var greenFrac = rgb_color.green || 0.0;
   5664                     #        var blueFrac = rgb_color.blue || 0.0;
   5665                     #        var red = Math.floor(redFrac * 255);
   5666                     #        var green = Math.floor(greenFrac * 255);
   5667                     #        var blue = Math.floor(blueFrac * 255);
   5668                     #
   5669                     #        if (!('alpha' in rgb_color)) {
   5670                     #           return rgbToCssColor_(red, green, blue);
   5671                     #        }
   5672                     #
   5673                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   5674                     #        var rgbParams = [red, green, blue].join(',');
   5675                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   5676                     #     };
   5677                     #
   5678                     #     var rgbToCssColor_ = function(red, green, blue) {
   5679                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   5680                     #       var hexString = rgbNumber.toString(16);
   5681                     #       var missingZeros = 6 - hexString.length;
   5682                     #       var resultBuilder = ['#'];
   5683                     #       for (var i = 0; i < missingZeros; i++) {
   5684                     #          resultBuilder.push('0');
   5685                     #       }
   5686                     #       resultBuilder.push(hexString);
   5687                     #       return resultBuilder.join('');
   5688                     #     };
   5689                     #
   5690                     #     // ...
   5691                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   5692                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   5693                       # the final pixel color is defined by the equation:
   5694                       #
   5695                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   5696                       #
   5697                       # This means that a value of 1.0 corresponds to a solid color, whereas
   5698                       # a value of 0.0 corresponds to a completely transparent color. This
   5699                       # uses a wrapper message rather than a simple float scalar so that it is
   5700                       # possible to distinguish between a default value and the value being unset.
   5701                       # If omitted, this color object is to be rendered as a solid color
   5702                       # (as if the alpha value had been explicitly given with a value of 1.0).
   5703                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   5704                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   5705                 },
   5706                 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   5707                 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   5708                     # Absent values indicate that the field isn't specified.
   5709                   "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   5710                       # for simplicity of conversion to/from color representations in various
   5711                       # languages over compactness; for example, the fields of this representation
   5712                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   5713                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   5714                       # method in iOS; and, with just a little work, it can be easily formatted into
   5715                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   5716                       #
   5717                       # Example (Java):
   5718                       #
   5719                       #      import com.google.type.Color;
   5720                       #
   5721                       #      // ...
   5722                       #      public static java.awt.Color fromProto(Color protocolor) {
   5723                       #        float alpha = protocolor.hasAlpha()
   5724                       #            ? protocolor.getAlpha().getValue()
   5725                       #            : 1.0;
   5726                       #
   5727                       #        return new java.awt.Color(
   5728                       #            protocolor.getRed(),
   5729                       #            protocolor.getGreen(),
   5730                       #            protocolor.getBlue(),
   5731                       #            alpha);
   5732                       #      }
   5733                       #
   5734                       #      public static Color toProto(java.awt.Color color) {
   5735                       #        float red = (float) color.getRed();
   5736                       #        float green = (float) color.getGreen();
   5737                       #        float blue = (float) color.getBlue();
   5738                       #        float denominator = 255.0;
   5739                       #        Color.Builder resultBuilder =
   5740                       #            Color
   5741                       #                .newBuilder()
   5742                       #                .setRed(red / denominator)
   5743                       #                .setGreen(green / denominator)
   5744                       #                .setBlue(blue / denominator);
   5745                       #        int alpha = color.getAlpha();
   5746                       #        if (alpha != 255) {
   5747                       #          result.setAlpha(
   5748                       #              FloatValue
   5749                       #                  .newBuilder()
   5750                       #                  .setValue(((float) alpha) / denominator)
   5751                       #                  .build());
   5752                       #        }
   5753                       #        return resultBuilder.build();
   5754                       #      }
   5755                       #      // ...
   5756                       #
   5757                       # Example (iOS / Obj-C):
   5758                       #
   5759                       #      // ...
   5760                       #      static UIColor* fromProto(Color* protocolor) {
   5761                       #         float red = [protocolor red];
   5762                       #         float green = [protocolor green];
   5763                       #         float blue = [protocolor blue];
   5764                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   5765                       #         float alpha = 1.0;
   5766                       #         if (alpha_wrapper != nil) {
   5767                       #           alpha = [alpha_wrapper value];
   5768                       #         }
   5769                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   5770                       #      }
   5771                       #
   5772                       #      static Color* toProto(UIColor* color) {
   5773                       #          CGFloat red, green, blue, alpha;
   5774                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   5775                       #            return nil;
   5776                       #          }
   5777                       #          Color* result = [Color alloc] init];
   5778                       #          [result setRed:red];
   5779                       #          [result setGreen:green];
   5780                       #          [result setBlue:blue];
   5781                       #          if (alpha <= 0.9999) {
   5782                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   5783                       #          }
   5784                       #          [result autorelease];
   5785                       #          return result;
   5786                       #     }
   5787                       #     // ...
   5788                       #
   5789                       #  Example (JavaScript):
   5790                       #
   5791                       #     // ...
   5792                       #
   5793                       #     var protoToCssColor = function(rgb_color) {
   5794                       #        var redFrac = rgb_color.red || 0.0;
   5795                       #        var greenFrac = rgb_color.green || 0.0;
   5796                       #        var blueFrac = rgb_color.blue || 0.0;
   5797                       #        var red = Math.floor(redFrac * 255);
   5798                       #        var green = Math.floor(greenFrac * 255);
   5799                       #        var blue = Math.floor(blueFrac * 255);
   5800                       #
   5801                       #        if (!('alpha' in rgb_color)) {
   5802                       #           return rgbToCssColor_(red, green, blue);
   5803                       #        }
   5804                       #
   5805                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   5806                       #        var rgbParams = [red, green, blue].join(',');
   5807                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   5808                       #     };
   5809                       #
   5810                       #     var rgbToCssColor_ = function(red, green, blue) {
   5811                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   5812                       #       var hexString = rgbNumber.toString(16);
   5813                       #       var missingZeros = 6 - hexString.length;
   5814                       #       var resultBuilder = ['#'];
   5815                       #       for (var i = 0; i < missingZeros; i++) {
   5816                       #          resultBuilder.push('0');
   5817                       #       }
   5818                       #       resultBuilder.push(hexString);
   5819                       #       return resultBuilder.join('');
   5820                       #     };
   5821                       #
   5822                       #     // ...
   5823                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   5824                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   5825                         # the final pixel color is defined by the equation:
   5826                         #
   5827                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   5828                         #
   5829                         # This means that a value of 1.0 corresponds to a solid color, whereas
   5830                         # a value of 0.0 corresponds to a completely transparent color. This
   5831                         # uses a wrapper message rather than a simple float scalar so that it is
   5832                         # possible to distinguish between a default value and the value being unset.
   5833                         # If omitted, this color object is to be rendered as a solid color
   5834                         # (as if the alpha value had been explicitly given with a value of 1.0).
   5835                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   5836                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   5837                   },
   5838                   "bold": True or False, # True if the text is bold.
   5839                   "strikethrough": True or False, # True if the text has a strikethrough.
   5840                   "fontFamily": "A String", # The font family.
   5841                   "fontSize": 42, # The size of the font.
   5842                   "italic": True or False, # True if the text is italicized.
   5843                   "underline": True or False, # True if the text is underlined.
   5844                 },
   5845                 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   5846                   "angle": 42, # The angle between the standard orientation and the desired orientation.
   5847                       # Measured in degrees. Valid values are between -90 and 90. Positive
   5848                       # angles are angled upwards, negative are angled downwards.
   5849                       #
   5850                       # Note: For LTR text direction positive angles are in the counterclockwise
   5851                       # direction, whereas for RTL they are in the clockwise direction
   5852                   "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   5853                       # characters is unchanged.
   5854                       # For example:
   5855                       #
   5856                       #     | V |
   5857                       #     | e |
   5858                       #     | r |
   5859                       #     | t |
   5860                       #     | i |
   5861                       #     | c |
   5862                       #     | a |
   5863                       #     | l |
   5864                 },
   5865                 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   5866                 "borders": { # The borders of the cell. # The borders of the cell.
   5867                   "top": { # A border along a cell. # The top border of the cell.
   5868                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   5869                         # for simplicity of conversion to/from color representations in various
   5870                         # languages over compactness; for example, the fields of this representation
   5871                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   5872                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   5873                         # method in iOS; and, with just a little work, it can be easily formatted into
   5874                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   5875                         #
   5876                         # Example (Java):
   5877                         #
   5878                         #      import com.google.type.Color;
   5879                         #
   5880                         #      // ...
   5881                         #      public static java.awt.Color fromProto(Color protocolor) {
   5882                         #        float alpha = protocolor.hasAlpha()
   5883                         #            ? protocolor.getAlpha().getValue()
   5884                         #            : 1.0;
   5885                         #
   5886                         #        return new java.awt.Color(
   5887                         #            protocolor.getRed(),
   5888                         #            protocolor.getGreen(),
   5889                         #            protocolor.getBlue(),
   5890                         #            alpha);
   5891                         #      }
   5892                         #
   5893                         #      public static Color toProto(java.awt.Color color) {
   5894                         #        float red = (float) color.getRed();
   5895                         #        float green = (float) color.getGreen();
   5896                         #        float blue = (float) color.getBlue();
   5897                         #        float denominator = 255.0;
   5898                         #        Color.Builder resultBuilder =
   5899                         #            Color
   5900                         #                .newBuilder()
   5901                         #                .setRed(red / denominator)
   5902                         #                .setGreen(green / denominator)
   5903                         #                .setBlue(blue / denominator);
   5904                         #        int alpha = color.getAlpha();
   5905                         #        if (alpha != 255) {
   5906                         #          result.setAlpha(
   5907                         #              FloatValue
   5908                         #                  .newBuilder()
   5909                         #                  .setValue(((float) alpha) / denominator)
   5910                         #                  .build());
   5911                         #        }
   5912                         #        return resultBuilder.build();
   5913                         #      }
   5914                         #      // ...
   5915                         #
   5916                         # Example (iOS / Obj-C):
   5917                         #
   5918                         #      // ...
   5919                         #      static UIColor* fromProto(Color* protocolor) {
   5920                         #         float red = [protocolor red];
   5921                         #         float green = [protocolor green];
   5922                         #         float blue = [protocolor blue];
   5923                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   5924                         #         float alpha = 1.0;
   5925                         #         if (alpha_wrapper != nil) {
   5926                         #           alpha = [alpha_wrapper value];
   5927                         #         }
   5928                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   5929                         #      }
   5930                         #
   5931                         #      static Color* toProto(UIColor* color) {
   5932                         #          CGFloat red, green, blue, alpha;
   5933                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   5934                         #            return nil;
   5935                         #          }
   5936                         #          Color* result = [Color alloc] init];
   5937                         #          [result setRed:red];
   5938                         #          [result setGreen:green];
   5939                         #          [result setBlue:blue];
   5940                         #          if (alpha <= 0.9999) {
   5941                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   5942                         #          }
   5943                         #          [result autorelease];
   5944                         #          return result;
   5945                         #     }
   5946                         #     // ...
   5947                         #
   5948                         #  Example (JavaScript):
   5949                         #
   5950                         #     // ...
   5951                         #
   5952                         #     var protoToCssColor = function(rgb_color) {
   5953                         #        var redFrac = rgb_color.red || 0.0;
   5954                         #        var greenFrac = rgb_color.green || 0.0;
   5955                         #        var blueFrac = rgb_color.blue || 0.0;
   5956                         #        var red = Math.floor(redFrac * 255);
   5957                         #        var green = Math.floor(greenFrac * 255);
   5958                         #        var blue = Math.floor(blueFrac * 255);
   5959                         #
   5960                         #        if (!('alpha' in rgb_color)) {
   5961                         #           return rgbToCssColor_(red, green, blue);
   5962                         #        }
   5963                         #
   5964                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   5965                         #        var rgbParams = [red, green, blue].join(',');
   5966                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   5967                         #     };
   5968                         #
   5969                         #     var rgbToCssColor_ = function(red, green, blue) {
   5970                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   5971                         #       var hexString = rgbNumber.toString(16);
   5972                         #       var missingZeros = 6 - hexString.length;
   5973                         #       var resultBuilder = ['#'];
   5974                         #       for (var i = 0; i < missingZeros; i++) {
   5975                         #          resultBuilder.push('0');
   5976                         #       }
   5977                         #       resultBuilder.push(hexString);
   5978                         #       return resultBuilder.join('');
   5979                         #     };
   5980                         #
   5981                         #     // ...
   5982                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   5983                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   5984                           # the final pixel color is defined by the equation:
   5985                           #
   5986                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   5987                           #
   5988                           # This means that a value of 1.0 corresponds to a solid color, whereas
   5989                           # a value of 0.0 corresponds to a completely transparent color. This
   5990                           # uses a wrapper message rather than a simple float scalar so that it is
   5991                           # possible to distinguish between a default value and the value being unset.
   5992                           # If omitted, this color object is to be rendered as a solid color
   5993                           # (as if the alpha value had been explicitly given with a value of 1.0).
   5994                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   5995                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   5996                     },
   5997                     "width": 42, # The width of the border, in pixels.
   5998                         # Deprecated; the width is determined by the "style" field.
   5999                     "style": "A String", # The style of the border.
   6000                   },
   6001                   "right": { # A border along a cell. # The right border of the cell.
   6002                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   6003                         # for simplicity of conversion to/from color representations in various
   6004                         # languages over compactness; for example, the fields of this representation
   6005                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   6006                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   6007                         # method in iOS; and, with just a little work, it can be easily formatted into
   6008                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   6009                         #
   6010                         # Example (Java):
   6011                         #
   6012                         #      import com.google.type.Color;
   6013                         #
   6014                         #      // ...
   6015                         #      public static java.awt.Color fromProto(Color protocolor) {
   6016                         #        float alpha = protocolor.hasAlpha()
   6017                         #            ? protocolor.getAlpha().getValue()
   6018                         #            : 1.0;
   6019                         #
   6020                         #        return new java.awt.Color(
   6021                         #            protocolor.getRed(),
   6022                         #            protocolor.getGreen(),
   6023                         #            protocolor.getBlue(),
   6024                         #            alpha);
   6025                         #      }
   6026                         #
   6027                         #      public static Color toProto(java.awt.Color color) {
   6028                         #        float red = (float) color.getRed();
   6029                         #        float green = (float) color.getGreen();
   6030                         #        float blue = (float) color.getBlue();
   6031                         #        float denominator = 255.0;
   6032                         #        Color.Builder resultBuilder =
   6033                         #            Color
   6034                         #                .newBuilder()
   6035                         #                .setRed(red / denominator)
   6036                         #                .setGreen(green / denominator)
   6037                         #                .setBlue(blue / denominator);
   6038                         #        int alpha = color.getAlpha();
   6039                         #        if (alpha != 255) {
   6040                         #          result.setAlpha(
   6041                         #              FloatValue
   6042                         #                  .newBuilder()
   6043                         #                  .setValue(((float) alpha) / denominator)
   6044                         #                  .build());
   6045                         #        }
   6046                         #        return resultBuilder.build();
   6047                         #      }
   6048                         #      // ...
   6049                         #
   6050                         # Example (iOS / Obj-C):
   6051                         #
   6052                         #      // ...
   6053                         #      static UIColor* fromProto(Color* protocolor) {
   6054                         #         float red = [protocolor red];
   6055                         #         float green = [protocolor green];
   6056                         #         float blue = [protocolor blue];
   6057                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   6058                         #         float alpha = 1.0;
   6059                         #         if (alpha_wrapper != nil) {
   6060                         #           alpha = [alpha_wrapper value];
   6061                         #         }
   6062                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   6063                         #      }
   6064                         #
   6065                         #      static Color* toProto(UIColor* color) {
   6066                         #          CGFloat red, green, blue, alpha;
   6067                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   6068                         #            return nil;
   6069                         #          }
   6070                         #          Color* result = [Color alloc] init];
   6071                         #          [result setRed:red];
   6072                         #          [result setGreen:green];
   6073                         #          [result setBlue:blue];
   6074                         #          if (alpha <= 0.9999) {
   6075                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   6076                         #          }
   6077                         #          [result autorelease];
   6078                         #          return result;
   6079                         #     }
   6080                         #     // ...
   6081                         #
   6082                         #  Example (JavaScript):
   6083                         #
   6084                         #     // ...
   6085                         #
   6086                         #     var protoToCssColor = function(rgb_color) {
   6087                         #        var redFrac = rgb_color.red || 0.0;
   6088                         #        var greenFrac = rgb_color.green || 0.0;
   6089                         #        var blueFrac = rgb_color.blue || 0.0;
   6090                         #        var red = Math.floor(redFrac * 255);
   6091                         #        var green = Math.floor(greenFrac * 255);
   6092                         #        var blue = Math.floor(blueFrac * 255);
   6093                         #
   6094                         #        if (!('alpha' in rgb_color)) {
   6095                         #           return rgbToCssColor_(red, green, blue);
   6096                         #        }
   6097                         #
   6098                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   6099                         #        var rgbParams = [red, green, blue].join(',');
   6100                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   6101                         #     };
   6102                         #
   6103                         #     var rgbToCssColor_ = function(red, green, blue) {
   6104                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   6105                         #       var hexString = rgbNumber.toString(16);
   6106                         #       var missingZeros = 6 - hexString.length;
   6107                         #       var resultBuilder = ['#'];
   6108                         #       for (var i = 0; i < missingZeros; i++) {
   6109                         #          resultBuilder.push('0');
   6110                         #       }
   6111                         #       resultBuilder.push(hexString);
   6112                         #       return resultBuilder.join('');
   6113                         #     };
   6114                         #
   6115                         #     // ...
   6116                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   6117                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   6118                           # the final pixel color is defined by the equation:
   6119                           #
   6120                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   6121                           #
   6122                           # This means that a value of 1.0 corresponds to a solid color, whereas
   6123                           # a value of 0.0 corresponds to a completely transparent color. This
   6124                           # uses a wrapper message rather than a simple float scalar so that it is
   6125                           # possible to distinguish between a default value and the value being unset.
   6126                           # If omitted, this color object is to be rendered as a solid color
   6127                           # (as if the alpha value had been explicitly given with a value of 1.0).
   6128                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   6129                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   6130                     },
   6131                     "width": 42, # The width of the border, in pixels.
   6132                         # Deprecated; the width is determined by the "style" field.
   6133                     "style": "A String", # The style of the border.
   6134                   },
   6135                   "bottom": { # A border along a cell. # The bottom border of the cell.
   6136                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   6137                         # for simplicity of conversion to/from color representations in various
   6138                         # languages over compactness; for example, the fields of this representation
   6139                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   6140                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   6141                         # method in iOS; and, with just a little work, it can be easily formatted into
   6142                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   6143                         #
   6144                         # Example (Java):
   6145                         #
   6146                         #      import com.google.type.Color;
   6147                         #
   6148                         #      // ...
   6149                         #      public static java.awt.Color fromProto(Color protocolor) {
   6150                         #        float alpha = protocolor.hasAlpha()
   6151                         #            ? protocolor.getAlpha().getValue()
   6152                         #            : 1.0;
   6153                         #
   6154                         #        return new java.awt.Color(
   6155                         #            protocolor.getRed(),
   6156                         #            protocolor.getGreen(),
   6157                         #            protocolor.getBlue(),
   6158                         #            alpha);
   6159                         #      }
   6160                         #
   6161                         #      public static Color toProto(java.awt.Color color) {
   6162                         #        float red = (float) color.getRed();
   6163                         #        float green = (float) color.getGreen();
   6164                         #        float blue = (float) color.getBlue();
   6165                         #        float denominator = 255.0;
   6166                         #        Color.Builder resultBuilder =
   6167                         #            Color
   6168                         #                .newBuilder()
   6169                         #                .setRed(red / denominator)
   6170                         #                .setGreen(green / denominator)
   6171                         #                .setBlue(blue / denominator);
   6172                         #        int alpha = color.getAlpha();
   6173                         #        if (alpha != 255) {
   6174                         #          result.setAlpha(
   6175                         #              FloatValue
   6176                         #                  .newBuilder()
   6177                         #                  .setValue(((float) alpha) / denominator)
   6178                         #                  .build());
   6179                         #        }
   6180                         #        return resultBuilder.build();
   6181                         #      }
   6182                         #      // ...
   6183                         #
   6184                         # Example (iOS / Obj-C):
   6185                         #
   6186                         #      // ...
   6187                         #      static UIColor* fromProto(Color* protocolor) {
   6188                         #         float red = [protocolor red];
   6189                         #         float green = [protocolor green];
   6190                         #         float blue = [protocolor blue];
   6191                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   6192                         #         float alpha = 1.0;
   6193                         #         if (alpha_wrapper != nil) {
   6194                         #           alpha = [alpha_wrapper value];
   6195                         #         }
   6196                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   6197                         #      }
   6198                         #
   6199                         #      static Color* toProto(UIColor* color) {
   6200                         #          CGFloat red, green, blue, alpha;
   6201                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   6202                         #            return nil;
   6203                         #          }
   6204                         #          Color* result = [Color alloc] init];
   6205                         #          [result setRed:red];
   6206                         #          [result setGreen:green];
   6207                         #          [result setBlue:blue];
   6208                         #          if (alpha <= 0.9999) {
   6209                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   6210                         #          }
   6211                         #          [result autorelease];
   6212                         #          return result;
   6213                         #     }
   6214                         #     // ...
   6215                         #
   6216                         #  Example (JavaScript):
   6217                         #
   6218                         #     // ...
   6219                         #
   6220                         #     var protoToCssColor = function(rgb_color) {
   6221                         #        var redFrac = rgb_color.red || 0.0;
   6222                         #        var greenFrac = rgb_color.green || 0.0;
   6223                         #        var blueFrac = rgb_color.blue || 0.0;
   6224                         #        var red = Math.floor(redFrac * 255);
   6225                         #        var green = Math.floor(greenFrac * 255);
   6226                         #        var blue = Math.floor(blueFrac * 255);
   6227                         #
   6228                         #        if (!('alpha' in rgb_color)) {
   6229                         #           return rgbToCssColor_(red, green, blue);
   6230                         #        }
   6231                         #
   6232                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   6233                         #        var rgbParams = [red, green, blue].join(',');
   6234                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   6235                         #     };
   6236                         #
   6237                         #     var rgbToCssColor_ = function(red, green, blue) {
   6238                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   6239                         #       var hexString = rgbNumber.toString(16);
   6240                         #       var missingZeros = 6 - hexString.length;
   6241                         #       var resultBuilder = ['#'];
   6242                         #       for (var i = 0; i < missingZeros; i++) {
   6243                         #          resultBuilder.push('0');
   6244                         #       }
   6245                         #       resultBuilder.push(hexString);
   6246                         #       return resultBuilder.join('');
   6247                         #     };
   6248                         #
   6249                         #     // ...
   6250                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   6251                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   6252                           # the final pixel color is defined by the equation:
   6253                           #
   6254                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   6255                           #
   6256                           # This means that a value of 1.0 corresponds to a solid color, whereas
   6257                           # a value of 0.0 corresponds to a completely transparent color. This
   6258                           # uses a wrapper message rather than a simple float scalar so that it is
   6259                           # possible to distinguish between a default value and the value being unset.
   6260                           # If omitted, this color object is to be rendered as a solid color
   6261                           # (as if the alpha value had been explicitly given with a value of 1.0).
   6262                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   6263                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   6264                     },
   6265                     "width": 42, # The width of the border, in pixels.
   6266                         # Deprecated; the width is determined by the "style" field.
   6267                     "style": "A String", # The style of the border.
   6268                   },
   6269                   "left": { # A border along a cell. # The left border of the cell.
   6270                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   6271                         # for simplicity of conversion to/from color representations in various
   6272                         # languages over compactness; for example, the fields of this representation
   6273                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   6274                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   6275                         # method in iOS; and, with just a little work, it can be easily formatted into
   6276                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   6277                         #
   6278                         # Example (Java):
   6279                         #
   6280                         #      import com.google.type.Color;
   6281                         #
   6282                         #      // ...
   6283                         #      public static java.awt.Color fromProto(Color protocolor) {
   6284                         #        float alpha = protocolor.hasAlpha()
   6285                         #            ? protocolor.getAlpha().getValue()
   6286                         #            : 1.0;
   6287                         #
   6288                         #        return new java.awt.Color(
   6289                         #            protocolor.getRed(),
   6290                         #            protocolor.getGreen(),
   6291                         #            protocolor.getBlue(),
   6292                         #            alpha);
   6293                         #      }
   6294                         #
   6295                         #      public static Color toProto(java.awt.Color color) {
   6296                         #        float red = (float) color.getRed();
   6297                         #        float green = (float) color.getGreen();
   6298                         #        float blue = (float) color.getBlue();
   6299                         #        float denominator = 255.0;
   6300                         #        Color.Builder resultBuilder =
   6301                         #            Color
   6302                         #                .newBuilder()
   6303                         #                .setRed(red / denominator)
   6304                         #                .setGreen(green / denominator)
   6305                         #                .setBlue(blue / denominator);
   6306                         #        int alpha = color.getAlpha();
   6307                         #        if (alpha != 255) {
   6308                         #          result.setAlpha(
   6309                         #              FloatValue
   6310                         #                  .newBuilder()
   6311                         #                  .setValue(((float) alpha) / denominator)
   6312                         #                  .build());
   6313                         #        }
   6314                         #        return resultBuilder.build();
   6315                         #      }
   6316                         #      // ...
   6317                         #
   6318                         # Example (iOS / Obj-C):
   6319                         #
   6320                         #      // ...
   6321                         #      static UIColor* fromProto(Color* protocolor) {
   6322                         #         float red = [protocolor red];
   6323                         #         float green = [protocolor green];
   6324                         #         float blue = [protocolor blue];
   6325                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   6326                         #         float alpha = 1.0;
   6327                         #         if (alpha_wrapper != nil) {
   6328                         #           alpha = [alpha_wrapper value];
   6329                         #         }
   6330                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   6331                         #      }
   6332                         #
   6333                         #      static Color* toProto(UIColor* color) {
   6334                         #          CGFloat red, green, blue, alpha;
   6335                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   6336                         #            return nil;
   6337                         #          }
   6338                         #          Color* result = [Color alloc] init];
   6339                         #          [result setRed:red];
   6340                         #          [result setGreen:green];
   6341                         #          [result setBlue:blue];
   6342                         #          if (alpha <= 0.9999) {
   6343                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   6344                         #          }
   6345                         #          [result autorelease];
   6346                         #          return result;
   6347                         #     }
   6348                         #     // ...
   6349                         #
   6350                         #  Example (JavaScript):
   6351                         #
   6352                         #     // ...
   6353                         #
   6354                         #     var protoToCssColor = function(rgb_color) {
   6355                         #        var redFrac = rgb_color.red || 0.0;
   6356                         #        var greenFrac = rgb_color.green || 0.0;
   6357                         #        var blueFrac = rgb_color.blue || 0.0;
   6358                         #        var red = Math.floor(redFrac * 255);
   6359                         #        var green = Math.floor(greenFrac * 255);
   6360                         #        var blue = Math.floor(blueFrac * 255);
   6361                         #
   6362                         #        if (!('alpha' in rgb_color)) {
   6363                         #           return rgbToCssColor_(red, green, blue);
   6364                         #        }
   6365                         #
   6366                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   6367                         #        var rgbParams = [red, green, blue].join(',');
   6368                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   6369                         #     };
   6370                         #
   6371                         #     var rgbToCssColor_ = function(red, green, blue) {
   6372                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   6373                         #       var hexString = rgbNumber.toString(16);
   6374                         #       var missingZeros = 6 - hexString.length;
   6375                         #       var resultBuilder = ['#'];
   6376                         #       for (var i = 0; i < missingZeros; i++) {
   6377                         #          resultBuilder.push('0');
   6378                         #       }
   6379                         #       resultBuilder.push(hexString);
   6380                         #       return resultBuilder.join('');
   6381                         #     };
   6382                         #
   6383                         #     // ...
   6384                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   6385                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   6386                           # the final pixel color is defined by the equation:
   6387                           #
   6388                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   6389                           #
   6390                           # This means that a value of 1.0 corresponds to a solid color, whereas
   6391                           # a value of 0.0 corresponds to a completely transparent color. This
   6392                           # uses a wrapper message rather than a simple float scalar so that it is
   6393                           # possible to distinguish between a default value and the value being unset.
   6394                           # If omitted, this color object is to be rendered as a solid color
   6395                           # (as if the alpha value had been explicitly given with a value of 1.0).
   6396                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   6397                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   6398                     },
   6399                     "width": 42, # The width of the border, in pixels.
   6400                         # Deprecated; the width is determined by the "style" field.
   6401                     "style": "A String", # The style of the border.
   6402                   },
   6403                 },
   6404                 "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   6405               },
   6406             },
   6407             "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
   6408                 # the interpolation points listed. The format of a cell will vary
   6409                 # based on its contents as compared to the values of the interpolation
   6410                 # points.
   6411               "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
   6412                   # These pin the gradient color scale according to the color,
   6413                   # type and value chosen.
   6414                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   6415                     # for simplicity of conversion to/from color representations in various
   6416                     # languages over compactness; for example, the fields of this representation
   6417                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   6418                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   6419                     # method in iOS; and, with just a little work, it can be easily formatted into
   6420                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   6421                     #
   6422                     # Example (Java):
   6423                     #
   6424                     #      import com.google.type.Color;
   6425                     #
   6426                     #      // ...
   6427                     #      public static java.awt.Color fromProto(Color protocolor) {
   6428                     #        float alpha = protocolor.hasAlpha()
   6429                     #            ? protocolor.getAlpha().getValue()
   6430                     #            : 1.0;
   6431                     #
   6432                     #        return new java.awt.Color(
   6433                     #            protocolor.getRed(),
   6434                     #            protocolor.getGreen(),
   6435                     #            protocolor.getBlue(),
   6436                     #            alpha);
   6437                     #      }
   6438                     #
   6439                     #      public static Color toProto(java.awt.Color color) {
   6440                     #        float red = (float) color.getRed();
   6441                     #        float green = (float) color.getGreen();
   6442                     #        float blue = (float) color.getBlue();
   6443                     #        float denominator = 255.0;
   6444                     #        Color.Builder resultBuilder =
   6445                     #            Color
   6446                     #                .newBuilder()
   6447                     #                .setRed(red / denominator)
   6448                     #                .setGreen(green / denominator)
   6449                     #                .setBlue(blue / denominator);
   6450                     #        int alpha = color.getAlpha();
   6451                     #        if (alpha != 255) {
   6452                     #          result.setAlpha(
   6453                     #              FloatValue
   6454                     #                  .newBuilder()
   6455                     #                  .setValue(((float) alpha) / denominator)
   6456                     #                  .build());
   6457                     #        }
   6458                     #        return resultBuilder.build();
   6459                     #      }
   6460                     #      // ...
   6461                     #
   6462                     # Example (iOS / Obj-C):
   6463                     #
   6464                     #      // ...
   6465                     #      static UIColor* fromProto(Color* protocolor) {
   6466                     #         float red = [protocolor red];
   6467                     #         float green = [protocolor green];
   6468                     #         float blue = [protocolor blue];
   6469                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   6470                     #         float alpha = 1.0;
   6471                     #         if (alpha_wrapper != nil) {
   6472                     #           alpha = [alpha_wrapper value];
   6473                     #         }
   6474                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   6475                     #      }
   6476                     #
   6477                     #      static Color* toProto(UIColor* color) {
   6478                     #          CGFloat red, green, blue, alpha;
   6479                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   6480                     #            return nil;
   6481                     #          }
   6482                     #          Color* result = [Color alloc] init];
   6483                     #          [result setRed:red];
   6484                     #          [result setGreen:green];
   6485                     #          [result setBlue:blue];
   6486                     #          if (alpha <= 0.9999) {
   6487                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   6488                     #          }
   6489                     #          [result autorelease];
   6490                     #          return result;
   6491                     #     }
   6492                     #     // ...
   6493                     #
   6494                     #  Example (JavaScript):
   6495                     #
   6496                     #     // ...
   6497                     #
   6498                     #     var protoToCssColor = function(rgb_color) {
   6499                     #        var redFrac = rgb_color.red || 0.0;
   6500                     #        var greenFrac = rgb_color.green || 0.0;
   6501                     #        var blueFrac = rgb_color.blue || 0.0;
   6502                     #        var red = Math.floor(redFrac * 255);
   6503                     #        var green = Math.floor(greenFrac * 255);
   6504                     #        var blue = Math.floor(blueFrac * 255);
   6505                     #
   6506                     #        if (!('alpha' in rgb_color)) {
   6507                     #           return rgbToCssColor_(red, green, blue);
   6508                     #        }
   6509                     #
   6510                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   6511                     #        var rgbParams = [red, green, blue].join(',');
   6512                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   6513                     #     };
   6514                     #
   6515                     #     var rgbToCssColor_ = function(red, green, blue) {
   6516                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   6517                     #       var hexString = rgbNumber.toString(16);
   6518                     #       var missingZeros = 6 - hexString.length;
   6519                     #       var resultBuilder = ['#'];
   6520                     #       for (var i = 0; i < missingZeros; i++) {
   6521                     #          resultBuilder.push('0');
   6522                     #       }
   6523                     #       resultBuilder.push(hexString);
   6524                     #       return resultBuilder.join('');
   6525                     #     };
   6526                     #
   6527                     #     // ...
   6528                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   6529                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   6530                       # the final pixel color is defined by the equation:
   6531                       #
   6532                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   6533                       #
   6534                       # This means that a value of 1.0 corresponds to a solid color, whereas
   6535                       # a value of 0.0 corresponds to a completely transparent color. This
   6536                       # uses a wrapper message rather than a simple float scalar so that it is
   6537                       # possible to distinguish between a default value and the value being unset.
   6538                       # If omitted, this color object is to be rendered as a solid color
   6539                       # (as if the alpha value had been explicitly given with a value of 1.0).
   6540                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   6541                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   6542                 },
   6543                 "type": "A String", # How the value should be interpreted.
   6544                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   6545                     # Unused if type is MIN or
   6546                     # MAX.
   6547               },
   6548               "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
   6549                   # These pin the gradient color scale according to the color,
   6550                   # type and value chosen.
   6551                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   6552                     # for simplicity of conversion to/from color representations in various
   6553                     # languages over compactness; for example, the fields of this representation
   6554                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   6555                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   6556                     # method in iOS; and, with just a little work, it can be easily formatted into
   6557                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   6558                     #
   6559                     # Example (Java):
   6560                     #
   6561                     #      import com.google.type.Color;
   6562                     #
   6563                     #      // ...
   6564                     #      public static java.awt.Color fromProto(Color protocolor) {
   6565                     #        float alpha = protocolor.hasAlpha()
   6566                     #            ? protocolor.getAlpha().getValue()
   6567                     #            : 1.0;
   6568                     #
   6569                     #        return new java.awt.Color(
   6570                     #            protocolor.getRed(),
   6571                     #            protocolor.getGreen(),
   6572                     #            protocolor.getBlue(),
   6573                     #            alpha);
   6574                     #      }
   6575                     #
   6576                     #      public static Color toProto(java.awt.Color color) {
   6577                     #        float red = (float) color.getRed();
   6578                     #        float green = (float) color.getGreen();
   6579                     #        float blue = (float) color.getBlue();
   6580                     #        float denominator = 255.0;
   6581                     #        Color.Builder resultBuilder =
   6582                     #            Color
   6583                     #                .newBuilder()
   6584                     #                .setRed(red / denominator)
   6585                     #                .setGreen(green / denominator)
   6586                     #                .setBlue(blue / denominator);
   6587                     #        int alpha = color.getAlpha();
   6588                     #        if (alpha != 255) {
   6589                     #          result.setAlpha(
   6590                     #              FloatValue
   6591                     #                  .newBuilder()
   6592                     #                  .setValue(((float) alpha) / denominator)
   6593                     #                  .build());
   6594                     #        }
   6595                     #        return resultBuilder.build();
   6596                     #      }
   6597                     #      // ...
   6598                     #
   6599                     # Example (iOS / Obj-C):
   6600                     #
   6601                     #      // ...
   6602                     #      static UIColor* fromProto(Color* protocolor) {
   6603                     #         float red = [protocolor red];
   6604                     #         float green = [protocolor green];
   6605                     #         float blue = [protocolor blue];
   6606                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   6607                     #         float alpha = 1.0;
   6608                     #         if (alpha_wrapper != nil) {
   6609                     #           alpha = [alpha_wrapper value];
   6610                     #         }
   6611                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   6612                     #      }
   6613                     #
   6614                     #      static Color* toProto(UIColor* color) {
   6615                     #          CGFloat red, green, blue, alpha;
   6616                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   6617                     #            return nil;
   6618                     #          }
   6619                     #          Color* result = [Color alloc] init];
   6620                     #          [result setRed:red];
   6621                     #          [result setGreen:green];
   6622                     #          [result setBlue:blue];
   6623                     #          if (alpha <= 0.9999) {
   6624                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   6625                     #          }
   6626                     #          [result autorelease];
   6627                     #          return result;
   6628                     #     }
   6629                     #     // ...
   6630                     #
   6631                     #  Example (JavaScript):
   6632                     #
   6633                     #     // ...
   6634                     #
   6635                     #     var protoToCssColor = function(rgb_color) {
   6636                     #        var redFrac = rgb_color.red || 0.0;
   6637                     #        var greenFrac = rgb_color.green || 0.0;
   6638                     #        var blueFrac = rgb_color.blue || 0.0;
   6639                     #        var red = Math.floor(redFrac * 255);
   6640                     #        var green = Math.floor(greenFrac * 255);
   6641                     #        var blue = Math.floor(blueFrac * 255);
   6642                     #
   6643                     #        if (!('alpha' in rgb_color)) {
   6644                     #           return rgbToCssColor_(red, green, blue);
   6645                     #        }
   6646                     #
   6647                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   6648                     #        var rgbParams = [red, green, blue].join(',');
   6649                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   6650                     #     };
   6651                     #
   6652                     #     var rgbToCssColor_ = function(red, green, blue) {
   6653                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   6654                     #       var hexString = rgbNumber.toString(16);
   6655                     #       var missingZeros = 6 - hexString.length;
   6656                     #       var resultBuilder = ['#'];
   6657                     #       for (var i = 0; i < missingZeros; i++) {
   6658                     #          resultBuilder.push('0');
   6659                     #       }
   6660                     #       resultBuilder.push(hexString);
   6661                     #       return resultBuilder.join('');
   6662                     #     };
   6663                     #
   6664                     #     // ...
   6665                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   6666                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   6667                       # the final pixel color is defined by the equation:
   6668                       #
   6669                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   6670                       #
   6671                       # This means that a value of 1.0 corresponds to a solid color, whereas
   6672                       # a value of 0.0 corresponds to a completely transparent color. This
   6673                       # uses a wrapper message rather than a simple float scalar so that it is
   6674                       # possible to distinguish between a default value and the value being unset.
   6675                       # If omitted, this color object is to be rendered as a solid color
   6676                       # (as if the alpha value had been explicitly given with a value of 1.0).
   6677                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   6678                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   6679                 },
   6680                 "type": "A String", # How the value should be interpreted.
   6681                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   6682                     # Unused if type is MIN or
   6683                     # MAX.
   6684               },
   6685               "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
   6686                   # These pin the gradient color scale according to the color,
   6687                   # type and value chosen.
   6688                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   6689                     # for simplicity of conversion to/from color representations in various
   6690                     # languages over compactness; for example, the fields of this representation
   6691                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   6692                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   6693                     # method in iOS; and, with just a little work, it can be easily formatted into
   6694                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   6695                     #
   6696                     # Example (Java):
   6697                     #
   6698                     #      import com.google.type.Color;
   6699                     #
   6700                     #      // ...
   6701                     #      public static java.awt.Color fromProto(Color protocolor) {
   6702                     #        float alpha = protocolor.hasAlpha()
   6703                     #            ? protocolor.getAlpha().getValue()
   6704                     #            : 1.0;
   6705                     #
   6706                     #        return new java.awt.Color(
   6707                     #            protocolor.getRed(),
   6708                     #            protocolor.getGreen(),
   6709                     #            protocolor.getBlue(),
   6710                     #            alpha);
   6711                     #      }
   6712                     #
   6713                     #      public static Color toProto(java.awt.Color color) {
   6714                     #        float red = (float) color.getRed();
   6715                     #        float green = (float) color.getGreen();
   6716                     #        float blue = (float) color.getBlue();
   6717                     #        float denominator = 255.0;
   6718                     #        Color.Builder resultBuilder =
   6719                     #            Color
   6720                     #                .newBuilder()
   6721                     #                .setRed(red / denominator)
   6722                     #                .setGreen(green / denominator)
   6723                     #                .setBlue(blue / denominator);
   6724                     #        int alpha = color.getAlpha();
   6725                     #        if (alpha != 255) {
   6726                     #          result.setAlpha(
   6727                     #              FloatValue
   6728                     #                  .newBuilder()
   6729                     #                  .setValue(((float) alpha) / denominator)
   6730                     #                  .build());
   6731                     #        }
   6732                     #        return resultBuilder.build();
   6733                     #      }
   6734                     #      // ...
   6735                     #
   6736                     # Example (iOS / Obj-C):
   6737                     #
   6738                     #      // ...
   6739                     #      static UIColor* fromProto(Color* protocolor) {
   6740                     #         float red = [protocolor red];
   6741                     #         float green = [protocolor green];
   6742                     #         float blue = [protocolor blue];
   6743                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   6744                     #         float alpha = 1.0;
   6745                     #         if (alpha_wrapper != nil) {
   6746                     #           alpha = [alpha_wrapper value];
   6747                     #         }
   6748                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   6749                     #      }
   6750                     #
   6751                     #      static Color* toProto(UIColor* color) {
   6752                     #          CGFloat red, green, blue, alpha;
   6753                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   6754                     #            return nil;
   6755                     #          }
   6756                     #          Color* result = [Color alloc] init];
   6757                     #          [result setRed:red];
   6758                     #          [result setGreen:green];
   6759                     #          [result setBlue:blue];
   6760                     #          if (alpha <= 0.9999) {
   6761                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   6762                     #          }
   6763                     #          [result autorelease];
   6764                     #          return result;
   6765                     #     }
   6766                     #     // ...
   6767                     #
   6768                     #  Example (JavaScript):
   6769                     #
   6770                     #     // ...
   6771                     #
   6772                     #     var protoToCssColor = function(rgb_color) {
   6773                     #        var redFrac = rgb_color.red || 0.0;
   6774                     #        var greenFrac = rgb_color.green || 0.0;
   6775                     #        var blueFrac = rgb_color.blue || 0.0;
   6776                     #        var red = Math.floor(redFrac * 255);
   6777                     #        var green = Math.floor(greenFrac * 255);
   6778                     #        var blue = Math.floor(blueFrac * 255);
   6779                     #
   6780                     #        if (!('alpha' in rgb_color)) {
   6781                     #           return rgbToCssColor_(red, green, blue);
   6782                     #        }
   6783                     #
   6784                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   6785                     #        var rgbParams = [red, green, blue].join(',');
   6786                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   6787                     #     };
   6788                     #
   6789                     #     var rgbToCssColor_ = function(red, green, blue) {
   6790                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   6791                     #       var hexString = rgbNumber.toString(16);
   6792                     #       var missingZeros = 6 - hexString.length;
   6793                     #       var resultBuilder = ['#'];
   6794                     #       for (var i = 0; i < missingZeros; i++) {
   6795                     #          resultBuilder.push('0');
   6796                     #       }
   6797                     #       resultBuilder.push(hexString);
   6798                     #       return resultBuilder.join('');
   6799                     #     };
   6800                     #
   6801                     #     // ...
   6802                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   6803                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   6804                       # the final pixel color is defined by the equation:
   6805                       #
   6806                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   6807                       #
   6808                       # This means that a value of 1.0 corresponds to a solid color, whereas
   6809                       # a value of 0.0 corresponds to a completely transparent color. This
   6810                       # uses a wrapper message rather than a simple float scalar so that it is
   6811                       # possible to distinguish between a default value and the value being unset.
   6812                       # If omitted, this color object is to be rendered as a solid color
   6813                       # (as if the alpha value had been explicitly given with a value of 1.0).
   6814                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   6815                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   6816                 },
   6817                 "type": "A String", # How the value should be interpreted.
   6818                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   6819                     # Unused if type is MIN or
   6820                     # MAX.
   6821               },
   6822             },
   6823           },
   6824         },
   6825         "deleteBanding": { # Removes the banded range with the given ID from the spreadsheet. # Removes a banded range
   6826           "bandedRangeId": 42, # The ID of the banded range to delete.
   6827         },
   6828         "repeatCell": { # Updates all cells in the range to the values in the given Cell object. # Repeats a single cell across a range.
   6829             # Only the fields listed in the fields field are updated; others are
   6830             # unchanged.
   6831             #
   6832             # If writing a cell with a formula, the formula's ranges will automatically
   6833             # increment for each field in the range.
   6834             # For example, if writing a cell with formula `=A1` into range B2:C4,
   6835             # B2 would be `=A1`, B3 would be `=A2`, B4 would be `=A3`,
   6836             # C2 would be `=B1`, C3 would be `=B2`, C4 would be `=B3`.
   6837             #
   6838             # To keep the formula's ranges static, use the `$` indicator.
   6839             # For example, use the formula `=$A$1` to prevent both the row and the
   6840             # column from incrementing.
   6841           "cell": { # Data about a specific cell. # The data to write.
   6842             "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
   6843                 # is computed dynamically based on its data, grouping, filters, values,
   6844                 # etc. Only the top-left cell of the pivot table contains the pivot table
   6845                 # definition. The other cells will contain the calculated values of the
   6846                 # results of the pivot in their effective_value fields.
   6847               "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
   6848                   # or vertically (as rows).
   6849               "rows": [ # Each row grouping in the pivot table.
   6850                 { # A single grouping (either row or column) in a pivot table.
   6851                   "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   6852                   "valueMetadata": [ # Metadata about values in the grouping.
   6853                     { # Metadata about a value in a pivot grouping.
   6854                       "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   6855                       "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   6856                           # (Note that formulaValue is not valid,
   6857                           #  because the values will be calculated.)
   6858                         "stringValue": "A String", # Represents a string value.
   6859                             # Leading single quotes are not included. For example, if the user typed
   6860                             # `'123` into the UI, this would be represented as a `stringValue` of
   6861                             # `"123"`.
   6862                         "boolValue": True or False, # Represents a boolean value.
   6863                         "errorValue": { # An error in a cell. # Represents an error.
   6864                             # This field is read-only.
   6865                           "message": "A String", # A message with more information about the error
   6866                               # (in the spreadsheet's locale).
   6867                           "type": "A String", # The type of error.
   6868                         },
   6869                         "formulaValue": "A String", # Represents a formula.
   6870                         "numberValue": 3.14, # Represents a double value.
   6871                             # Note: Dates, Times and DateTimes are represented as doubles in
   6872                             # "serial number" format.
   6873                       },
   6874                     },
   6875                   ],
   6876                   "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   6877                       # If not specified, sorting is alphabetical by this group's values.
   6878                     "buckets": [ # Determines the bucket from which values are chosen to sort.
   6879                         #
   6880                         # For example, in a pivot table with one row group & two column groups,
   6881                         # the row group can list up to two values. The first value corresponds
   6882                         # to a value within the first column group, and the second value
   6883                         # corresponds to a value in the second column group.  If no values
   6884                         # are listed, this would indicate that the row should be sorted according
   6885                         # to the "Grand Total" over the column groups. If a single value is listed,
   6886                         # this would correspond to using the "Total" of that bucket.
   6887                       { # The kinds of value that a cell in a spreadsheet can have.
   6888                         "stringValue": "A String", # Represents a string value.
   6889                             # Leading single quotes are not included. For example, if the user typed
   6890                             # `'123` into the UI, this would be represented as a `stringValue` of
   6891                             # `"123"`.
   6892                         "boolValue": True or False, # Represents a boolean value.
   6893                         "errorValue": { # An error in a cell. # Represents an error.
   6894                             # This field is read-only.
   6895                           "message": "A String", # A message with more information about the error
   6896                               # (in the spreadsheet's locale).
   6897                           "type": "A String", # The type of error.
   6898                         },
   6899                         "formulaValue": "A String", # Represents a formula.
   6900                         "numberValue": 3.14, # Represents a double value.
   6901                             # Note: Dates, Times and DateTimes are represented as doubles in
   6902                             # "serial number" format.
   6903                       },
   6904                     ],
   6905                     "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   6906                         # grouping should be sorted by.
   6907                   },
   6908                   "sortOrder": "A String", # The order the values in this group should be sorted.
   6909                   "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   6910                       #
   6911                       # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   6912                       # means this group refers to column `C`, whereas the offset `1` would refer
   6913                       # to column `D`.
   6914                 },
   6915               ],
   6916               "source": { # A range on a sheet. # The range the pivot table is reading data from.
   6917                   # All indexes are zero-based.
   6918                   # Indexes are half open, e.g the start index is inclusive
   6919                   # and the end index is exclusive -- [start_index, end_index).
   6920                   # Missing indexes indicate the range is unbounded on that side.
   6921                   #
   6922                   # For example, if `"Sheet1"` is sheet ID 0, then:
   6923                   #
   6924                   #   `Sheet1!A1:A1 == sheet_id: 0,
   6925                   #                   start_row_index: 0, end_row_index: 1,
   6926                   #                   start_column_index: 0, end_column_index: 1`
   6927                   #
   6928                   #   `Sheet1!A3:B4 == sheet_id: 0,
   6929                   #                   start_row_index: 2, end_row_index: 4,
   6930                   #                   start_column_index: 0, end_column_index: 2`
   6931                   #
   6932                   #   `Sheet1!A:B == sheet_id: 0,
   6933                   #                 start_column_index: 0, end_column_index: 2`
   6934                   #
   6935                   #   `Sheet1!A5:B == sheet_id: 0,
   6936                   #                  start_row_index: 4,
   6937                   #                  start_column_index: 0, end_column_index: 2`
   6938                   #
   6939                   #   `Sheet1 == sheet_id:0`
   6940                   #
   6941                   # The start index must always be less than or equal to the end index.
   6942                   # If the start index equals the end index, then the range is empty.
   6943                   # Empty ranges are typically not meaningful and are usually rendered in the
   6944                   # UI as `#REF!`.
   6945                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   6946                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   6947                 "sheetId": 42, # The sheet this range is on.
   6948                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   6949                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   6950               },
   6951               "values": [ # A list of values to include in the pivot table.
   6952                 { # The definition of how a value in a pivot table should be calculated.
   6953                   "formula": "A String", # A custom formula to calculate the value.  The formula must start
   6954                       # with an `=` character.
   6955                   "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
   6956                       #
   6957                       # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   6958                       # means this value refers to column `C`, whereas the offset `1` would
   6959                       # refer to column `D`.
   6960                   "summarizeFunction": "A String", # A function to summarize the value.
   6961                       # If formula is set, the only supported values are
   6962                       # SUM and
   6963                       # CUSTOM.
   6964                       # If sourceColumnOffset is set, then `CUSTOM`
   6965                       # is not supported.
   6966                   "name": "A String", # A name to use for the value. This is only used if formula was set.
   6967                       # Otherwise, the column name is used.
   6968                 },
   6969               ],
   6970               "criteria": { # An optional mapping of filters per source column offset.
   6971                   #
   6972                   # The filters will be applied before aggregating data into the pivot table.
   6973                   # The map's key is the column offset of the source range that you want to
   6974                   # filter, and the value is the criteria for that column.
   6975                   #
   6976                   # For example, if the source was `C10:E15`, a key of `0` will have the filter
   6977                   # for column `C`, whereas the key `1` is for column `D`.
   6978                 "a_key": { # Criteria for showing/hiding rows in a pivot table.
   6979                   "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
   6980                     "A String",
   6981                   ],
   6982                 },
   6983               },
   6984               "columns": [ # Each column grouping in the pivot table.
   6985                 { # A single grouping (either row or column) in a pivot table.
   6986                   "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   6987                   "valueMetadata": [ # Metadata about values in the grouping.
   6988                     { # Metadata about a value in a pivot grouping.
   6989                       "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   6990                       "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   6991                           # (Note that formulaValue is not valid,
   6992                           #  because the values will be calculated.)
   6993                         "stringValue": "A String", # Represents a string value.
   6994                             # Leading single quotes are not included. For example, if the user typed
   6995                             # `'123` into the UI, this would be represented as a `stringValue` of
   6996                             # `"123"`.
   6997                         "boolValue": True or False, # Represents a boolean value.
   6998                         "errorValue": { # An error in a cell. # Represents an error.
   6999                             # This field is read-only.
   7000                           "message": "A String", # A message with more information about the error
   7001                               # (in the spreadsheet's locale).
   7002                           "type": "A String", # The type of error.
   7003                         },
   7004                         "formulaValue": "A String", # Represents a formula.
   7005                         "numberValue": 3.14, # Represents a double value.
   7006                             # Note: Dates, Times and DateTimes are represented as doubles in
   7007                             # "serial number" format.
   7008                       },
   7009                     },
   7010                   ],
   7011                   "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   7012                       # If not specified, sorting is alphabetical by this group's values.
   7013                     "buckets": [ # Determines the bucket from which values are chosen to sort.
   7014                         #
   7015                         # For example, in a pivot table with one row group & two column groups,
   7016                         # the row group can list up to two values. The first value corresponds
   7017                         # to a value within the first column group, and the second value
   7018                         # corresponds to a value in the second column group.  If no values
   7019                         # are listed, this would indicate that the row should be sorted according
   7020                         # to the "Grand Total" over the column groups. If a single value is listed,
   7021                         # this would correspond to using the "Total" of that bucket.
   7022                       { # The kinds of value that a cell in a spreadsheet can have.
   7023                         "stringValue": "A String", # Represents a string value.
   7024                             # Leading single quotes are not included. For example, if the user typed
   7025                             # `'123` into the UI, this would be represented as a `stringValue` of
   7026                             # `"123"`.
   7027                         "boolValue": True or False, # Represents a boolean value.
   7028                         "errorValue": { # An error in a cell. # Represents an error.
   7029                             # This field is read-only.
   7030                           "message": "A String", # A message with more information about the error
   7031                               # (in the spreadsheet's locale).
   7032                           "type": "A String", # The type of error.
   7033                         },
   7034                         "formulaValue": "A String", # Represents a formula.
   7035                         "numberValue": 3.14, # Represents a double value.
   7036                             # Note: Dates, Times and DateTimes are represented as doubles in
   7037                             # "serial number" format.
   7038                       },
   7039                     ],
   7040                     "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   7041                         # grouping should be sorted by.
   7042                   },
   7043                   "sortOrder": "A String", # The order the values in this group should be sorted.
   7044                   "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   7045                       #
   7046                       # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   7047                       # means this group refers to column `C`, whereas the offset `1` would refer
   7048                       # to column `D`.
   7049                 },
   7050               ],
   7051             },
   7052             "hyperlink": "A String", # A hyperlink this cell points to, if any.
   7053                 # This field is read-only.  (To set it, use a `=HYPERLINK` formula
   7054                 # in the userEnteredValue.formulaValue
   7055                 # field.)
   7056             "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
   7057                 # the calculated value.  For cells with literals, this will be
   7058                 # the same as the user_entered_value.
   7059                 # This field is read-only.
   7060               "stringValue": "A String", # Represents a string value.
   7061                   # Leading single quotes are not included. For example, if the user typed
   7062                   # `'123` into the UI, this would be represented as a `stringValue` of
   7063                   # `"123"`.
   7064               "boolValue": True or False, # Represents a boolean value.
   7065               "errorValue": { # An error in a cell. # Represents an error.
   7066                   # This field is read-only.
   7067                 "message": "A String", # A message with more information about the error
   7068                     # (in the spreadsheet's locale).
   7069                 "type": "A String", # The type of error.
   7070               },
   7071               "formulaValue": "A String", # Represents a formula.
   7072               "numberValue": 3.14, # Represents a double value.
   7073                   # Note: Dates, Times and DateTimes are represented as doubles in
   7074                   # "serial number" format.
   7075             },
   7076             "formattedValue": "A String", # The formatted value of the cell.
   7077                 # This is the value as it's shown to the user.
   7078                 # This field is read-only.
   7079             "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
   7080                 # Note: Dates, Times and DateTimes are represented as doubles in
   7081                 # serial number format.
   7082               "stringValue": "A String", # Represents a string value.
   7083                   # Leading single quotes are not included. For example, if the user typed
   7084                   # `'123` into the UI, this would be represented as a `stringValue` of
   7085                   # `"123"`.
   7086               "boolValue": True or False, # Represents a boolean value.
   7087               "errorValue": { # An error in a cell. # Represents an error.
   7088                   # This field is read-only.
   7089                 "message": "A String", # A message with more information about the error
   7090                     # (in the spreadsheet's locale).
   7091                 "type": "A String", # The type of error.
   7092               },
   7093               "formulaValue": "A String", # Represents a formula.
   7094               "numberValue": 3.14, # Represents a double value.
   7095                   # Note: Dates, Times and DateTimes are represented as doubles in
   7096                   # "serial number" format.
   7097             },
   7098             "note": "A String", # Any note on the cell.
   7099             "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
   7100                 # This includes the results of applying any conditional formatting and,
   7101                 # if the cell contains a formula, the computed number format.
   7102                 # If the effective format is the default format, effective format will
   7103                 # not be written.
   7104                 # This field is read-only.
   7105               "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   7106                 "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   7107                     # the user's locale will be used if necessary for the given type.
   7108                     # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   7109                     # information about the supported patterns.
   7110                 "type": "A String", # The type of the number format.
   7111                     # When writing, this field must be set.
   7112               },
   7113               "textDirection": "A String", # The direction of the text in the cell.
   7114               "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   7115                   # When updating padding, every field must be specified.
   7116                 "top": 42, # The top padding of the cell.
   7117                 "right": 42, # The right padding of the cell.
   7118                 "bottom": 42, # The bottom padding of the cell.
   7119                 "left": 42, # The left padding of the cell.
   7120               },
   7121               "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   7122               "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   7123                   # for simplicity of conversion to/from color representations in various
   7124                   # languages over compactness; for example, the fields of this representation
   7125                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   7126                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   7127                   # method in iOS; and, with just a little work, it can be easily formatted into
   7128                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   7129                   #
   7130                   # Example (Java):
   7131                   #
   7132                   #      import com.google.type.Color;
   7133                   #
   7134                   #      // ...
   7135                   #      public static java.awt.Color fromProto(Color protocolor) {
   7136                   #        float alpha = protocolor.hasAlpha()
   7137                   #            ? protocolor.getAlpha().getValue()
   7138                   #            : 1.0;
   7139                   #
   7140                   #        return new java.awt.Color(
   7141                   #            protocolor.getRed(),
   7142                   #            protocolor.getGreen(),
   7143                   #            protocolor.getBlue(),
   7144                   #            alpha);
   7145                   #      }
   7146                   #
   7147                   #      public static Color toProto(java.awt.Color color) {
   7148                   #        float red = (float) color.getRed();
   7149                   #        float green = (float) color.getGreen();
   7150                   #        float blue = (float) color.getBlue();
   7151                   #        float denominator = 255.0;
   7152                   #        Color.Builder resultBuilder =
   7153                   #            Color
   7154                   #                .newBuilder()
   7155                   #                .setRed(red / denominator)
   7156                   #                .setGreen(green / denominator)
   7157                   #                .setBlue(blue / denominator);
   7158                   #        int alpha = color.getAlpha();
   7159                   #        if (alpha != 255) {
   7160                   #          result.setAlpha(
   7161                   #              FloatValue
   7162                   #                  .newBuilder()
   7163                   #                  .setValue(((float) alpha) / denominator)
   7164                   #                  .build());
   7165                   #        }
   7166                   #        return resultBuilder.build();
   7167                   #      }
   7168                   #      // ...
   7169                   #
   7170                   # Example (iOS / Obj-C):
   7171                   #
   7172                   #      // ...
   7173                   #      static UIColor* fromProto(Color* protocolor) {
   7174                   #         float red = [protocolor red];
   7175                   #         float green = [protocolor green];
   7176                   #         float blue = [protocolor blue];
   7177                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   7178                   #         float alpha = 1.0;
   7179                   #         if (alpha_wrapper != nil) {
   7180                   #           alpha = [alpha_wrapper value];
   7181                   #         }
   7182                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   7183                   #      }
   7184                   #
   7185                   #      static Color* toProto(UIColor* color) {
   7186                   #          CGFloat red, green, blue, alpha;
   7187                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   7188                   #            return nil;
   7189                   #          }
   7190                   #          Color* result = [Color alloc] init];
   7191                   #          [result setRed:red];
   7192                   #          [result setGreen:green];
   7193                   #          [result setBlue:blue];
   7194                   #          if (alpha <= 0.9999) {
   7195                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   7196                   #          }
   7197                   #          [result autorelease];
   7198                   #          return result;
   7199                   #     }
   7200                   #     // ...
   7201                   #
   7202                   #  Example (JavaScript):
   7203                   #
   7204                   #     // ...
   7205                   #
   7206                   #     var protoToCssColor = function(rgb_color) {
   7207                   #        var redFrac = rgb_color.red || 0.0;
   7208                   #        var greenFrac = rgb_color.green || 0.0;
   7209                   #        var blueFrac = rgb_color.blue || 0.0;
   7210                   #        var red = Math.floor(redFrac * 255);
   7211                   #        var green = Math.floor(greenFrac * 255);
   7212                   #        var blue = Math.floor(blueFrac * 255);
   7213                   #
   7214                   #        if (!('alpha' in rgb_color)) {
   7215                   #           return rgbToCssColor_(red, green, blue);
   7216                   #        }
   7217                   #
   7218                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   7219                   #        var rgbParams = [red, green, blue].join(',');
   7220                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   7221                   #     };
   7222                   #
   7223                   #     var rgbToCssColor_ = function(red, green, blue) {
   7224                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   7225                   #       var hexString = rgbNumber.toString(16);
   7226                   #       var missingZeros = 6 - hexString.length;
   7227                   #       var resultBuilder = ['#'];
   7228                   #       for (var i = 0; i < missingZeros; i++) {
   7229                   #          resultBuilder.push('0');
   7230                   #       }
   7231                   #       resultBuilder.push(hexString);
   7232                   #       return resultBuilder.join('');
   7233                   #     };
   7234                   #
   7235                   #     // ...
   7236                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   7237                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   7238                     # the final pixel color is defined by the equation:
   7239                     #
   7240                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   7241                     #
   7242                     # This means that a value of 1.0 corresponds to a solid color, whereas
   7243                     # a value of 0.0 corresponds to a completely transparent color. This
   7244                     # uses a wrapper message rather than a simple float scalar so that it is
   7245                     # possible to distinguish between a default value and the value being unset.
   7246                     # If omitted, this color object is to be rendered as a solid color
   7247                     # (as if the alpha value had been explicitly given with a value of 1.0).
   7248                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   7249                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   7250               },
   7251               "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   7252               "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   7253                   # Absent values indicate that the field isn't specified.
   7254                 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   7255                     # for simplicity of conversion to/from color representations in various
   7256                     # languages over compactness; for example, the fields of this representation
   7257                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   7258                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   7259                     # method in iOS; and, with just a little work, it can be easily formatted into
   7260                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   7261                     #
   7262                     # Example (Java):
   7263                     #
   7264                     #      import com.google.type.Color;
   7265                     #
   7266                     #      // ...
   7267                     #      public static java.awt.Color fromProto(Color protocolor) {
   7268                     #        float alpha = protocolor.hasAlpha()
   7269                     #            ? protocolor.getAlpha().getValue()
   7270                     #            : 1.0;
   7271                     #
   7272                     #        return new java.awt.Color(
   7273                     #            protocolor.getRed(),
   7274                     #            protocolor.getGreen(),
   7275                     #            protocolor.getBlue(),
   7276                     #            alpha);
   7277                     #      }
   7278                     #
   7279                     #      public static Color toProto(java.awt.Color color) {
   7280                     #        float red = (float) color.getRed();
   7281                     #        float green = (float) color.getGreen();
   7282                     #        float blue = (float) color.getBlue();
   7283                     #        float denominator = 255.0;
   7284                     #        Color.Builder resultBuilder =
   7285                     #            Color
   7286                     #                .newBuilder()
   7287                     #                .setRed(red / denominator)
   7288                     #                .setGreen(green / denominator)
   7289                     #                .setBlue(blue / denominator);
   7290                     #        int alpha = color.getAlpha();
   7291                     #        if (alpha != 255) {
   7292                     #          result.setAlpha(
   7293                     #              FloatValue
   7294                     #                  .newBuilder()
   7295                     #                  .setValue(((float) alpha) / denominator)
   7296                     #                  .build());
   7297                     #        }
   7298                     #        return resultBuilder.build();
   7299                     #      }
   7300                     #      // ...
   7301                     #
   7302                     # Example (iOS / Obj-C):
   7303                     #
   7304                     #      // ...
   7305                     #      static UIColor* fromProto(Color* protocolor) {
   7306                     #         float red = [protocolor red];
   7307                     #         float green = [protocolor green];
   7308                     #         float blue = [protocolor blue];
   7309                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   7310                     #         float alpha = 1.0;
   7311                     #         if (alpha_wrapper != nil) {
   7312                     #           alpha = [alpha_wrapper value];
   7313                     #         }
   7314                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   7315                     #      }
   7316                     #
   7317                     #      static Color* toProto(UIColor* color) {
   7318                     #          CGFloat red, green, blue, alpha;
   7319                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   7320                     #            return nil;
   7321                     #          }
   7322                     #          Color* result = [Color alloc] init];
   7323                     #          [result setRed:red];
   7324                     #          [result setGreen:green];
   7325                     #          [result setBlue:blue];
   7326                     #          if (alpha <= 0.9999) {
   7327                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   7328                     #          }
   7329                     #          [result autorelease];
   7330                     #          return result;
   7331                     #     }
   7332                     #     // ...
   7333                     #
   7334                     #  Example (JavaScript):
   7335                     #
   7336                     #     // ...
   7337                     #
   7338                     #     var protoToCssColor = function(rgb_color) {
   7339                     #        var redFrac = rgb_color.red || 0.0;
   7340                     #        var greenFrac = rgb_color.green || 0.0;
   7341                     #        var blueFrac = rgb_color.blue || 0.0;
   7342                     #        var red = Math.floor(redFrac * 255);
   7343                     #        var green = Math.floor(greenFrac * 255);
   7344                     #        var blue = Math.floor(blueFrac * 255);
   7345                     #
   7346                     #        if (!('alpha' in rgb_color)) {
   7347                     #           return rgbToCssColor_(red, green, blue);
   7348                     #        }
   7349                     #
   7350                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   7351                     #        var rgbParams = [red, green, blue].join(',');
   7352                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   7353                     #     };
   7354                     #
   7355                     #     var rgbToCssColor_ = function(red, green, blue) {
   7356                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   7357                     #       var hexString = rgbNumber.toString(16);
   7358                     #       var missingZeros = 6 - hexString.length;
   7359                     #       var resultBuilder = ['#'];
   7360                     #       for (var i = 0; i < missingZeros; i++) {
   7361                     #          resultBuilder.push('0');
   7362                     #       }
   7363                     #       resultBuilder.push(hexString);
   7364                     #       return resultBuilder.join('');
   7365                     #     };
   7366                     #
   7367                     #     // ...
   7368                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   7369                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   7370                       # the final pixel color is defined by the equation:
   7371                       #
   7372                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   7373                       #
   7374                       # This means that a value of 1.0 corresponds to a solid color, whereas
   7375                       # a value of 0.0 corresponds to a completely transparent color. This
   7376                       # uses a wrapper message rather than a simple float scalar so that it is
   7377                       # possible to distinguish between a default value and the value being unset.
   7378                       # If omitted, this color object is to be rendered as a solid color
   7379                       # (as if the alpha value had been explicitly given with a value of 1.0).
   7380                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   7381                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   7382                 },
   7383                 "bold": True or False, # True if the text is bold.
   7384                 "strikethrough": True or False, # True if the text has a strikethrough.
   7385                 "fontFamily": "A String", # The font family.
   7386                 "fontSize": 42, # The size of the font.
   7387                 "italic": True or False, # True if the text is italicized.
   7388                 "underline": True or False, # True if the text is underlined.
   7389               },
   7390               "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   7391                 "angle": 42, # The angle between the standard orientation and the desired orientation.
   7392                     # Measured in degrees. Valid values are between -90 and 90. Positive
   7393                     # angles are angled upwards, negative are angled downwards.
   7394                     #
   7395                     # Note: For LTR text direction positive angles are in the counterclockwise
   7396                     # direction, whereas for RTL they are in the clockwise direction
   7397                 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   7398                     # characters is unchanged.
   7399                     # For example:
   7400                     #
   7401                     #     | V |
   7402                     #     | e |
   7403                     #     | r |
   7404                     #     | t |
   7405                     #     | i |
   7406                     #     | c |
   7407                     #     | a |
   7408                     #     | l |
   7409               },
   7410               "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   7411               "borders": { # The borders of the cell. # The borders of the cell.
   7412                 "top": { # A border along a cell. # The top border of the cell.
   7413                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   7414                       # for simplicity of conversion to/from color representations in various
   7415                       # languages over compactness; for example, the fields of this representation
   7416                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   7417                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   7418                       # method in iOS; and, with just a little work, it can be easily formatted into
   7419                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   7420                       #
   7421                       # Example (Java):
   7422                       #
   7423                       #      import com.google.type.Color;
   7424                       #
   7425                       #      // ...
   7426                       #      public static java.awt.Color fromProto(Color protocolor) {
   7427                       #        float alpha = protocolor.hasAlpha()
   7428                       #            ? protocolor.getAlpha().getValue()
   7429                       #            : 1.0;
   7430                       #
   7431                       #        return new java.awt.Color(
   7432                       #            protocolor.getRed(),
   7433                       #            protocolor.getGreen(),
   7434                       #            protocolor.getBlue(),
   7435                       #            alpha);
   7436                       #      }
   7437                       #
   7438                       #      public static Color toProto(java.awt.Color color) {
   7439                       #        float red = (float) color.getRed();
   7440                       #        float green = (float) color.getGreen();
   7441                       #        float blue = (float) color.getBlue();
   7442                       #        float denominator = 255.0;
   7443                       #        Color.Builder resultBuilder =
   7444                       #            Color
   7445                       #                .newBuilder()
   7446                       #                .setRed(red / denominator)
   7447                       #                .setGreen(green / denominator)
   7448                       #                .setBlue(blue / denominator);
   7449                       #        int alpha = color.getAlpha();
   7450                       #        if (alpha != 255) {
   7451                       #          result.setAlpha(
   7452                       #              FloatValue
   7453                       #                  .newBuilder()
   7454                       #                  .setValue(((float) alpha) / denominator)
   7455                       #                  .build());
   7456                       #        }
   7457                       #        return resultBuilder.build();
   7458                       #      }
   7459                       #      // ...
   7460                       #
   7461                       # Example (iOS / Obj-C):
   7462                       #
   7463                       #      // ...
   7464                       #      static UIColor* fromProto(Color* protocolor) {
   7465                       #         float red = [protocolor red];
   7466                       #         float green = [protocolor green];
   7467                       #         float blue = [protocolor blue];
   7468                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   7469                       #         float alpha = 1.0;
   7470                       #         if (alpha_wrapper != nil) {
   7471                       #           alpha = [alpha_wrapper value];
   7472                       #         }
   7473                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   7474                       #      }
   7475                       #
   7476                       #      static Color* toProto(UIColor* color) {
   7477                       #          CGFloat red, green, blue, alpha;
   7478                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   7479                       #            return nil;
   7480                       #          }
   7481                       #          Color* result = [Color alloc] init];
   7482                       #          [result setRed:red];
   7483                       #          [result setGreen:green];
   7484                       #          [result setBlue:blue];
   7485                       #          if (alpha <= 0.9999) {
   7486                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   7487                       #          }
   7488                       #          [result autorelease];
   7489                       #          return result;
   7490                       #     }
   7491                       #     // ...
   7492                       #
   7493                       #  Example (JavaScript):
   7494                       #
   7495                       #     // ...
   7496                       #
   7497                       #     var protoToCssColor = function(rgb_color) {
   7498                       #        var redFrac = rgb_color.red || 0.0;
   7499                       #        var greenFrac = rgb_color.green || 0.0;
   7500                       #        var blueFrac = rgb_color.blue || 0.0;
   7501                       #        var red = Math.floor(redFrac * 255);
   7502                       #        var green = Math.floor(greenFrac * 255);
   7503                       #        var blue = Math.floor(blueFrac * 255);
   7504                       #
   7505                       #        if (!('alpha' in rgb_color)) {
   7506                       #           return rgbToCssColor_(red, green, blue);
   7507                       #        }
   7508                       #
   7509                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   7510                       #        var rgbParams = [red, green, blue].join(',');
   7511                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   7512                       #     };
   7513                       #
   7514                       #     var rgbToCssColor_ = function(red, green, blue) {
   7515                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   7516                       #       var hexString = rgbNumber.toString(16);
   7517                       #       var missingZeros = 6 - hexString.length;
   7518                       #       var resultBuilder = ['#'];
   7519                       #       for (var i = 0; i < missingZeros; i++) {
   7520                       #          resultBuilder.push('0');
   7521                       #       }
   7522                       #       resultBuilder.push(hexString);
   7523                       #       return resultBuilder.join('');
   7524                       #     };
   7525                       #
   7526                       #     // ...
   7527                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   7528                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   7529                         # the final pixel color is defined by the equation:
   7530                         #
   7531                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   7532                         #
   7533                         # This means that a value of 1.0 corresponds to a solid color, whereas
   7534                         # a value of 0.0 corresponds to a completely transparent color. This
   7535                         # uses a wrapper message rather than a simple float scalar so that it is
   7536                         # possible to distinguish between a default value and the value being unset.
   7537                         # If omitted, this color object is to be rendered as a solid color
   7538                         # (as if the alpha value had been explicitly given with a value of 1.0).
   7539                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   7540                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   7541                   },
   7542                   "width": 42, # The width of the border, in pixels.
   7543                       # Deprecated; the width is determined by the "style" field.
   7544                   "style": "A String", # The style of the border.
   7545                 },
   7546                 "right": { # A border along a cell. # The right border of the cell.
   7547                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   7548                       # for simplicity of conversion to/from color representations in various
   7549                       # languages over compactness; for example, the fields of this representation
   7550                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   7551                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   7552                       # method in iOS; and, with just a little work, it can be easily formatted into
   7553                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   7554                       #
   7555                       # Example (Java):
   7556                       #
   7557                       #      import com.google.type.Color;
   7558                       #
   7559                       #      // ...
   7560                       #      public static java.awt.Color fromProto(Color protocolor) {
   7561                       #        float alpha = protocolor.hasAlpha()
   7562                       #            ? protocolor.getAlpha().getValue()
   7563                       #            : 1.0;
   7564                       #
   7565                       #        return new java.awt.Color(
   7566                       #            protocolor.getRed(),
   7567                       #            protocolor.getGreen(),
   7568                       #            protocolor.getBlue(),
   7569                       #            alpha);
   7570                       #      }
   7571                       #
   7572                       #      public static Color toProto(java.awt.Color color) {
   7573                       #        float red = (float) color.getRed();
   7574                       #        float green = (float) color.getGreen();
   7575                       #        float blue = (float) color.getBlue();
   7576                       #        float denominator = 255.0;
   7577                       #        Color.Builder resultBuilder =
   7578                       #            Color
   7579                       #                .newBuilder()
   7580                       #                .setRed(red / denominator)
   7581                       #                .setGreen(green / denominator)
   7582                       #                .setBlue(blue / denominator);
   7583                       #        int alpha = color.getAlpha();
   7584                       #        if (alpha != 255) {
   7585                       #          result.setAlpha(
   7586                       #              FloatValue
   7587                       #                  .newBuilder()
   7588                       #                  .setValue(((float) alpha) / denominator)
   7589                       #                  .build());
   7590                       #        }
   7591                       #        return resultBuilder.build();
   7592                       #      }
   7593                       #      // ...
   7594                       #
   7595                       # Example (iOS / Obj-C):
   7596                       #
   7597                       #      // ...
   7598                       #      static UIColor* fromProto(Color* protocolor) {
   7599                       #         float red = [protocolor red];
   7600                       #         float green = [protocolor green];
   7601                       #         float blue = [protocolor blue];
   7602                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   7603                       #         float alpha = 1.0;
   7604                       #         if (alpha_wrapper != nil) {
   7605                       #           alpha = [alpha_wrapper value];
   7606                       #         }
   7607                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   7608                       #      }
   7609                       #
   7610                       #      static Color* toProto(UIColor* color) {
   7611                       #          CGFloat red, green, blue, alpha;
   7612                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   7613                       #            return nil;
   7614                       #          }
   7615                       #          Color* result = [Color alloc] init];
   7616                       #          [result setRed:red];
   7617                       #          [result setGreen:green];
   7618                       #          [result setBlue:blue];
   7619                       #          if (alpha <= 0.9999) {
   7620                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   7621                       #          }
   7622                       #          [result autorelease];
   7623                       #          return result;
   7624                       #     }
   7625                       #     // ...
   7626                       #
   7627                       #  Example (JavaScript):
   7628                       #
   7629                       #     // ...
   7630                       #
   7631                       #     var protoToCssColor = function(rgb_color) {
   7632                       #        var redFrac = rgb_color.red || 0.0;
   7633                       #        var greenFrac = rgb_color.green || 0.0;
   7634                       #        var blueFrac = rgb_color.blue || 0.0;
   7635                       #        var red = Math.floor(redFrac * 255);
   7636                       #        var green = Math.floor(greenFrac * 255);
   7637                       #        var blue = Math.floor(blueFrac * 255);
   7638                       #
   7639                       #        if (!('alpha' in rgb_color)) {
   7640                       #           return rgbToCssColor_(red, green, blue);
   7641                       #        }
   7642                       #
   7643                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   7644                       #        var rgbParams = [red, green, blue].join(',');
   7645                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   7646                       #     };
   7647                       #
   7648                       #     var rgbToCssColor_ = function(red, green, blue) {
   7649                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   7650                       #       var hexString = rgbNumber.toString(16);
   7651                       #       var missingZeros = 6 - hexString.length;
   7652                       #       var resultBuilder = ['#'];
   7653                       #       for (var i = 0; i < missingZeros; i++) {
   7654                       #          resultBuilder.push('0');
   7655                       #       }
   7656                       #       resultBuilder.push(hexString);
   7657                       #       return resultBuilder.join('');
   7658                       #     };
   7659                       #
   7660                       #     // ...
   7661                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   7662                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   7663                         # the final pixel color is defined by the equation:
   7664                         #
   7665                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   7666                         #
   7667                         # This means that a value of 1.0 corresponds to a solid color, whereas
   7668                         # a value of 0.0 corresponds to a completely transparent color. This
   7669                         # uses a wrapper message rather than a simple float scalar so that it is
   7670                         # possible to distinguish between a default value and the value being unset.
   7671                         # If omitted, this color object is to be rendered as a solid color
   7672                         # (as if the alpha value had been explicitly given with a value of 1.0).
   7673                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   7674                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   7675                   },
   7676                   "width": 42, # The width of the border, in pixels.
   7677                       # Deprecated; the width is determined by the "style" field.
   7678                   "style": "A String", # The style of the border.
   7679                 },
   7680                 "bottom": { # A border along a cell. # The bottom border of the cell.
   7681                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   7682                       # for simplicity of conversion to/from color representations in various
   7683                       # languages over compactness; for example, the fields of this representation
   7684                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   7685                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   7686                       # method in iOS; and, with just a little work, it can be easily formatted into
   7687                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   7688                       #
   7689                       # Example (Java):
   7690                       #
   7691                       #      import com.google.type.Color;
   7692                       #
   7693                       #      // ...
   7694                       #      public static java.awt.Color fromProto(Color protocolor) {
   7695                       #        float alpha = protocolor.hasAlpha()
   7696                       #            ? protocolor.getAlpha().getValue()
   7697                       #            : 1.0;
   7698                       #
   7699                       #        return new java.awt.Color(
   7700                       #            protocolor.getRed(),
   7701                       #            protocolor.getGreen(),
   7702                       #            protocolor.getBlue(),
   7703                       #            alpha);
   7704                       #      }
   7705                       #
   7706                       #      public static Color toProto(java.awt.Color color) {
   7707                       #        float red = (float) color.getRed();
   7708                       #        float green = (float) color.getGreen();
   7709                       #        float blue = (float) color.getBlue();
   7710                       #        float denominator = 255.0;
   7711                       #        Color.Builder resultBuilder =
   7712                       #            Color
   7713                       #                .newBuilder()
   7714                       #                .setRed(red / denominator)
   7715                       #                .setGreen(green / denominator)
   7716                       #                .setBlue(blue / denominator);
   7717                       #        int alpha = color.getAlpha();
   7718                       #        if (alpha != 255) {
   7719                       #          result.setAlpha(
   7720                       #              FloatValue
   7721                       #                  .newBuilder()
   7722                       #                  .setValue(((float) alpha) / denominator)
   7723                       #                  .build());
   7724                       #        }
   7725                       #        return resultBuilder.build();
   7726                       #      }
   7727                       #      // ...
   7728                       #
   7729                       # Example (iOS / Obj-C):
   7730                       #
   7731                       #      // ...
   7732                       #      static UIColor* fromProto(Color* protocolor) {
   7733                       #         float red = [protocolor red];
   7734                       #         float green = [protocolor green];
   7735                       #         float blue = [protocolor blue];
   7736                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   7737                       #         float alpha = 1.0;
   7738                       #         if (alpha_wrapper != nil) {
   7739                       #           alpha = [alpha_wrapper value];
   7740                       #         }
   7741                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   7742                       #      }
   7743                       #
   7744                       #      static Color* toProto(UIColor* color) {
   7745                       #          CGFloat red, green, blue, alpha;
   7746                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   7747                       #            return nil;
   7748                       #          }
   7749                       #          Color* result = [Color alloc] init];
   7750                       #          [result setRed:red];
   7751                       #          [result setGreen:green];
   7752                       #          [result setBlue:blue];
   7753                       #          if (alpha <= 0.9999) {
   7754                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   7755                       #          }
   7756                       #          [result autorelease];
   7757                       #          return result;
   7758                       #     }
   7759                       #     // ...
   7760                       #
   7761                       #  Example (JavaScript):
   7762                       #
   7763                       #     // ...
   7764                       #
   7765                       #     var protoToCssColor = function(rgb_color) {
   7766                       #        var redFrac = rgb_color.red || 0.0;
   7767                       #        var greenFrac = rgb_color.green || 0.0;
   7768                       #        var blueFrac = rgb_color.blue || 0.0;
   7769                       #        var red = Math.floor(redFrac * 255);
   7770                       #        var green = Math.floor(greenFrac * 255);
   7771                       #        var blue = Math.floor(blueFrac * 255);
   7772                       #
   7773                       #        if (!('alpha' in rgb_color)) {
   7774                       #           return rgbToCssColor_(red, green, blue);
   7775                       #        }
   7776                       #
   7777                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   7778                       #        var rgbParams = [red, green, blue].join(',');
   7779                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   7780                       #     };
   7781                       #
   7782                       #     var rgbToCssColor_ = function(red, green, blue) {
   7783                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   7784                       #       var hexString = rgbNumber.toString(16);
   7785                       #       var missingZeros = 6 - hexString.length;
   7786                       #       var resultBuilder = ['#'];
   7787                       #       for (var i = 0; i < missingZeros; i++) {
   7788                       #          resultBuilder.push('0');
   7789                       #       }
   7790                       #       resultBuilder.push(hexString);
   7791                       #       return resultBuilder.join('');
   7792                       #     };
   7793                       #
   7794                       #     // ...
   7795                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   7796                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   7797                         # the final pixel color is defined by the equation:
   7798                         #
   7799                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   7800                         #
   7801                         # This means that a value of 1.0 corresponds to a solid color, whereas
   7802                         # a value of 0.0 corresponds to a completely transparent color. This
   7803                         # uses a wrapper message rather than a simple float scalar so that it is
   7804                         # possible to distinguish between a default value and the value being unset.
   7805                         # If omitted, this color object is to be rendered as a solid color
   7806                         # (as if the alpha value had been explicitly given with a value of 1.0).
   7807                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   7808                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   7809                   },
   7810                   "width": 42, # The width of the border, in pixels.
   7811                       # Deprecated; the width is determined by the "style" field.
   7812                   "style": "A String", # The style of the border.
   7813                 },
   7814                 "left": { # A border along a cell. # The left border of the cell.
   7815                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   7816                       # for simplicity of conversion to/from color representations in various
   7817                       # languages over compactness; for example, the fields of this representation
   7818                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   7819                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   7820                       # method in iOS; and, with just a little work, it can be easily formatted into
   7821                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   7822                       #
   7823                       # Example (Java):
   7824                       #
   7825                       #      import com.google.type.Color;
   7826                       #
   7827                       #      // ...
   7828                       #      public static java.awt.Color fromProto(Color protocolor) {
   7829                       #        float alpha = protocolor.hasAlpha()
   7830                       #            ? protocolor.getAlpha().getValue()
   7831                       #            : 1.0;
   7832                       #
   7833                       #        return new java.awt.Color(
   7834                       #            protocolor.getRed(),
   7835                       #            protocolor.getGreen(),
   7836                       #            protocolor.getBlue(),
   7837                       #            alpha);
   7838                       #      }
   7839                       #
   7840                       #      public static Color toProto(java.awt.Color color) {
   7841                       #        float red = (float) color.getRed();
   7842                       #        float green = (float) color.getGreen();
   7843                       #        float blue = (float) color.getBlue();
   7844                       #        float denominator = 255.0;
   7845                       #        Color.Builder resultBuilder =
   7846                       #            Color
   7847                       #                .newBuilder()
   7848                       #                .setRed(red / denominator)
   7849                       #                .setGreen(green / denominator)
   7850                       #                .setBlue(blue / denominator);
   7851                       #        int alpha = color.getAlpha();
   7852                       #        if (alpha != 255) {
   7853                       #          result.setAlpha(
   7854                       #              FloatValue
   7855                       #                  .newBuilder()
   7856                       #                  .setValue(((float) alpha) / denominator)
   7857                       #                  .build());
   7858                       #        }
   7859                       #        return resultBuilder.build();
   7860                       #      }
   7861                       #      // ...
   7862                       #
   7863                       # Example (iOS / Obj-C):
   7864                       #
   7865                       #      // ...
   7866                       #      static UIColor* fromProto(Color* protocolor) {
   7867                       #         float red = [protocolor red];
   7868                       #         float green = [protocolor green];
   7869                       #         float blue = [protocolor blue];
   7870                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   7871                       #         float alpha = 1.0;
   7872                       #         if (alpha_wrapper != nil) {
   7873                       #           alpha = [alpha_wrapper value];
   7874                       #         }
   7875                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   7876                       #      }
   7877                       #
   7878                       #      static Color* toProto(UIColor* color) {
   7879                       #          CGFloat red, green, blue, alpha;
   7880                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   7881                       #            return nil;
   7882                       #          }
   7883                       #          Color* result = [Color alloc] init];
   7884                       #          [result setRed:red];
   7885                       #          [result setGreen:green];
   7886                       #          [result setBlue:blue];
   7887                       #          if (alpha <= 0.9999) {
   7888                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   7889                       #          }
   7890                       #          [result autorelease];
   7891                       #          return result;
   7892                       #     }
   7893                       #     // ...
   7894                       #
   7895                       #  Example (JavaScript):
   7896                       #
   7897                       #     // ...
   7898                       #
   7899                       #     var protoToCssColor = function(rgb_color) {
   7900                       #        var redFrac = rgb_color.red || 0.0;
   7901                       #        var greenFrac = rgb_color.green || 0.0;
   7902                       #        var blueFrac = rgb_color.blue || 0.0;
   7903                       #        var red = Math.floor(redFrac * 255);
   7904                       #        var green = Math.floor(greenFrac * 255);
   7905                       #        var blue = Math.floor(blueFrac * 255);
   7906                       #
   7907                       #        if (!('alpha' in rgb_color)) {
   7908                       #           return rgbToCssColor_(red, green, blue);
   7909                       #        }
   7910                       #
   7911                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   7912                       #        var rgbParams = [red, green, blue].join(',');
   7913                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   7914                       #     };
   7915                       #
   7916                       #     var rgbToCssColor_ = function(red, green, blue) {
   7917                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   7918                       #       var hexString = rgbNumber.toString(16);
   7919                       #       var missingZeros = 6 - hexString.length;
   7920                       #       var resultBuilder = ['#'];
   7921                       #       for (var i = 0; i < missingZeros; i++) {
   7922                       #          resultBuilder.push('0');
   7923                       #       }
   7924                       #       resultBuilder.push(hexString);
   7925                       #       return resultBuilder.join('');
   7926                       #     };
   7927                       #
   7928                       #     // ...
   7929                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   7930                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   7931                         # the final pixel color is defined by the equation:
   7932                         #
   7933                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   7934                         #
   7935                         # This means that a value of 1.0 corresponds to a solid color, whereas
   7936                         # a value of 0.0 corresponds to a completely transparent color. This
   7937                         # uses a wrapper message rather than a simple float scalar so that it is
   7938                         # possible to distinguish between a default value and the value being unset.
   7939                         # If omitted, this color object is to be rendered as a solid color
   7940                         # (as if the alpha value had been explicitly given with a value of 1.0).
   7941                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   7942                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   7943                   },
   7944                   "width": 42, # The width of the border, in pixels.
   7945                       # Deprecated; the width is determined by the "style" field.
   7946                   "style": "A String", # The style of the border.
   7947                 },
   7948               },
   7949               "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   7950             },
   7951             "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
   7952                 #
   7953                 # When writing, the new format will be merged with the existing format.
   7954               "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   7955                 "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   7956                     # the user's locale will be used if necessary for the given type.
   7957                     # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   7958                     # information about the supported patterns.
   7959                 "type": "A String", # The type of the number format.
   7960                     # When writing, this field must be set.
   7961               },
   7962               "textDirection": "A String", # The direction of the text in the cell.
   7963               "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   7964                   # When updating padding, every field must be specified.
   7965                 "top": 42, # The top padding of the cell.
   7966                 "right": 42, # The right padding of the cell.
   7967                 "bottom": 42, # The bottom padding of the cell.
   7968                 "left": 42, # The left padding of the cell.
   7969               },
   7970               "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   7971               "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   7972                   # for simplicity of conversion to/from color representations in various
   7973                   # languages over compactness; for example, the fields of this representation
   7974                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   7975                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   7976                   # method in iOS; and, with just a little work, it can be easily formatted into
   7977                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   7978                   #
   7979                   # Example (Java):
   7980                   #
   7981                   #      import com.google.type.Color;
   7982                   #
   7983                   #      // ...
   7984                   #      public static java.awt.Color fromProto(Color protocolor) {
   7985                   #        float alpha = protocolor.hasAlpha()
   7986                   #            ? protocolor.getAlpha().getValue()
   7987                   #            : 1.0;
   7988                   #
   7989                   #        return new java.awt.Color(
   7990                   #            protocolor.getRed(),
   7991                   #            protocolor.getGreen(),
   7992                   #            protocolor.getBlue(),
   7993                   #            alpha);
   7994                   #      }
   7995                   #
   7996                   #      public static Color toProto(java.awt.Color color) {
   7997                   #        float red = (float) color.getRed();
   7998                   #        float green = (float) color.getGreen();
   7999                   #        float blue = (float) color.getBlue();
   8000                   #        float denominator = 255.0;
   8001                   #        Color.Builder resultBuilder =
   8002                   #            Color
   8003                   #                .newBuilder()
   8004                   #                .setRed(red / denominator)
   8005                   #                .setGreen(green / denominator)
   8006                   #                .setBlue(blue / denominator);
   8007                   #        int alpha = color.getAlpha();
   8008                   #        if (alpha != 255) {
   8009                   #          result.setAlpha(
   8010                   #              FloatValue
   8011                   #                  .newBuilder()
   8012                   #                  .setValue(((float) alpha) / denominator)
   8013                   #                  .build());
   8014                   #        }
   8015                   #        return resultBuilder.build();
   8016                   #      }
   8017                   #      // ...
   8018                   #
   8019                   # Example (iOS / Obj-C):
   8020                   #
   8021                   #      // ...
   8022                   #      static UIColor* fromProto(Color* protocolor) {
   8023                   #         float red = [protocolor red];
   8024                   #         float green = [protocolor green];
   8025                   #         float blue = [protocolor blue];
   8026                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   8027                   #         float alpha = 1.0;
   8028                   #         if (alpha_wrapper != nil) {
   8029                   #           alpha = [alpha_wrapper value];
   8030                   #         }
   8031                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   8032                   #      }
   8033                   #
   8034                   #      static Color* toProto(UIColor* color) {
   8035                   #          CGFloat red, green, blue, alpha;
   8036                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   8037                   #            return nil;
   8038                   #          }
   8039                   #          Color* result = [Color alloc] init];
   8040                   #          [result setRed:red];
   8041                   #          [result setGreen:green];
   8042                   #          [result setBlue:blue];
   8043                   #          if (alpha <= 0.9999) {
   8044                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   8045                   #          }
   8046                   #          [result autorelease];
   8047                   #          return result;
   8048                   #     }
   8049                   #     // ...
   8050                   #
   8051                   #  Example (JavaScript):
   8052                   #
   8053                   #     // ...
   8054                   #
   8055                   #     var protoToCssColor = function(rgb_color) {
   8056                   #        var redFrac = rgb_color.red || 0.0;
   8057                   #        var greenFrac = rgb_color.green || 0.0;
   8058                   #        var blueFrac = rgb_color.blue || 0.0;
   8059                   #        var red = Math.floor(redFrac * 255);
   8060                   #        var green = Math.floor(greenFrac * 255);
   8061                   #        var blue = Math.floor(blueFrac * 255);
   8062                   #
   8063                   #        if (!('alpha' in rgb_color)) {
   8064                   #           return rgbToCssColor_(red, green, blue);
   8065                   #        }
   8066                   #
   8067                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   8068                   #        var rgbParams = [red, green, blue].join(',');
   8069                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   8070                   #     };
   8071                   #
   8072                   #     var rgbToCssColor_ = function(red, green, blue) {
   8073                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   8074                   #       var hexString = rgbNumber.toString(16);
   8075                   #       var missingZeros = 6 - hexString.length;
   8076                   #       var resultBuilder = ['#'];
   8077                   #       for (var i = 0; i < missingZeros; i++) {
   8078                   #          resultBuilder.push('0');
   8079                   #       }
   8080                   #       resultBuilder.push(hexString);
   8081                   #       return resultBuilder.join('');
   8082                   #     };
   8083                   #
   8084                   #     // ...
   8085                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   8086                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   8087                     # the final pixel color is defined by the equation:
   8088                     #
   8089                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   8090                     #
   8091                     # This means that a value of 1.0 corresponds to a solid color, whereas
   8092                     # a value of 0.0 corresponds to a completely transparent color. This
   8093                     # uses a wrapper message rather than a simple float scalar so that it is
   8094                     # possible to distinguish between a default value and the value being unset.
   8095                     # If omitted, this color object is to be rendered as a solid color
   8096                     # (as if the alpha value had been explicitly given with a value of 1.0).
   8097                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   8098                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   8099               },
   8100               "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   8101               "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   8102                   # Absent values indicate that the field isn't specified.
   8103                 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   8104                     # for simplicity of conversion to/from color representations in various
   8105                     # languages over compactness; for example, the fields of this representation
   8106                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   8107                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   8108                     # method in iOS; and, with just a little work, it can be easily formatted into
   8109                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   8110                     #
   8111                     # Example (Java):
   8112                     #
   8113                     #      import com.google.type.Color;
   8114                     #
   8115                     #      // ...
   8116                     #      public static java.awt.Color fromProto(Color protocolor) {
   8117                     #        float alpha = protocolor.hasAlpha()
   8118                     #            ? protocolor.getAlpha().getValue()
   8119                     #            : 1.0;
   8120                     #
   8121                     #        return new java.awt.Color(
   8122                     #            protocolor.getRed(),
   8123                     #            protocolor.getGreen(),
   8124                     #            protocolor.getBlue(),
   8125                     #            alpha);
   8126                     #      }
   8127                     #
   8128                     #      public static Color toProto(java.awt.Color color) {
   8129                     #        float red = (float) color.getRed();
   8130                     #        float green = (float) color.getGreen();
   8131                     #        float blue = (float) color.getBlue();
   8132                     #        float denominator = 255.0;
   8133                     #        Color.Builder resultBuilder =
   8134                     #            Color
   8135                     #                .newBuilder()
   8136                     #                .setRed(red / denominator)
   8137                     #                .setGreen(green / denominator)
   8138                     #                .setBlue(blue / denominator);
   8139                     #        int alpha = color.getAlpha();
   8140                     #        if (alpha != 255) {
   8141                     #          result.setAlpha(
   8142                     #              FloatValue
   8143                     #                  .newBuilder()
   8144                     #                  .setValue(((float) alpha) / denominator)
   8145                     #                  .build());
   8146                     #        }
   8147                     #        return resultBuilder.build();
   8148                     #      }
   8149                     #      // ...
   8150                     #
   8151                     # Example (iOS / Obj-C):
   8152                     #
   8153                     #      // ...
   8154                     #      static UIColor* fromProto(Color* protocolor) {
   8155                     #         float red = [protocolor red];
   8156                     #         float green = [protocolor green];
   8157                     #         float blue = [protocolor blue];
   8158                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   8159                     #         float alpha = 1.0;
   8160                     #         if (alpha_wrapper != nil) {
   8161                     #           alpha = [alpha_wrapper value];
   8162                     #         }
   8163                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   8164                     #      }
   8165                     #
   8166                     #      static Color* toProto(UIColor* color) {
   8167                     #          CGFloat red, green, blue, alpha;
   8168                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   8169                     #            return nil;
   8170                     #          }
   8171                     #          Color* result = [Color alloc] init];
   8172                     #          [result setRed:red];
   8173                     #          [result setGreen:green];
   8174                     #          [result setBlue:blue];
   8175                     #          if (alpha <= 0.9999) {
   8176                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   8177                     #          }
   8178                     #          [result autorelease];
   8179                     #          return result;
   8180                     #     }
   8181                     #     // ...
   8182                     #
   8183                     #  Example (JavaScript):
   8184                     #
   8185                     #     // ...
   8186                     #
   8187                     #     var protoToCssColor = function(rgb_color) {
   8188                     #        var redFrac = rgb_color.red || 0.0;
   8189                     #        var greenFrac = rgb_color.green || 0.0;
   8190                     #        var blueFrac = rgb_color.blue || 0.0;
   8191                     #        var red = Math.floor(redFrac * 255);
   8192                     #        var green = Math.floor(greenFrac * 255);
   8193                     #        var blue = Math.floor(blueFrac * 255);
   8194                     #
   8195                     #        if (!('alpha' in rgb_color)) {
   8196                     #           return rgbToCssColor_(red, green, blue);
   8197                     #        }
   8198                     #
   8199                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   8200                     #        var rgbParams = [red, green, blue].join(',');
   8201                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   8202                     #     };
   8203                     #
   8204                     #     var rgbToCssColor_ = function(red, green, blue) {
   8205                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   8206                     #       var hexString = rgbNumber.toString(16);
   8207                     #       var missingZeros = 6 - hexString.length;
   8208                     #       var resultBuilder = ['#'];
   8209                     #       for (var i = 0; i < missingZeros; i++) {
   8210                     #          resultBuilder.push('0');
   8211                     #       }
   8212                     #       resultBuilder.push(hexString);
   8213                     #       return resultBuilder.join('');
   8214                     #     };
   8215                     #
   8216                     #     // ...
   8217                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   8218                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   8219                       # the final pixel color is defined by the equation:
   8220                       #
   8221                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   8222                       #
   8223                       # This means that a value of 1.0 corresponds to a solid color, whereas
   8224                       # a value of 0.0 corresponds to a completely transparent color. This
   8225                       # uses a wrapper message rather than a simple float scalar so that it is
   8226                       # possible to distinguish between a default value and the value being unset.
   8227                       # If omitted, this color object is to be rendered as a solid color
   8228                       # (as if the alpha value had been explicitly given with a value of 1.0).
   8229                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   8230                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   8231                 },
   8232                 "bold": True or False, # True if the text is bold.
   8233                 "strikethrough": True or False, # True if the text has a strikethrough.
   8234                 "fontFamily": "A String", # The font family.
   8235                 "fontSize": 42, # The size of the font.
   8236                 "italic": True or False, # True if the text is italicized.
   8237                 "underline": True or False, # True if the text is underlined.
   8238               },
   8239               "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   8240                 "angle": 42, # The angle between the standard orientation and the desired orientation.
   8241                     # Measured in degrees. Valid values are between -90 and 90. Positive
   8242                     # angles are angled upwards, negative are angled downwards.
   8243                     #
   8244                     # Note: For LTR text direction positive angles are in the counterclockwise
   8245                     # direction, whereas for RTL they are in the clockwise direction
   8246                 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   8247                     # characters is unchanged.
   8248                     # For example:
   8249                     #
   8250                     #     | V |
   8251                     #     | e |
   8252                     #     | r |
   8253                     #     | t |
   8254                     #     | i |
   8255                     #     | c |
   8256                     #     | a |
   8257                     #     | l |
   8258               },
   8259               "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   8260               "borders": { # The borders of the cell. # The borders of the cell.
   8261                 "top": { # A border along a cell. # The top border of the cell.
   8262                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   8263                       # for simplicity of conversion to/from color representations in various
   8264                       # languages over compactness; for example, the fields of this representation
   8265                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   8266                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   8267                       # method in iOS; and, with just a little work, it can be easily formatted into
   8268                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   8269                       #
   8270                       # Example (Java):
   8271                       #
   8272                       #      import com.google.type.Color;
   8273                       #
   8274                       #      // ...
   8275                       #      public static java.awt.Color fromProto(Color protocolor) {
   8276                       #        float alpha = protocolor.hasAlpha()
   8277                       #            ? protocolor.getAlpha().getValue()
   8278                       #            : 1.0;
   8279                       #
   8280                       #        return new java.awt.Color(
   8281                       #            protocolor.getRed(),
   8282                       #            protocolor.getGreen(),
   8283                       #            protocolor.getBlue(),
   8284                       #            alpha);
   8285                       #      }
   8286                       #
   8287                       #      public static Color toProto(java.awt.Color color) {
   8288                       #        float red = (float) color.getRed();
   8289                       #        float green = (float) color.getGreen();
   8290                       #        float blue = (float) color.getBlue();
   8291                       #        float denominator = 255.0;
   8292                       #        Color.Builder resultBuilder =
   8293                       #            Color
   8294                       #                .newBuilder()
   8295                       #                .setRed(red / denominator)
   8296                       #                .setGreen(green / denominator)
   8297                       #                .setBlue(blue / denominator);
   8298                       #        int alpha = color.getAlpha();
   8299                       #        if (alpha != 255) {
   8300                       #          result.setAlpha(
   8301                       #              FloatValue
   8302                       #                  .newBuilder()
   8303                       #                  .setValue(((float) alpha) / denominator)
   8304                       #                  .build());
   8305                       #        }
   8306                       #        return resultBuilder.build();
   8307                       #      }
   8308                       #      // ...
   8309                       #
   8310                       # Example (iOS / Obj-C):
   8311                       #
   8312                       #      // ...
   8313                       #      static UIColor* fromProto(Color* protocolor) {
   8314                       #         float red = [protocolor red];
   8315                       #         float green = [protocolor green];
   8316                       #         float blue = [protocolor blue];
   8317                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   8318                       #         float alpha = 1.0;
   8319                       #         if (alpha_wrapper != nil) {
   8320                       #           alpha = [alpha_wrapper value];
   8321                       #         }
   8322                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   8323                       #      }
   8324                       #
   8325                       #      static Color* toProto(UIColor* color) {
   8326                       #          CGFloat red, green, blue, alpha;
   8327                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   8328                       #            return nil;
   8329                       #          }
   8330                       #          Color* result = [Color alloc] init];
   8331                       #          [result setRed:red];
   8332                       #          [result setGreen:green];
   8333                       #          [result setBlue:blue];
   8334                       #          if (alpha <= 0.9999) {
   8335                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   8336                       #          }
   8337                       #          [result autorelease];
   8338                       #          return result;
   8339                       #     }
   8340                       #     // ...
   8341                       #
   8342                       #  Example (JavaScript):
   8343                       #
   8344                       #     // ...
   8345                       #
   8346                       #     var protoToCssColor = function(rgb_color) {
   8347                       #        var redFrac = rgb_color.red || 0.0;
   8348                       #        var greenFrac = rgb_color.green || 0.0;
   8349                       #        var blueFrac = rgb_color.blue || 0.0;
   8350                       #        var red = Math.floor(redFrac * 255);
   8351                       #        var green = Math.floor(greenFrac * 255);
   8352                       #        var blue = Math.floor(blueFrac * 255);
   8353                       #
   8354                       #        if (!('alpha' in rgb_color)) {
   8355                       #           return rgbToCssColor_(red, green, blue);
   8356                       #        }
   8357                       #
   8358                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   8359                       #        var rgbParams = [red, green, blue].join(',');
   8360                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   8361                       #     };
   8362                       #
   8363                       #     var rgbToCssColor_ = function(red, green, blue) {
   8364                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   8365                       #       var hexString = rgbNumber.toString(16);
   8366                       #       var missingZeros = 6 - hexString.length;
   8367                       #       var resultBuilder = ['#'];
   8368                       #       for (var i = 0; i < missingZeros; i++) {
   8369                       #          resultBuilder.push('0');
   8370                       #       }
   8371                       #       resultBuilder.push(hexString);
   8372                       #       return resultBuilder.join('');
   8373                       #     };
   8374                       #
   8375                       #     // ...
   8376                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   8377                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   8378                         # the final pixel color is defined by the equation:
   8379                         #
   8380                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   8381                         #
   8382                         # This means that a value of 1.0 corresponds to a solid color, whereas
   8383                         # a value of 0.0 corresponds to a completely transparent color. This
   8384                         # uses a wrapper message rather than a simple float scalar so that it is
   8385                         # possible to distinguish between a default value and the value being unset.
   8386                         # If omitted, this color object is to be rendered as a solid color
   8387                         # (as if the alpha value had been explicitly given with a value of 1.0).
   8388                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   8389                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   8390                   },
   8391                   "width": 42, # The width of the border, in pixels.
   8392                       # Deprecated; the width is determined by the "style" field.
   8393                   "style": "A String", # The style of the border.
   8394                 },
   8395                 "right": { # A border along a cell. # The right border of the cell.
   8396                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   8397                       # for simplicity of conversion to/from color representations in various
   8398                       # languages over compactness; for example, the fields of this representation
   8399                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   8400                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   8401                       # method in iOS; and, with just a little work, it can be easily formatted into
   8402                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   8403                       #
   8404                       # Example (Java):
   8405                       #
   8406                       #      import com.google.type.Color;
   8407                       #
   8408                       #      // ...
   8409                       #      public static java.awt.Color fromProto(Color protocolor) {
   8410                       #        float alpha = protocolor.hasAlpha()
   8411                       #            ? protocolor.getAlpha().getValue()
   8412                       #            : 1.0;
   8413                       #
   8414                       #        return new java.awt.Color(
   8415                       #            protocolor.getRed(),
   8416                       #            protocolor.getGreen(),
   8417                       #            protocolor.getBlue(),
   8418                       #            alpha);
   8419                       #      }
   8420                       #
   8421                       #      public static Color toProto(java.awt.Color color) {
   8422                       #        float red = (float) color.getRed();
   8423                       #        float green = (float) color.getGreen();
   8424                       #        float blue = (float) color.getBlue();
   8425                       #        float denominator = 255.0;
   8426                       #        Color.Builder resultBuilder =
   8427                       #            Color
   8428                       #                .newBuilder()
   8429                       #                .setRed(red / denominator)
   8430                       #                .setGreen(green / denominator)
   8431                       #                .setBlue(blue / denominator);
   8432                       #        int alpha = color.getAlpha();
   8433                       #        if (alpha != 255) {
   8434                       #          result.setAlpha(
   8435                       #              FloatValue
   8436                       #                  .newBuilder()
   8437                       #                  .setValue(((float) alpha) / denominator)
   8438                       #                  .build());
   8439                       #        }
   8440                       #        return resultBuilder.build();
   8441                       #      }
   8442                       #      // ...
   8443                       #
   8444                       # Example (iOS / Obj-C):
   8445                       #
   8446                       #      // ...
   8447                       #      static UIColor* fromProto(Color* protocolor) {
   8448                       #         float red = [protocolor red];
   8449                       #         float green = [protocolor green];
   8450                       #         float blue = [protocolor blue];
   8451                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   8452                       #         float alpha = 1.0;
   8453                       #         if (alpha_wrapper != nil) {
   8454                       #           alpha = [alpha_wrapper value];
   8455                       #         }
   8456                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   8457                       #      }
   8458                       #
   8459                       #      static Color* toProto(UIColor* color) {
   8460                       #          CGFloat red, green, blue, alpha;
   8461                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   8462                       #            return nil;
   8463                       #          }
   8464                       #          Color* result = [Color alloc] init];
   8465                       #          [result setRed:red];
   8466                       #          [result setGreen:green];
   8467                       #          [result setBlue:blue];
   8468                       #          if (alpha <= 0.9999) {
   8469                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   8470                       #          }
   8471                       #          [result autorelease];
   8472                       #          return result;
   8473                       #     }
   8474                       #     // ...
   8475                       #
   8476                       #  Example (JavaScript):
   8477                       #
   8478                       #     // ...
   8479                       #
   8480                       #     var protoToCssColor = function(rgb_color) {
   8481                       #        var redFrac = rgb_color.red || 0.0;
   8482                       #        var greenFrac = rgb_color.green || 0.0;
   8483                       #        var blueFrac = rgb_color.blue || 0.0;
   8484                       #        var red = Math.floor(redFrac * 255);
   8485                       #        var green = Math.floor(greenFrac * 255);
   8486                       #        var blue = Math.floor(blueFrac * 255);
   8487                       #
   8488                       #        if (!('alpha' in rgb_color)) {
   8489                       #           return rgbToCssColor_(red, green, blue);
   8490                       #        }
   8491                       #
   8492                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   8493                       #        var rgbParams = [red, green, blue].join(',');
   8494                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   8495                       #     };
   8496                       #
   8497                       #     var rgbToCssColor_ = function(red, green, blue) {
   8498                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   8499                       #       var hexString = rgbNumber.toString(16);
   8500                       #       var missingZeros = 6 - hexString.length;
   8501                       #       var resultBuilder = ['#'];
   8502                       #       for (var i = 0; i < missingZeros; i++) {
   8503                       #          resultBuilder.push('0');
   8504                       #       }
   8505                       #       resultBuilder.push(hexString);
   8506                       #       return resultBuilder.join('');
   8507                       #     };
   8508                       #
   8509                       #     // ...
   8510                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   8511                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   8512                         # the final pixel color is defined by the equation:
   8513                         #
   8514                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   8515                         #
   8516                         # This means that a value of 1.0 corresponds to a solid color, whereas
   8517                         # a value of 0.0 corresponds to a completely transparent color. This
   8518                         # uses a wrapper message rather than a simple float scalar so that it is
   8519                         # possible to distinguish between a default value and the value being unset.
   8520                         # If omitted, this color object is to be rendered as a solid color
   8521                         # (as if the alpha value had been explicitly given with a value of 1.0).
   8522                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   8523                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   8524                   },
   8525                   "width": 42, # The width of the border, in pixels.
   8526                       # Deprecated; the width is determined by the "style" field.
   8527                   "style": "A String", # The style of the border.
   8528                 },
   8529                 "bottom": { # A border along a cell. # The bottom border of the cell.
   8530                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   8531                       # for simplicity of conversion to/from color representations in various
   8532                       # languages over compactness; for example, the fields of this representation
   8533                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   8534                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   8535                       # method in iOS; and, with just a little work, it can be easily formatted into
   8536                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   8537                       #
   8538                       # Example (Java):
   8539                       #
   8540                       #      import com.google.type.Color;
   8541                       #
   8542                       #      // ...
   8543                       #      public static java.awt.Color fromProto(Color protocolor) {
   8544                       #        float alpha = protocolor.hasAlpha()
   8545                       #            ? protocolor.getAlpha().getValue()
   8546                       #            : 1.0;
   8547                       #
   8548                       #        return new java.awt.Color(
   8549                       #            protocolor.getRed(),
   8550                       #            protocolor.getGreen(),
   8551                       #            protocolor.getBlue(),
   8552                       #            alpha);
   8553                       #      }
   8554                       #
   8555                       #      public static Color toProto(java.awt.Color color) {
   8556                       #        float red = (float) color.getRed();
   8557                       #        float green = (float) color.getGreen();
   8558                       #        float blue = (float) color.getBlue();
   8559                       #        float denominator = 255.0;
   8560                       #        Color.Builder resultBuilder =
   8561                       #            Color
   8562                       #                .newBuilder()
   8563                       #                .setRed(red / denominator)
   8564                       #                .setGreen(green / denominator)
   8565                       #                .setBlue(blue / denominator);
   8566                       #        int alpha = color.getAlpha();
   8567                       #        if (alpha != 255) {
   8568                       #          result.setAlpha(
   8569                       #              FloatValue
   8570                       #                  .newBuilder()
   8571                       #                  .setValue(((float) alpha) / denominator)
   8572                       #                  .build());
   8573                       #        }
   8574                       #        return resultBuilder.build();
   8575                       #      }
   8576                       #      // ...
   8577                       #
   8578                       # Example (iOS / Obj-C):
   8579                       #
   8580                       #      // ...
   8581                       #      static UIColor* fromProto(Color* protocolor) {
   8582                       #         float red = [protocolor red];
   8583                       #         float green = [protocolor green];
   8584                       #         float blue = [protocolor blue];
   8585                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   8586                       #         float alpha = 1.0;
   8587                       #         if (alpha_wrapper != nil) {
   8588                       #           alpha = [alpha_wrapper value];
   8589                       #         }
   8590                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   8591                       #      }
   8592                       #
   8593                       #      static Color* toProto(UIColor* color) {
   8594                       #          CGFloat red, green, blue, alpha;
   8595                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   8596                       #            return nil;
   8597                       #          }
   8598                       #          Color* result = [Color alloc] init];
   8599                       #          [result setRed:red];
   8600                       #          [result setGreen:green];
   8601                       #          [result setBlue:blue];
   8602                       #          if (alpha <= 0.9999) {
   8603                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   8604                       #          }
   8605                       #          [result autorelease];
   8606                       #          return result;
   8607                       #     }
   8608                       #     // ...
   8609                       #
   8610                       #  Example (JavaScript):
   8611                       #
   8612                       #     // ...
   8613                       #
   8614                       #     var protoToCssColor = function(rgb_color) {
   8615                       #        var redFrac = rgb_color.red || 0.0;
   8616                       #        var greenFrac = rgb_color.green || 0.0;
   8617                       #        var blueFrac = rgb_color.blue || 0.0;
   8618                       #        var red = Math.floor(redFrac * 255);
   8619                       #        var green = Math.floor(greenFrac * 255);
   8620                       #        var blue = Math.floor(blueFrac * 255);
   8621                       #
   8622                       #        if (!('alpha' in rgb_color)) {
   8623                       #           return rgbToCssColor_(red, green, blue);
   8624                       #        }
   8625                       #
   8626                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   8627                       #        var rgbParams = [red, green, blue].join(',');
   8628                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   8629                       #     };
   8630                       #
   8631                       #     var rgbToCssColor_ = function(red, green, blue) {
   8632                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   8633                       #       var hexString = rgbNumber.toString(16);
   8634                       #       var missingZeros = 6 - hexString.length;
   8635                       #       var resultBuilder = ['#'];
   8636                       #       for (var i = 0; i < missingZeros; i++) {
   8637                       #          resultBuilder.push('0');
   8638                       #       }
   8639                       #       resultBuilder.push(hexString);
   8640                       #       return resultBuilder.join('');
   8641                       #     };
   8642                       #
   8643                       #     // ...
   8644                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   8645                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   8646                         # the final pixel color is defined by the equation:
   8647                         #
   8648                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   8649                         #
   8650                         # This means that a value of 1.0 corresponds to a solid color, whereas
   8651                         # a value of 0.0 corresponds to a completely transparent color. This
   8652                         # uses a wrapper message rather than a simple float scalar so that it is
   8653                         # possible to distinguish between a default value and the value being unset.
   8654                         # If omitted, this color object is to be rendered as a solid color
   8655                         # (as if the alpha value had been explicitly given with a value of 1.0).
   8656                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   8657                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   8658                   },
   8659                   "width": 42, # The width of the border, in pixels.
   8660                       # Deprecated; the width is determined by the "style" field.
   8661                   "style": "A String", # The style of the border.
   8662                 },
   8663                 "left": { # A border along a cell. # The left border of the cell.
   8664                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   8665                       # for simplicity of conversion to/from color representations in various
   8666                       # languages over compactness; for example, the fields of this representation
   8667                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   8668                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   8669                       # method in iOS; and, with just a little work, it can be easily formatted into
   8670                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   8671                       #
   8672                       # Example (Java):
   8673                       #
   8674                       #      import com.google.type.Color;
   8675                       #
   8676                       #      // ...
   8677                       #      public static java.awt.Color fromProto(Color protocolor) {
   8678                       #        float alpha = protocolor.hasAlpha()
   8679                       #            ? protocolor.getAlpha().getValue()
   8680                       #            : 1.0;
   8681                       #
   8682                       #        return new java.awt.Color(
   8683                       #            protocolor.getRed(),
   8684                       #            protocolor.getGreen(),
   8685                       #            protocolor.getBlue(),
   8686                       #            alpha);
   8687                       #      }
   8688                       #
   8689                       #      public static Color toProto(java.awt.Color color) {
   8690                       #        float red = (float) color.getRed();
   8691                       #        float green = (float) color.getGreen();
   8692                       #        float blue = (float) color.getBlue();
   8693                       #        float denominator = 255.0;
   8694                       #        Color.Builder resultBuilder =
   8695                       #            Color
   8696                       #                .newBuilder()
   8697                       #                .setRed(red / denominator)
   8698                       #                .setGreen(green / denominator)
   8699                       #                .setBlue(blue / denominator);
   8700                       #        int alpha = color.getAlpha();
   8701                       #        if (alpha != 255) {
   8702                       #          result.setAlpha(
   8703                       #              FloatValue
   8704                       #                  .newBuilder()
   8705                       #                  .setValue(((float) alpha) / denominator)
   8706                       #                  .build());
   8707                       #        }
   8708                       #        return resultBuilder.build();
   8709                       #      }
   8710                       #      // ...
   8711                       #
   8712                       # Example (iOS / Obj-C):
   8713                       #
   8714                       #      // ...
   8715                       #      static UIColor* fromProto(Color* protocolor) {
   8716                       #         float red = [protocolor red];
   8717                       #         float green = [protocolor green];
   8718                       #         float blue = [protocolor blue];
   8719                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   8720                       #         float alpha = 1.0;
   8721                       #         if (alpha_wrapper != nil) {
   8722                       #           alpha = [alpha_wrapper value];
   8723                       #         }
   8724                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   8725                       #      }
   8726                       #
   8727                       #      static Color* toProto(UIColor* color) {
   8728                       #          CGFloat red, green, blue, alpha;
   8729                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   8730                       #            return nil;
   8731                       #          }
   8732                       #          Color* result = [Color alloc] init];
   8733                       #          [result setRed:red];
   8734                       #          [result setGreen:green];
   8735                       #          [result setBlue:blue];
   8736                       #          if (alpha <= 0.9999) {
   8737                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   8738                       #          }
   8739                       #          [result autorelease];
   8740                       #          return result;
   8741                       #     }
   8742                       #     // ...
   8743                       #
   8744                       #  Example (JavaScript):
   8745                       #
   8746                       #     // ...
   8747                       #
   8748                       #     var protoToCssColor = function(rgb_color) {
   8749                       #        var redFrac = rgb_color.red || 0.0;
   8750                       #        var greenFrac = rgb_color.green || 0.0;
   8751                       #        var blueFrac = rgb_color.blue || 0.0;
   8752                       #        var red = Math.floor(redFrac * 255);
   8753                       #        var green = Math.floor(greenFrac * 255);
   8754                       #        var blue = Math.floor(blueFrac * 255);
   8755                       #
   8756                       #        if (!('alpha' in rgb_color)) {
   8757                       #           return rgbToCssColor_(red, green, blue);
   8758                       #        }
   8759                       #
   8760                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   8761                       #        var rgbParams = [red, green, blue].join(',');
   8762                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   8763                       #     };
   8764                       #
   8765                       #     var rgbToCssColor_ = function(red, green, blue) {
   8766                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   8767                       #       var hexString = rgbNumber.toString(16);
   8768                       #       var missingZeros = 6 - hexString.length;
   8769                       #       var resultBuilder = ['#'];
   8770                       #       for (var i = 0; i < missingZeros; i++) {
   8771                       #          resultBuilder.push('0');
   8772                       #       }
   8773                       #       resultBuilder.push(hexString);
   8774                       #       return resultBuilder.join('');
   8775                       #     };
   8776                       #
   8777                       #     // ...
   8778                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   8779                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   8780                         # the final pixel color is defined by the equation:
   8781                         #
   8782                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   8783                         #
   8784                         # This means that a value of 1.0 corresponds to a solid color, whereas
   8785                         # a value of 0.0 corresponds to a completely transparent color. This
   8786                         # uses a wrapper message rather than a simple float scalar so that it is
   8787                         # possible to distinguish between a default value and the value being unset.
   8788                         # If omitted, this color object is to be rendered as a solid color
   8789                         # (as if the alpha value had been explicitly given with a value of 1.0).
   8790                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   8791                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   8792                   },
   8793                   "width": 42, # The width of the border, in pixels.
   8794                       # Deprecated; the width is determined by the "style" field.
   8795                   "style": "A String", # The style of the border.
   8796                 },
   8797               },
   8798               "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   8799             },
   8800             "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
   8801                 #
   8802                 # When writing, the new data validation rule will overwrite any prior rule.
   8803               "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
   8804                   # If true, "List" conditions will show a dropdown.
   8805               "strict": True or False, # True if invalid data should be rejected.
   8806               "inputMessage": "A String", # A message to show the user when adding data to the cell.
   8807               "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
   8808                   # BooleanConditions are used by conditional formatting,
   8809                   # data validation, and the criteria in filters.
   8810                 "values": [ # The values of the condition. The number of supported values depends
   8811                     # on the condition type.  Some support zero values,
   8812                     # others one or two values,
   8813                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   8814                   { # The value of the condition.
   8815                     "relativeDate": "A String", # A relative date (based on the current date).
   8816                         # Valid only if the type is
   8817                         # DATE_BEFORE,
   8818                         # DATE_AFTER,
   8819                         # DATE_ON_OR_BEFORE or
   8820                         # DATE_ON_OR_AFTER.
   8821                         #
   8822                         # Relative dates are not supported in data validation.
   8823                         # They are supported only in conditional formatting and
   8824                         # conditional filters.
   8825                     "userEnteredValue": "A String", # A value the condition is based on.
   8826                         # The value will be parsed as if the user typed into a cell.
   8827                         # Formulas are supported (and must begin with an `=`).
   8828                   },
   8829                 ],
   8830                 "type": "A String", # The type of condition.
   8831               },
   8832             },
   8833             "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
   8834                 # on user entered strings, not formulas, bools, or numbers.
   8835                 # Runs start at specific indexes in the text and continue until the next
   8836                 # run. Properties of a run will continue unless explicitly changed
   8837                 # in a subsequent run (and properties of the first run will continue
   8838                 # the properties of the cell unless explicitly changed).
   8839                 #
   8840                 # When writing, the new runs will overwrite any prior runs.  When writing a
   8841                 # new user_entered_value, previous runs will be erased.
   8842               { # A run of a text format. The format of this run continues until the start
   8843                   # index of the next run.
   8844                   # When updating, all fields must be set.
   8845                 "startIndex": 42, # The character index where this run starts.
   8846                 "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
   8847                     # Absent values indicate that the field isn't specified.
   8848                   "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   8849                       # for simplicity of conversion to/from color representations in various
   8850                       # languages over compactness; for example, the fields of this representation
   8851                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   8852                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   8853                       # method in iOS; and, with just a little work, it can be easily formatted into
   8854                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   8855                       #
   8856                       # Example (Java):
   8857                       #
   8858                       #      import com.google.type.Color;
   8859                       #
   8860                       #      // ...
   8861                       #      public static java.awt.Color fromProto(Color protocolor) {
   8862                       #        float alpha = protocolor.hasAlpha()
   8863                       #            ? protocolor.getAlpha().getValue()
   8864                       #            : 1.0;
   8865                       #
   8866                       #        return new java.awt.Color(
   8867                       #            protocolor.getRed(),
   8868                       #            protocolor.getGreen(),
   8869                       #            protocolor.getBlue(),
   8870                       #            alpha);
   8871                       #      }
   8872                       #
   8873                       #      public static Color toProto(java.awt.Color color) {
   8874                       #        float red = (float) color.getRed();
   8875                       #        float green = (float) color.getGreen();
   8876                       #        float blue = (float) color.getBlue();
   8877                       #        float denominator = 255.0;
   8878                       #        Color.Builder resultBuilder =
   8879                       #            Color
   8880                       #                .newBuilder()
   8881                       #                .setRed(red / denominator)
   8882                       #                .setGreen(green / denominator)
   8883                       #                .setBlue(blue / denominator);
   8884                       #        int alpha = color.getAlpha();
   8885                       #        if (alpha != 255) {
   8886                       #          result.setAlpha(
   8887                       #              FloatValue
   8888                       #                  .newBuilder()
   8889                       #                  .setValue(((float) alpha) / denominator)
   8890                       #                  .build());
   8891                       #        }
   8892                       #        return resultBuilder.build();
   8893                       #      }
   8894                       #      // ...
   8895                       #
   8896                       # Example (iOS / Obj-C):
   8897                       #
   8898                       #      // ...
   8899                       #      static UIColor* fromProto(Color* protocolor) {
   8900                       #         float red = [protocolor red];
   8901                       #         float green = [protocolor green];
   8902                       #         float blue = [protocolor blue];
   8903                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   8904                       #         float alpha = 1.0;
   8905                       #         if (alpha_wrapper != nil) {
   8906                       #           alpha = [alpha_wrapper value];
   8907                       #         }
   8908                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   8909                       #      }
   8910                       #
   8911                       #      static Color* toProto(UIColor* color) {
   8912                       #          CGFloat red, green, blue, alpha;
   8913                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   8914                       #            return nil;
   8915                       #          }
   8916                       #          Color* result = [Color alloc] init];
   8917                       #          [result setRed:red];
   8918                       #          [result setGreen:green];
   8919                       #          [result setBlue:blue];
   8920                       #          if (alpha <= 0.9999) {
   8921                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   8922                       #          }
   8923                       #          [result autorelease];
   8924                       #          return result;
   8925                       #     }
   8926                       #     // ...
   8927                       #
   8928                       #  Example (JavaScript):
   8929                       #
   8930                       #     // ...
   8931                       #
   8932                       #     var protoToCssColor = function(rgb_color) {
   8933                       #        var redFrac = rgb_color.red || 0.0;
   8934                       #        var greenFrac = rgb_color.green || 0.0;
   8935                       #        var blueFrac = rgb_color.blue || 0.0;
   8936                       #        var red = Math.floor(redFrac * 255);
   8937                       #        var green = Math.floor(greenFrac * 255);
   8938                       #        var blue = Math.floor(blueFrac * 255);
   8939                       #
   8940                       #        if (!('alpha' in rgb_color)) {
   8941                       #           return rgbToCssColor_(red, green, blue);
   8942                       #        }
   8943                       #
   8944                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   8945                       #        var rgbParams = [red, green, blue].join(',');
   8946                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   8947                       #     };
   8948                       #
   8949                       #     var rgbToCssColor_ = function(red, green, blue) {
   8950                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   8951                       #       var hexString = rgbNumber.toString(16);
   8952                       #       var missingZeros = 6 - hexString.length;
   8953                       #       var resultBuilder = ['#'];
   8954                       #       for (var i = 0; i < missingZeros; i++) {
   8955                       #          resultBuilder.push('0');
   8956                       #       }
   8957                       #       resultBuilder.push(hexString);
   8958                       #       return resultBuilder.join('');
   8959                       #     };
   8960                       #
   8961                       #     // ...
   8962                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   8963                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   8964                         # the final pixel color is defined by the equation:
   8965                         #
   8966                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   8967                         #
   8968                         # This means that a value of 1.0 corresponds to a solid color, whereas
   8969                         # a value of 0.0 corresponds to a completely transparent color. This
   8970                         # uses a wrapper message rather than a simple float scalar so that it is
   8971                         # possible to distinguish between a default value and the value being unset.
   8972                         # If omitted, this color object is to be rendered as a solid color
   8973                         # (as if the alpha value had been explicitly given with a value of 1.0).
   8974                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   8975                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   8976                   },
   8977                   "bold": True or False, # True if the text is bold.
   8978                   "strikethrough": True or False, # True if the text has a strikethrough.
   8979                   "fontFamily": "A String", # The font family.
   8980                   "fontSize": 42, # The size of the font.
   8981                   "italic": True or False, # True if the text is italicized.
   8982                   "underline": True or False, # True if the text is underlined.
   8983                 },
   8984               },
   8985             ],
   8986           },
   8987           "fields": "A String", # The fields that should be updated.  At least one field must be specified.
   8988               # The root `cell` is implied and should not be specified.
   8989               # A single `"*"` can be used as short-hand for listing every field.
   8990           "range": { # A range on a sheet. # The range to repeat the cell in.
   8991               # All indexes are zero-based.
   8992               # Indexes are half open, e.g the start index is inclusive
   8993               # and the end index is exclusive -- [start_index, end_index).
   8994               # Missing indexes indicate the range is unbounded on that side.
   8995               #
   8996               # For example, if `"Sheet1"` is sheet ID 0, then:
   8997               #
   8998               #   `Sheet1!A1:A1 == sheet_id: 0,
   8999               #                   start_row_index: 0, end_row_index: 1,
   9000               #                   start_column_index: 0, end_column_index: 1`
   9001               #
   9002               #   `Sheet1!A3:B4 == sheet_id: 0,
   9003               #                   start_row_index: 2, end_row_index: 4,
   9004               #                   start_column_index: 0, end_column_index: 2`
   9005               #
   9006               #   `Sheet1!A:B == sheet_id: 0,
   9007               #                 start_column_index: 0, end_column_index: 2`
   9008               #
   9009               #   `Sheet1!A5:B == sheet_id: 0,
   9010               #                  start_row_index: 4,
   9011               #                  start_column_index: 0, end_column_index: 2`
   9012               #
   9013               #   `Sheet1 == sheet_id:0`
   9014               #
   9015               # The start index must always be less than or equal to the end index.
   9016               # If the start index equals the end index, then the range is empty.
   9017               # Empty ranges are typically not meaningful and are usually rendered in the
   9018               # UI as `#REF!`.
   9019             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   9020             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   9021             "sheetId": 42, # The sheet this range is on.
   9022             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   9023             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   9024           },
   9025         },
   9026         "findReplace": { # Finds and replaces data in cells over a range, sheet, or all sheets. # Finds and replaces occurrences of some text with other text.
   9027           "includeFormulas": True or False, # True if the search should include cells with formulas.
   9028               # False to skip cells with formulas.
   9029           "matchEntireCell": True or False, # True if the find value should match the entire cell.
   9030           "allSheets": True or False, # True to find/replace over all sheets.
   9031           "matchCase": True or False, # True if the search is case sensitive.
   9032           "find": "A String", # The value to search.
   9033           "range": { # A range on a sheet. # The range to find/replace over.
   9034               # All indexes are zero-based.
   9035               # Indexes are half open, e.g the start index is inclusive
   9036               # and the end index is exclusive -- [start_index, end_index).
   9037               # Missing indexes indicate the range is unbounded on that side.
   9038               #
   9039               # For example, if `"Sheet1"` is sheet ID 0, then:
   9040               #
   9041               #   `Sheet1!A1:A1 == sheet_id: 0,
   9042               #                   start_row_index: 0, end_row_index: 1,
   9043               #                   start_column_index: 0, end_column_index: 1`
   9044               #
   9045               #   `Sheet1!A3:B4 == sheet_id: 0,
   9046               #                   start_row_index: 2, end_row_index: 4,
   9047               #                   start_column_index: 0, end_column_index: 2`
   9048               #
   9049               #   `Sheet1!A:B == sheet_id: 0,
   9050               #                 start_column_index: 0, end_column_index: 2`
   9051               #
   9052               #   `Sheet1!A5:B == sheet_id: 0,
   9053               #                  start_row_index: 4,
   9054               #                  start_column_index: 0, end_column_index: 2`
   9055               #
   9056               #   `Sheet1 == sheet_id:0`
   9057               #
   9058               # The start index must always be less than or equal to the end index.
   9059               # If the start index equals the end index, then the range is empty.
   9060               # Empty ranges are typically not meaningful and are usually rendered in the
   9061               # UI as `#REF!`.
   9062             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   9063             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   9064             "sheetId": 42, # The sheet this range is on.
   9065             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   9066             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   9067           },
   9068           "searchByRegex": True or False, # True if the find value is a regex.
   9069               # The regular expression and replacement should follow Java regex rules
   9070               # at https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html.
   9071               # The replacement string is allowed to refer to capturing groups.
   9072               # For example, if one cell has the contents `"Google Sheets"` and another
   9073               # has `"Google Docs"`, then searching for `"o.* (.*)"` with a replacement of
   9074               # `"$1 Rocks"` would change the contents of the cells to
   9075               # `"GSheets Rocks"` and `"GDocs Rocks"` respectively.
   9076           "sheetId": 42, # The sheet to find/replace over.
   9077           "replacement": "A String", # The value to use as the replacement.
   9078         },
   9079         "setBasicFilter": { # Sets the basic filter associated with a sheet. # Sets the basic filter on a sheet.
   9080           "filter": { # The default filter associated with a sheet. # The filter to set.
   9081             "range": { # A range on a sheet. # The range the filter covers.
   9082                 # All indexes are zero-based.
   9083                 # Indexes are half open, e.g the start index is inclusive
   9084                 # and the end index is exclusive -- [start_index, end_index).
   9085                 # Missing indexes indicate the range is unbounded on that side.
   9086                 #
   9087                 # For example, if `"Sheet1"` is sheet ID 0, then:
   9088                 #
   9089                 #   `Sheet1!A1:A1 == sheet_id: 0,
   9090                 #                   start_row_index: 0, end_row_index: 1,
   9091                 #                   start_column_index: 0, end_column_index: 1`
   9092                 #
   9093                 #   `Sheet1!A3:B4 == sheet_id: 0,
   9094                 #                   start_row_index: 2, end_row_index: 4,
   9095                 #                   start_column_index: 0, end_column_index: 2`
   9096                 #
   9097                 #   `Sheet1!A:B == sheet_id: 0,
   9098                 #                 start_column_index: 0, end_column_index: 2`
   9099                 #
   9100                 #   `Sheet1!A5:B == sheet_id: 0,
   9101                 #                  start_row_index: 4,
   9102                 #                  start_column_index: 0, end_column_index: 2`
   9103                 #
   9104                 #   `Sheet1 == sheet_id:0`
   9105                 #
   9106                 # The start index must always be less than or equal to the end index.
   9107                 # If the start index equals the end index, then the range is empty.
   9108                 # Empty ranges are typically not meaningful and are usually rendered in the
   9109                 # UI as `#REF!`.
   9110               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   9111               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   9112               "sheetId": 42, # The sheet this range is on.
   9113               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   9114               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   9115             },
   9116             "sortSpecs": [ # The sort order per column. Later specifications are used when values
   9117                 # are equal in the earlier specifications.
   9118               { # A sort order associated with a specific column or row.
   9119                 "sortOrder": "A String", # The order data should be sorted.
   9120                 "dimensionIndex": 42, # The dimension the sort should be applied to.
   9121               },
   9122             ],
   9123             "criteria": { # The criteria for showing/hiding values per column.
   9124                 # The map's key is the column index, and the value is the criteria for
   9125                 # that column.
   9126               "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   9127                 "hiddenValues": [ # Values that should be hidden.
   9128                   "A String",
   9129                 ],
   9130                 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   9131                     # (This does not override hiddenValues -- if a value is listed there,
   9132                     #  it will still be hidden.)
   9133                     # BooleanConditions are used by conditional formatting,
   9134                     # data validation, and the criteria in filters.
   9135                   "values": [ # The values of the condition. The number of supported values depends
   9136                       # on the condition type.  Some support zero values,
   9137                       # others one or two values,
   9138                       # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   9139                     { # The value of the condition.
   9140                       "relativeDate": "A String", # A relative date (based on the current date).
   9141                           # Valid only if the type is
   9142                           # DATE_BEFORE,
   9143                           # DATE_AFTER,
   9144                           # DATE_ON_OR_BEFORE or
   9145                           # DATE_ON_OR_AFTER.
   9146                           #
   9147                           # Relative dates are not supported in data validation.
   9148                           # They are supported only in conditional formatting and
   9149                           # conditional filters.
   9150                       "userEnteredValue": "A String", # A value the condition is based on.
   9151                           # The value will be parsed as if the user typed into a cell.
   9152                           # Formulas are supported (and must begin with an `=`).
   9153                     },
   9154                   ],
   9155                   "type": "A String", # The type of condition.
   9156                 },
   9157               },
   9158             },
   9159           },
   9160         },
   9161         "addFilterView": { # Adds a filter view. # Adds a filter view.
   9162           "filter": { # A filter view. # The filter to add. The filterViewId
   9163               # field is optional; if one is not set, an id will be randomly generated. (It
   9164               # is an error to specify the ID of a filter that already exists.)
   9165             "title": "A String", # The name of the filter view.
   9166             "namedRangeId": "A String", # The named range this filter view is backed by, if any.
   9167                 #
   9168                 # When writing, only one of range or named_range_id
   9169                 # may be set.
   9170             "filterViewId": 42, # The ID of the filter view.
   9171             "range": { # A range on a sheet. # The range this filter view covers.
   9172                 #
   9173                 # When writing, only one of range or named_range_id
   9174                 # may be set.
   9175                 # All indexes are zero-based.
   9176                 # Indexes are half open, e.g the start index is inclusive
   9177                 # and the end index is exclusive -- [start_index, end_index).
   9178                 # Missing indexes indicate the range is unbounded on that side.
   9179                 #
   9180                 # For example, if `"Sheet1"` is sheet ID 0, then:
   9181                 #
   9182                 #   `Sheet1!A1:A1 == sheet_id: 0,
   9183                 #                   start_row_index: 0, end_row_index: 1,
   9184                 #                   start_column_index: 0, end_column_index: 1`
   9185                 #
   9186                 #   `Sheet1!A3:B4 == sheet_id: 0,
   9187                 #                   start_row_index: 2, end_row_index: 4,
   9188                 #                   start_column_index: 0, end_column_index: 2`
   9189                 #
   9190                 #   `Sheet1!A:B == sheet_id: 0,
   9191                 #                 start_column_index: 0, end_column_index: 2`
   9192                 #
   9193                 #   `Sheet1!A5:B == sheet_id: 0,
   9194                 #                  start_row_index: 4,
   9195                 #                  start_column_index: 0, end_column_index: 2`
   9196                 #
   9197                 #   `Sheet1 == sheet_id:0`
   9198                 #
   9199                 # The start index must always be less than or equal to the end index.
   9200                 # If the start index equals the end index, then the range is empty.
   9201                 # Empty ranges are typically not meaningful and are usually rendered in the
   9202                 # UI as `#REF!`.
   9203               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   9204               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   9205               "sheetId": 42, # The sheet this range is on.
   9206               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   9207               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   9208             },
   9209             "sortSpecs": [ # The sort order per column. Later specifications are used when values
   9210                 # are equal in the earlier specifications.
   9211               { # A sort order associated with a specific column or row.
   9212                 "sortOrder": "A String", # The order data should be sorted.
   9213                 "dimensionIndex": 42, # The dimension the sort should be applied to.
   9214               },
   9215             ],
   9216             "criteria": { # The criteria for showing/hiding values per column.
   9217                 # The map's key is the column index, and the value is the criteria for
   9218                 # that column.
   9219               "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   9220                 "hiddenValues": [ # Values that should be hidden.
   9221                   "A String",
   9222                 ],
   9223                 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   9224                     # (This does not override hiddenValues -- if a value is listed there,
   9225                     #  it will still be hidden.)
   9226                     # BooleanConditions are used by conditional formatting,
   9227                     # data validation, and the criteria in filters.
   9228                   "values": [ # The values of the condition. The number of supported values depends
   9229                       # on the condition type.  Some support zero values,
   9230                       # others one or two values,
   9231                       # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   9232                     { # The value of the condition.
   9233                       "relativeDate": "A String", # A relative date (based on the current date).
   9234                           # Valid only if the type is
   9235                           # DATE_BEFORE,
   9236                           # DATE_AFTER,
   9237                           # DATE_ON_OR_BEFORE or
   9238                           # DATE_ON_OR_AFTER.
   9239                           #
   9240                           # Relative dates are not supported in data validation.
   9241                           # They are supported only in conditional formatting and
   9242                           # conditional filters.
   9243                       "userEnteredValue": "A String", # A value the condition is based on.
   9244                           # The value will be parsed as if the user typed into a cell.
   9245                           # Formulas are supported (and must begin with an `=`).
   9246                     },
   9247                   ],
   9248                   "type": "A String", # The type of condition.
   9249                 },
   9250               },
   9251             },
   9252           },
   9253         },
   9254         "updateCells": { # Updates all cells in a range with new data. # Updates many cells at once.
   9255           "start": { # A coordinate in a sheet. # The coordinate to start writing data at.
   9256               # Any number of rows and columns (including a different number of
   9257               # columns per row) may be written.
   9258               # All indexes are zero-based.
   9259             "rowIndex": 42, # The row index of the coordinate.
   9260             "columnIndex": 42, # The column index of the coordinate.
   9261             "sheetId": 42, # The sheet this coordinate is on.
   9262           },
   9263           "range": { # A range on a sheet. # The range to write data to.
   9264               #
   9265               # If the data in rows does not cover the entire requested range,
   9266               # the fields matching those set in fields will be cleared.
   9267               # All indexes are zero-based.
   9268               # Indexes are half open, e.g the start index is inclusive
   9269               # and the end index is exclusive -- [start_index, end_index).
   9270               # Missing indexes indicate the range is unbounded on that side.
   9271               #
   9272               # For example, if `"Sheet1"` is sheet ID 0, then:
   9273               #
   9274               #   `Sheet1!A1:A1 == sheet_id: 0,
   9275               #                   start_row_index: 0, end_row_index: 1,
   9276               #                   start_column_index: 0, end_column_index: 1`
   9277               #
   9278               #   `Sheet1!A3:B4 == sheet_id: 0,
   9279               #                   start_row_index: 2, end_row_index: 4,
   9280               #                   start_column_index: 0, end_column_index: 2`
   9281               #
   9282               #   `Sheet1!A:B == sheet_id: 0,
   9283               #                 start_column_index: 0, end_column_index: 2`
   9284               #
   9285               #   `Sheet1!A5:B == sheet_id: 0,
   9286               #                  start_row_index: 4,
   9287               #                  start_column_index: 0, end_column_index: 2`
   9288               #
   9289               #   `Sheet1 == sheet_id:0`
   9290               #
   9291               # The start index must always be less than or equal to the end index.
   9292               # If the start index equals the end index, then the range is empty.
   9293               # Empty ranges are typically not meaningful and are usually rendered in the
   9294               # UI as `#REF!`.
   9295             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   9296             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   9297             "sheetId": 42, # The sheet this range is on.
   9298             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   9299             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   9300           },
   9301           "rows": [ # The data to write.
   9302             { # Data about each cell in a row.
   9303               "values": [ # The values in the row, one per column.
   9304                 { # Data about a specific cell.
   9305                   "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
   9306                       # is computed dynamically based on its data, grouping, filters, values,
   9307                       # etc. Only the top-left cell of the pivot table contains the pivot table
   9308                       # definition. The other cells will contain the calculated values of the
   9309                       # results of the pivot in their effective_value fields.
   9310                     "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
   9311                         # or vertically (as rows).
   9312                     "rows": [ # Each row grouping in the pivot table.
   9313                       { # A single grouping (either row or column) in a pivot table.
   9314                         "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   9315                         "valueMetadata": [ # Metadata about values in the grouping.
   9316                           { # Metadata about a value in a pivot grouping.
   9317                             "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   9318                             "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   9319                                 # (Note that formulaValue is not valid,
   9320                                 #  because the values will be calculated.)
   9321                               "stringValue": "A String", # Represents a string value.
   9322                                   # Leading single quotes are not included. For example, if the user typed
   9323                                   # `'123` into the UI, this would be represented as a `stringValue` of
   9324                                   # `"123"`.
   9325                               "boolValue": True or False, # Represents a boolean value.
   9326                               "errorValue": { # An error in a cell. # Represents an error.
   9327                                   # This field is read-only.
   9328                                 "message": "A String", # A message with more information about the error
   9329                                     # (in the spreadsheet's locale).
   9330                                 "type": "A String", # The type of error.
   9331                               },
   9332                               "formulaValue": "A String", # Represents a formula.
   9333                               "numberValue": 3.14, # Represents a double value.
   9334                                   # Note: Dates, Times and DateTimes are represented as doubles in
   9335                                   # "serial number" format.
   9336                             },
   9337                           },
   9338                         ],
   9339                         "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   9340                             # If not specified, sorting is alphabetical by this group's values.
   9341                           "buckets": [ # Determines the bucket from which values are chosen to sort.
   9342                               #
   9343                               # For example, in a pivot table with one row group & two column groups,
   9344                               # the row group can list up to two values. The first value corresponds
   9345                               # to a value within the first column group, and the second value
   9346                               # corresponds to a value in the second column group.  If no values
   9347                               # are listed, this would indicate that the row should be sorted according
   9348                               # to the "Grand Total" over the column groups. If a single value is listed,
   9349                               # this would correspond to using the "Total" of that bucket.
   9350                             { # The kinds of value that a cell in a spreadsheet can have.
   9351                               "stringValue": "A String", # Represents a string value.
   9352                                   # Leading single quotes are not included. For example, if the user typed
   9353                                   # `'123` into the UI, this would be represented as a `stringValue` of
   9354                                   # `"123"`.
   9355                               "boolValue": True or False, # Represents a boolean value.
   9356                               "errorValue": { # An error in a cell. # Represents an error.
   9357                                   # This field is read-only.
   9358                                 "message": "A String", # A message with more information about the error
   9359                                     # (in the spreadsheet's locale).
   9360                                 "type": "A String", # The type of error.
   9361                               },
   9362                               "formulaValue": "A String", # Represents a formula.
   9363                               "numberValue": 3.14, # Represents a double value.
   9364                                   # Note: Dates, Times and DateTimes are represented as doubles in
   9365                                   # "serial number" format.
   9366                             },
   9367                           ],
   9368                           "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   9369                               # grouping should be sorted by.
   9370                         },
   9371                         "sortOrder": "A String", # The order the values in this group should be sorted.
   9372                         "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   9373                             #
   9374                             # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   9375                             # means this group refers to column `C`, whereas the offset `1` would refer
   9376                             # to column `D`.
   9377                       },
   9378                     ],
   9379                     "source": { # A range on a sheet. # The range the pivot table is reading data from.
   9380                         # All indexes are zero-based.
   9381                         # Indexes are half open, e.g the start index is inclusive
   9382                         # and the end index is exclusive -- [start_index, end_index).
   9383                         # Missing indexes indicate the range is unbounded on that side.
   9384                         #
   9385                         # For example, if `"Sheet1"` is sheet ID 0, then:
   9386                         #
   9387                         #   `Sheet1!A1:A1 == sheet_id: 0,
   9388                         #                   start_row_index: 0, end_row_index: 1,
   9389                         #                   start_column_index: 0, end_column_index: 1`
   9390                         #
   9391                         #   `Sheet1!A3:B4 == sheet_id: 0,
   9392                         #                   start_row_index: 2, end_row_index: 4,
   9393                         #                   start_column_index: 0, end_column_index: 2`
   9394                         #
   9395                         #   `Sheet1!A:B == sheet_id: 0,
   9396                         #                 start_column_index: 0, end_column_index: 2`
   9397                         #
   9398                         #   `Sheet1!A5:B == sheet_id: 0,
   9399                         #                  start_row_index: 4,
   9400                         #                  start_column_index: 0, end_column_index: 2`
   9401                         #
   9402                         #   `Sheet1 == sheet_id:0`
   9403                         #
   9404                         # The start index must always be less than or equal to the end index.
   9405                         # If the start index equals the end index, then the range is empty.
   9406                         # Empty ranges are typically not meaningful and are usually rendered in the
   9407                         # UI as `#REF!`.
   9408                       "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   9409                       "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   9410                       "sheetId": 42, # The sheet this range is on.
   9411                       "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   9412                       "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   9413                     },
   9414                     "values": [ # A list of values to include in the pivot table.
   9415                       { # The definition of how a value in a pivot table should be calculated.
   9416                         "formula": "A String", # A custom formula to calculate the value.  The formula must start
   9417                             # with an `=` character.
   9418                         "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
   9419                             #
   9420                             # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   9421                             # means this value refers to column `C`, whereas the offset `1` would
   9422                             # refer to column `D`.
   9423                         "summarizeFunction": "A String", # A function to summarize the value.
   9424                             # If formula is set, the only supported values are
   9425                             # SUM and
   9426                             # CUSTOM.
   9427                             # If sourceColumnOffset is set, then `CUSTOM`
   9428                             # is not supported.
   9429                         "name": "A String", # A name to use for the value. This is only used if formula was set.
   9430                             # Otherwise, the column name is used.
   9431                       },
   9432                     ],
   9433                     "criteria": { # An optional mapping of filters per source column offset.
   9434                         #
   9435                         # The filters will be applied before aggregating data into the pivot table.
   9436                         # The map's key is the column offset of the source range that you want to
   9437                         # filter, and the value is the criteria for that column.
   9438                         #
   9439                         # For example, if the source was `C10:E15`, a key of `0` will have the filter
   9440                         # for column `C`, whereas the key `1` is for column `D`.
   9441                       "a_key": { # Criteria for showing/hiding rows in a pivot table.
   9442                         "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
   9443                           "A String",
   9444                         ],
   9445                       },
   9446                     },
   9447                     "columns": [ # Each column grouping in the pivot table.
   9448                       { # A single grouping (either row or column) in a pivot table.
   9449                         "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   9450                         "valueMetadata": [ # Metadata about values in the grouping.
   9451                           { # Metadata about a value in a pivot grouping.
   9452                             "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   9453                             "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   9454                                 # (Note that formulaValue is not valid,
   9455                                 #  because the values will be calculated.)
   9456                               "stringValue": "A String", # Represents a string value.
   9457                                   # Leading single quotes are not included. For example, if the user typed
   9458                                   # `'123` into the UI, this would be represented as a `stringValue` of
   9459                                   # `"123"`.
   9460                               "boolValue": True or False, # Represents a boolean value.
   9461                               "errorValue": { # An error in a cell. # Represents an error.
   9462                                   # This field is read-only.
   9463                                 "message": "A String", # A message with more information about the error
   9464                                     # (in the spreadsheet's locale).
   9465                                 "type": "A String", # The type of error.
   9466                               },
   9467                               "formulaValue": "A String", # Represents a formula.
   9468                               "numberValue": 3.14, # Represents a double value.
   9469                                   # Note: Dates, Times and DateTimes are represented as doubles in
   9470                                   # "serial number" format.
   9471                             },
   9472                           },
   9473                         ],
   9474                         "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   9475                             # If not specified, sorting is alphabetical by this group's values.
   9476                           "buckets": [ # Determines the bucket from which values are chosen to sort.
   9477                               #
   9478                               # For example, in a pivot table with one row group & two column groups,
   9479                               # the row group can list up to two values. The first value corresponds
   9480                               # to a value within the first column group, and the second value
   9481                               # corresponds to a value in the second column group.  If no values
   9482                               # are listed, this would indicate that the row should be sorted according
   9483                               # to the "Grand Total" over the column groups. If a single value is listed,
   9484                               # this would correspond to using the "Total" of that bucket.
   9485                             { # The kinds of value that a cell in a spreadsheet can have.
   9486                               "stringValue": "A String", # Represents a string value.
   9487                                   # Leading single quotes are not included. For example, if the user typed
   9488                                   # `'123` into the UI, this would be represented as a `stringValue` of
   9489                                   # `"123"`.
   9490                               "boolValue": True or False, # Represents a boolean value.
   9491                               "errorValue": { # An error in a cell. # Represents an error.
   9492                                   # This field is read-only.
   9493                                 "message": "A String", # A message with more information about the error
   9494                                     # (in the spreadsheet's locale).
   9495                                 "type": "A String", # The type of error.
   9496                               },
   9497                               "formulaValue": "A String", # Represents a formula.
   9498                               "numberValue": 3.14, # Represents a double value.
   9499                                   # Note: Dates, Times and DateTimes are represented as doubles in
   9500                                   # "serial number" format.
   9501                             },
   9502                           ],
   9503                           "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   9504                               # grouping should be sorted by.
   9505                         },
   9506                         "sortOrder": "A String", # The order the values in this group should be sorted.
   9507                         "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   9508                             #
   9509                             # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   9510                             # means this group refers to column `C`, whereas the offset `1` would refer
   9511                             # to column `D`.
   9512                       },
   9513                     ],
   9514                   },
   9515                   "hyperlink": "A String", # A hyperlink this cell points to, if any.
   9516                       # This field is read-only.  (To set it, use a `=HYPERLINK` formula
   9517                       # in the userEnteredValue.formulaValue
   9518                       # field.)
   9519                   "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
   9520                       # the calculated value.  For cells with literals, this will be
   9521                       # the same as the user_entered_value.
   9522                       # This field is read-only.
   9523                     "stringValue": "A String", # Represents a string value.
   9524                         # Leading single quotes are not included. For example, if the user typed
   9525                         # `'123` into the UI, this would be represented as a `stringValue` of
   9526                         # `"123"`.
   9527                     "boolValue": True or False, # Represents a boolean value.
   9528                     "errorValue": { # An error in a cell. # Represents an error.
   9529                         # This field is read-only.
   9530                       "message": "A String", # A message with more information about the error
   9531                           # (in the spreadsheet's locale).
   9532                       "type": "A String", # The type of error.
   9533                     },
   9534                     "formulaValue": "A String", # Represents a formula.
   9535                     "numberValue": 3.14, # Represents a double value.
   9536                         # Note: Dates, Times and DateTimes are represented as doubles in
   9537                         # "serial number" format.
   9538                   },
   9539                   "formattedValue": "A String", # The formatted value of the cell.
   9540                       # This is the value as it's shown to the user.
   9541                       # This field is read-only.
   9542                   "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
   9543                       # Note: Dates, Times and DateTimes are represented as doubles in
   9544                       # serial number format.
   9545                     "stringValue": "A String", # Represents a string value.
   9546                         # Leading single quotes are not included. For example, if the user typed
   9547                         # `'123` into the UI, this would be represented as a `stringValue` of
   9548                         # `"123"`.
   9549                     "boolValue": True or False, # Represents a boolean value.
   9550                     "errorValue": { # An error in a cell. # Represents an error.
   9551                         # This field is read-only.
   9552                       "message": "A String", # A message with more information about the error
   9553                           # (in the spreadsheet's locale).
   9554                       "type": "A String", # The type of error.
   9555                     },
   9556                     "formulaValue": "A String", # Represents a formula.
   9557                     "numberValue": 3.14, # Represents a double value.
   9558                         # Note: Dates, Times and DateTimes are represented as doubles in
   9559                         # "serial number" format.
   9560                   },
   9561                   "note": "A String", # Any note on the cell.
   9562                   "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
   9563                       # This includes the results of applying any conditional formatting and,
   9564                       # if the cell contains a formula, the computed number format.
   9565                       # If the effective format is the default format, effective format will
   9566                       # not be written.
   9567                       # This field is read-only.
   9568                     "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   9569                       "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   9570                           # the user's locale will be used if necessary for the given type.
   9571                           # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   9572                           # information about the supported patterns.
   9573                       "type": "A String", # The type of the number format.
   9574                           # When writing, this field must be set.
   9575                     },
   9576                     "textDirection": "A String", # The direction of the text in the cell.
   9577                     "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   9578                         # When updating padding, every field must be specified.
   9579                       "top": 42, # The top padding of the cell.
   9580                       "right": 42, # The right padding of the cell.
   9581                       "bottom": 42, # The bottom padding of the cell.
   9582                       "left": 42, # The left padding of the cell.
   9583                     },
   9584                     "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   9585                     "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   9586                         # for simplicity of conversion to/from color representations in various
   9587                         # languages over compactness; for example, the fields of this representation
   9588                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   9589                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   9590                         # method in iOS; and, with just a little work, it can be easily formatted into
   9591                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   9592                         #
   9593                         # Example (Java):
   9594                         #
   9595                         #      import com.google.type.Color;
   9596                         #
   9597                         #      // ...
   9598                         #      public static java.awt.Color fromProto(Color protocolor) {
   9599                         #        float alpha = protocolor.hasAlpha()
   9600                         #            ? protocolor.getAlpha().getValue()
   9601                         #            : 1.0;
   9602                         #
   9603                         #        return new java.awt.Color(
   9604                         #            protocolor.getRed(),
   9605                         #            protocolor.getGreen(),
   9606                         #            protocolor.getBlue(),
   9607                         #            alpha);
   9608                         #      }
   9609                         #
   9610                         #      public static Color toProto(java.awt.Color color) {
   9611                         #        float red = (float) color.getRed();
   9612                         #        float green = (float) color.getGreen();
   9613                         #        float blue = (float) color.getBlue();
   9614                         #        float denominator = 255.0;
   9615                         #        Color.Builder resultBuilder =
   9616                         #            Color
   9617                         #                .newBuilder()
   9618                         #                .setRed(red / denominator)
   9619                         #                .setGreen(green / denominator)
   9620                         #                .setBlue(blue / denominator);
   9621                         #        int alpha = color.getAlpha();
   9622                         #        if (alpha != 255) {
   9623                         #          result.setAlpha(
   9624                         #              FloatValue
   9625                         #                  .newBuilder()
   9626                         #                  .setValue(((float) alpha) / denominator)
   9627                         #                  .build());
   9628                         #        }
   9629                         #        return resultBuilder.build();
   9630                         #      }
   9631                         #      // ...
   9632                         #
   9633                         # Example (iOS / Obj-C):
   9634                         #
   9635                         #      // ...
   9636                         #      static UIColor* fromProto(Color* protocolor) {
   9637                         #         float red = [protocolor red];
   9638                         #         float green = [protocolor green];
   9639                         #         float blue = [protocolor blue];
   9640                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   9641                         #         float alpha = 1.0;
   9642                         #         if (alpha_wrapper != nil) {
   9643                         #           alpha = [alpha_wrapper value];
   9644                         #         }
   9645                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   9646                         #      }
   9647                         #
   9648                         #      static Color* toProto(UIColor* color) {
   9649                         #          CGFloat red, green, blue, alpha;
   9650                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   9651                         #            return nil;
   9652                         #          }
   9653                         #          Color* result = [Color alloc] init];
   9654                         #          [result setRed:red];
   9655                         #          [result setGreen:green];
   9656                         #          [result setBlue:blue];
   9657                         #          if (alpha <= 0.9999) {
   9658                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   9659                         #          }
   9660                         #          [result autorelease];
   9661                         #          return result;
   9662                         #     }
   9663                         #     // ...
   9664                         #
   9665                         #  Example (JavaScript):
   9666                         #
   9667                         #     // ...
   9668                         #
   9669                         #     var protoToCssColor = function(rgb_color) {
   9670                         #        var redFrac = rgb_color.red || 0.0;
   9671                         #        var greenFrac = rgb_color.green || 0.0;
   9672                         #        var blueFrac = rgb_color.blue || 0.0;
   9673                         #        var red = Math.floor(redFrac * 255);
   9674                         #        var green = Math.floor(greenFrac * 255);
   9675                         #        var blue = Math.floor(blueFrac * 255);
   9676                         #
   9677                         #        if (!('alpha' in rgb_color)) {
   9678                         #           return rgbToCssColor_(red, green, blue);
   9679                         #        }
   9680                         #
   9681                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   9682                         #        var rgbParams = [red, green, blue].join(',');
   9683                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   9684                         #     };
   9685                         #
   9686                         #     var rgbToCssColor_ = function(red, green, blue) {
   9687                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   9688                         #       var hexString = rgbNumber.toString(16);
   9689                         #       var missingZeros = 6 - hexString.length;
   9690                         #       var resultBuilder = ['#'];
   9691                         #       for (var i = 0; i < missingZeros; i++) {
   9692                         #          resultBuilder.push('0');
   9693                         #       }
   9694                         #       resultBuilder.push(hexString);
   9695                         #       return resultBuilder.join('');
   9696                         #     };
   9697                         #
   9698                         #     // ...
   9699                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   9700                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   9701                           # the final pixel color is defined by the equation:
   9702                           #
   9703                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   9704                           #
   9705                           # This means that a value of 1.0 corresponds to a solid color, whereas
   9706                           # a value of 0.0 corresponds to a completely transparent color. This
   9707                           # uses a wrapper message rather than a simple float scalar so that it is
   9708                           # possible to distinguish between a default value and the value being unset.
   9709                           # If omitted, this color object is to be rendered as a solid color
   9710                           # (as if the alpha value had been explicitly given with a value of 1.0).
   9711                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   9712                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   9713                     },
   9714                     "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   9715                     "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   9716                         # Absent values indicate that the field isn't specified.
   9717                       "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   9718                           # for simplicity of conversion to/from color representations in various
   9719                           # languages over compactness; for example, the fields of this representation
   9720                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   9721                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   9722                           # method in iOS; and, with just a little work, it can be easily formatted into
   9723                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   9724                           #
   9725                           # Example (Java):
   9726                           #
   9727                           #      import com.google.type.Color;
   9728                           #
   9729                           #      // ...
   9730                           #      public static java.awt.Color fromProto(Color protocolor) {
   9731                           #        float alpha = protocolor.hasAlpha()
   9732                           #            ? protocolor.getAlpha().getValue()
   9733                           #            : 1.0;
   9734                           #
   9735                           #        return new java.awt.Color(
   9736                           #            protocolor.getRed(),
   9737                           #            protocolor.getGreen(),
   9738                           #            protocolor.getBlue(),
   9739                           #            alpha);
   9740                           #      }
   9741                           #
   9742                           #      public static Color toProto(java.awt.Color color) {
   9743                           #        float red = (float) color.getRed();
   9744                           #        float green = (float) color.getGreen();
   9745                           #        float blue = (float) color.getBlue();
   9746                           #        float denominator = 255.0;
   9747                           #        Color.Builder resultBuilder =
   9748                           #            Color
   9749                           #                .newBuilder()
   9750                           #                .setRed(red / denominator)
   9751                           #                .setGreen(green / denominator)
   9752                           #                .setBlue(blue / denominator);
   9753                           #        int alpha = color.getAlpha();
   9754                           #        if (alpha != 255) {
   9755                           #          result.setAlpha(
   9756                           #              FloatValue
   9757                           #                  .newBuilder()
   9758                           #                  .setValue(((float) alpha) / denominator)
   9759                           #                  .build());
   9760                           #        }
   9761                           #        return resultBuilder.build();
   9762                           #      }
   9763                           #      // ...
   9764                           #
   9765                           # Example (iOS / Obj-C):
   9766                           #
   9767                           #      // ...
   9768                           #      static UIColor* fromProto(Color* protocolor) {
   9769                           #         float red = [protocolor red];
   9770                           #         float green = [protocolor green];
   9771                           #         float blue = [protocolor blue];
   9772                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   9773                           #         float alpha = 1.0;
   9774                           #         if (alpha_wrapper != nil) {
   9775                           #           alpha = [alpha_wrapper value];
   9776                           #         }
   9777                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   9778                           #      }
   9779                           #
   9780                           #      static Color* toProto(UIColor* color) {
   9781                           #          CGFloat red, green, blue, alpha;
   9782                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   9783                           #            return nil;
   9784                           #          }
   9785                           #          Color* result = [Color alloc] init];
   9786                           #          [result setRed:red];
   9787                           #          [result setGreen:green];
   9788                           #          [result setBlue:blue];
   9789                           #          if (alpha <= 0.9999) {
   9790                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   9791                           #          }
   9792                           #          [result autorelease];
   9793                           #          return result;
   9794                           #     }
   9795                           #     // ...
   9796                           #
   9797                           #  Example (JavaScript):
   9798                           #
   9799                           #     // ...
   9800                           #
   9801                           #     var protoToCssColor = function(rgb_color) {
   9802                           #        var redFrac = rgb_color.red || 0.0;
   9803                           #        var greenFrac = rgb_color.green || 0.0;
   9804                           #        var blueFrac = rgb_color.blue || 0.0;
   9805                           #        var red = Math.floor(redFrac * 255);
   9806                           #        var green = Math.floor(greenFrac * 255);
   9807                           #        var blue = Math.floor(blueFrac * 255);
   9808                           #
   9809                           #        if (!('alpha' in rgb_color)) {
   9810                           #           return rgbToCssColor_(red, green, blue);
   9811                           #        }
   9812                           #
   9813                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   9814                           #        var rgbParams = [red, green, blue].join(',');
   9815                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   9816                           #     };
   9817                           #
   9818                           #     var rgbToCssColor_ = function(red, green, blue) {
   9819                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   9820                           #       var hexString = rgbNumber.toString(16);
   9821                           #       var missingZeros = 6 - hexString.length;
   9822                           #       var resultBuilder = ['#'];
   9823                           #       for (var i = 0; i < missingZeros; i++) {
   9824                           #          resultBuilder.push('0');
   9825                           #       }
   9826                           #       resultBuilder.push(hexString);
   9827                           #       return resultBuilder.join('');
   9828                           #     };
   9829                           #
   9830                           #     // ...
   9831                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   9832                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   9833                             # the final pixel color is defined by the equation:
   9834                             #
   9835                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   9836                             #
   9837                             # This means that a value of 1.0 corresponds to a solid color, whereas
   9838                             # a value of 0.0 corresponds to a completely transparent color. This
   9839                             # uses a wrapper message rather than a simple float scalar so that it is
   9840                             # possible to distinguish between a default value and the value being unset.
   9841                             # If omitted, this color object is to be rendered as a solid color
   9842                             # (as if the alpha value had been explicitly given with a value of 1.0).
   9843                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   9844                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   9845                       },
   9846                       "bold": True or False, # True if the text is bold.
   9847                       "strikethrough": True or False, # True if the text has a strikethrough.
   9848                       "fontFamily": "A String", # The font family.
   9849                       "fontSize": 42, # The size of the font.
   9850                       "italic": True or False, # True if the text is italicized.
   9851                       "underline": True or False, # True if the text is underlined.
   9852                     },
   9853                     "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   9854                       "angle": 42, # The angle between the standard orientation and the desired orientation.
   9855                           # Measured in degrees. Valid values are between -90 and 90. Positive
   9856                           # angles are angled upwards, negative are angled downwards.
   9857                           #
   9858                           # Note: For LTR text direction positive angles are in the counterclockwise
   9859                           # direction, whereas for RTL they are in the clockwise direction
   9860                       "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   9861                           # characters is unchanged.
   9862                           # For example:
   9863                           #
   9864                           #     | V |
   9865                           #     | e |
   9866                           #     | r |
   9867                           #     | t |
   9868                           #     | i |
   9869                           #     | c |
   9870                           #     | a |
   9871                           #     | l |
   9872                     },
   9873                     "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   9874                     "borders": { # The borders of the cell. # The borders of the cell.
   9875                       "top": { # A border along a cell. # The top border of the cell.
   9876                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   9877                             # for simplicity of conversion to/from color representations in various
   9878                             # languages over compactness; for example, the fields of this representation
   9879                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   9880                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   9881                             # method in iOS; and, with just a little work, it can be easily formatted into
   9882                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   9883                             #
   9884                             # Example (Java):
   9885                             #
   9886                             #      import com.google.type.Color;
   9887                             #
   9888                             #      // ...
   9889                             #      public static java.awt.Color fromProto(Color protocolor) {
   9890                             #        float alpha = protocolor.hasAlpha()
   9891                             #            ? protocolor.getAlpha().getValue()
   9892                             #            : 1.0;
   9893                             #
   9894                             #        return new java.awt.Color(
   9895                             #            protocolor.getRed(),
   9896                             #            protocolor.getGreen(),
   9897                             #            protocolor.getBlue(),
   9898                             #            alpha);
   9899                             #      }
   9900                             #
   9901                             #      public static Color toProto(java.awt.Color color) {
   9902                             #        float red = (float) color.getRed();
   9903                             #        float green = (float) color.getGreen();
   9904                             #        float blue = (float) color.getBlue();
   9905                             #        float denominator = 255.0;
   9906                             #        Color.Builder resultBuilder =
   9907                             #            Color
   9908                             #                .newBuilder()
   9909                             #                .setRed(red / denominator)
   9910                             #                .setGreen(green / denominator)
   9911                             #                .setBlue(blue / denominator);
   9912                             #        int alpha = color.getAlpha();
   9913                             #        if (alpha != 255) {
   9914                             #          result.setAlpha(
   9915                             #              FloatValue
   9916                             #                  .newBuilder()
   9917                             #                  .setValue(((float) alpha) / denominator)
   9918                             #                  .build());
   9919                             #        }
   9920                             #        return resultBuilder.build();
   9921                             #      }
   9922                             #      // ...
   9923                             #
   9924                             # Example (iOS / Obj-C):
   9925                             #
   9926                             #      // ...
   9927                             #      static UIColor* fromProto(Color* protocolor) {
   9928                             #         float red = [protocolor red];
   9929                             #         float green = [protocolor green];
   9930                             #         float blue = [protocolor blue];
   9931                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   9932                             #         float alpha = 1.0;
   9933                             #         if (alpha_wrapper != nil) {
   9934                             #           alpha = [alpha_wrapper value];
   9935                             #         }
   9936                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   9937                             #      }
   9938                             #
   9939                             #      static Color* toProto(UIColor* color) {
   9940                             #          CGFloat red, green, blue, alpha;
   9941                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   9942                             #            return nil;
   9943                             #          }
   9944                             #          Color* result = [Color alloc] init];
   9945                             #          [result setRed:red];
   9946                             #          [result setGreen:green];
   9947                             #          [result setBlue:blue];
   9948                             #          if (alpha <= 0.9999) {
   9949                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   9950                             #          }
   9951                             #          [result autorelease];
   9952                             #          return result;
   9953                             #     }
   9954                             #     // ...
   9955                             #
   9956                             #  Example (JavaScript):
   9957                             #
   9958                             #     // ...
   9959                             #
   9960                             #     var protoToCssColor = function(rgb_color) {
   9961                             #        var redFrac = rgb_color.red || 0.0;
   9962                             #        var greenFrac = rgb_color.green || 0.0;
   9963                             #        var blueFrac = rgb_color.blue || 0.0;
   9964                             #        var red = Math.floor(redFrac * 255);
   9965                             #        var green = Math.floor(greenFrac * 255);
   9966                             #        var blue = Math.floor(blueFrac * 255);
   9967                             #
   9968                             #        if (!('alpha' in rgb_color)) {
   9969                             #           return rgbToCssColor_(red, green, blue);
   9970                             #        }
   9971                             #
   9972                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   9973                             #        var rgbParams = [red, green, blue].join(',');
   9974                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   9975                             #     };
   9976                             #
   9977                             #     var rgbToCssColor_ = function(red, green, blue) {
   9978                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   9979                             #       var hexString = rgbNumber.toString(16);
   9980                             #       var missingZeros = 6 - hexString.length;
   9981                             #       var resultBuilder = ['#'];
   9982                             #       for (var i = 0; i < missingZeros; i++) {
   9983                             #          resultBuilder.push('0');
   9984                             #       }
   9985                             #       resultBuilder.push(hexString);
   9986                             #       return resultBuilder.join('');
   9987                             #     };
   9988                             #
   9989                             #     // ...
   9990                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   9991                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   9992                               # the final pixel color is defined by the equation:
   9993                               #
   9994                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   9995                               #
   9996                               # This means that a value of 1.0 corresponds to a solid color, whereas
   9997                               # a value of 0.0 corresponds to a completely transparent color. This
   9998                               # uses a wrapper message rather than a simple float scalar so that it is
   9999                               # possible to distinguish between a default value and the value being unset.
   10000                               # If omitted, this color object is to be rendered as a solid color
   10001                               # (as if the alpha value had been explicitly given with a value of 1.0).
   10002                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   10003                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   10004                         },
   10005                         "width": 42, # The width of the border, in pixels.
   10006                             # Deprecated; the width is determined by the "style" field.
   10007                         "style": "A String", # The style of the border.
   10008                       },
   10009                       "right": { # A border along a cell. # The right border of the cell.
   10010                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   10011                             # for simplicity of conversion to/from color representations in various
   10012                             # languages over compactness; for example, the fields of this representation
   10013                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   10014                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   10015                             # method in iOS; and, with just a little work, it can be easily formatted into
   10016                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   10017                             #
   10018                             # Example (Java):
   10019                             #
   10020                             #      import com.google.type.Color;
   10021                             #
   10022                             #      // ...
   10023                             #      public static java.awt.Color fromProto(Color protocolor) {
   10024                             #        float alpha = protocolor.hasAlpha()
   10025                             #            ? protocolor.getAlpha().getValue()
   10026                             #            : 1.0;
   10027                             #
   10028                             #        return new java.awt.Color(
   10029                             #            protocolor.getRed(),
   10030                             #            protocolor.getGreen(),
   10031                             #            protocolor.getBlue(),
   10032                             #            alpha);
   10033                             #      }
   10034                             #
   10035                             #      public static Color toProto(java.awt.Color color) {
   10036                             #        float red = (float) color.getRed();
   10037                             #        float green = (float) color.getGreen();
   10038                             #        float blue = (float) color.getBlue();
   10039                             #        float denominator = 255.0;
   10040                             #        Color.Builder resultBuilder =
   10041                             #            Color
   10042                             #                .newBuilder()
   10043                             #                .setRed(red / denominator)
   10044                             #                .setGreen(green / denominator)
   10045                             #                .setBlue(blue / denominator);
   10046                             #        int alpha = color.getAlpha();
   10047                             #        if (alpha != 255) {
   10048                             #          result.setAlpha(
   10049                             #              FloatValue
   10050                             #                  .newBuilder()
   10051                             #                  .setValue(((float) alpha) / denominator)
   10052                             #                  .build());
   10053                             #        }
   10054                             #        return resultBuilder.build();
   10055                             #      }
   10056                             #      // ...
   10057                             #
   10058                             # Example (iOS / Obj-C):
   10059                             #
   10060                             #      // ...
   10061                             #      static UIColor* fromProto(Color* protocolor) {
   10062                             #         float red = [protocolor red];
   10063                             #         float green = [protocolor green];
   10064                             #         float blue = [protocolor blue];
   10065                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   10066                             #         float alpha = 1.0;
   10067                             #         if (alpha_wrapper != nil) {
   10068                             #           alpha = [alpha_wrapper value];
   10069                             #         }
   10070                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   10071                             #      }
   10072                             #
   10073                             #      static Color* toProto(UIColor* color) {
   10074                             #          CGFloat red, green, blue, alpha;
   10075                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   10076                             #            return nil;
   10077                             #          }
   10078                             #          Color* result = [Color alloc] init];
   10079                             #          [result setRed:red];
   10080                             #          [result setGreen:green];
   10081                             #          [result setBlue:blue];
   10082                             #          if (alpha <= 0.9999) {
   10083                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   10084                             #          }
   10085                             #          [result autorelease];
   10086                             #          return result;
   10087                             #     }
   10088                             #     // ...
   10089                             #
   10090                             #  Example (JavaScript):
   10091                             #
   10092                             #     // ...
   10093                             #
   10094                             #     var protoToCssColor = function(rgb_color) {
   10095                             #        var redFrac = rgb_color.red || 0.0;
   10096                             #        var greenFrac = rgb_color.green || 0.0;
   10097                             #        var blueFrac = rgb_color.blue || 0.0;
   10098                             #        var red = Math.floor(redFrac * 255);
   10099                             #        var green = Math.floor(greenFrac * 255);
   10100                             #        var blue = Math.floor(blueFrac * 255);
   10101                             #
   10102                             #        if (!('alpha' in rgb_color)) {
   10103                             #           return rgbToCssColor_(red, green, blue);
   10104                             #        }
   10105                             #
   10106                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   10107                             #        var rgbParams = [red, green, blue].join(',');
   10108                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   10109                             #     };
   10110                             #
   10111                             #     var rgbToCssColor_ = function(red, green, blue) {
   10112                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   10113                             #       var hexString = rgbNumber.toString(16);
   10114                             #       var missingZeros = 6 - hexString.length;
   10115                             #       var resultBuilder = ['#'];
   10116                             #       for (var i = 0; i < missingZeros; i++) {
   10117                             #          resultBuilder.push('0');
   10118                             #       }
   10119                             #       resultBuilder.push(hexString);
   10120                             #       return resultBuilder.join('');
   10121                             #     };
   10122                             #
   10123                             #     // ...
   10124                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   10125                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   10126                               # the final pixel color is defined by the equation:
   10127                               #
   10128                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   10129                               #
   10130                               # This means that a value of 1.0 corresponds to a solid color, whereas
   10131                               # a value of 0.0 corresponds to a completely transparent color. This
   10132                               # uses a wrapper message rather than a simple float scalar so that it is
   10133                               # possible to distinguish between a default value and the value being unset.
   10134                               # If omitted, this color object is to be rendered as a solid color
   10135                               # (as if the alpha value had been explicitly given with a value of 1.0).
   10136                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   10137                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   10138                         },
   10139                         "width": 42, # The width of the border, in pixels.
   10140                             # Deprecated; the width is determined by the "style" field.
   10141                         "style": "A String", # The style of the border.
   10142                       },
   10143                       "bottom": { # A border along a cell. # The bottom border of the cell.
   10144                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   10145                             # for simplicity of conversion to/from color representations in various
   10146                             # languages over compactness; for example, the fields of this representation
   10147                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   10148                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   10149                             # method in iOS; and, with just a little work, it can be easily formatted into
   10150                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   10151                             #
   10152                             # Example (Java):
   10153                             #
   10154                             #      import com.google.type.Color;
   10155                             #
   10156                             #      // ...
   10157                             #      public static java.awt.Color fromProto(Color protocolor) {
   10158                             #        float alpha = protocolor.hasAlpha()
   10159                             #            ? protocolor.getAlpha().getValue()
   10160                             #            : 1.0;
   10161                             #
   10162                             #        return new java.awt.Color(
   10163                             #            protocolor.getRed(),
   10164                             #            protocolor.getGreen(),
   10165                             #            protocolor.getBlue(),
   10166                             #            alpha);
   10167                             #      }
   10168                             #
   10169                             #      public static Color toProto(java.awt.Color color) {
   10170                             #        float red = (float) color.getRed();
   10171                             #        float green = (float) color.getGreen();
   10172                             #        float blue = (float) color.getBlue();
   10173                             #        float denominator = 255.0;
   10174                             #        Color.Builder resultBuilder =
   10175                             #            Color
   10176                             #                .newBuilder()
   10177                             #                .setRed(red / denominator)
   10178                             #                .setGreen(green / denominator)
   10179                             #                .setBlue(blue / denominator);
   10180                             #        int alpha = color.getAlpha();
   10181                             #        if (alpha != 255) {
   10182                             #          result.setAlpha(
   10183                             #              FloatValue
   10184                             #                  .newBuilder()
   10185                             #                  .setValue(((float) alpha) / denominator)
   10186                             #                  .build());
   10187                             #        }
   10188                             #        return resultBuilder.build();
   10189                             #      }
   10190                             #      // ...
   10191                             #
   10192                             # Example (iOS / Obj-C):
   10193                             #
   10194                             #      // ...
   10195                             #      static UIColor* fromProto(Color* protocolor) {
   10196                             #         float red = [protocolor red];
   10197                             #         float green = [protocolor green];
   10198                             #         float blue = [protocolor blue];
   10199                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   10200                             #         float alpha = 1.0;
   10201                             #         if (alpha_wrapper != nil) {
   10202                             #           alpha = [alpha_wrapper value];
   10203                             #         }
   10204                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   10205                             #      }
   10206                             #
   10207                             #      static Color* toProto(UIColor* color) {
   10208                             #          CGFloat red, green, blue, alpha;
   10209                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   10210                             #            return nil;
   10211                             #          }
   10212                             #          Color* result = [Color alloc] init];
   10213                             #          [result setRed:red];
   10214                             #          [result setGreen:green];
   10215                             #          [result setBlue:blue];
   10216                             #          if (alpha <= 0.9999) {
   10217                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   10218                             #          }
   10219                             #          [result autorelease];
   10220                             #          return result;
   10221                             #     }
   10222                             #     // ...
   10223                             #
   10224                             #  Example (JavaScript):
   10225                             #
   10226                             #     // ...
   10227                             #
   10228                             #     var protoToCssColor = function(rgb_color) {
   10229                             #        var redFrac = rgb_color.red || 0.0;
   10230                             #        var greenFrac = rgb_color.green || 0.0;
   10231                             #        var blueFrac = rgb_color.blue || 0.0;
   10232                             #        var red = Math.floor(redFrac * 255);
   10233                             #        var green = Math.floor(greenFrac * 255);
   10234                             #        var blue = Math.floor(blueFrac * 255);
   10235                             #
   10236                             #        if (!('alpha' in rgb_color)) {
   10237                             #           return rgbToCssColor_(red, green, blue);
   10238                             #        }
   10239                             #
   10240                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   10241                             #        var rgbParams = [red, green, blue].join(',');
   10242                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   10243                             #     };
   10244                             #
   10245                             #     var rgbToCssColor_ = function(red, green, blue) {
   10246                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   10247                             #       var hexString = rgbNumber.toString(16);
   10248                             #       var missingZeros = 6 - hexString.length;
   10249                             #       var resultBuilder = ['#'];
   10250                             #       for (var i = 0; i < missingZeros; i++) {
   10251                             #          resultBuilder.push('0');
   10252                             #       }
   10253                             #       resultBuilder.push(hexString);
   10254                             #       return resultBuilder.join('');
   10255                             #     };
   10256                             #
   10257                             #     // ...
   10258                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   10259                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   10260                               # the final pixel color is defined by the equation:
   10261                               #
   10262                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   10263                               #
   10264                               # This means that a value of 1.0 corresponds to a solid color, whereas
   10265                               # a value of 0.0 corresponds to a completely transparent color. This
   10266                               # uses a wrapper message rather than a simple float scalar so that it is
   10267                               # possible to distinguish between a default value and the value being unset.
   10268                               # If omitted, this color object is to be rendered as a solid color
   10269                               # (as if the alpha value had been explicitly given with a value of 1.0).
   10270                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   10271                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   10272                         },
   10273                         "width": 42, # The width of the border, in pixels.
   10274                             # Deprecated; the width is determined by the "style" field.
   10275                         "style": "A String", # The style of the border.
   10276                       },
   10277                       "left": { # A border along a cell. # The left border of the cell.
   10278                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   10279                             # for simplicity of conversion to/from color representations in various
   10280                             # languages over compactness; for example, the fields of this representation
   10281                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   10282                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   10283                             # method in iOS; and, with just a little work, it can be easily formatted into
   10284                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   10285                             #
   10286                             # Example (Java):
   10287                             #
   10288                             #      import com.google.type.Color;
   10289                             #
   10290                             #      // ...
   10291                             #      public static java.awt.Color fromProto(Color protocolor) {
   10292                             #        float alpha = protocolor.hasAlpha()
   10293                             #            ? protocolor.getAlpha().getValue()
   10294                             #            : 1.0;
   10295                             #
   10296                             #        return new java.awt.Color(
   10297                             #            protocolor.getRed(),
   10298                             #            protocolor.getGreen(),
   10299                             #            protocolor.getBlue(),
   10300                             #            alpha);
   10301                             #      }
   10302                             #
   10303                             #      public static Color toProto(java.awt.Color color) {
   10304                             #        float red = (float) color.getRed();
   10305                             #        float green = (float) color.getGreen();
   10306                             #        float blue = (float) color.getBlue();
   10307                             #        float denominator = 255.0;
   10308                             #        Color.Builder resultBuilder =
   10309                             #            Color
   10310                             #                .newBuilder()
   10311                             #                .setRed(red / denominator)
   10312                             #                .setGreen(green / denominator)
   10313                             #                .setBlue(blue / denominator);
   10314                             #        int alpha = color.getAlpha();
   10315                             #        if (alpha != 255) {
   10316                             #          result.setAlpha(
   10317                             #              FloatValue
   10318                             #                  .newBuilder()
   10319                             #                  .setValue(((float) alpha) / denominator)
   10320                             #                  .build());
   10321                             #        }
   10322                             #        return resultBuilder.build();
   10323                             #      }
   10324                             #      // ...
   10325                             #
   10326                             # Example (iOS / Obj-C):
   10327                             #
   10328                             #      // ...
   10329                             #      static UIColor* fromProto(Color* protocolor) {
   10330                             #         float red = [protocolor red];
   10331                             #         float green = [protocolor green];
   10332                             #         float blue = [protocolor blue];
   10333                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   10334                             #         float alpha = 1.0;
   10335                             #         if (alpha_wrapper != nil) {
   10336                             #           alpha = [alpha_wrapper value];
   10337                             #         }
   10338                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   10339                             #      }
   10340                             #
   10341                             #      static Color* toProto(UIColor* color) {
   10342                             #          CGFloat red, green, blue, alpha;
   10343                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   10344                             #            return nil;
   10345                             #          }
   10346                             #          Color* result = [Color alloc] init];
   10347                             #          [result setRed:red];
   10348                             #          [result setGreen:green];
   10349                             #          [result setBlue:blue];
   10350                             #          if (alpha <= 0.9999) {
   10351                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   10352                             #          }
   10353                             #          [result autorelease];
   10354                             #          return result;
   10355                             #     }
   10356                             #     // ...
   10357                             #
   10358                             #  Example (JavaScript):
   10359                             #
   10360                             #     // ...
   10361                             #
   10362                             #     var protoToCssColor = function(rgb_color) {
   10363                             #        var redFrac = rgb_color.red || 0.0;
   10364                             #        var greenFrac = rgb_color.green || 0.0;
   10365                             #        var blueFrac = rgb_color.blue || 0.0;
   10366                             #        var red = Math.floor(redFrac * 255);
   10367                             #        var green = Math.floor(greenFrac * 255);
   10368                             #        var blue = Math.floor(blueFrac * 255);
   10369                             #
   10370                             #        if (!('alpha' in rgb_color)) {
   10371                             #           return rgbToCssColor_(red, green, blue);
   10372                             #        }
   10373                             #
   10374                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   10375                             #        var rgbParams = [red, green, blue].join(',');
   10376                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   10377                             #     };
   10378                             #
   10379                             #     var rgbToCssColor_ = function(red, green, blue) {
   10380                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   10381                             #       var hexString = rgbNumber.toString(16);
   10382                             #       var missingZeros = 6 - hexString.length;
   10383                             #       var resultBuilder = ['#'];
   10384                             #       for (var i = 0; i < missingZeros; i++) {
   10385                             #          resultBuilder.push('0');
   10386                             #       }
   10387                             #       resultBuilder.push(hexString);
   10388                             #       return resultBuilder.join('');
   10389                             #     };
   10390                             #
   10391                             #     // ...
   10392                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   10393                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   10394                               # the final pixel color is defined by the equation:
   10395                               #
   10396                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   10397                               #
   10398                               # This means that a value of 1.0 corresponds to a solid color, whereas
   10399                               # a value of 0.0 corresponds to a completely transparent color. This
   10400                               # uses a wrapper message rather than a simple float scalar so that it is
   10401                               # possible to distinguish between a default value and the value being unset.
   10402                               # If omitted, this color object is to be rendered as a solid color
   10403                               # (as if the alpha value had been explicitly given with a value of 1.0).
   10404                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   10405                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   10406                         },
   10407                         "width": 42, # The width of the border, in pixels.
   10408                             # Deprecated; the width is determined by the "style" field.
   10409                         "style": "A String", # The style of the border.
   10410                       },
   10411                     },
   10412                     "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   10413                   },
   10414                   "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
   10415                       #
   10416                       # When writing, the new format will be merged with the existing format.
   10417                     "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   10418                       "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   10419                           # the user's locale will be used if necessary for the given type.
   10420                           # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   10421                           # information about the supported patterns.
   10422                       "type": "A String", # The type of the number format.
   10423                           # When writing, this field must be set.
   10424                     },
   10425                     "textDirection": "A String", # The direction of the text in the cell.
   10426                     "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   10427                         # When updating padding, every field must be specified.
   10428                       "top": 42, # The top padding of the cell.
   10429                       "right": 42, # The right padding of the cell.
   10430                       "bottom": 42, # The bottom padding of the cell.
   10431                       "left": 42, # The left padding of the cell.
   10432                     },
   10433                     "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   10434                     "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   10435                         # for simplicity of conversion to/from color representations in various
   10436                         # languages over compactness; for example, the fields of this representation
   10437                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   10438                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   10439                         # method in iOS; and, with just a little work, it can be easily formatted into
   10440                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   10441                         #
   10442                         # Example (Java):
   10443                         #
   10444                         #      import com.google.type.Color;
   10445                         #
   10446                         #      // ...
   10447                         #      public static java.awt.Color fromProto(Color protocolor) {
   10448                         #        float alpha = protocolor.hasAlpha()
   10449                         #            ? protocolor.getAlpha().getValue()
   10450                         #            : 1.0;
   10451                         #
   10452                         #        return new java.awt.Color(
   10453                         #            protocolor.getRed(),
   10454                         #            protocolor.getGreen(),
   10455                         #            protocolor.getBlue(),
   10456                         #            alpha);
   10457                         #      }
   10458                         #
   10459                         #      public static Color toProto(java.awt.Color color) {
   10460                         #        float red = (float) color.getRed();
   10461                         #        float green = (float) color.getGreen();
   10462                         #        float blue = (float) color.getBlue();
   10463                         #        float denominator = 255.0;
   10464                         #        Color.Builder resultBuilder =
   10465                         #            Color
   10466                         #                .newBuilder()
   10467                         #                .setRed(red / denominator)
   10468                         #                .setGreen(green / denominator)
   10469                         #                .setBlue(blue / denominator);
   10470                         #        int alpha = color.getAlpha();
   10471                         #        if (alpha != 255) {
   10472                         #          result.setAlpha(
   10473                         #              FloatValue
   10474                         #                  .newBuilder()
   10475                         #                  .setValue(((float) alpha) / denominator)
   10476                         #                  .build());
   10477                         #        }
   10478                         #        return resultBuilder.build();
   10479                         #      }
   10480                         #      // ...
   10481                         #
   10482                         # Example (iOS / Obj-C):
   10483                         #
   10484                         #      // ...
   10485                         #      static UIColor* fromProto(Color* protocolor) {
   10486                         #         float red = [protocolor red];
   10487                         #         float green = [protocolor green];
   10488                         #         float blue = [protocolor blue];
   10489                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   10490                         #         float alpha = 1.0;
   10491                         #         if (alpha_wrapper != nil) {
   10492                         #           alpha = [alpha_wrapper value];
   10493                         #         }
   10494                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   10495                         #      }
   10496                         #
   10497                         #      static Color* toProto(UIColor* color) {
   10498                         #          CGFloat red, green, blue, alpha;
   10499                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   10500                         #            return nil;
   10501                         #          }
   10502                         #          Color* result = [Color alloc] init];
   10503                         #          [result setRed:red];
   10504                         #          [result setGreen:green];
   10505                         #          [result setBlue:blue];
   10506                         #          if (alpha <= 0.9999) {
   10507                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   10508                         #          }
   10509                         #          [result autorelease];
   10510                         #          return result;
   10511                         #     }
   10512                         #     // ...
   10513                         #
   10514                         #  Example (JavaScript):
   10515                         #
   10516                         #     // ...
   10517                         #
   10518                         #     var protoToCssColor = function(rgb_color) {
   10519                         #        var redFrac = rgb_color.red || 0.0;
   10520                         #        var greenFrac = rgb_color.green || 0.0;
   10521                         #        var blueFrac = rgb_color.blue || 0.0;
   10522                         #        var red = Math.floor(redFrac * 255);
   10523                         #        var green = Math.floor(greenFrac * 255);
   10524                         #        var blue = Math.floor(blueFrac * 255);
   10525                         #
   10526                         #        if (!('alpha' in rgb_color)) {
   10527                         #           return rgbToCssColor_(red, green, blue);
   10528                         #        }
   10529                         #
   10530                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   10531                         #        var rgbParams = [red, green, blue].join(',');
   10532                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   10533                         #     };
   10534                         #
   10535                         #     var rgbToCssColor_ = function(red, green, blue) {
   10536                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   10537                         #       var hexString = rgbNumber.toString(16);
   10538                         #       var missingZeros = 6 - hexString.length;
   10539                         #       var resultBuilder = ['#'];
   10540                         #       for (var i = 0; i < missingZeros; i++) {
   10541                         #          resultBuilder.push('0');
   10542                         #       }
   10543                         #       resultBuilder.push(hexString);
   10544                         #       return resultBuilder.join('');
   10545                         #     };
   10546                         #
   10547                         #     // ...
   10548                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   10549                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   10550                           # the final pixel color is defined by the equation:
   10551                           #
   10552                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   10553                           #
   10554                           # This means that a value of 1.0 corresponds to a solid color, whereas
   10555                           # a value of 0.0 corresponds to a completely transparent color. This
   10556                           # uses a wrapper message rather than a simple float scalar so that it is
   10557                           # possible to distinguish between a default value and the value being unset.
   10558                           # If omitted, this color object is to be rendered as a solid color
   10559                           # (as if the alpha value had been explicitly given with a value of 1.0).
   10560                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   10561                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   10562                     },
   10563                     "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   10564                     "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   10565                         # Absent values indicate that the field isn't specified.
   10566                       "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   10567                           # for simplicity of conversion to/from color representations in various
   10568                           # languages over compactness; for example, the fields of this representation
   10569                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   10570                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   10571                           # method in iOS; and, with just a little work, it can be easily formatted into
   10572                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   10573                           #
   10574                           # Example (Java):
   10575                           #
   10576                           #      import com.google.type.Color;
   10577                           #
   10578                           #      // ...
   10579                           #      public static java.awt.Color fromProto(Color protocolor) {
   10580                           #        float alpha = protocolor.hasAlpha()
   10581                           #            ? protocolor.getAlpha().getValue()
   10582                           #            : 1.0;
   10583                           #
   10584                           #        return new java.awt.Color(
   10585                           #            protocolor.getRed(),
   10586                           #            protocolor.getGreen(),
   10587                           #            protocolor.getBlue(),
   10588                           #            alpha);
   10589                           #      }
   10590                           #
   10591                           #      public static Color toProto(java.awt.Color color) {
   10592                           #        float red = (float) color.getRed();
   10593                           #        float green = (float) color.getGreen();
   10594                           #        float blue = (float) color.getBlue();
   10595                           #        float denominator = 255.0;
   10596                           #        Color.Builder resultBuilder =
   10597                           #            Color
   10598                           #                .newBuilder()
   10599                           #                .setRed(red / denominator)
   10600                           #                .setGreen(green / denominator)
   10601                           #                .setBlue(blue / denominator);
   10602                           #        int alpha = color.getAlpha();
   10603                           #        if (alpha != 255) {
   10604                           #          result.setAlpha(
   10605                           #              FloatValue
   10606                           #                  .newBuilder()
   10607                           #                  .setValue(((float) alpha) / denominator)
   10608                           #                  .build());
   10609                           #        }
   10610                           #        return resultBuilder.build();
   10611                           #      }
   10612                           #      // ...
   10613                           #
   10614                           # Example (iOS / Obj-C):
   10615                           #
   10616                           #      // ...
   10617                           #      static UIColor* fromProto(Color* protocolor) {
   10618                           #         float red = [protocolor red];
   10619                           #         float green = [protocolor green];
   10620                           #         float blue = [protocolor blue];
   10621                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   10622                           #         float alpha = 1.0;
   10623                           #         if (alpha_wrapper != nil) {
   10624                           #           alpha = [alpha_wrapper value];
   10625                           #         }
   10626                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   10627                           #      }
   10628                           #
   10629                           #      static Color* toProto(UIColor* color) {
   10630                           #          CGFloat red, green, blue, alpha;
   10631                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   10632                           #            return nil;
   10633                           #          }
   10634                           #          Color* result = [Color alloc] init];
   10635                           #          [result setRed:red];
   10636                           #          [result setGreen:green];
   10637                           #          [result setBlue:blue];
   10638                           #          if (alpha <= 0.9999) {
   10639                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   10640                           #          }
   10641                           #          [result autorelease];
   10642                           #          return result;
   10643                           #     }
   10644                           #     // ...
   10645                           #
   10646                           #  Example (JavaScript):
   10647                           #
   10648                           #     // ...
   10649                           #
   10650                           #     var protoToCssColor = function(rgb_color) {
   10651                           #        var redFrac = rgb_color.red || 0.0;
   10652                           #        var greenFrac = rgb_color.green || 0.0;
   10653                           #        var blueFrac = rgb_color.blue || 0.0;
   10654                           #        var red = Math.floor(redFrac * 255);
   10655                           #        var green = Math.floor(greenFrac * 255);
   10656                           #        var blue = Math.floor(blueFrac * 255);
   10657                           #
   10658                           #        if (!('alpha' in rgb_color)) {
   10659                           #           return rgbToCssColor_(red, green, blue);
   10660                           #        }
   10661                           #
   10662                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   10663                           #        var rgbParams = [red, green, blue].join(',');
   10664                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   10665                           #     };
   10666                           #
   10667                           #     var rgbToCssColor_ = function(red, green, blue) {
   10668                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   10669                           #       var hexString = rgbNumber.toString(16);
   10670                           #       var missingZeros = 6 - hexString.length;
   10671                           #       var resultBuilder = ['#'];
   10672                           #       for (var i = 0; i < missingZeros; i++) {
   10673                           #          resultBuilder.push('0');
   10674                           #       }
   10675                           #       resultBuilder.push(hexString);
   10676                           #       return resultBuilder.join('');
   10677                           #     };
   10678                           #
   10679                           #     // ...
   10680                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   10681                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   10682                             # the final pixel color is defined by the equation:
   10683                             #
   10684                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   10685                             #
   10686                             # This means that a value of 1.0 corresponds to a solid color, whereas
   10687                             # a value of 0.0 corresponds to a completely transparent color. This
   10688                             # uses a wrapper message rather than a simple float scalar so that it is
   10689                             # possible to distinguish between a default value and the value being unset.
   10690                             # If omitted, this color object is to be rendered as a solid color
   10691                             # (as if the alpha value had been explicitly given with a value of 1.0).
   10692                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   10693                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   10694                       },
   10695                       "bold": True or False, # True if the text is bold.
   10696                       "strikethrough": True or False, # True if the text has a strikethrough.
   10697                       "fontFamily": "A String", # The font family.
   10698                       "fontSize": 42, # The size of the font.
   10699                       "italic": True or False, # True if the text is italicized.
   10700                       "underline": True or False, # True if the text is underlined.
   10701                     },
   10702                     "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   10703                       "angle": 42, # The angle between the standard orientation and the desired orientation.
   10704                           # Measured in degrees. Valid values are between -90 and 90. Positive
   10705                           # angles are angled upwards, negative are angled downwards.
   10706                           #
   10707                           # Note: For LTR text direction positive angles are in the counterclockwise
   10708                           # direction, whereas for RTL they are in the clockwise direction
   10709                       "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   10710                           # characters is unchanged.
   10711                           # For example:
   10712                           #
   10713                           #     | V |
   10714                           #     | e |
   10715                           #     | r |
   10716                           #     | t |
   10717                           #     | i |
   10718                           #     | c |
   10719                           #     | a |
   10720                           #     | l |
   10721                     },
   10722                     "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   10723                     "borders": { # The borders of the cell. # The borders of the cell.
   10724                       "top": { # A border along a cell. # The top border of the cell.
   10725                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   10726                             # for simplicity of conversion to/from color representations in various
   10727                             # languages over compactness; for example, the fields of this representation
   10728                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   10729                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   10730                             # method in iOS; and, with just a little work, it can be easily formatted into
   10731                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   10732                             #
   10733                             # Example (Java):
   10734                             #
   10735                             #      import com.google.type.Color;
   10736                             #
   10737                             #      // ...
   10738                             #      public static java.awt.Color fromProto(Color protocolor) {
   10739                             #        float alpha = protocolor.hasAlpha()
   10740                             #            ? protocolor.getAlpha().getValue()
   10741                             #            : 1.0;
   10742                             #
   10743                             #        return new java.awt.Color(
   10744                             #            protocolor.getRed(),
   10745                             #            protocolor.getGreen(),
   10746                             #            protocolor.getBlue(),
   10747                             #            alpha);
   10748                             #      }
   10749                             #
   10750                             #      public static Color toProto(java.awt.Color color) {
   10751                             #        float red = (float) color.getRed();
   10752                             #        float green = (float) color.getGreen();
   10753                             #        float blue = (float) color.getBlue();
   10754                             #        float denominator = 255.0;
   10755                             #        Color.Builder resultBuilder =
   10756                             #            Color
   10757                             #                .newBuilder()
   10758                             #                .setRed(red / denominator)
   10759                             #                .setGreen(green / denominator)
   10760                             #                .setBlue(blue / denominator);
   10761                             #        int alpha = color.getAlpha();
   10762                             #        if (alpha != 255) {
   10763                             #          result.setAlpha(
   10764                             #              FloatValue
   10765                             #                  .newBuilder()
   10766                             #                  .setValue(((float) alpha) / denominator)
   10767                             #                  .build());
   10768                             #        }
   10769                             #        return resultBuilder.build();
   10770                             #      }
   10771                             #      // ...
   10772                             #
   10773                             # Example (iOS / Obj-C):
   10774                             #
   10775                             #      // ...
   10776                             #      static UIColor* fromProto(Color* protocolor) {
   10777                             #         float red = [protocolor red];
   10778                             #         float green = [protocolor green];
   10779                             #         float blue = [protocolor blue];
   10780                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   10781                             #         float alpha = 1.0;
   10782                             #         if (alpha_wrapper != nil) {
   10783                             #           alpha = [alpha_wrapper value];
   10784                             #         }
   10785                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   10786                             #      }
   10787                             #
   10788                             #      static Color* toProto(UIColor* color) {
   10789                             #          CGFloat red, green, blue, alpha;
   10790                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   10791                             #            return nil;
   10792                             #          }
   10793                             #          Color* result = [Color alloc] init];
   10794                             #          [result setRed:red];
   10795                             #          [result setGreen:green];
   10796                             #          [result setBlue:blue];
   10797                             #          if (alpha <= 0.9999) {
   10798                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   10799                             #          }
   10800                             #          [result autorelease];
   10801                             #          return result;
   10802                             #     }
   10803                             #     // ...
   10804                             #
   10805                             #  Example (JavaScript):
   10806                             #
   10807                             #     // ...
   10808                             #
   10809                             #     var protoToCssColor = function(rgb_color) {
   10810                             #        var redFrac = rgb_color.red || 0.0;
   10811                             #        var greenFrac = rgb_color.green || 0.0;
   10812                             #        var blueFrac = rgb_color.blue || 0.0;
   10813                             #        var red = Math.floor(redFrac * 255);
   10814                             #        var green = Math.floor(greenFrac * 255);
   10815                             #        var blue = Math.floor(blueFrac * 255);
   10816                             #
   10817                             #        if (!('alpha' in rgb_color)) {
   10818                             #           return rgbToCssColor_(red, green, blue);
   10819                             #        }
   10820                             #
   10821                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   10822                             #        var rgbParams = [red, green, blue].join(',');
   10823                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   10824                             #     };
   10825                             #
   10826                             #     var rgbToCssColor_ = function(red, green, blue) {
   10827                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   10828                             #       var hexString = rgbNumber.toString(16);
   10829                             #       var missingZeros = 6 - hexString.length;
   10830                             #       var resultBuilder = ['#'];
   10831                             #       for (var i = 0; i < missingZeros; i++) {
   10832                             #          resultBuilder.push('0');
   10833                             #       }
   10834                             #       resultBuilder.push(hexString);
   10835                             #       return resultBuilder.join('');
   10836                             #     };
   10837                             #
   10838                             #     // ...
   10839                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   10840                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   10841                               # the final pixel color is defined by the equation:
   10842                               #
   10843                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   10844                               #
   10845                               # This means that a value of 1.0 corresponds to a solid color, whereas
   10846                               # a value of 0.0 corresponds to a completely transparent color. This
   10847                               # uses a wrapper message rather than a simple float scalar so that it is
   10848                               # possible to distinguish between a default value and the value being unset.
   10849                               # If omitted, this color object is to be rendered as a solid color
   10850                               # (as if the alpha value had been explicitly given with a value of 1.0).
   10851                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   10852                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   10853                         },
   10854                         "width": 42, # The width of the border, in pixels.
   10855                             # Deprecated; the width is determined by the "style" field.
   10856                         "style": "A String", # The style of the border.
   10857                       },
   10858                       "right": { # A border along a cell. # The right border of the cell.
   10859                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   10860                             # for simplicity of conversion to/from color representations in various
   10861                             # languages over compactness; for example, the fields of this representation
   10862                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   10863                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   10864                             # method in iOS; and, with just a little work, it can be easily formatted into
   10865                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   10866                             #
   10867                             # Example (Java):
   10868                             #
   10869                             #      import com.google.type.Color;
   10870                             #
   10871                             #      // ...
   10872                             #      public static java.awt.Color fromProto(Color protocolor) {
   10873                             #        float alpha = protocolor.hasAlpha()
   10874                             #            ? protocolor.getAlpha().getValue()
   10875                             #            : 1.0;
   10876                             #
   10877                             #        return new java.awt.Color(
   10878                             #            protocolor.getRed(),
   10879                             #            protocolor.getGreen(),
   10880                             #            protocolor.getBlue(),
   10881                             #            alpha);
   10882                             #      }
   10883                             #
   10884                             #      public static Color toProto(java.awt.Color color) {
   10885                             #        float red = (float) color.getRed();
   10886                             #        float green = (float) color.getGreen();
   10887                             #        float blue = (float) color.getBlue();
   10888                             #        float denominator = 255.0;
   10889                             #        Color.Builder resultBuilder =
   10890                             #            Color
   10891                             #                .newBuilder()
   10892                             #                .setRed(red / denominator)
   10893                             #                .setGreen(green / denominator)
   10894                             #                .setBlue(blue / denominator);
   10895                             #        int alpha = color.getAlpha();
   10896                             #        if (alpha != 255) {
   10897                             #          result.setAlpha(
   10898                             #              FloatValue
   10899                             #                  .newBuilder()
   10900                             #                  .setValue(((float) alpha) / denominator)
   10901                             #                  .build());
   10902                             #        }
   10903                             #        return resultBuilder.build();
   10904                             #      }
   10905                             #      // ...
   10906                             #
   10907                             # Example (iOS / Obj-C):
   10908                             #
   10909                             #      // ...
   10910                             #      static UIColor* fromProto(Color* protocolor) {
   10911                             #         float red = [protocolor red];
   10912                             #         float green = [protocolor green];
   10913                             #         float blue = [protocolor blue];
   10914                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   10915                             #         float alpha = 1.0;
   10916                             #         if (alpha_wrapper != nil) {
   10917                             #           alpha = [alpha_wrapper value];
   10918                             #         }
   10919                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   10920                             #      }
   10921                             #
   10922                             #      static Color* toProto(UIColor* color) {
   10923                             #          CGFloat red, green, blue, alpha;
   10924                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   10925                             #            return nil;
   10926                             #          }
   10927                             #          Color* result = [Color alloc] init];
   10928                             #          [result setRed:red];
   10929                             #          [result setGreen:green];
   10930                             #          [result setBlue:blue];
   10931                             #          if (alpha <= 0.9999) {
   10932                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   10933                             #          }
   10934                             #          [result autorelease];
   10935                             #          return result;
   10936                             #     }
   10937                             #     // ...
   10938                             #
   10939                             #  Example (JavaScript):
   10940                             #
   10941                             #     // ...
   10942                             #
   10943                             #     var protoToCssColor = function(rgb_color) {
   10944                             #        var redFrac = rgb_color.red || 0.0;
   10945                             #        var greenFrac = rgb_color.green || 0.0;
   10946                             #        var blueFrac = rgb_color.blue || 0.0;
   10947                             #        var red = Math.floor(redFrac * 255);
   10948                             #        var green = Math.floor(greenFrac * 255);
   10949                             #        var blue = Math.floor(blueFrac * 255);
   10950                             #
   10951                             #        if (!('alpha' in rgb_color)) {
   10952                             #           return rgbToCssColor_(red, green, blue);
   10953                             #        }
   10954                             #
   10955                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   10956                             #        var rgbParams = [red, green, blue].join(',');
   10957                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   10958                             #     };
   10959                             #
   10960                             #     var rgbToCssColor_ = function(red, green, blue) {
   10961                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   10962                             #       var hexString = rgbNumber.toString(16);
   10963                             #       var missingZeros = 6 - hexString.length;
   10964                             #       var resultBuilder = ['#'];
   10965                             #       for (var i = 0; i < missingZeros; i++) {
   10966                             #          resultBuilder.push('0');
   10967                             #       }
   10968                             #       resultBuilder.push(hexString);
   10969                             #       return resultBuilder.join('');
   10970                             #     };
   10971                             #
   10972                             #     // ...
   10973                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   10974                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   10975                               # the final pixel color is defined by the equation:
   10976                               #
   10977                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   10978                               #
   10979                               # This means that a value of 1.0 corresponds to a solid color, whereas
   10980                               # a value of 0.0 corresponds to a completely transparent color. This
   10981                               # uses a wrapper message rather than a simple float scalar so that it is
   10982                               # possible to distinguish between a default value and the value being unset.
   10983                               # If omitted, this color object is to be rendered as a solid color
   10984                               # (as if the alpha value had been explicitly given with a value of 1.0).
   10985                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   10986                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   10987                         },
   10988                         "width": 42, # The width of the border, in pixels.
   10989                             # Deprecated; the width is determined by the "style" field.
   10990                         "style": "A String", # The style of the border.
   10991                       },
   10992                       "bottom": { # A border along a cell. # The bottom border of the cell.
   10993                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   10994                             # for simplicity of conversion to/from color representations in various
   10995                             # languages over compactness; for example, the fields of this representation
   10996                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   10997                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   10998                             # method in iOS; and, with just a little work, it can be easily formatted into
   10999                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   11000                             #
   11001                             # Example (Java):
   11002                             #
   11003                             #      import com.google.type.Color;
   11004                             #
   11005                             #      // ...
   11006                             #      public static java.awt.Color fromProto(Color protocolor) {
   11007                             #        float alpha = protocolor.hasAlpha()
   11008                             #            ? protocolor.getAlpha().getValue()
   11009                             #            : 1.0;
   11010                             #
   11011                             #        return new java.awt.Color(
   11012                             #            protocolor.getRed(),
   11013                             #            protocolor.getGreen(),
   11014                             #            protocolor.getBlue(),
   11015                             #            alpha);
   11016                             #      }
   11017                             #
   11018                             #      public static Color toProto(java.awt.Color color) {
   11019                             #        float red = (float) color.getRed();
   11020                             #        float green = (float) color.getGreen();
   11021                             #        float blue = (float) color.getBlue();
   11022                             #        float denominator = 255.0;
   11023                             #        Color.Builder resultBuilder =
   11024                             #            Color
   11025                             #                .newBuilder()
   11026                             #                .setRed(red / denominator)
   11027                             #                .setGreen(green / denominator)
   11028                             #                .setBlue(blue / denominator);
   11029                             #        int alpha = color.getAlpha();
   11030                             #        if (alpha != 255) {
   11031                             #          result.setAlpha(
   11032                             #              FloatValue
   11033                             #                  .newBuilder()
   11034                             #                  .setValue(((float) alpha) / denominator)
   11035                             #                  .build());
   11036                             #        }
   11037                             #        return resultBuilder.build();
   11038                             #      }
   11039                             #      // ...
   11040                             #
   11041                             # Example (iOS / Obj-C):
   11042                             #
   11043                             #      // ...
   11044                             #      static UIColor* fromProto(Color* protocolor) {
   11045                             #         float red = [protocolor red];
   11046                             #         float green = [protocolor green];
   11047                             #         float blue = [protocolor blue];
   11048                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   11049                             #         float alpha = 1.0;
   11050                             #         if (alpha_wrapper != nil) {
   11051                             #           alpha = [alpha_wrapper value];
   11052                             #         }
   11053                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   11054                             #      }
   11055                             #
   11056                             #      static Color* toProto(UIColor* color) {
   11057                             #          CGFloat red, green, blue, alpha;
   11058                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   11059                             #            return nil;
   11060                             #          }
   11061                             #          Color* result = [Color alloc] init];
   11062                             #          [result setRed:red];
   11063                             #          [result setGreen:green];
   11064                             #          [result setBlue:blue];
   11065                             #          if (alpha <= 0.9999) {
   11066                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   11067                             #          }
   11068                             #          [result autorelease];
   11069                             #          return result;
   11070                             #     }
   11071                             #     // ...
   11072                             #
   11073                             #  Example (JavaScript):
   11074                             #
   11075                             #     // ...
   11076                             #
   11077                             #     var protoToCssColor = function(rgb_color) {
   11078                             #        var redFrac = rgb_color.red || 0.0;
   11079                             #        var greenFrac = rgb_color.green || 0.0;
   11080                             #        var blueFrac = rgb_color.blue || 0.0;
   11081                             #        var red = Math.floor(redFrac * 255);
   11082                             #        var green = Math.floor(greenFrac * 255);
   11083                             #        var blue = Math.floor(blueFrac * 255);
   11084                             #
   11085                             #        if (!('alpha' in rgb_color)) {
   11086                             #           return rgbToCssColor_(red, green, blue);
   11087                             #        }
   11088                             #
   11089                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   11090                             #        var rgbParams = [red, green, blue].join(',');
   11091                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   11092                             #     };
   11093                             #
   11094                             #     var rgbToCssColor_ = function(red, green, blue) {
   11095                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   11096                             #       var hexString = rgbNumber.toString(16);
   11097                             #       var missingZeros = 6 - hexString.length;
   11098                             #       var resultBuilder = ['#'];
   11099                             #       for (var i = 0; i < missingZeros; i++) {
   11100                             #          resultBuilder.push('0');
   11101                             #       }
   11102                             #       resultBuilder.push(hexString);
   11103                             #       return resultBuilder.join('');
   11104                             #     };
   11105                             #
   11106                             #     // ...
   11107                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   11108                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   11109                               # the final pixel color is defined by the equation:
   11110                               #
   11111                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   11112                               #
   11113                               # This means that a value of 1.0 corresponds to a solid color, whereas
   11114                               # a value of 0.0 corresponds to a completely transparent color. This
   11115                               # uses a wrapper message rather than a simple float scalar so that it is
   11116                               # possible to distinguish between a default value and the value being unset.
   11117                               # If omitted, this color object is to be rendered as a solid color
   11118                               # (as if the alpha value had been explicitly given with a value of 1.0).
   11119                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   11120                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   11121                         },
   11122                         "width": 42, # The width of the border, in pixels.
   11123                             # Deprecated; the width is determined by the "style" field.
   11124                         "style": "A String", # The style of the border.
   11125                       },
   11126                       "left": { # A border along a cell. # The left border of the cell.
   11127                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   11128                             # for simplicity of conversion to/from color representations in various
   11129                             # languages over compactness; for example, the fields of this representation
   11130                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   11131                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   11132                             # method in iOS; and, with just a little work, it can be easily formatted into
   11133                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   11134                             #
   11135                             # Example (Java):
   11136                             #
   11137                             #      import com.google.type.Color;
   11138                             #
   11139                             #      // ...
   11140                             #      public static java.awt.Color fromProto(Color protocolor) {
   11141                             #        float alpha = protocolor.hasAlpha()
   11142                             #            ? protocolor.getAlpha().getValue()
   11143                             #            : 1.0;
   11144                             #
   11145                             #        return new java.awt.Color(
   11146                             #            protocolor.getRed(),
   11147                             #            protocolor.getGreen(),
   11148                             #            protocolor.getBlue(),
   11149                             #            alpha);
   11150                             #      }
   11151                             #
   11152                             #      public static Color toProto(java.awt.Color color) {
   11153                             #        float red = (float) color.getRed();
   11154                             #        float green = (float) color.getGreen();
   11155                             #        float blue = (float) color.getBlue();
   11156                             #        float denominator = 255.0;
   11157                             #        Color.Builder resultBuilder =
   11158                             #            Color
   11159                             #                .newBuilder()
   11160                             #                .setRed(red / denominator)
   11161                             #                .setGreen(green / denominator)
   11162                             #                .setBlue(blue / denominator);
   11163                             #        int alpha = color.getAlpha();
   11164                             #        if (alpha != 255) {
   11165                             #          result.setAlpha(
   11166                             #              FloatValue
   11167                             #                  .newBuilder()
   11168                             #                  .setValue(((float) alpha) / denominator)
   11169                             #                  .build());
   11170                             #        }
   11171                             #        return resultBuilder.build();
   11172                             #      }
   11173                             #      // ...
   11174                             #
   11175                             # Example (iOS / Obj-C):
   11176                             #
   11177                             #      // ...
   11178                             #      static UIColor* fromProto(Color* protocolor) {
   11179                             #         float red = [protocolor red];
   11180                             #         float green = [protocolor green];
   11181                             #         float blue = [protocolor blue];
   11182                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   11183                             #         float alpha = 1.0;
   11184                             #         if (alpha_wrapper != nil) {
   11185                             #           alpha = [alpha_wrapper value];
   11186                             #         }
   11187                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   11188                             #      }
   11189                             #
   11190                             #      static Color* toProto(UIColor* color) {
   11191                             #          CGFloat red, green, blue, alpha;
   11192                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   11193                             #            return nil;
   11194                             #          }
   11195                             #          Color* result = [Color alloc] init];
   11196                             #          [result setRed:red];
   11197                             #          [result setGreen:green];
   11198                             #          [result setBlue:blue];
   11199                             #          if (alpha <= 0.9999) {
   11200                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   11201                             #          }
   11202                             #          [result autorelease];
   11203                             #          return result;
   11204                             #     }
   11205                             #     // ...
   11206                             #
   11207                             #  Example (JavaScript):
   11208                             #
   11209                             #     // ...
   11210                             #
   11211                             #     var protoToCssColor = function(rgb_color) {
   11212                             #        var redFrac = rgb_color.red || 0.0;
   11213                             #        var greenFrac = rgb_color.green || 0.0;
   11214                             #        var blueFrac = rgb_color.blue || 0.0;
   11215                             #        var red = Math.floor(redFrac * 255);
   11216                             #        var green = Math.floor(greenFrac * 255);
   11217                             #        var blue = Math.floor(blueFrac * 255);
   11218                             #
   11219                             #        if (!('alpha' in rgb_color)) {
   11220                             #           return rgbToCssColor_(red, green, blue);
   11221                             #        }
   11222                             #
   11223                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   11224                             #        var rgbParams = [red, green, blue].join(',');
   11225                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   11226                             #     };
   11227                             #
   11228                             #     var rgbToCssColor_ = function(red, green, blue) {
   11229                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   11230                             #       var hexString = rgbNumber.toString(16);
   11231                             #       var missingZeros = 6 - hexString.length;
   11232                             #       var resultBuilder = ['#'];
   11233                             #       for (var i = 0; i < missingZeros; i++) {
   11234                             #          resultBuilder.push('0');
   11235                             #       }
   11236                             #       resultBuilder.push(hexString);
   11237                             #       return resultBuilder.join('');
   11238                             #     };
   11239                             #
   11240                             #     // ...
   11241                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   11242                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   11243                               # the final pixel color is defined by the equation:
   11244                               #
   11245                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   11246                               #
   11247                               # This means that a value of 1.0 corresponds to a solid color, whereas
   11248                               # a value of 0.0 corresponds to a completely transparent color. This
   11249                               # uses a wrapper message rather than a simple float scalar so that it is
   11250                               # possible to distinguish between a default value and the value being unset.
   11251                               # If omitted, this color object is to be rendered as a solid color
   11252                               # (as if the alpha value had been explicitly given with a value of 1.0).
   11253                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   11254                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   11255                         },
   11256                         "width": 42, # The width of the border, in pixels.
   11257                             # Deprecated; the width is determined by the "style" field.
   11258                         "style": "A String", # The style of the border.
   11259                       },
   11260                     },
   11261                     "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   11262                   },
   11263                   "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
   11264                       #
   11265                       # When writing, the new data validation rule will overwrite any prior rule.
   11266                     "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
   11267                         # If true, "List" conditions will show a dropdown.
   11268                     "strict": True or False, # True if invalid data should be rejected.
   11269                     "inputMessage": "A String", # A message to show the user when adding data to the cell.
   11270                     "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
   11271                         # BooleanConditions are used by conditional formatting,
   11272                         # data validation, and the criteria in filters.
   11273                       "values": [ # The values of the condition. The number of supported values depends
   11274                           # on the condition type.  Some support zero values,
   11275                           # others one or two values,
   11276                           # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   11277                         { # The value of the condition.
   11278                           "relativeDate": "A String", # A relative date (based on the current date).
   11279                               # Valid only if the type is
   11280                               # DATE_BEFORE,
   11281                               # DATE_AFTER,
   11282                               # DATE_ON_OR_BEFORE or
   11283                               # DATE_ON_OR_AFTER.
   11284                               #
   11285                               # Relative dates are not supported in data validation.
   11286                               # They are supported only in conditional formatting and
   11287                               # conditional filters.
   11288                           "userEnteredValue": "A String", # A value the condition is based on.
   11289                               # The value will be parsed as if the user typed into a cell.
   11290                               # Formulas are supported (and must begin with an `=`).
   11291                         },
   11292                       ],
   11293                       "type": "A String", # The type of condition.
   11294                     },
   11295                   },
   11296                   "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
   11297                       # on user entered strings, not formulas, bools, or numbers.
   11298                       # Runs start at specific indexes in the text and continue until the next
   11299                       # run. Properties of a run will continue unless explicitly changed
   11300                       # in a subsequent run (and properties of the first run will continue
   11301                       # the properties of the cell unless explicitly changed).
   11302                       #
   11303                       # When writing, the new runs will overwrite any prior runs.  When writing a
   11304                       # new user_entered_value, previous runs will be erased.
   11305                     { # A run of a text format. The format of this run continues until the start
   11306                         # index of the next run.
   11307                         # When updating, all fields must be set.
   11308                       "startIndex": 42, # The character index where this run starts.
   11309                       "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
   11310                           # Absent values indicate that the field isn't specified.
   11311                         "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   11312                             # for simplicity of conversion to/from color representations in various
   11313                             # languages over compactness; for example, the fields of this representation
   11314                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   11315                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   11316                             # method in iOS; and, with just a little work, it can be easily formatted into
   11317                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   11318                             #
   11319                             # Example (Java):
   11320                             #
   11321                             #      import com.google.type.Color;
   11322                             #
   11323                             #      // ...
   11324                             #      public static java.awt.Color fromProto(Color protocolor) {
   11325                             #        float alpha = protocolor.hasAlpha()
   11326                             #            ? protocolor.getAlpha().getValue()
   11327                             #            : 1.0;
   11328                             #
   11329                             #        return new java.awt.Color(
   11330                             #            protocolor.getRed(),
   11331                             #            protocolor.getGreen(),
   11332                             #            protocolor.getBlue(),
   11333                             #            alpha);
   11334                             #      }
   11335                             #
   11336                             #      public static Color toProto(java.awt.Color color) {
   11337                             #        float red = (float) color.getRed();
   11338                             #        float green = (float) color.getGreen();
   11339                             #        float blue = (float) color.getBlue();
   11340                             #        float denominator = 255.0;
   11341                             #        Color.Builder resultBuilder =
   11342                             #            Color
   11343                             #                .newBuilder()
   11344                             #                .setRed(red / denominator)
   11345                             #                .setGreen(green / denominator)
   11346                             #                .setBlue(blue / denominator);
   11347                             #        int alpha = color.getAlpha();
   11348                             #        if (alpha != 255) {
   11349                             #          result.setAlpha(
   11350                             #              FloatValue
   11351                             #                  .newBuilder()
   11352                             #                  .setValue(((float) alpha) / denominator)
   11353                             #                  .build());
   11354                             #        }
   11355                             #        return resultBuilder.build();
   11356                             #      }
   11357                             #      // ...
   11358                             #
   11359                             # Example (iOS / Obj-C):
   11360                             #
   11361                             #      // ...
   11362                             #      static UIColor* fromProto(Color* protocolor) {
   11363                             #         float red = [protocolor red];
   11364                             #         float green = [protocolor green];
   11365                             #         float blue = [protocolor blue];
   11366                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   11367                             #         float alpha = 1.0;
   11368                             #         if (alpha_wrapper != nil) {
   11369                             #           alpha = [alpha_wrapper value];
   11370                             #         }
   11371                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   11372                             #      }
   11373                             #
   11374                             #      static Color* toProto(UIColor* color) {
   11375                             #          CGFloat red, green, blue, alpha;
   11376                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   11377                             #            return nil;
   11378                             #          }
   11379                             #          Color* result = [Color alloc] init];
   11380                             #          [result setRed:red];
   11381                             #          [result setGreen:green];
   11382                             #          [result setBlue:blue];
   11383                             #          if (alpha <= 0.9999) {
   11384                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   11385                             #          }
   11386                             #          [result autorelease];
   11387                             #          return result;
   11388                             #     }
   11389                             #     // ...
   11390                             #
   11391                             #  Example (JavaScript):
   11392                             #
   11393                             #     // ...
   11394                             #
   11395                             #     var protoToCssColor = function(rgb_color) {
   11396                             #        var redFrac = rgb_color.red || 0.0;
   11397                             #        var greenFrac = rgb_color.green || 0.0;
   11398                             #        var blueFrac = rgb_color.blue || 0.0;
   11399                             #        var red = Math.floor(redFrac * 255);
   11400                             #        var green = Math.floor(greenFrac * 255);
   11401                             #        var blue = Math.floor(blueFrac * 255);
   11402                             #
   11403                             #        if (!('alpha' in rgb_color)) {
   11404                             #           return rgbToCssColor_(red, green, blue);
   11405                             #        }
   11406                             #
   11407                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   11408                             #        var rgbParams = [red, green, blue].join(',');
   11409                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   11410                             #     };
   11411                             #
   11412                             #     var rgbToCssColor_ = function(red, green, blue) {
   11413                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   11414                             #       var hexString = rgbNumber.toString(16);
   11415                             #       var missingZeros = 6 - hexString.length;
   11416                             #       var resultBuilder = ['#'];
   11417                             #       for (var i = 0; i < missingZeros; i++) {
   11418                             #          resultBuilder.push('0');
   11419                             #       }
   11420                             #       resultBuilder.push(hexString);
   11421                             #       return resultBuilder.join('');
   11422                             #     };
   11423                             #
   11424                             #     // ...
   11425                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   11426                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   11427                               # the final pixel color is defined by the equation:
   11428                               #
   11429                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   11430                               #
   11431                               # This means that a value of 1.0 corresponds to a solid color, whereas
   11432                               # a value of 0.0 corresponds to a completely transparent color. This
   11433                               # uses a wrapper message rather than a simple float scalar so that it is
   11434                               # possible to distinguish between a default value and the value being unset.
   11435                               # If omitted, this color object is to be rendered as a solid color
   11436                               # (as if the alpha value had been explicitly given with a value of 1.0).
   11437                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   11438                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   11439                         },
   11440                         "bold": True or False, # True if the text is bold.
   11441                         "strikethrough": True or False, # True if the text has a strikethrough.
   11442                         "fontFamily": "A String", # The font family.
   11443                         "fontSize": 42, # The size of the font.
   11444                         "italic": True or False, # True if the text is italicized.
   11445                         "underline": True or False, # True if the text is underlined.
   11446                       },
   11447                     },
   11448                   ],
   11449                 },
   11450               ],
   11451             },
   11452           ],
   11453           "fields": "A String", # The fields of CellData that should be updated.
   11454               # At least one field must be specified.
   11455               # The root is the CellData; 'row.values.' should not be specified.
   11456               # A single `"*"` can be used as short-hand for listing every field.
   11457         },
   11458         "autoFill": { # Fills in more data based on existing data. # Automatically fills in more data based on existing data.
   11459           "useAlternateSeries": True or False, # True if we should generate data with the "alternate" series.
   11460               # This differs based on the type and amount of source data.
   11461           "sourceAndDestination": { # A combination of a source range and how to extend that source. # The source and destination areas to autofill.
   11462               # This explicitly lists the source of the autofill and where to
   11463               # extend that data.
   11464             "source": { # A range on a sheet. # The location of the data to use as the source of the autofill.
   11465                 # All indexes are zero-based.
   11466                 # Indexes are half open, e.g the start index is inclusive
   11467                 # and the end index is exclusive -- [start_index, end_index).
   11468                 # Missing indexes indicate the range is unbounded on that side.
   11469                 #
   11470                 # For example, if `"Sheet1"` is sheet ID 0, then:
   11471                 #
   11472                 #   `Sheet1!A1:A1 == sheet_id: 0,
   11473                 #                   start_row_index: 0, end_row_index: 1,
   11474                 #                   start_column_index: 0, end_column_index: 1`
   11475                 #
   11476                 #   `Sheet1!A3:B4 == sheet_id: 0,
   11477                 #                   start_row_index: 2, end_row_index: 4,
   11478                 #                   start_column_index: 0, end_column_index: 2`
   11479                 #
   11480                 #   `Sheet1!A:B == sheet_id: 0,
   11481                 #                 start_column_index: 0, end_column_index: 2`
   11482                 #
   11483                 #   `Sheet1!A5:B == sheet_id: 0,
   11484                 #                  start_row_index: 4,
   11485                 #                  start_column_index: 0, end_column_index: 2`
   11486                 #
   11487                 #   `Sheet1 == sheet_id:0`
   11488                 #
   11489                 # The start index must always be less than or equal to the end index.
   11490                 # If the start index equals the end index, then the range is empty.
   11491                 # Empty ranges are typically not meaningful and are usually rendered in the
   11492                 # UI as `#REF!`.
   11493               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   11494               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   11495               "sheetId": 42, # The sheet this range is on.
   11496               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   11497               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   11498             },
   11499             "dimension": "A String", # The dimension that data should be filled into.
   11500             "fillLength": 42, # The number of rows or columns that data should be filled into.
   11501                 # Positive numbers expand beyond the last row or last column
   11502                 # of the source.  Negative numbers expand before the first row
   11503                 # or first column of the source.
   11504           },
   11505           "range": { # A range on a sheet. # The range to autofill. This will examine the range and detect
   11506               # the location that has data and automatically fill that data
   11507               # in to the rest of the range.
   11508               # All indexes are zero-based.
   11509               # Indexes are half open, e.g the start index is inclusive
   11510               # and the end index is exclusive -- [start_index, end_index).
   11511               # Missing indexes indicate the range is unbounded on that side.
   11512               #
   11513               # For example, if `"Sheet1"` is sheet ID 0, then:
   11514               #
   11515               #   `Sheet1!A1:A1 == sheet_id: 0,
   11516               #                   start_row_index: 0, end_row_index: 1,
   11517               #                   start_column_index: 0, end_column_index: 1`
   11518               #
   11519               #   `Sheet1!A3:B4 == sheet_id: 0,
   11520               #                   start_row_index: 2, end_row_index: 4,
   11521               #                   start_column_index: 0, end_column_index: 2`
   11522               #
   11523               #   `Sheet1!A:B == sheet_id: 0,
   11524               #                 start_column_index: 0, end_column_index: 2`
   11525               #
   11526               #   `Sheet1!A5:B == sheet_id: 0,
   11527               #                  start_row_index: 4,
   11528               #                  start_column_index: 0, end_column_index: 2`
   11529               #
   11530               #   `Sheet1 == sheet_id:0`
   11531               #
   11532               # The start index must always be less than or equal to the end index.
   11533               # If the start index equals the end index, then the range is empty.
   11534               # Empty ranges are typically not meaningful and are usually rendered in the
   11535               # UI as `#REF!`.
   11536             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   11537             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   11538             "sheetId": 42, # The sheet this range is on.
   11539             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   11540             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   11541           },
   11542         },
   11543         "appendDimension": { # Appends rows or columns to the end of a sheet. # Appends dimensions to the end of a sheet.
   11544           "length": 42, # The number of rows or columns to append.
   11545           "dimension": "A String", # Whether rows or columns should be appended.
   11546           "sheetId": 42, # The sheet to append rows or columns to.
   11547         },
   11548         "updateBanding": { # Updates properties of the supplied banded range. # Updates a banded range
   11549           "fields": "A String", # The fields that should be updated.  At least one field must be specified.
   11550               # The root `bandedRange` is implied and should not be specified.
   11551               # A single `"*"` can be used as short-hand for listing every field.
   11552           "bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range to update with the new properties.
   11553             "range": { # A range on a sheet. # The range over which these properties are applied.
   11554                 # All indexes are zero-based.
   11555                 # Indexes are half open, e.g the start index is inclusive
   11556                 # and the end index is exclusive -- [start_index, end_index).
   11557                 # Missing indexes indicate the range is unbounded on that side.
   11558                 #
   11559                 # For example, if `"Sheet1"` is sheet ID 0, then:
   11560                 #
   11561                 #   `Sheet1!A1:A1 == sheet_id: 0,
   11562                 #                   start_row_index: 0, end_row_index: 1,
   11563                 #                   start_column_index: 0, end_column_index: 1`
   11564                 #
   11565                 #   `Sheet1!A3:B4 == sheet_id: 0,
   11566                 #                   start_row_index: 2, end_row_index: 4,
   11567                 #                   start_column_index: 0, end_column_index: 2`
   11568                 #
   11569                 #   `Sheet1!A:B == sheet_id: 0,
   11570                 #                 start_column_index: 0, end_column_index: 2`
   11571                 #
   11572                 #   `Sheet1!A5:B == sheet_id: 0,
   11573                 #                  start_row_index: 4,
   11574                 #                  start_column_index: 0, end_column_index: 2`
   11575                 #
   11576                 #   `Sheet1 == sheet_id:0`
   11577                 #
   11578                 # The start index must always be less than or equal to the end index.
   11579                 # If the start index equals the end index, then the range is empty.
   11580                 # Empty ranges are typically not meaningful and are usually rendered in the
   11581                 # UI as `#REF!`.
   11582               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   11583               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   11584               "sheetId": 42, # The sheet this range is on.
   11585               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   11586               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   11587             },
   11588             "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
   11589                 # by-column basis throughout all the columns in the range. At least one of
   11590                 # row_properties or column_properties must be specified.
   11591                 # BandedRange.row_properties and BandedRange.column_properties are
   11592                 # set, the fill colors are applied to cells according to the following rules:
   11593                 #
   11594                 # * header_color and footer_color take priority over band colors.
   11595                 # * first_band_color takes priority over second_band_color.
   11596                 # * row_properties takes priority over column_properties.
   11597                 #
   11598                 # For example, the first row color takes priority over the first column
   11599                 # color, but the first column color takes priority over the second row color.
   11600                 # Similarly, the row header takes priority over the column header in the
   11601                 # top left cell, but the column header takes priority over the first row
   11602                 # color if the row header is not set.
   11603               "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   11604                   # for simplicity of conversion to/from color representations in various
   11605                   # languages over compactness; for example, the fields of this representation
   11606                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   11607                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   11608                   # method in iOS; and, with just a little work, it can be easily formatted into
   11609                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   11610                   #
   11611                   # Example (Java):
   11612                   #
   11613                   #      import com.google.type.Color;
   11614                   #
   11615                   #      // ...
   11616                   #      public static java.awt.Color fromProto(Color protocolor) {
   11617                   #        float alpha = protocolor.hasAlpha()
   11618                   #            ? protocolor.getAlpha().getValue()
   11619                   #            : 1.0;
   11620                   #
   11621                   #        return new java.awt.Color(
   11622                   #            protocolor.getRed(),
   11623                   #            protocolor.getGreen(),
   11624                   #            protocolor.getBlue(),
   11625                   #            alpha);
   11626                   #      }
   11627                   #
   11628                   #      public static Color toProto(java.awt.Color color) {
   11629                   #        float red = (float) color.getRed();
   11630                   #        float green = (float) color.getGreen();
   11631                   #        float blue = (float) color.getBlue();
   11632                   #        float denominator = 255.0;
   11633                   #        Color.Builder resultBuilder =
   11634                   #            Color
   11635                   #                .newBuilder()
   11636                   #                .setRed(red / denominator)
   11637                   #                .setGreen(green / denominator)
   11638                   #                .setBlue(blue / denominator);
   11639                   #        int alpha = color.getAlpha();
   11640                   #        if (alpha != 255) {
   11641                   #          result.setAlpha(
   11642                   #              FloatValue
   11643                   #                  .newBuilder()
   11644                   #                  .setValue(((float) alpha) / denominator)
   11645                   #                  .build());
   11646                   #        }
   11647                   #        return resultBuilder.build();
   11648                   #      }
   11649                   #      // ...
   11650                   #
   11651                   # Example (iOS / Obj-C):
   11652                   #
   11653                   #      // ...
   11654                   #      static UIColor* fromProto(Color* protocolor) {
   11655                   #         float red = [protocolor red];
   11656                   #         float green = [protocolor green];
   11657                   #         float blue = [protocolor blue];
   11658                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   11659                   #         float alpha = 1.0;
   11660                   #         if (alpha_wrapper != nil) {
   11661                   #           alpha = [alpha_wrapper value];
   11662                   #         }
   11663                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   11664                   #      }
   11665                   #
   11666                   #      static Color* toProto(UIColor* color) {
   11667                   #          CGFloat red, green, blue, alpha;
   11668                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   11669                   #            return nil;
   11670                   #          }
   11671                   #          Color* result = [Color alloc] init];
   11672                   #          [result setRed:red];
   11673                   #          [result setGreen:green];
   11674                   #          [result setBlue:blue];
   11675                   #          if (alpha <= 0.9999) {
   11676                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   11677                   #          }
   11678                   #          [result autorelease];
   11679                   #          return result;
   11680                   #     }
   11681                   #     // ...
   11682                   #
   11683                   #  Example (JavaScript):
   11684                   #
   11685                   #     // ...
   11686                   #
   11687                   #     var protoToCssColor = function(rgb_color) {
   11688                   #        var redFrac = rgb_color.red || 0.0;
   11689                   #        var greenFrac = rgb_color.green || 0.0;
   11690                   #        var blueFrac = rgb_color.blue || 0.0;
   11691                   #        var red = Math.floor(redFrac * 255);
   11692                   #        var green = Math.floor(greenFrac * 255);
   11693                   #        var blue = Math.floor(blueFrac * 255);
   11694                   #
   11695                   #        if (!('alpha' in rgb_color)) {
   11696                   #           return rgbToCssColor_(red, green, blue);
   11697                   #        }
   11698                   #
   11699                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   11700                   #        var rgbParams = [red, green, blue].join(',');
   11701                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   11702                   #     };
   11703                   #
   11704                   #     var rgbToCssColor_ = function(red, green, blue) {
   11705                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   11706                   #       var hexString = rgbNumber.toString(16);
   11707                   #       var missingZeros = 6 - hexString.length;
   11708                   #       var resultBuilder = ['#'];
   11709                   #       for (var i = 0; i < missingZeros; i++) {
   11710                   #          resultBuilder.push('0');
   11711                   #       }
   11712                   #       resultBuilder.push(hexString);
   11713                   #       return resultBuilder.join('');
   11714                   #     };
   11715                   #
   11716                   #     // ...
   11717                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   11718                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   11719                     # the final pixel color is defined by the equation:
   11720                     #
   11721                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   11722                     #
   11723                     # This means that a value of 1.0 corresponds to a solid color, whereas
   11724                     # a value of 0.0 corresponds to a completely transparent color. This
   11725                     # uses a wrapper message rather than a simple float scalar so that it is
   11726                     # possible to distinguish between a default value and the value being unset.
   11727                     # If omitted, this color object is to be rendered as a solid color
   11728                     # (as if the alpha value had been explicitly given with a value of 1.0).
   11729                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   11730                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   11731               },
   11732               "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   11733                   # row or column will be filled with this color and the colors will
   11734                   # alternate between first_band_color and second_band_color starting
   11735                   # from the second row or column. Otherwise, the first row or column will be
   11736                   # filled with first_band_color and the colors will proceed to alternate
   11737                   # as they normally would.
   11738                   # for simplicity of conversion to/from color representations in various
   11739                   # languages over compactness; for example, the fields of this representation
   11740                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   11741                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   11742                   # method in iOS; and, with just a little work, it can be easily formatted into
   11743                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   11744                   #
   11745                   # Example (Java):
   11746                   #
   11747                   #      import com.google.type.Color;
   11748                   #
   11749                   #      // ...
   11750                   #      public static java.awt.Color fromProto(Color protocolor) {
   11751                   #        float alpha = protocolor.hasAlpha()
   11752                   #            ? protocolor.getAlpha().getValue()
   11753                   #            : 1.0;
   11754                   #
   11755                   #        return new java.awt.Color(
   11756                   #            protocolor.getRed(),
   11757                   #            protocolor.getGreen(),
   11758                   #            protocolor.getBlue(),
   11759                   #            alpha);
   11760                   #      }
   11761                   #
   11762                   #      public static Color toProto(java.awt.Color color) {
   11763                   #        float red = (float) color.getRed();
   11764                   #        float green = (float) color.getGreen();
   11765                   #        float blue = (float) color.getBlue();
   11766                   #        float denominator = 255.0;
   11767                   #        Color.Builder resultBuilder =
   11768                   #            Color
   11769                   #                .newBuilder()
   11770                   #                .setRed(red / denominator)
   11771                   #                .setGreen(green / denominator)
   11772                   #                .setBlue(blue / denominator);
   11773                   #        int alpha = color.getAlpha();
   11774                   #        if (alpha != 255) {
   11775                   #          result.setAlpha(
   11776                   #              FloatValue
   11777                   #                  .newBuilder()
   11778                   #                  .setValue(((float) alpha) / denominator)
   11779                   #                  .build());
   11780                   #        }
   11781                   #        return resultBuilder.build();
   11782                   #      }
   11783                   #      // ...
   11784                   #
   11785                   # Example (iOS / Obj-C):
   11786                   #
   11787                   #      // ...
   11788                   #      static UIColor* fromProto(Color* protocolor) {
   11789                   #         float red = [protocolor red];
   11790                   #         float green = [protocolor green];
   11791                   #         float blue = [protocolor blue];
   11792                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   11793                   #         float alpha = 1.0;
   11794                   #         if (alpha_wrapper != nil) {
   11795                   #           alpha = [alpha_wrapper value];
   11796                   #         }
   11797                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   11798                   #      }
   11799                   #
   11800                   #      static Color* toProto(UIColor* color) {
   11801                   #          CGFloat red, green, blue, alpha;
   11802                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   11803                   #            return nil;
   11804                   #          }
   11805                   #          Color* result = [Color alloc] init];
   11806                   #          [result setRed:red];
   11807                   #          [result setGreen:green];
   11808                   #          [result setBlue:blue];
   11809                   #          if (alpha <= 0.9999) {
   11810                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   11811                   #          }
   11812                   #          [result autorelease];
   11813                   #          return result;
   11814                   #     }
   11815                   #     // ...
   11816                   #
   11817                   #  Example (JavaScript):
   11818                   #
   11819                   #     // ...
   11820                   #
   11821                   #     var protoToCssColor = function(rgb_color) {
   11822                   #        var redFrac = rgb_color.red || 0.0;
   11823                   #        var greenFrac = rgb_color.green || 0.0;
   11824                   #        var blueFrac = rgb_color.blue || 0.0;
   11825                   #        var red = Math.floor(redFrac * 255);
   11826                   #        var green = Math.floor(greenFrac * 255);
   11827                   #        var blue = Math.floor(blueFrac * 255);
   11828                   #
   11829                   #        if (!('alpha' in rgb_color)) {
   11830                   #           return rgbToCssColor_(red, green, blue);
   11831                   #        }
   11832                   #
   11833                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   11834                   #        var rgbParams = [red, green, blue].join(',');
   11835                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   11836                   #     };
   11837                   #
   11838                   #     var rgbToCssColor_ = function(red, green, blue) {
   11839                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   11840                   #       var hexString = rgbNumber.toString(16);
   11841                   #       var missingZeros = 6 - hexString.length;
   11842                   #       var resultBuilder = ['#'];
   11843                   #       for (var i = 0; i < missingZeros; i++) {
   11844                   #          resultBuilder.push('0');
   11845                   #       }
   11846                   #       resultBuilder.push(hexString);
   11847                   #       return resultBuilder.join('');
   11848                   #     };
   11849                   #
   11850                   #     // ...
   11851                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   11852                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   11853                     # the final pixel color is defined by the equation:
   11854                     #
   11855                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   11856                     #
   11857                     # This means that a value of 1.0 corresponds to a solid color, whereas
   11858                     # a value of 0.0 corresponds to a completely transparent color. This
   11859                     # uses a wrapper message rather than a simple float scalar so that it is
   11860                     # possible to distinguish between a default value and the value being unset.
   11861                     # If omitted, this color object is to be rendered as a solid color
   11862                     # (as if the alpha value had been explicitly given with a value of 1.0).
   11863                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   11864                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   11865               },
   11866               "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   11867                   # row or column will be filled with either first_band_color or
   11868                   # second_band_color, depending on the color of the previous row or
   11869                   # column.
   11870                   # for simplicity of conversion to/from color representations in various
   11871                   # languages over compactness; for example, the fields of this representation
   11872                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   11873                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   11874                   # method in iOS; and, with just a little work, it can be easily formatted into
   11875                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   11876                   #
   11877                   # Example (Java):
   11878                   #
   11879                   #      import com.google.type.Color;
   11880                   #
   11881                   #      // ...
   11882                   #      public static java.awt.Color fromProto(Color protocolor) {
   11883                   #        float alpha = protocolor.hasAlpha()
   11884                   #            ? protocolor.getAlpha().getValue()
   11885                   #            : 1.0;
   11886                   #
   11887                   #        return new java.awt.Color(
   11888                   #            protocolor.getRed(),
   11889                   #            protocolor.getGreen(),
   11890                   #            protocolor.getBlue(),
   11891                   #            alpha);
   11892                   #      }
   11893                   #
   11894                   #      public static Color toProto(java.awt.Color color) {
   11895                   #        float red = (float) color.getRed();
   11896                   #        float green = (float) color.getGreen();
   11897                   #        float blue = (float) color.getBlue();
   11898                   #        float denominator = 255.0;
   11899                   #        Color.Builder resultBuilder =
   11900                   #            Color
   11901                   #                .newBuilder()
   11902                   #                .setRed(red / denominator)
   11903                   #                .setGreen(green / denominator)
   11904                   #                .setBlue(blue / denominator);
   11905                   #        int alpha = color.getAlpha();
   11906                   #        if (alpha != 255) {
   11907                   #          result.setAlpha(
   11908                   #              FloatValue
   11909                   #                  .newBuilder()
   11910                   #                  .setValue(((float) alpha) / denominator)
   11911                   #                  .build());
   11912                   #        }
   11913                   #        return resultBuilder.build();
   11914                   #      }
   11915                   #      // ...
   11916                   #
   11917                   # Example (iOS / Obj-C):
   11918                   #
   11919                   #      // ...
   11920                   #      static UIColor* fromProto(Color* protocolor) {
   11921                   #         float red = [protocolor red];
   11922                   #         float green = [protocolor green];
   11923                   #         float blue = [protocolor blue];
   11924                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   11925                   #         float alpha = 1.0;
   11926                   #         if (alpha_wrapper != nil) {
   11927                   #           alpha = [alpha_wrapper value];
   11928                   #         }
   11929                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   11930                   #      }
   11931                   #
   11932                   #      static Color* toProto(UIColor* color) {
   11933                   #          CGFloat red, green, blue, alpha;
   11934                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   11935                   #            return nil;
   11936                   #          }
   11937                   #          Color* result = [Color alloc] init];
   11938                   #          [result setRed:red];
   11939                   #          [result setGreen:green];
   11940                   #          [result setBlue:blue];
   11941                   #          if (alpha <= 0.9999) {
   11942                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   11943                   #          }
   11944                   #          [result autorelease];
   11945                   #          return result;
   11946                   #     }
   11947                   #     // ...
   11948                   #
   11949                   #  Example (JavaScript):
   11950                   #
   11951                   #     // ...
   11952                   #
   11953                   #     var protoToCssColor = function(rgb_color) {
   11954                   #        var redFrac = rgb_color.red || 0.0;
   11955                   #        var greenFrac = rgb_color.green || 0.0;
   11956                   #        var blueFrac = rgb_color.blue || 0.0;
   11957                   #        var red = Math.floor(redFrac * 255);
   11958                   #        var green = Math.floor(greenFrac * 255);
   11959                   #        var blue = Math.floor(blueFrac * 255);
   11960                   #
   11961                   #        if (!('alpha' in rgb_color)) {
   11962                   #           return rgbToCssColor_(red, green, blue);
   11963                   #        }
   11964                   #
   11965                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   11966                   #        var rgbParams = [red, green, blue].join(',');
   11967                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   11968                   #     };
   11969                   #
   11970                   #     var rgbToCssColor_ = function(red, green, blue) {
   11971                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   11972                   #       var hexString = rgbNumber.toString(16);
   11973                   #       var missingZeros = 6 - hexString.length;
   11974                   #       var resultBuilder = ['#'];
   11975                   #       for (var i = 0; i < missingZeros; i++) {
   11976                   #          resultBuilder.push('0');
   11977                   #       }
   11978                   #       resultBuilder.push(hexString);
   11979                   #       return resultBuilder.join('');
   11980                   #     };
   11981                   #
   11982                   #     // ...
   11983                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   11984                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   11985                     # the final pixel color is defined by the equation:
   11986                     #
   11987                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   11988                     #
   11989                     # This means that a value of 1.0 corresponds to a solid color, whereas
   11990                     # a value of 0.0 corresponds to a completely transparent color. This
   11991                     # uses a wrapper message rather than a simple float scalar so that it is
   11992                     # possible to distinguish between a default value and the value being unset.
   11993                     # If omitted, this color object is to be rendered as a solid color
   11994                     # (as if the alpha value had been explicitly given with a value of 1.0).
   11995                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   11996                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   11997               },
   11998               "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   11999                   # for simplicity of conversion to/from color representations in various
   12000                   # languages over compactness; for example, the fields of this representation
   12001                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   12002                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   12003                   # method in iOS; and, with just a little work, it can be easily formatted into
   12004                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   12005                   #
   12006                   # Example (Java):
   12007                   #
   12008                   #      import com.google.type.Color;
   12009                   #
   12010                   #      // ...
   12011                   #      public static java.awt.Color fromProto(Color protocolor) {
   12012                   #        float alpha = protocolor.hasAlpha()
   12013                   #            ? protocolor.getAlpha().getValue()
   12014                   #            : 1.0;
   12015                   #
   12016                   #        return new java.awt.Color(
   12017                   #            protocolor.getRed(),
   12018                   #            protocolor.getGreen(),
   12019                   #            protocolor.getBlue(),
   12020                   #            alpha);
   12021                   #      }
   12022                   #
   12023                   #      public static Color toProto(java.awt.Color color) {
   12024                   #        float red = (float) color.getRed();
   12025                   #        float green = (float) color.getGreen();
   12026                   #        float blue = (float) color.getBlue();
   12027                   #        float denominator = 255.0;
   12028                   #        Color.Builder resultBuilder =
   12029                   #            Color
   12030                   #                .newBuilder()
   12031                   #                .setRed(red / denominator)
   12032                   #                .setGreen(green / denominator)
   12033                   #                .setBlue(blue / denominator);
   12034                   #        int alpha = color.getAlpha();
   12035                   #        if (alpha != 255) {
   12036                   #          result.setAlpha(
   12037                   #              FloatValue
   12038                   #                  .newBuilder()
   12039                   #                  .setValue(((float) alpha) / denominator)
   12040                   #                  .build());
   12041                   #        }
   12042                   #        return resultBuilder.build();
   12043                   #      }
   12044                   #      // ...
   12045                   #
   12046                   # Example (iOS / Obj-C):
   12047                   #
   12048                   #      // ...
   12049                   #      static UIColor* fromProto(Color* protocolor) {
   12050                   #         float red = [protocolor red];
   12051                   #         float green = [protocolor green];
   12052                   #         float blue = [protocolor blue];
   12053                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   12054                   #         float alpha = 1.0;
   12055                   #         if (alpha_wrapper != nil) {
   12056                   #           alpha = [alpha_wrapper value];
   12057                   #         }
   12058                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   12059                   #      }
   12060                   #
   12061                   #      static Color* toProto(UIColor* color) {
   12062                   #          CGFloat red, green, blue, alpha;
   12063                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   12064                   #            return nil;
   12065                   #          }
   12066                   #          Color* result = [Color alloc] init];
   12067                   #          [result setRed:red];
   12068                   #          [result setGreen:green];
   12069                   #          [result setBlue:blue];
   12070                   #          if (alpha <= 0.9999) {
   12071                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   12072                   #          }
   12073                   #          [result autorelease];
   12074                   #          return result;
   12075                   #     }
   12076                   #     // ...
   12077                   #
   12078                   #  Example (JavaScript):
   12079                   #
   12080                   #     // ...
   12081                   #
   12082                   #     var protoToCssColor = function(rgb_color) {
   12083                   #        var redFrac = rgb_color.red || 0.0;
   12084                   #        var greenFrac = rgb_color.green || 0.0;
   12085                   #        var blueFrac = rgb_color.blue || 0.0;
   12086                   #        var red = Math.floor(redFrac * 255);
   12087                   #        var green = Math.floor(greenFrac * 255);
   12088                   #        var blue = Math.floor(blueFrac * 255);
   12089                   #
   12090                   #        if (!('alpha' in rgb_color)) {
   12091                   #           return rgbToCssColor_(red, green, blue);
   12092                   #        }
   12093                   #
   12094                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   12095                   #        var rgbParams = [red, green, blue].join(',');
   12096                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   12097                   #     };
   12098                   #
   12099                   #     var rgbToCssColor_ = function(red, green, blue) {
   12100                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   12101                   #       var hexString = rgbNumber.toString(16);
   12102                   #       var missingZeros = 6 - hexString.length;
   12103                   #       var resultBuilder = ['#'];
   12104                   #       for (var i = 0; i < missingZeros; i++) {
   12105                   #          resultBuilder.push('0');
   12106                   #       }
   12107                   #       resultBuilder.push(hexString);
   12108                   #       return resultBuilder.join('');
   12109                   #     };
   12110                   #
   12111                   #     // ...
   12112                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   12113                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   12114                     # the final pixel color is defined by the equation:
   12115                     #
   12116                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   12117                     #
   12118                     # This means that a value of 1.0 corresponds to a solid color, whereas
   12119                     # a value of 0.0 corresponds to a completely transparent color. This
   12120                     # uses a wrapper message rather than a simple float scalar so that it is
   12121                     # possible to distinguish between a default value and the value being unset.
   12122                     # If omitted, this color object is to be rendered as a solid color
   12123                     # (as if the alpha value had been explicitly given with a value of 1.0).
   12124                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   12125                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   12126               },
   12127             },
   12128             "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
   12129                 # basis throughout all the rows in the range. At least one of
   12130                 # row_properties or column_properties must be specified.
   12131                 # BandedRange.row_properties and BandedRange.column_properties are
   12132                 # set, the fill colors are applied to cells according to the following rules:
   12133                 #
   12134                 # * header_color and footer_color take priority over band colors.
   12135                 # * first_band_color takes priority over second_band_color.
   12136                 # * row_properties takes priority over column_properties.
   12137                 #
   12138                 # For example, the first row color takes priority over the first column
   12139                 # color, but the first column color takes priority over the second row color.
   12140                 # Similarly, the row header takes priority over the column header in the
   12141                 # top left cell, but the column header takes priority over the first row
   12142                 # color if the row header is not set.
   12143               "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   12144                   # for simplicity of conversion to/from color representations in various
   12145                   # languages over compactness; for example, the fields of this representation
   12146                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   12147                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   12148                   # method in iOS; and, with just a little work, it can be easily formatted into
   12149                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   12150                   #
   12151                   # Example (Java):
   12152                   #
   12153                   #      import com.google.type.Color;
   12154                   #
   12155                   #      // ...
   12156                   #      public static java.awt.Color fromProto(Color protocolor) {
   12157                   #        float alpha = protocolor.hasAlpha()
   12158                   #            ? protocolor.getAlpha().getValue()
   12159                   #            : 1.0;
   12160                   #
   12161                   #        return new java.awt.Color(
   12162                   #            protocolor.getRed(),
   12163                   #            protocolor.getGreen(),
   12164                   #            protocolor.getBlue(),
   12165                   #            alpha);
   12166                   #      }
   12167                   #
   12168                   #      public static Color toProto(java.awt.Color color) {
   12169                   #        float red = (float) color.getRed();
   12170                   #        float green = (float) color.getGreen();
   12171                   #        float blue = (float) color.getBlue();
   12172                   #        float denominator = 255.0;
   12173                   #        Color.Builder resultBuilder =
   12174                   #            Color
   12175                   #                .newBuilder()
   12176                   #                .setRed(red / denominator)
   12177                   #                .setGreen(green / denominator)
   12178                   #                .setBlue(blue / denominator);
   12179                   #        int alpha = color.getAlpha();
   12180                   #        if (alpha != 255) {
   12181                   #          result.setAlpha(
   12182                   #              FloatValue
   12183                   #                  .newBuilder()
   12184                   #                  .setValue(((float) alpha) / denominator)
   12185                   #                  .build());
   12186                   #        }
   12187                   #        return resultBuilder.build();
   12188                   #      }
   12189                   #      // ...
   12190                   #
   12191                   # Example (iOS / Obj-C):
   12192                   #
   12193                   #      // ...
   12194                   #      static UIColor* fromProto(Color* protocolor) {
   12195                   #         float red = [protocolor red];
   12196                   #         float green = [protocolor green];
   12197                   #         float blue = [protocolor blue];
   12198                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   12199                   #         float alpha = 1.0;
   12200                   #         if (alpha_wrapper != nil) {
   12201                   #           alpha = [alpha_wrapper value];
   12202                   #         }
   12203                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   12204                   #      }
   12205                   #
   12206                   #      static Color* toProto(UIColor* color) {
   12207                   #          CGFloat red, green, blue, alpha;
   12208                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   12209                   #            return nil;
   12210                   #          }
   12211                   #          Color* result = [Color alloc] init];
   12212                   #          [result setRed:red];
   12213                   #          [result setGreen:green];
   12214                   #          [result setBlue:blue];
   12215                   #          if (alpha <= 0.9999) {
   12216                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   12217                   #          }
   12218                   #          [result autorelease];
   12219                   #          return result;
   12220                   #     }
   12221                   #     // ...
   12222                   #
   12223                   #  Example (JavaScript):
   12224                   #
   12225                   #     // ...
   12226                   #
   12227                   #     var protoToCssColor = function(rgb_color) {
   12228                   #        var redFrac = rgb_color.red || 0.0;
   12229                   #        var greenFrac = rgb_color.green || 0.0;
   12230                   #        var blueFrac = rgb_color.blue || 0.0;
   12231                   #        var red = Math.floor(redFrac * 255);
   12232                   #        var green = Math.floor(greenFrac * 255);
   12233                   #        var blue = Math.floor(blueFrac * 255);
   12234                   #
   12235                   #        if (!('alpha' in rgb_color)) {
   12236                   #           return rgbToCssColor_(red, green, blue);
   12237                   #        }
   12238                   #
   12239                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   12240                   #        var rgbParams = [red, green, blue].join(',');
   12241                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   12242                   #     };
   12243                   #
   12244                   #     var rgbToCssColor_ = function(red, green, blue) {
   12245                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   12246                   #       var hexString = rgbNumber.toString(16);
   12247                   #       var missingZeros = 6 - hexString.length;
   12248                   #       var resultBuilder = ['#'];
   12249                   #       for (var i = 0; i < missingZeros; i++) {
   12250                   #          resultBuilder.push('0');
   12251                   #       }
   12252                   #       resultBuilder.push(hexString);
   12253                   #       return resultBuilder.join('');
   12254                   #     };
   12255                   #
   12256                   #     // ...
   12257                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   12258                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   12259                     # the final pixel color is defined by the equation:
   12260                     #
   12261                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   12262                     #
   12263                     # This means that a value of 1.0 corresponds to a solid color, whereas
   12264                     # a value of 0.0 corresponds to a completely transparent color. This
   12265                     # uses a wrapper message rather than a simple float scalar so that it is
   12266                     # possible to distinguish between a default value and the value being unset.
   12267                     # If omitted, this color object is to be rendered as a solid color
   12268                     # (as if the alpha value had been explicitly given with a value of 1.0).
   12269                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   12270                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   12271               },
   12272               "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   12273                   # row or column will be filled with this color and the colors will
   12274                   # alternate between first_band_color and second_band_color starting
   12275                   # from the second row or column. Otherwise, the first row or column will be
   12276                   # filled with first_band_color and the colors will proceed to alternate
   12277                   # as they normally would.
   12278                   # for simplicity of conversion to/from color representations in various
   12279                   # languages over compactness; for example, the fields of this representation
   12280                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   12281                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   12282                   # method in iOS; and, with just a little work, it can be easily formatted into
   12283                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   12284                   #
   12285                   # Example (Java):
   12286                   #
   12287                   #      import com.google.type.Color;
   12288                   #
   12289                   #      // ...
   12290                   #      public static java.awt.Color fromProto(Color protocolor) {
   12291                   #        float alpha = protocolor.hasAlpha()
   12292                   #            ? protocolor.getAlpha().getValue()
   12293                   #            : 1.0;
   12294                   #
   12295                   #        return new java.awt.Color(
   12296                   #            protocolor.getRed(),
   12297                   #            protocolor.getGreen(),
   12298                   #            protocolor.getBlue(),
   12299                   #            alpha);
   12300                   #      }
   12301                   #
   12302                   #      public static Color toProto(java.awt.Color color) {
   12303                   #        float red = (float) color.getRed();
   12304                   #        float green = (float) color.getGreen();
   12305                   #        float blue = (float) color.getBlue();
   12306                   #        float denominator = 255.0;
   12307                   #        Color.Builder resultBuilder =
   12308                   #            Color
   12309                   #                .newBuilder()
   12310                   #                .setRed(red / denominator)
   12311                   #                .setGreen(green / denominator)
   12312                   #                .setBlue(blue / denominator);
   12313                   #        int alpha = color.getAlpha();
   12314                   #        if (alpha != 255) {
   12315                   #          result.setAlpha(
   12316                   #              FloatValue
   12317                   #                  .newBuilder()
   12318                   #                  .setValue(((float) alpha) / denominator)
   12319                   #                  .build());
   12320                   #        }
   12321                   #        return resultBuilder.build();
   12322                   #      }
   12323                   #      // ...
   12324                   #
   12325                   # Example (iOS / Obj-C):
   12326                   #
   12327                   #      // ...
   12328                   #      static UIColor* fromProto(Color* protocolor) {
   12329                   #         float red = [protocolor red];
   12330                   #         float green = [protocolor green];
   12331                   #         float blue = [protocolor blue];
   12332                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   12333                   #         float alpha = 1.0;
   12334                   #         if (alpha_wrapper != nil) {
   12335                   #           alpha = [alpha_wrapper value];
   12336                   #         }
   12337                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   12338                   #      }
   12339                   #
   12340                   #      static Color* toProto(UIColor* color) {
   12341                   #          CGFloat red, green, blue, alpha;
   12342                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   12343                   #            return nil;
   12344                   #          }
   12345                   #          Color* result = [Color alloc] init];
   12346                   #          [result setRed:red];
   12347                   #          [result setGreen:green];
   12348                   #          [result setBlue:blue];
   12349                   #          if (alpha <= 0.9999) {
   12350                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   12351                   #          }
   12352                   #          [result autorelease];
   12353                   #          return result;
   12354                   #     }
   12355                   #     // ...
   12356                   #
   12357                   #  Example (JavaScript):
   12358                   #
   12359                   #     // ...
   12360                   #
   12361                   #     var protoToCssColor = function(rgb_color) {
   12362                   #        var redFrac = rgb_color.red || 0.0;
   12363                   #        var greenFrac = rgb_color.green || 0.0;
   12364                   #        var blueFrac = rgb_color.blue || 0.0;
   12365                   #        var red = Math.floor(redFrac * 255);
   12366                   #        var green = Math.floor(greenFrac * 255);
   12367                   #        var blue = Math.floor(blueFrac * 255);
   12368                   #
   12369                   #        if (!('alpha' in rgb_color)) {
   12370                   #           return rgbToCssColor_(red, green, blue);
   12371                   #        }
   12372                   #
   12373                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   12374                   #        var rgbParams = [red, green, blue].join(',');
   12375                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   12376                   #     };
   12377                   #
   12378                   #     var rgbToCssColor_ = function(red, green, blue) {
   12379                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   12380                   #       var hexString = rgbNumber.toString(16);
   12381                   #       var missingZeros = 6 - hexString.length;
   12382                   #       var resultBuilder = ['#'];
   12383                   #       for (var i = 0; i < missingZeros; i++) {
   12384                   #          resultBuilder.push('0');
   12385                   #       }
   12386                   #       resultBuilder.push(hexString);
   12387                   #       return resultBuilder.join('');
   12388                   #     };
   12389                   #
   12390                   #     // ...
   12391                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   12392                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   12393                     # the final pixel color is defined by the equation:
   12394                     #
   12395                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   12396                     #
   12397                     # This means that a value of 1.0 corresponds to a solid color, whereas
   12398                     # a value of 0.0 corresponds to a completely transparent color. This
   12399                     # uses a wrapper message rather than a simple float scalar so that it is
   12400                     # possible to distinguish between a default value and the value being unset.
   12401                     # If omitted, this color object is to be rendered as a solid color
   12402                     # (as if the alpha value had been explicitly given with a value of 1.0).
   12403                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   12404                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   12405               },
   12406               "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   12407                   # row or column will be filled with either first_band_color or
   12408                   # second_band_color, depending on the color of the previous row or
   12409                   # column.
   12410                   # for simplicity of conversion to/from color representations in various
   12411                   # languages over compactness; for example, the fields of this representation
   12412                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   12413                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   12414                   # method in iOS; and, with just a little work, it can be easily formatted into
   12415                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   12416                   #
   12417                   # Example (Java):
   12418                   #
   12419                   #      import com.google.type.Color;
   12420                   #
   12421                   #      // ...
   12422                   #      public static java.awt.Color fromProto(Color protocolor) {
   12423                   #        float alpha = protocolor.hasAlpha()
   12424                   #            ? protocolor.getAlpha().getValue()
   12425                   #            : 1.0;
   12426                   #
   12427                   #        return new java.awt.Color(
   12428                   #            protocolor.getRed(),
   12429                   #            protocolor.getGreen(),
   12430                   #            protocolor.getBlue(),
   12431                   #            alpha);
   12432                   #      }
   12433                   #
   12434                   #      public static Color toProto(java.awt.Color color) {
   12435                   #        float red = (float) color.getRed();
   12436                   #        float green = (float) color.getGreen();
   12437                   #        float blue = (float) color.getBlue();
   12438                   #        float denominator = 255.0;
   12439                   #        Color.Builder resultBuilder =
   12440                   #            Color
   12441                   #                .newBuilder()
   12442                   #                .setRed(red / denominator)
   12443                   #                .setGreen(green / denominator)
   12444                   #                .setBlue(blue / denominator);
   12445                   #        int alpha = color.getAlpha();
   12446                   #        if (alpha != 255) {
   12447                   #          result.setAlpha(
   12448                   #              FloatValue
   12449                   #                  .newBuilder()
   12450                   #                  .setValue(((float) alpha) / denominator)
   12451                   #                  .build());
   12452                   #        }
   12453                   #        return resultBuilder.build();
   12454                   #      }
   12455                   #      // ...
   12456                   #
   12457                   # Example (iOS / Obj-C):
   12458                   #
   12459                   #      // ...
   12460                   #      static UIColor* fromProto(Color* protocolor) {
   12461                   #         float red = [protocolor red];
   12462                   #         float green = [protocolor green];
   12463                   #         float blue = [protocolor blue];
   12464                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   12465                   #         float alpha = 1.0;
   12466                   #         if (alpha_wrapper != nil) {
   12467                   #           alpha = [alpha_wrapper value];
   12468                   #         }
   12469                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   12470                   #      }
   12471                   #
   12472                   #      static Color* toProto(UIColor* color) {
   12473                   #          CGFloat red, green, blue, alpha;
   12474                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   12475                   #            return nil;
   12476                   #          }
   12477                   #          Color* result = [Color alloc] init];
   12478                   #          [result setRed:red];
   12479                   #          [result setGreen:green];
   12480                   #          [result setBlue:blue];
   12481                   #          if (alpha <= 0.9999) {
   12482                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   12483                   #          }
   12484                   #          [result autorelease];
   12485                   #          return result;
   12486                   #     }
   12487                   #     // ...
   12488                   #
   12489                   #  Example (JavaScript):
   12490                   #
   12491                   #     // ...
   12492                   #
   12493                   #     var protoToCssColor = function(rgb_color) {
   12494                   #        var redFrac = rgb_color.red || 0.0;
   12495                   #        var greenFrac = rgb_color.green || 0.0;
   12496                   #        var blueFrac = rgb_color.blue || 0.0;
   12497                   #        var red = Math.floor(redFrac * 255);
   12498                   #        var green = Math.floor(greenFrac * 255);
   12499                   #        var blue = Math.floor(blueFrac * 255);
   12500                   #
   12501                   #        if (!('alpha' in rgb_color)) {
   12502                   #           return rgbToCssColor_(red, green, blue);
   12503                   #        }
   12504                   #
   12505                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   12506                   #        var rgbParams = [red, green, blue].join(',');
   12507                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   12508                   #     };
   12509                   #
   12510                   #     var rgbToCssColor_ = function(red, green, blue) {
   12511                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   12512                   #       var hexString = rgbNumber.toString(16);
   12513                   #       var missingZeros = 6 - hexString.length;
   12514                   #       var resultBuilder = ['#'];
   12515                   #       for (var i = 0; i < missingZeros; i++) {
   12516                   #          resultBuilder.push('0');
   12517                   #       }
   12518                   #       resultBuilder.push(hexString);
   12519                   #       return resultBuilder.join('');
   12520                   #     };
   12521                   #
   12522                   #     // ...
   12523                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   12524                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   12525                     # the final pixel color is defined by the equation:
   12526                     #
   12527                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   12528                     #
   12529                     # This means that a value of 1.0 corresponds to a solid color, whereas
   12530                     # a value of 0.0 corresponds to a completely transparent color. This
   12531                     # uses a wrapper message rather than a simple float scalar so that it is
   12532                     # possible to distinguish between a default value and the value being unset.
   12533                     # If omitted, this color object is to be rendered as a solid color
   12534                     # (as if the alpha value had been explicitly given with a value of 1.0).
   12535                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   12536                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   12537               },
   12538               "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   12539                   # for simplicity of conversion to/from color representations in various
   12540                   # languages over compactness; for example, the fields of this representation
   12541                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   12542                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   12543                   # method in iOS; and, with just a little work, it can be easily formatted into
   12544                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   12545                   #
   12546                   # Example (Java):
   12547                   #
   12548                   #      import com.google.type.Color;
   12549                   #
   12550                   #      // ...
   12551                   #      public static java.awt.Color fromProto(Color protocolor) {
   12552                   #        float alpha = protocolor.hasAlpha()
   12553                   #            ? protocolor.getAlpha().getValue()
   12554                   #            : 1.0;
   12555                   #
   12556                   #        return new java.awt.Color(
   12557                   #            protocolor.getRed(),
   12558                   #            protocolor.getGreen(),
   12559                   #            protocolor.getBlue(),
   12560                   #            alpha);
   12561                   #      }
   12562                   #
   12563                   #      public static Color toProto(java.awt.Color color) {
   12564                   #        float red = (float) color.getRed();
   12565                   #        float green = (float) color.getGreen();
   12566                   #        float blue = (float) color.getBlue();
   12567                   #        float denominator = 255.0;
   12568                   #        Color.Builder resultBuilder =
   12569                   #            Color
   12570                   #                .newBuilder()
   12571                   #                .setRed(red / denominator)
   12572                   #                .setGreen(green / denominator)
   12573                   #                .setBlue(blue / denominator);
   12574                   #        int alpha = color.getAlpha();
   12575                   #        if (alpha != 255) {
   12576                   #          result.setAlpha(
   12577                   #              FloatValue
   12578                   #                  .newBuilder()
   12579                   #                  .setValue(((float) alpha) / denominator)
   12580                   #                  .build());
   12581                   #        }
   12582                   #        return resultBuilder.build();
   12583                   #      }
   12584                   #      // ...
   12585                   #
   12586                   # Example (iOS / Obj-C):
   12587                   #
   12588                   #      // ...
   12589                   #      static UIColor* fromProto(Color* protocolor) {
   12590                   #         float red = [protocolor red];
   12591                   #         float green = [protocolor green];
   12592                   #         float blue = [protocolor blue];
   12593                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   12594                   #         float alpha = 1.0;
   12595                   #         if (alpha_wrapper != nil) {
   12596                   #           alpha = [alpha_wrapper value];
   12597                   #         }
   12598                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   12599                   #      }
   12600                   #
   12601                   #      static Color* toProto(UIColor* color) {
   12602                   #          CGFloat red, green, blue, alpha;
   12603                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   12604                   #            return nil;
   12605                   #          }
   12606                   #          Color* result = [Color alloc] init];
   12607                   #          [result setRed:red];
   12608                   #          [result setGreen:green];
   12609                   #          [result setBlue:blue];
   12610                   #          if (alpha <= 0.9999) {
   12611                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   12612                   #          }
   12613                   #          [result autorelease];
   12614                   #          return result;
   12615                   #     }
   12616                   #     // ...
   12617                   #
   12618                   #  Example (JavaScript):
   12619                   #
   12620                   #     // ...
   12621                   #
   12622                   #     var protoToCssColor = function(rgb_color) {
   12623                   #        var redFrac = rgb_color.red || 0.0;
   12624                   #        var greenFrac = rgb_color.green || 0.0;
   12625                   #        var blueFrac = rgb_color.blue || 0.0;
   12626                   #        var red = Math.floor(redFrac * 255);
   12627                   #        var green = Math.floor(greenFrac * 255);
   12628                   #        var blue = Math.floor(blueFrac * 255);
   12629                   #
   12630                   #        if (!('alpha' in rgb_color)) {
   12631                   #           return rgbToCssColor_(red, green, blue);
   12632                   #        }
   12633                   #
   12634                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   12635                   #        var rgbParams = [red, green, blue].join(',');
   12636                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   12637                   #     };
   12638                   #
   12639                   #     var rgbToCssColor_ = function(red, green, blue) {
   12640                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   12641                   #       var hexString = rgbNumber.toString(16);
   12642                   #       var missingZeros = 6 - hexString.length;
   12643                   #       var resultBuilder = ['#'];
   12644                   #       for (var i = 0; i < missingZeros; i++) {
   12645                   #          resultBuilder.push('0');
   12646                   #       }
   12647                   #       resultBuilder.push(hexString);
   12648                   #       return resultBuilder.join('');
   12649                   #     };
   12650                   #
   12651                   #     // ...
   12652                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   12653                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   12654                     # the final pixel color is defined by the equation:
   12655                     #
   12656                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   12657                     #
   12658                     # This means that a value of 1.0 corresponds to a solid color, whereas
   12659                     # a value of 0.0 corresponds to a completely transparent color. This
   12660                     # uses a wrapper message rather than a simple float scalar so that it is
   12661                     # possible to distinguish between a default value and the value being unset.
   12662                     # If omitted, this color object is to be rendered as a solid color
   12663                     # (as if the alpha value had been explicitly given with a value of 1.0).
   12664                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   12665                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   12666               },
   12667             },
   12668             "bandedRangeId": 42, # The id of the banded range.
   12669           },
   12670         },
   12671         "autoResizeDimensions": { # Automatically resizes one or more dimensions based on the contents # Automatically resizes one or more dimensions based on the contents
   12672             # of the cells in that dimension.
   12673             # of the cells in that dimension.
   12674           "dimensions": { # A range along a single dimension on a sheet. # The dimensions to automatically resize.
   12675               # Only COLUMNS are supported.
   12676               # All indexes are zero-based.
   12677               # Indexes are half open: the start index is inclusive
   12678               # and the end index is exclusive.
   12679               # Missing indexes indicate the range is unbounded on that side.
   12680             "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
   12681             "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
   12682             "dimension": "A String", # The dimension of the span.
   12683             "sheetId": 42, # The sheet this span is on.
   12684           },
   12685         },
   12686         "updateDimensionProperties": { # Updates properties of dimensions within the specified range. # Updates dimensions' properties.
   12687           "fields": "A String", # The fields that should be updated.  At least one field must be specified.
   12688               # The root `properties` is implied and should not be specified.
   12689               # A single `"*"` can be used as short-hand for listing every field.
   12690           "range": { # A range along a single dimension on a sheet. # The rows or columns to update.
   12691               # All indexes are zero-based.
   12692               # Indexes are half open: the start index is inclusive
   12693               # and the end index is exclusive.
   12694               # Missing indexes indicate the range is unbounded on that side.
   12695             "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
   12696             "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
   12697             "dimension": "A String", # The dimension of the span.
   12698             "sheetId": 42, # The sheet this span is on.
   12699           },
   12700           "properties": { # Properties about a dimension. # Properties to update.
   12701             "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
   12702             "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
   12703             "hiddenByFilter": True or False, # True if this dimension is being filtered.
   12704                 # This field is read-only.
   12705           },
   12706         },
   12707         "unmergeCells": { # Unmerges cells in the given range. # Unmerges merged cells.
   12708           "range": { # A range on a sheet. # The range within which all cells should be unmerged.
   12709               # If the range spans multiple merges, all will be unmerged.
   12710               # The range must not partially span any merge.
   12711               # All indexes are zero-based.
   12712               # Indexes are half open, e.g the start index is inclusive
   12713               # and the end index is exclusive -- [start_index, end_index).
   12714               # Missing indexes indicate the range is unbounded on that side.
   12715               #
   12716               # For example, if `"Sheet1"` is sheet ID 0, then:
   12717               #
   12718               #   `Sheet1!A1:A1 == sheet_id: 0,
   12719               #                   start_row_index: 0, end_row_index: 1,
   12720               #                   start_column_index: 0, end_column_index: 1`
   12721               #
   12722               #   `Sheet1!A3:B4 == sheet_id: 0,
   12723               #                   start_row_index: 2, end_row_index: 4,
   12724               #                   start_column_index: 0, end_column_index: 2`
   12725               #
   12726               #   `Sheet1!A:B == sheet_id: 0,
   12727               #                 start_column_index: 0, end_column_index: 2`
   12728               #
   12729               #   `Sheet1!A5:B == sheet_id: 0,
   12730               #                  start_row_index: 4,
   12731               #                  start_column_index: 0, end_column_index: 2`
   12732               #
   12733               #   `Sheet1 == sheet_id:0`
   12734               #
   12735               # The start index must always be less than or equal to the end index.
   12736               # If the start index equals the end index, then the range is empty.
   12737               # Empty ranges are typically not meaningful and are usually rendered in the
   12738               # UI as `#REF!`.
   12739             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   12740             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   12741             "sheetId": 42, # The sheet this range is on.
   12742             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   12743             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   12744           },
   12745         },
   12746         "setDataValidation": { # Sets a data validation rule to every cell in the range. # Sets data validation for one or more cells.
   12747             # To clear validation in a range, call this with no rule specified.
   12748           "range": { # A range on a sheet. # The range the data validation rule should apply to.
   12749               # All indexes are zero-based.
   12750               # Indexes are half open, e.g the start index is inclusive
   12751               # and the end index is exclusive -- [start_index, end_index).
   12752               # Missing indexes indicate the range is unbounded on that side.
   12753               #
   12754               # For example, if `"Sheet1"` is sheet ID 0, then:
   12755               #
   12756               #   `Sheet1!A1:A1 == sheet_id: 0,
   12757               #                   start_row_index: 0, end_row_index: 1,
   12758               #                   start_column_index: 0, end_column_index: 1`
   12759               #
   12760               #   `Sheet1!A3:B4 == sheet_id: 0,
   12761               #                   start_row_index: 2, end_row_index: 4,
   12762               #                   start_column_index: 0, end_column_index: 2`
   12763               #
   12764               #   `Sheet1!A:B == sheet_id: 0,
   12765               #                 start_column_index: 0, end_column_index: 2`
   12766               #
   12767               #   `Sheet1!A5:B == sheet_id: 0,
   12768               #                  start_row_index: 4,
   12769               #                  start_column_index: 0, end_column_index: 2`
   12770               #
   12771               #   `Sheet1 == sheet_id:0`
   12772               #
   12773               # The start index must always be less than or equal to the end index.
   12774               # If the start index equals the end index, then the range is empty.
   12775               # Empty ranges are typically not meaningful and are usually rendered in the
   12776               # UI as `#REF!`.
   12777             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   12778             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   12779             "sheetId": 42, # The sheet this range is on.
   12780             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   12781             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   12782           },
   12783           "rule": { # A data validation rule. # The data validation rule to set on each cell in the range,
   12784               # or empty to clear the data validation in the range.
   12785             "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
   12786                 # If true, "List" conditions will show a dropdown.
   12787             "strict": True or False, # True if invalid data should be rejected.
   12788             "inputMessage": "A String", # A message to show the user when adding data to the cell.
   12789             "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
   12790                 # BooleanConditions are used by conditional formatting,
   12791                 # data validation, and the criteria in filters.
   12792               "values": [ # The values of the condition. The number of supported values depends
   12793                   # on the condition type.  Some support zero values,
   12794                   # others one or two values,
   12795                   # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   12796                 { # The value of the condition.
   12797                   "relativeDate": "A String", # A relative date (based on the current date).
   12798                       # Valid only if the type is
   12799                       # DATE_BEFORE,
   12800                       # DATE_AFTER,
   12801                       # DATE_ON_OR_BEFORE or
   12802                       # DATE_ON_OR_AFTER.
   12803                       #
   12804                       # Relative dates are not supported in data validation.
   12805                       # They are supported only in conditional formatting and
   12806                       # conditional filters.
   12807                   "userEnteredValue": "A String", # A value the condition is based on.
   12808                       # The value will be parsed as if the user typed into a cell.
   12809                       # Formulas are supported (and must begin with an `=`).
   12810                 },
   12811               ],
   12812               "type": "A String", # The type of condition.
   12813             },
   12814           },
   12815         },
   12816         "deleteRange": { # Deletes a range of cells, shifting other cells into the deleted area. # Deletes a range of cells from a sheet, shifting the remaining cells.
   12817           "range": { # A range on a sheet. # The range of cells to delete.
   12818               # All indexes are zero-based.
   12819               # Indexes are half open, e.g the start index is inclusive
   12820               # and the end index is exclusive -- [start_index, end_index).
   12821               # Missing indexes indicate the range is unbounded on that side.
   12822               #
   12823               # For example, if `"Sheet1"` is sheet ID 0, then:
   12824               #
   12825               #   `Sheet1!A1:A1 == sheet_id: 0,
   12826               #                   start_row_index: 0, end_row_index: 1,
   12827               #                   start_column_index: 0, end_column_index: 1`
   12828               #
   12829               #   `Sheet1!A3:B4 == sheet_id: 0,
   12830               #                   start_row_index: 2, end_row_index: 4,
   12831               #                   start_column_index: 0, end_column_index: 2`
   12832               #
   12833               #   `Sheet1!A:B == sheet_id: 0,
   12834               #                 start_column_index: 0, end_column_index: 2`
   12835               #
   12836               #   `Sheet1!A5:B == sheet_id: 0,
   12837               #                  start_row_index: 4,
   12838               #                  start_column_index: 0, end_column_index: 2`
   12839               #
   12840               #   `Sheet1 == sheet_id:0`
   12841               #
   12842               # The start index must always be less than or equal to the end index.
   12843               # If the start index equals the end index, then the range is empty.
   12844               # Empty ranges are typically not meaningful and are usually rendered in the
   12845               # UI as `#REF!`.
   12846             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   12847             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   12848             "sheetId": 42, # The sheet this range is on.
   12849             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   12850             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   12851           },
   12852           "shiftDimension": "A String", # The dimension from which deleted cells will be replaced with.
   12853               # If ROWS, existing cells will be shifted upward to
   12854               # replace the deleted cells. If COLUMNS, existing cells
   12855               # will be shifted left to replace the deleted cells.
   12856         },
   12857         "clearBasicFilter": { # Clears the basic filter, if any exists on the sheet. # Clears the basic filter on a sheet.
   12858           "sheetId": 42, # The sheet ID on which the basic filter should be cleared.
   12859         },
   12860         "textToColumns": { # Splits a column of text into multiple columns, # Converts a column of text into many columns of text.
   12861             # based on a delimiter in each cell.
   12862           "source": { # A range on a sheet. # The source data range.  This must span exactly one column.
   12863               # All indexes are zero-based.
   12864               # Indexes are half open, e.g the start index is inclusive
   12865               # and the end index is exclusive -- [start_index, end_index).
   12866               # Missing indexes indicate the range is unbounded on that side.
   12867               #
   12868               # For example, if `"Sheet1"` is sheet ID 0, then:
   12869               #
   12870               #   `Sheet1!A1:A1 == sheet_id: 0,
   12871               #                   start_row_index: 0, end_row_index: 1,
   12872               #                   start_column_index: 0, end_column_index: 1`
   12873               #
   12874               #   `Sheet1!A3:B4 == sheet_id: 0,
   12875               #                   start_row_index: 2, end_row_index: 4,
   12876               #                   start_column_index: 0, end_column_index: 2`
   12877               #
   12878               #   `Sheet1!A:B == sheet_id: 0,
   12879               #                 start_column_index: 0, end_column_index: 2`
   12880               #
   12881               #   `Sheet1!A5:B == sheet_id: 0,
   12882               #                  start_row_index: 4,
   12883               #                  start_column_index: 0, end_column_index: 2`
   12884               #
   12885               #   `Sheet1 == sheet_id:0`
   12886               #
   12887               # The start index must always be less than or equal to the end index.
   12888               # If the start index equals the end index, then the range is empty.
   12889               # Empty ranges are typically not meaningful and are usually rendered in the
   12890               # UI as `#REF!`.
   12891             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   12892             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   12893             "sheetId": 42, # The sheet this range is on.
   12894             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   12895             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   12896           },
   12897           "delimiter": "A String", # The delimiter to use. Used only if delimiterType is
   12898               # CUSTOM.
   12899           "delimiterType": "A String", # The delimiter type to use.
   12900         },
   12901         "updateChartSpec": { # Updates a chart's specifications. # Updates a chart's specifications.
   12902             # (This does not move or resize a chart. To move or resize a chart, use
   12903             #  UpdateEmbeddedObjectPositionRequest.)
   12904           "chartId": 42, # The ID of the chart to update.
   12905           "spec": { # The specifications of a chart. # The specification to apply to the chart.
   12906             "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
   12907             "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
   12908               "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
   12909                 "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   12910                   "sources": [ # The ranges of data for a series or domain.
   12911                       # Exactly one dimension must have a length of 1,
   12912                       # and all sources in the list must have the same dimension
   12913                       # with length 1.
   12914                       # The domain (if it exists) & all series must have the same number
   12915                       # of source ranges. If using more than one source range, then the source
   12916                       # range at a given offset must be contiguous across the domain and series.
   12917                       #
   12918                       # For example, these are valid configurations:
   12919                       #
   12920                       #     domain sources: A1:A5
   12921                       #     series1 sources: B1:B5
   12922                       #     series2 sources: D6:D10
   12923                       #
   12924                       #     domain sources: A1:A5, C10:C12
   12925                       #     series1 sources: B1:B5, D10:D12
   12926                       #     series2 sources: C1:C5, E10:E12
   12927                     { # A range on a sheet.
   12928                         # All indexes are zero-based.
   12929                         # Indexes are half open, e.g the start index is inclusive
   12930                         # and the end index is exclusive -- [start_index, end_index).
   12931                         # Missing indexes indicate the range is unbounded on that side.
   12932                         #
   12933                         # For example, if `"Sheet1"` is sheet ID 0, then:
   12934                         #
   12935                         #   `Sheet1!A1:A1 == sheet_id: 0,
   12936                         #                   start_row_index: 0, end_row_index: 1,
   12937                         #                   start_column_index: 0, end_column_index: 1`
   12938                         #
   12939                         #   `Sheet1!A3:B4 == sheet_id: 0,
   12940                         #                   start_row_index: 2, end_row_index: 4,
   12941                         #                   start_column_index: 0, end_column_index: 2`
   12942                         #
   12943                         #   `Sheet1!A:B == sheet_id: 0,
   12944                         #                 start_column_index: 0, end_column_index: 2`
   12945                         #
   12946                         #   `Sheet1!A5:B == sheet_id: 0,
   12947                         #                  start_row_index: 4,
   12948                         #                  start_column_index: 0, end_column_index: 2`
   12949                         #
   12950                         #   `Sheet1 == sheet_id:0`
   12951                         #
   12952                         # The start index must always be less than or equal to the end index.
   12953                         # If the start index equals the end index, then the range is empty.
   12954                         # Empty ranges are typically not meaningful and are usually rendered in the
   12955                         # UI as `#REF!`.
   12956                       "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   12957                       "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   12958                       "sheetId": 42, # The sheet this range is on.
   12959                       "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   12960                       "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   12961                     },
   12962                   ],
   12963                 },
   12964               },
   12965               "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
   12966                 "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   12967                   "sources": [ # The ranges of data for a series or domain.
   12968                       # Exactly one dimension must have a length of 1,
   12969                       # and all sources in the list must have the same dimension
   12970                       # with length 1.
   12971                       # The domain (if it exists) & all series must have the same number
   12972                       # of source ranges. If using more than one source range, then the source
   12973                       # range at a given offset must be contiguous across the domain and series.
   12974                       #
   12975                       # For example, these are valid configurations:
   12976                       #
   12977                       #     domain sources: A1:A5
   12978                       #     series1 sources: B1:B5
   12979                       #     series2 sources: D6:D10
   12980                       #
   12981                       #     domain sources: A1:A5, C10:C12
   12982                       #     series1 sources: B1:B5, D10:D12
   12983                       #     series2 sources: C1:C5, E10:E12
   12984                     { # A range on a sheet.
   12985                         # All indexes are zero-based.
   12986                         # Indexes are half open, e.g the start index is inclusive
   12987                         # and the end index is exclusive -- [start_index, end_index).
   12988                         # Missing indexes indicate the range is unbounded on that side.
   12989                         #
   12990                         # For example, if `"Sheet1"` is sheet ID 0, then:
   12991                         #
   12992                         #   `Sheet1!A1:A1 == sheet_id: 0,
   12993                         #                   start_row_index: 0, end_row_index: 1,
   12994                         #                   start_column_index: 0, end_column_index: 1`
   12995                         #
   12996                         #   `Sheet1!A3:B4 == sheet_id: 0,
   12997                         #                   start_row_index: 2, end_row_index: 4,
   12998                         #                   start_column_index: 0, end_column_index: 2`
   12999                         #
   13000                         #   `Sheet1!A:B == sheet_id: 0,
   13001                         #                 start_column_index: 0, end_column_index: 2`
   13002                         #
   13003                         #   `Sheet1!A5:B == sheet_id: 0,
   13004                         #                  start_row_index: 4,
   13005                         #                  start_column_index: 0, end_column_index: 2`
   13006                         #
   13007                         #   `Sheet1 == sheet_id:0`
   13008                         #
   13009                         # The start index must always be less than or equal to the end index.
   13010                         # If the start index equals the end index, then the range is empty.
   13011                         # Empty ranges are typically not meaningful and are usually rendered in the
   13012                         # UI as `#REF!`.
   13013                       "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   13014                       "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   13015                       "sheetId": 42, # The sheet this range is on.
   13016                       "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   13017                       "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   13018                     },
   13019                   ],
   13020                 },
   13021               },
   13022               "threeDimensional": True or False, # True if the pie is three dimensional.
   13023               "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
   13024               "pieHole": 3.14, # The size of the hole in the pie chart.
   13025             },
   13026             "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
   13027                 # See BasicChartType for the list of all
   13028                 # charts this supports.
   13029                 # of charts this supports.
   13030               "headerCount": 42, # The number of rows or columns in the data that are "headers".
   13031                   # If not set, Google Sheets will guess how many rows are headers based
   13032                   # on the data.
   13033                   #
   13034                   # (Note that BasicChartAxis.title may override the axis title
   13035                   #  inferred from the header values.)
   13036               "series": [ # The data this chart is visualizing.
   13037                 { # A single series of data in a chart.
   13038                     # For example, if charting stock prices over time, multiple series may exist,
   13039                     # one for the "Open Price", "High Price", "Low Price" and "Close Price".
   13040                   "series": { # The data included in a domain or series. # The data being visualized in this chart series.
   13041                     "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   13042                       "sources": [ # The ranges of data for a series or domain.
   13043                           # Exactly one dimension must have a length of 1,
   13044                           # and all sources in the list must have the same dimension
   13045                           # with length 1.
   13046                           # The domain (if it exists) & all series must have the same number
   13047                           # of source ranges. If using more than one source range, then the source
   13048                           # range at a given offset must be contiguous across the domain and series.
   13049                           #
   13050                           # For example, these are valid configurations:
   13051                           #
   13052                           #     domain sources: A1:A5
   13053                           #     series1 sources: B1:B5
   13054                           #     series2 sources: D6:D10
   13055                           #
   13056                           #     domain sources: A1:A5, C10:C12
   13057                           #     series1 sources: B1:B5, D10:D12
   13058                           #     series2 sources: C1:C5, E10:E12
   13059                         { # A range on a sheet.
   13060                             # All indexes are zero-based.
   13061                             # Indexes are half open, e.g the start index is inclusive
   13062                             # and the end index is exclusive -- [start_index, end_index).
   13063                             # Missing indexes indicate the range is unbounded on that side.
   13064                             #
   13065                             # For example, if `"Sheet1"` is sheet ID 0, then:
   13066                             #
   13067                             #   `Sheet1!A1:A1 == sheet_id: 0,
   13068                             #                   start_row_index: 0, end_row_index: 1,
   13069                             #                   start_column_index: 0, end_column_index: 1`
   13070                             #
   13071                             #   `Sheet1!A3:B4 == sheet_id: 0,
   13072                             #                   start_row_index: 2, end_row_index: 4,
   13073                             #                   start_column_index: 0, end_column_index: 2`
   13074                             #
   13075                             #   `Sheet1!A:B == sheet_id: 0,
   13076                             #                 start_column_index: 0, end_column_index: 2`
   13077                             #
   13078                             #   `Sheet1!A5:B == sheet_id: 0,
   13079                             #                  start_row_index: 4,
   13080                             #                  start_column_index: 0, end_column_index: 2`
   13081                             #
   13082                             #   `Sheet1 == sheet_id:0`
   13083                             #
   13084                             # The start index must always be less than or equal to the end index.
   13085                             # If the start index equals the end index, then the range is empty.
   13086                             # Empty ranges are typically not meaningful and are usually rendered in the
   13087                             # UI as `#REF!`.
   13088                           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   13089                           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   13090                           "sheetId": 42, # The sheet this range is on.
   13091                           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   13092                           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   13093                         },
   13094                       ],
   13095                     },
   13096                   },
   13097                   "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
   13098                       # For example, if charting stocks over time, the "Volume" series
   13099                       # may want to be pinned to the right with the prices pinned to the left,
   13100                       # because the scale of trading volume is different than the scale of
   13101                       # prices.
   13102                       # It is an error to specify an axis that isn't a valid minor axis
   13103                       # for the chart's type.
   13104                   "type": "A String", # The type of this series. Valid only if the
   13105                       # chartType is
   13106                       # COMBO.
   13107                       # Different types will change the way the series is visualized.
   13108                       # Only LINE, AREA,
   13109                       # and COLUMN are supported.
   13110                 },
   13111               ],
   13112               "legendPosition": "A String", # The position of the chart legend.
   13113               "domains": [ # The domain of data this is charting.
   13114                   # Only a single domain is supported.
   13115                 { # The domain of a chart.
   13116                     # For example, if charting stock prices over time, this would be the date.
   13117                   "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
   13118                       # this is the data representing the dates.
   13119                     "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   13120                       "sources": [ # The ranges of data for a series or domain.
   13121                           # Exactly one dimension must have a length of 1,
   13122                           # and all sources in the list must have the same dimension
   13123                           # with length 1.
   13124                           # The domain (if it exists) & all series must have the same number
   13125                           # of source ranges. If using more than one source range, then the source
   13126                           # range at a given offset must be contiguous across the domain and series.
   13127                           #
   13128                           # For example, these are valid configurations:
   13129                           #
   13130                           #     domain sources: A1:A5
   13131                           #     series1 sources: B1:B5
   13132                           #     series2 sources: D6:D10
   13133                           #
   13134                           #     domain sources: A1:A5, C10:C12
   13135                           #     series1 sources: B1:B5, D10:D12
   13136                           #     series2 sources: C1:C5, E10:E12
   13137                         { # A range on a sheet.
   13138                             # All indexes are zero-based.
   13139                             # Indexes are half open, e.g the start index is inclusive
   13140                             # and the end index is exclusive -- [start_index, end_index).
   13141                             # Missing indexes indicate the range is unbounded on that side.
   13142                             #
   13143                             # For example, if `"Sheet1"` is sheet ID 0, then:
   13144                             #
   13145                             #   `Sheet1!A1:A1 == sheet_id: 0,
   13146                             #                   start_row_index: 0, end_row_index: 1,
   13147                             #                   start_column_index: 0, end_column_index: 1`
   13148                             #
   13149                             #   `Sheet1!A3:B4 == sheet_id: 0,
   13150                             #                   start_row_index: 2, end_row_index: 4,
   13151                             #                   start_column_index: 0, end_column_index: 2`
   13152                             #
   13153                             #   `Sheet1!A:B == sheet_id: 0,
   13154                             #                 start_column_index: 0, end_column_index: 2`
   13155                             #
   13156                             #   `Sheet1!A5:B == sheet_id: 0,
   13157                             #                  start_row_index: 4,
   13158                             #                  start_column_index: 0, end_column_index: 2`
   13159                             #
   13160                             #   `Sheet1 == sheet_id:0`
   13161                             #
   13162                             # The start index must always be less than or equal to the end index.
   13163                             # If the start index equals the end index, then the range is empty.
   13164                             # Empty ranges are typically not meaningful and are usually rendered in the
   13165                             # UI as `#REF!`.
   13166                           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   13167                           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   13168                           "sheetId": 42, # The sheet this range is on.
   13169                           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   13170                           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   13171                         },
   13172                       ],
   13173                     },
   13174                   },
   13175                 },
   13176               ],
   13177               "chartType": "A String", # The type of the chart.
   13178               "axis": [ # The axis on the chart.
   13179                 { # An axis of the chart.
   13180                     # A chart may not have more than one axis per
   13181                     # axis position.
   13182                   "position": "A String", # The position of this axis.
   13183                   "format": { # The format of a run of text in a cell. # The format of the title.
   13184                       # Only valid if the axis is not associated with the domain.
   13185                       # Absent values indicate that the field isn't specified.
   13186                     "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   13187                         # for simplicity of conversion to/from color representations in various
   13188                         # languages over compactness; for example, the fields of this representation
   13189                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   13190                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   13191                         # method in iOS; and, with just a little work, it can be easily formatted into
   13192                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   13193                         #
   13194                         # Example (Java):
   13195                         #
   13196                         #      import com.google.type.Color;
   13197                         #
   13198                         #      // ...
   13199                         #      public static java.awt.Color fromProto(Color protocolor) {
   13200                         #        float alpha = protocolor.hasAlpha()
   13201                         #            ? protocolor.getAlpha().getValue()
   13202                         #            : 1.0;
   13203                         #
   13204                         #        return new java.awt.Color(
   13205                         #            protocolor.getRed(),
   13206                         #            protocolor.getGreen(),
   13207                         #            protocolor.getBlue(),
   13208                         #            alpha);
   13209                         #      }
   13210                         #
   13211                         #      public static Color toProto(java.awt.Color color) {
   13212                         #        float red = (float) color.getRed();
   13213                         #        float green = (float) color.getGreen();
   13214                         #        float blue = (float) color.getBlue();
   13215                         #        float denominator = 255.0;
   13216                         #        Color.Builder resultBuilder =
   13217                         #            Color
   13218                         #                .newBuilder()
   13219                         #                .setRed(red / denominator)
   13220                         #                .setGreen(green / denominator)
   13221                         #                .setBlue(blue / denominator);
   13222                         #        int alpha = color.getAlpha();
   13223                         #        if (alpha != 255) {
   13224                         #          result.setAlpha(
   13225                         #              FloatValue
   13226                         #                  .newBuilder()
   13227                         #                  .setValue(((float) alpha) / denominator)
   13228                         #                  .build());
   13229                         #        }
   13230                         #        return resultBuilder.build();
   13231                         #      }
   13232                         #      // ...
   13233                         #
   13234                         # Example (iOS / Obj-C):
   13235                         #
   13236                         #      // ...
   13237                         #      static UIColor* fromProto(Color* protocolor) {
   13238                         #         float red = [protocolor red];
   13239                         #         float green = [protocolor green];
   13240                         #         float blue = [protocolor blue];
   13241                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   13242                         #         float alpha = 1.0;
   13243                         #         if (alpha_wrapper != nil) {
   13244                         #           alpha = [alpha_wrapper value];
   13245                         #         }
   13246                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   13247                         #      }
   13248                         #
   13249                         #      static Color* toProto(UIColor* color) {
   13250                         #          CGFloat red, green, blue, alpha;
   13251                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   13252                         #            return nil;
   13253                         #          }
   13254                         #          Color* result = [Color alloc] init];
   13255                         #          [result setRed:red];
   13256                         #          [result setGreen:green];
   13257                         #          [result setBlue:blue];
   13258                         #          if (alpha <= 0.9999) {
   13259                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   13260                         #          }
   13261                         #          [result autorelease];
   13262                         #          return result;
   13263                         #     }
   13264                         #     // ...
   13265                         #
   13266                         #  Example (JavaScript):
   13267                         #
   13268                         #     // ...
   13269                         #
   13270                         #     var protoToCssColor = function(rgb_color) {
   13271                         #        var redFrac = rgb_color.red || 0.0;
   13272                         #        var greenFrac = rgb_color.green || 0.0;
   13273                         #        var blueFrac = rgb_color.blue || 0.0;
   13274                         #        var red = Math.floor(redFrac * 255);
   13275                         #        var green = Math.floor(greenFrac * 255);
   13276                         #        var blue = Math.floor(blueFrac * 255);
   13277                         #
   13278                         #        if (!('alpha' in rgb_color)) {
   13279                         #           return rgbToCssColor_(red, green, blue);
   13280                         #        }
   13281                         #
   13282                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   13283                         #        var rgbParams = [red, green, blue].join(',');
   13284                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   13285                         #     };
   13286                         #
   13287                         #     var rgbToCssColor_ = function(red, green, blue) {
   13288                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   13289                         #       var hexString = rgbNumber.toString(16);
   13290                         #       var missingZeros = 6 - hexString.length;
   13291                         #       var resultBuilder = ['#'];
   13292                         #       for (var i = 0; i < missingZeros; i++) {
   13293                         #          resultBuilder.push('0');
   13294                         #       }
   13295                         #       resultBuilder.push(hexString);
   13296                         #       return resultBuilder.join('');
   13297                         #     };
   13298                         #
   13299                         #     // ...
   13300                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   13301                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   13302                           # the final pixel color is defined by the equation:
   13303                           #
   13304                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   13305                           #
   13306                           # This means that a value of 1.0 corresponds to a solid color, whereas
   13307                           # a value of 0.0 corresponds to a completely transparent color. This
   13308                           # uses a wrapper message rather than a simple float scalar so that it is
   13309                           # possible to distinguish between a default value and the value being unset.
   13310                           # If omitted, this color object is to be rendered as a solid color
   13311                           # (as if the alpha value had been explicitly given with a value of 1.0).
   13312                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   13313                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   13314                     },
   13315                     "bold": True or False, # True if the text is bold.
   13316                     "strikethrough": True or False, # True if the text has a strikethrough.
   13317                     "fontFamily": "A String", # The font family.
   13318                     "fontSize": 42, # The size of the font.
   13319                     "italic": True or False, # True if the text is italicized.
   13320                     "underline": True or False, # True if the text is underlined.
   13321                   },
   13322                   "title": "A String", # The title of this axis. If set, this overrides any title inferred
   13323                       # from headers of the data.
   13324                 },
   13325               ],
   13326             },
   13327             "title": "A String", # The title of the chart.
   13328           },
   13329         },
   13330         "moveDimension": { # Moves one or more rows or columns. # Moves rows or columns to another location in a sheet.
   13331           "source": { # A range along a single dimension on a sheet. # The source dimensions to move.
   13332               # All indexes are zero-based.
   13333               # Indexes are half open: the start index is inclusive
   13334               # and the end index is exclusive.
   13335               # Missing indexes indicate the range is unbounded on that side.
   13336             "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
   13337             "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
   13338             "dimension": "A String", # The dimension of the span.
   13339             "sheetId": 42, # The sheet this span is on.
   13340           },
   13341           "destinationIndex": 42, # The zero-based start index of where to move the source data to,
   13342               # based on the coordinates *before* the source data is removed
   13343               # from the grid.  Existing data will be shifted down or right
   13344               # (depending on the dimension) to make room for the moved dimensions.
   13345               # The source dimensions are removed from the grid, so the
   13346               # the data may end up in a different index than specified.
   13347               #
   13348               # For example, given `A1..A5` of `0, 1, 2, 3, 4` and wanting to move
   13349               # `"1"` and `"2"` to between `"3"` and `"4"`, the source would be
   13350               # `ROWS [1..3)`,and the destination index would be `"4"`
   13351               # (the zero-based index of row 5).
   13352               # The end result would be `A1..A5` of `0, 3, 1, 2, 4`.
   13353         },
   13354         "addNamedRange": { # Adds a named range to the spreadsheet. # Adds a named range.
   13355           "namedRange": { # A named range. # The named range to add. The namedRangeId
   13356               # field is optional; if one is not set, an id will be randomly generated. (It
   13357               # is an error to specify the ID of a range that already exists.)
   13358             "namedRangeId": "A String", # The ID of the named range.
   13359             "range": { # A range on a sheet. # The range this represents.
   13360                 # All indexes are zero-based.
   13361                 # Indexes are half open, e.g the start index is inclusive
   13362                 # and the end index is exclusive -- [start_index, end_index).
   13363                 # Missing indexes indicate the range is unbounded on that side.
   13364                 #
   13365                 # For example, if `"Sheet1"` is sheet ID 0, then:
   13366                 #
   13367                 #   `Sheet1!A1:A1 == sheet_id: 0,
   13368                 #                   start_row_index: 0, end_row_index: 1,
   13369                 #                   start_column_index: 0, end_column_index: 1`
   13370                 #
   13371                 #   `Sheet1!A3:B4 == sheet_id: 0,
   13372                 #                   start_row_index: 2, end_row_index: 4,
   13373                 #                   start_column_index: 0, end_column_index: 2`
   13374                 #
   13375                 #   `Sheet1!A:B == sheet_id: 0,
   13376                 #                 start_column_index: 0, end_column_index: 2`
   13377                 #
   13378                 #   `Sheet1!A5:B == sheet_id: 0,
   13379                 #                  start_row_index: 4,
   13380                 #                  start_column_index: 0, end_column_index: 2`
   13381                 #
   13382                 #   `Sheet1 == sheet_id:0`
   13383                 #
   13384                 # The start index must always be less than or equal to the end index.
   13385                 # If the start index equals the end index, then the range is empty.
   13386                 # Empty ranges are typically not meaningful and are usually rendered in the
   13387                 # UI as `#REF!`.
   13388               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   13389               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   13390               "sheetId": 42, # The sheet this range is on.
   13391               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   13392               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   13393             },
   13394             "name": "A String", # The name of the named range.
   13395           },
   13396         },
   13397         "addBanding": { # Adds a new banded range to the spreadsheet. # Adds a new banded range
   13398           "bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range to add. The bandedRangeId
   13399               # field is optional; if one is not set, an id will be randomly generated. (It
   13400               # is an error to specify the ID of a range that already exists.)
   13401             "range": { # A range on a sheet. # The range over which these properties are applied.
   13402                 # All indexes are zero-based.
   13403                 # Indexes are half open, e.g the start index is inclusive
   13404                 # and the end index is exclusive -- [start_index, end_index).
   13405                 # Missing indexes indicate the range is unbounded on that side.
   13406                 #
   13407                 # For example, if `"Sheet1"` is sheet ID 0, then:
   13408                 #
   13409                 #   `Sheet1!A1:A1 == sheet_id: 0,
   13410                 #                   start_row_index: 0, end_row_index: 1,
   13411                 #                   start_column_index: 0, end_column_index: 1`
   13412                 #
   13413                 #   `Sheet1!A3:B4 == sheet_id: 0,
   13414                 #                   start_row_index: 2, end_row_index: 4,
   13415                 #                   start_column_index: 0, end_column_index: 2`
   13416                 #
   13417                 #   `Sheet1!A:B == sheet_id: 0,
   13418                 #                 start_column_index: 0, end_column_index: 2`
   13419                 #
   13420                 #   `Sheet1!A5:B == sheet_id: 0,
   13421                 #                  start_row_index: 4,
   13422                 #                  start_column_index: 0, end_column_index: 2`
   13423                 #
   13424                 #   `Sheet1 == sheet_id:0`
   13425                 #
   13426                 # The start index must always be less than or equal to the end index.
   13427                 # If the start index equals the end index, then the range is empty.
   13428                 # Empty ranges are typically not meaningful and are usually rendered in the
   13429                 # UI as `#REF!`.
   13430               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   13431               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   13432               "sheetId": 42, # The sheet this range is on.
   13433               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   13434               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   13435             },
   13436             "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
   13437                 # by-column basis throughout all the columns in the range. At least one of
   13438                 # row_properties or column_properties must be specified.
   13439                 # BandedRange.row_properties and BandedRange.column_properties are
   13440                 # set, the fill colors are applied to cells according to the following rules:
   13441                 #
   13442                 # * header_color and footer_color take priority over band colors.
   13443                 # * first_band_color takes priority over second_band_color.
   13444                 # * row_properties takes priority over column_properties.
   13445                 #
   13446                 # For example, the first row color takes priority over the first column
   13447                 # color, but the first column color takes priority over the second row color.
   13448                 # Similarly, the row header takes priority over the column header in the
   13449                 # top left cell, but the column header takes priority over the first row
   13450                 # color if the row header is not set.
   13451               "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   13452                   # for simplicity of conversion to/from color representations in various
   13453                   # languages over compactness; for example, the fields of this representation
   13454                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   13455                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   13456                   # method in iOS; and, with just a little work, it can be easily formatted into
   13457                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   13458                   #
   13459                   # Example (Java):
   13460                   #
   13461                   #      import com.google.type.Color;
   13462                   #
   13463                   #      // ...
   13464                   #      public static java.awt.Color fromProto(Color protocolor) {
   13465                   #        float alpha = protocolor.hasAlpha()
   13466                   #            ? protocolor.getAlpha().getValue()
   13467                   #            : 1.0;
   13468                   #
   13469                   #        return new java.awt.Color(
   13470                   #            protocolor.getRed(),
   13471                   #            protocolor.getGreen(),
   13472                   #            protocolor.getBlue(),
   13473                   #            alpha);
   13474                   #      }
   13475                   #
   13476                   #      public static Color toProto(java.awt.Color color) {
   13477                   #        float red = (float) color.getRed();
   13478                   #        float green = (float) color.getGreen();
   13479                   #        float blue = (float) color.getBlue();
   13480                   #        float denominator = 255.0;
   13481                   #        Color.Builder resultBuilder =
   13482                   #            Color
   13483                   #                .newBuilder()
   13484                   #                .setRed(red / denominator)
   13485                   #                .setGreen(green / denominator)
   13486                   #                .setBlue(blue / denominator);
   13487                   #        int alpha = color.getAlpha();
   13488                   #        if (alpha != 255) {
   13489                   #          result.setAlpha(
   13490                   #              FloatValue
   13491                   #                  .newBuilder()
   13492                   #                  .setValue(((float) alpha) / denominator)
   13493                   #                  .build());
   13494                   #        }
   13495                   #        return resultBuilder.build();
   13496                   #      }
   13497                   #      // ...
   13498                   #
   13499                   # Example (iOS / Obj-C):
   13500                   #
   13501                   #      // ...
   13502                   #      static UIColor* fromProto(Color* protocolor) {
   13503                   #         float red = [protocolor red];
   13504                   #         float green = [protocolor green];
   13505                   #         float blue = [protocolor blue];
   13506                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   13507                   #         float alpha = 1.0;
   13508                   #         if (alpha_wrapper != nil) {
   13509                   #           alpha = [alpha_wrapper value];
   13510                   #         }
   13511                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   13512                   #      }
   13513                   #
   13514                   #      static Color* toProto(UIColor* color) {
   13515                   #          CGFloat red, green, blue, alpha;
   13516                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   13517                   #            return nil;
   13518                   #          }
   13519                   #          Color* result = [Color alloc] init];
   13520                   #          [result setRed:red];
   13521                   #          [result setGreen:green];
   13522                   #          [result setBlue:blue];
   13523                   #          if (alpha <= 0.9999) {
   13524                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   13525                   #          }
   13526                   #          [result autorelease];
   13527                   #          return result;
   13528                   #     }
   13529                   #     // ...
   13530                   #
   13531                   #  Example (JavaScript):
   13532                   #
   13533                   #     // ...
   13534                   #
   13535                   #     var protoToCssColor = function(rgb_color) {
   13536                   #        var redFrac = rgb_color.red || 0.0;
   13537                   #        var greenFrac = rgb_color.green || 0.0;
   13538                   #        var blueFrac = rgb_color.blue || 0.0;
   13539                   #        var red = Math.floor(redFrac * 255);
   13540                   #        var green = Math.floor(greenFrac * 255);
   13541                   #        var blue = Math.floor(blueFrac * 255);
   13542                   #
   13543                   #        if (!('alpha' in rgb_color)) {
   13544                   #           return rgbToCssColor_(red, green, blue);
   13545                   #        }
   13546                   #
   13547                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   13548                   #        var rgbParams = [red, green, blue].join(',');
   13549                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   13550                   #     };
   13551                   #
   13552                   #     var rgbToCssColor_ = function(red, green, blue) {
   13553                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   13554                   #       var hexString = rgbNumber.toString(16);
   13555                   #       var missingZeros = 6 - hexString.length;
   13556                   #       var resultBuilder = ['#'];
   13557                   #       for (var i = 0; i < missingZeros; i++) {
   13558                   #          resultBuilder.push('0');
   13559                   #       }
   13560                   #       resultBuilder.push(hexString);
   13561                   #       return resultBuilder.join('');
   13562                   #     };
   13563                   #
   13564                   #     // ...
   13565                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   13566                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   13567                     # the final pixel color is defined by the equation:
   13568                     #
   13569                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   13570                     #
   13571                     # This means that a value of 1.0 corresponds to a solid color, whereas
   13572                     # a value of 0.0 corresponds to a completely transparent color. This
   13573                     # uses a wrapper message rather than a simple float scalar so that it is
   13574                     # possible to distinguish between a default value and the value being unset.
   13575                     # If omitted, this color object is to be rendered as a solid color
   13576                     # (as if the alpha value had been explicitly given with a value of 1.0).
   13577                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   13578                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   13579               },
   13580               "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   13581                   # row or column will be filled with this color and the colors will
   13582                   # alternate between first_band_color and second_band_color starting
   13583                   # from the second row or column. Otherwise, the first row or column will be
   13584                   # filled with first_band_color and the colors will proceed to alternate
   13585                   # as they normally would.
   13586                   # for simplicity of conversion to/from color representations in various
   13587                   # languages over compactness; for example, the fields of this representation
   13588                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   13589                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   13590                   # method in iOS; and, with just a little work, it can be easily formatted into
   13591                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   13592                   #
   13593                   # Example (Java):
   13594                   #
   13595                   #      import com.google.type.Color;
   13596                   #
   13597                   #      // ...
   13598                   #      public static java.awt.Color fromProto(Color protocolor) {
   13599                   #        float alpha = protocolor.hasAlpha()
   13600                   #            ? protocolor.getAlpha().getValue()
   13601                   #            : 1.0;
   13602                   #
   13603                   #        return new java.awt.Color(
   13604                   #            protocolor.getRed(),
   13605                   #            protocolor.getGreen(),
   13606                   #            protocolor.getBlue(),
   13607                   #            alpha);
   13608                   #      }
   13609                   #
   13610                   #      public static Color toProto(java.awt.Color color) {
   13611                   #        float red = (float) color.getRed();
   13612                   #        float green = (float) color.getGreen();
   13613                   #        float blue = (float) color.getBlue();
   13614                   #        float denominator = 255.0;
   13615                   #        Color.Builder resultBuilder =
   13616                   #            Color
   13617                   #                .newBuilder()
   13618                   #                .setRed(red / denominator)
   13619                   #                .setGreen(green / denominator)
   13620                   #                .setBlue(blue / denominator);
   13621                   #        int alpha = color.getAlpha();
   13622                   #        if (alpha != 255) {
   13623                   #          result.setAlpha(
   13624                   #              FloatValue
   13625                   #                  .newBuilder()
   13626                   #                  .setValue(((float) alpha) / denominator)
   13627                   #                  .build());
   13628                   #        }
   13629                   #        return resultBuilder.build();
   13630                   #      }
   13631                   #      // ...
   13632                   #
   13633                   # Example (iOS / Obj-C):
   13634                   #
   13635                   #      // ...
   13636                   #      static UIColor* fromProto(Color* protocolor) {
   13637                   #         float red = [protocolor red];
   13638                   #         float green = [protocolor green];
   13639                   #         float blue = [protocolor blue];
   13640                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   13641                   #         float alpha = 1.0;
   13642                   #         if (alpha_wrapper != nil) {
   13643                   #           alpha = [alpha_wrapper value];
   13644                   #         }
   13645                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   13646                   #      }
   13647                   #
   13648                   #      static Color* toProto(UIColor* color) {
   13649                   #          CGFloat red, green, blue, alpha;
   13650                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   13651                   #            return nil;
   13652                   #          }
   13653                   #          Color* result = [Color alloc] init];
   13654                   #          [result setRed:red];
   13655                   #          [result setGreen:green];
   13656                   #          [result setBlue:blue];
   13657                   #          if (alpha <= 0.9999) {
   13658                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   13659                   #          }
   13660                   #          [result autorelease];
   13661                   #          return result;
   13662                   #     }
   13663                   #     // ...
   13664                   #
   13665                   #  Example (JavaScript):
   13666                   #
   13667                   #     // ...
   13668                   #
   13669                   #     var protoToCssColor = function(rgb_color) {
   13670                   #        var redFrac = rgb_color.red || 0.0;
   13671                   #        var greenFrac = rgb_color.green || 0.0;
   13672                   #        var blueFrac = rgb_color.blue || 0.0;
   13673                   #        var red = Math.floor(redFrac * 255);
   13674                   #        var green = Math.floor(greenFrac * 255);
   13675                   #        var blue = Math.floor(blueFrac * 255);
   13676                   #
   13677                   #        if (!('alpha' in rgb_color)) {
   13678                   #           return rgbToCssColor_(red, green, blue);
   13679                   #        }
   13680                   #
   13681                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   13682                   #        var rgbParams = [red, green, blue].join(',');
   13683                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   13684                   #     };
   13685                   #
   13686                   #     var rgbToCssColor_ = function(red, green, blue) {
   13687                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   13688                   #       var hexString = rgbNumber.toString(16);
   13689                   #       var missingZeros = 6 - hexString.length;
   13690                   #       var resultBuilder = ['#'];
   13691                   #       for (var i = 0; i < missingZeros; i++) {
   13692                   #          resultBuilder.push('0');
   13693                   #       }
   13694                   #       resultBuilder.push(hexString);
   13695                   #       return resultBuilder.join('');
   13696                   #     };
   13697                   #
   13698                   #     // ...
   13699                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   13700                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   13701                     # the final pixel color is defined by the equation:
   13702                     #
   13703                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   13704                     #
   13705                     # This means that a value of 1.0 corresponds to a solid color, whereas
   13706                     # a value of 0.0 corresponds to a completely transparent color. This
   13707                     # uses a wrapper message rather than a simple float scalar so that it is
   13708                     # possible to distinguish between a default value and the value being unset.
   13709                     # If omitted, this color object is to be rendered as a solid color
   13710                     # (as if the alpha value had been explicitly given with a value of 1.0).
   13711                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   13712                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   13713               },
   13714               "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   13715                   # row or column will be filled with either first_band_color or
   13716                   # second_band_color, depending on the color of the previous row or
   13717                   # column.
   13718                   # for simplicity of conversion to/from color representations in various
   13719                   # languages over compactness; for example, the fields of this representation
   13720                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   13721                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   13722                   # method in iOS; and, with just a little work, it can be easily formatted into
   13723                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   13724                   #
   13725                   # Example (Java):
   13726                   #
   13727                   #      import com.google.type.Color;
   13728                   #
   13729                   #      // ...
   13730                   #      public static java.awt.Color fromProto(Color protocolor) {
   13731                   #        float alpha = protocolor.hasAlpha()
   13732                   #            ? protocolor.getAlpha().getValue()
   13733                   #            : 1.0;
   13734                   #
   13735                   #        return new java.awt.Color(
   13736                   #            protocolor.getRed(),
   13737                   #            protocolor.getGreen(),
   13738                   #            protocolor.getBlue(),
   13739                   #            alpha);
   13740                   #      }
   13741                   #
   13742                   #      public static Color toProto(java.awt.Color color) {
   13743                   #        float red = (float) color.getRed();
   13744                   #        float green = (float) color.getGreen();
   13745                   #        float blue = (float) color.getBlue();
   13746                   #        float denominator = 255.0;
   13747                   #        Color.Builder resultBuilder =
   13748                   #            Color
   13749                   #                .newBuilder()
   13750                   #                .setRed(red / denominator)
   13751                   #                .setGreen(green / denominator)
   13752                   #                .setBlue(blue / denominator);
   13753                   #        int alpha = color.getAlpha();
   13754                   #        if (alpha != 255) {
   13755                   #          result.setAlpha(
   13756                   #              FloatValue
   13757                   #                  .newBuilder()
   13758                   #                  .setValue(((float) alpha) / denominator)
   13759                   #                  .build());
   13760                   #        }
   13761                   #        return resultBuilder.build();
   13762                   #      }
   13763                   #      // ...
   13764                   #
   13765                   # Example (iOS / Obj-C):
   13766                   #
   13767                   #      // ...
   13768                   #      static UIColor* fromProto(Color* protocolor) {
   13769                   #         float red = [protocolor red];
   13770                   #         float green = [protocolor green];
   13771                   #         float blue = [protocolor blue];
   13772                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   13773                   #         float alpha = 1.0;
   13774                   #         if (alpha_wrapper != nil) {
   13775                   #           alpha = [alpha_wrapper value];
   13776                   #         }
   13777                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   13778                   #      }
   13779                   #
   13780                   #      static Color* toProto(UIColor* color) {
   13781                   #          CGFloat red, green, blue, alpha;
   13782                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   13783                   #            return nil;
   13784                   #          }
   13785                   #          Color* result = [Color alloc] init];
   13786                   #          [result setRed:red];
   13787                   #          [result setGreen:green];
   13788                   #          [result setBlue:blue];
   13789                   #          if (alpha <= 0.9999) {
   13790                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   13791                   #          }
   13792                   #          [result autorelease];
   13793                   #          return result;
   13794                   #     }
   13795                   #     // ...
   13796                   #
   13797                   #  Example (JavaScript):
   13798                   #
   13799                   #     // ...
   13800                   #
   13801                   #     var protoToCssColor = function(rgb_color) {
   13802                   #        var redFrac = rgb_color.red || 0.0;
   13803                   #        var greenFrac = rgb_color.green || 0.0;
   13804                   #        var blueFrac = rgb_color.blue || 0.0;
   13805                   #        var red = Math.floor(redFrac * 255);
   13806                   #        var green = Math.floor(greenFrac * 255);
   13807                   #        var blue = Math.floor(blueFrac * 255);
   13808                   #
   13809                   #        if (!('alpha' in rgb_color)) {
   13810                   #           return rgbToCssColor_(red, green, blue);
   13811                   #        }
   13812                   #
   13813                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   13814                   #        var rgbParams = [red, green, blue].join(',');
   13815                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   13816                   #     };
   13817                   #
   13818                   #     var rgbToCssColor_ = function(red, green, blue) {
   13819                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   13820                   #       var hexString = rgbNumber.toString(16);
   13821                   #       var missingZeros = 6 - hexString.length;
   13822                   #       var resultBuilder = ['#'];
   13823                   #       for (var i = 0; i < missingZeros; i++) {
   13824                   #          resultBuilder.push('0');
   13825                   #       }
   13826                   #       resultBuilder.push(hexString);
   13827                   #       return resultBuilder.join('');
   13828                   #     };
   13829                   #
   13830                   #     // ...
   13831                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   13832                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   13833                     # the final pixel color is defined by the equation:
   13834                     #
   13835                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   13836                     #
   13837                     # This means that a value of 1.0 corresponds to a solid color, whereas
   13838                     # a value of 0.0 corresponds to a completely transparent color. This
   13839                     # uses a wrapper message rather than a simple float scalar so that it is
   13840                     # possible to distinguish between a default value and the value being unset.
   13841                     # If omitted, this color object is to be rendered as a solid color
   13842                     # (as if the alpha value had been explicitly given with a value of 1.0).
   13843                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   13844                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   13845               },
   13846               "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   13847                   # for simplicity of conversion to/from color representations in various
   13848                   # languages over compactness; for example, the fields of this representation
   13849                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   13850                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   13851                   # method in iOS; and, with just a little work, it can be easily formatted into
   13852                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   13853                   #
   13854                   # Example (Java):
   13855                   #
   13856                   #      import com.google.type.Color;
   13857                   #
   13858                   #      // ...
   13859                   #      public static java.awt.Color fromProto(Color protocolor) {
   13860                   #        float alpha = protocolor.hasAlpha()
   13861                   #            ? protocolor.getAlpha().getValue()
   13862                   #            : 1.0;
   13863                   #
   13864                   #        return new java.awt.Color(
   13865                   #            protocolor.getRed(),
   13866                   #            protocolor.getGreen(),
   13867                   #            protocolor.getBlue(),
   13868                   #            alpha);
   13869                   #      }
   13870                   #
   13871                   #      public static Color toProto(java.awt.Color color) {
   13872                   #        float red = (float) color.getRed();
   13873                   #        float green = (float) color.getGreen();
   13874                   #        float blue = (float) color.getBlue();
   13875                   #        float denominator = 255.0;
   13876                   #        Color.Builder resultBuilder =
   13877                   #            Color
   13878                   #                .newBuilder()
   13879                   #                .setRed(red / denominator)
   13880                   #                .setGreen(green / denominator)
   13881                   #                .setBlue(blue / denominator);
   13882                   #        int alpha = color.getAlpha();
   13883                   #        if (alpha != 255) {
   13884                   #          result.setAlpha(
   13885                   #              FloatValue
   13886                   #                  .newBuilder()
   13887                   #                  .setValue(((float) alpha) / denominator)
   13888                   #                  .build());
   13889                   #        }
   13890                   #        return resultBuilder.build();
   13891                   #      }
   13892                   #      // ...
   13893                   #
   13894                   # Example (iOS / Obj-C):
   13895                   #
   13896                   #      // ...
   13897                   #      static UIColor* fromProto(Color* protocolor) {
   13898                   #         float red = [protocolor red];
   13899                   #         float green = [protocolor green];
   13900                   #         float blue = [protocolor blue];
   13901                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   13902                   #         float alpha = 1.0;
   13903                   #         if (alpha_wrapper != nil) {
   13904                   #           alpha = [alpha_wrapper value];
   13905                   #         }
   13906                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   13907                   #      }
   13908                   #
   13909                   #      static Color* toProto(UIColor* color) {
   13910                   #          CGFloat red, green, blue, alpha;
   13911                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   13912                   #            return nil;
   13913                   #          }
   13914                   #          Color* result = [Color alloc] init];
   13915                   #          [result setRed:red];
   13916                   #          [result setGreen:green];
   13917                   #          [result setBlue:blue];
   13918                   #          if (alpha <= 0.9999) {
   13919                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   13920                   #          }
   13921                   #          [result autorelease];
   13922                   #          return result;
   13923                   #     }
   13924                   #     // ...
   13925                   #
   13926                   #  Example (JavaScript):
   13927                   #
   13928                   #     // ...
   13929                   #
   13930                   #     var protoToCssColor = function(rgb_color) {
   13931                   #        var redFrac = rgb_color.red || 0.0;
   13932                   #        var greenFrac = rgb_color.green || 0.0;
   13933                   #        var blueFrac = rgb_color.blue || 0.0;
   13934                   #        var red = Math.floor(redFrac * 255);
   13935                   #        var green = Math.floor(greenFrac * 255);
   13936                   #        var blue = Math.floor(blueFrac * 255);
   13937                   #
   13938                   #        if (!('alpha' in rgb_color)) {
   13939                   #           return rgbToCssColor_(red, green, blue);
   13940                   #        }
   13941                   #
   13942                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   13943                   #        var rgbParams = [red, green, blue].join(',');
   13944                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   13945                   #     };
   13946                   #
   13947                   #     var rgbToCssColor_ = function(red, green, blue) {
   13948                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   13949                   #       var hexString = rgbNumber.toString(16);
   13950                   #       var missingZeros = 6 - hexString.length;
   13951                   #       var resultBuilder = ['#'];
   13952                   #       for (var i = 0; i < missingZeros; i++) {
   13953                   #          resultBuilder.push('0');
   13954                   #       }
   13955                   #       resultBuilder.push(hexString);
   13956                   #       return resultBuilder.join('');
   13957                   #     };
   13958                   #
   13959                   #     // ...
   13960                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   13961                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   13962                     # the final pixel color is defined by the equation:
   13963                     #
   13964                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   13965                     #
   13966                     # This means that a value of 1.0 corresponds to a solid color, whereas
   13967                     # a value of 0.0 corresponds to a completely transparent color. This
   13968                     # uses a wrapper message rather than a simple float scalar so that it is
   13969                     # possible to distinguish between a default value and the value being unset.
   13970                     # If omitted, this color object is to be rendered as a solid color
   13971                     # (as if the alpha value had been explicitly given with a value of 1.0).
   13972                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   13973                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   13974               },
   13975             },
   13976             "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
   13977                 # basis throughout all the rows in the range. At least one of
   13978                 # row_properties or column_properties must be specified.
   13979                 # BandedRange.row_properties and BandedRange.column_properties are
   13980                 # set, the fill colors are applied to cells according to the following rules:
   13981                 #
   13982                 # * header_color and footer_color take priority over band colors.
   13983                 # * first_band_color takes priority over second_band_color.
   13984                 # * row_properties takes priority over column_properties.
   13985                 #
   13986                 # For example, the first row color takes priority over the first column
   13987                 # color, but the first column color takes priority over the second row color.
   13988                 # Similarly, the row header takes priority over the column header in the
   13989                 # top left cell, but the column header takes priority over the first row
   13990                 # color if the row header is not set.
   13991               "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   13992                   # for simplicity of conversion to/from color representations in various
   13993                   # languages over compactness; for example, the fields of this representation
   13994                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   13995                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   13996                   # method in iOS; and, with just a little work, it can be easily formatted into
   13997                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   13998                   #
   13999                   # Example (Java):
   14000                   #
   14001                   #      import com.google.type.Color;
   14002                   #
   14003                   #      // ...
   14004                   #      public static java.awt.Color fromProto(Color protocolor) {
   14005                   #        float alpha = protocolor.hasAlpha()
   14006                   #            ? protocolor.getAlpha().getValue()
   14007                   #            : 1.0;
   14008                   #
   14009                   #        return new java.awt.Color(
   14010                   #            protocolor.getRed(),
   14011                   #            protocolor.getGreen(),
   14012                   #            protocolor.getBlue(),
   14013                   #            alpha);
   14014                   #      }
   14015                   #
   14016                   #      public static Color toProto(java.awt.Color color) {
   14017                   #        float red = (float) color.getRed();
   14018                   #        float green = (float) color.getGreen();
   14019                   #        float blue = (float) color.getBlue();
   14020                   #        float denominator = 255.0;
   14021                   #        Color.Builder resultBuilder =
   14022                   #            Color
   14023                   #                .newBuilder()
   14024                   #                .setRed(red / denominator)
   14025                   #                .setGreen(green / denominator)
   14026                   #                .setBlue(blue / denominator);
   14027                   #        int alpha = color.getAlpha();
   14028                   #        if (alpha != 255) {
   14029                   #          result.setAlpha(
   14030                   #              FloatValue
   14031                   #                  .newBuilder()
   14032                   #                  .setValue(((float) alpha) / denominator)
   14033                   #                  .build());
   14034                   #        }
   14035                   #        return resultBuilder.build();
   14036                   #      }
   14037                   #      // ...
   14038                   #
   14039                   # Example (iOS / Obj-C):
   14040                   #
   14041                   #      // ...
   14042                   #      static UIColor* fromProto(Color* protocolor) {
   14043                   #         float red = [protocolor red];
   14044                   #         float green = [protocolor green];
   14045                   #         float blue = [protocolor blue];
   14046                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   14047                   #         float alpha = 1.0;
   14048                   #         if (alpha_wrapper != nil) {
   14049                   #           alpha = [alpha_wrapper value];
   14050                   #         }
   14051                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   14052                   #      }
   14053                   #
   14054                   #      static Color* toProto(UIColor* color) {
   14055                   #          CGFloat red, green, blue, alpha;
   14056                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   14057                   #            return nil;
   14058                   #          }
   14059                   #          Color* result = [Color alloc] init];
   14060                   #          [result setRed:red];
   14061                   #          [result setGreen:green];
   14062                   #          [result setBlue:blue];
   14063                   #          if (alpha <= 0.9999) {
   14064                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   14065                   #          }
   14066                   #          [result autorelease];
   14067                   #          return result;
   14068                   #     }
   14069                   #     // ...
   14070                   #
   14071                   #  Example (JavaScript):
   14072                   #
   14073                   #     // ...
   14074                   #
   14075                   #     var protoToCssColor = function(rgb_color) {
   14076                   #        var redFrac = rgb_color.red || 0.0;
   14077                   #        var greenFrac = rgb_color.green || 0.0;
   14078                   #        var blueFrac = rgb_color.blue || 0.0;
   14079                   #        var red = Math.floor(redFrac * 255);
   14080                   #        var green = Math.floor(greenFrac * 255);
   14081                   #        var blue = Math.floor(blueFrac * 255);
   14082                   #
   14083                   #        if (!('alpha' in rgb_color)) {
   14084                   #           return rgbToCssColor_(red, green, blue);
   14085                   #        }
   14086                   #
   14087                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   14088                   #        var rgbParams = [red, green, blue].join(',');
   14089                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   14090                   #     };
   14091                   #
   14092                   #     var rgbToCssColor_ = function(red, green, blue) {
   14093                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   14094                   #       var hexString = rgbNumber.toString(16);
   14095                   #       var missingZeros = 6 - hexString.length;
   14096                   #       var resultBuilder = ['#'];
   14097                   #       for (var i = 0; i < missingZeros; i++) {
   14098                   #          resultBuilder.push('0');
   14099                   #       }
   14100                   #       resultBuilder.push(hexString);
   14101                   #       return resultBuilder.join('');
   14102                   #     };
   14103                   #
   14104                   #     // ...
   14105                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   14106                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   14107                     # the final pixel color is defined by the equation:
   14108                     #
   14109                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   14110                     #
   14111                     # This means that a value of 1.0 corresponds to a solid color, whereas
   14112                     # a value of 0.0 corresponds to a completely transparent color. This
   14113                     # uses a wrapper message rather than a simple float scalar so that it is
   14114                     # possible to distinguish between a default value and the value being unset.
   14115                     # If omitted, this color object is to be rendered as a solid color
   14116                     # (as if the alpha value had been explicitly given with a value of 1.0).
   14117                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   14118                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   14119               },
   14120               "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   14121                   # row or column will be filled with this color and the colors will
   14122                   # alternate between first_band_color and second_band_color starting
   14123                   # from the second row or column. Otherwise, the first row or column will be
   14124                   # filled with first_band_color and the colors will proceed to alternate
   14125                   # as they normally would.
   14126                   # for simplicity of conversion to/from color representations in various
   14127                   # languages over compactness; for example, the fields of this representation
   14128                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   14129                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   14130                   # method in iOS; and, with just a little work, it can be easily formatted into
   14131                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   14132                   #
   14133                   # Example (Java):
   14134                   #
   14135                   #      import com.google.type.Color;
   14136                   #
   14137                   #      // ...
   14138                   #      public static java.awt.Color fromProto(Color protocolor) {
   14139                   #        float alpha = protocolor.hasAlpha()
   14140                   #            ? protocolor.getAlpha().getValue()
   14141                   #            : 1.0;
   14142                   #
   14143                   #        return new java.awt.Color(
   14144                   #            protocolor.getRed(),
   14145                   #            protocolor.getGreen(),
   14146                   #            protocolor.getBlue(),
   14147                   #            alpha);
   14148                   #      }
   14149                   #
   14150                   #      public static Color toProto(java.awt.Color color) {
   14151                   #        float red = (float) color.getRed();
   14152                   #        float green = (float) color.getGreen();
   14153                   #        float blue = (float) color.getBlue();
   14154                   #        float denominator = 255.0;
   14155                   #        Color.Builder resultBuilder =
   14156                   #            Color
   14157                   #                .newBuilder()
   14158                   #                .setRed(red / denominator)
   14159                   #                .setGreen(green / denominator)
   14160                   #                .setBlue(blue / denominator);
   14161                   #        int alpha = color.getAlpha();
   14162                   #        if (alpha != 255) {
   14163                   #          result.setAlpha(
   14164                   #              FloatValue
   14165                   #                  .newBuilder()
   14166                   #                  .setValue(((float) alpha) / denominator)
   14167                   #                  .build());
   14168                   #        }
   14169                   #        return resultBuilder.build();
   14170                   #      }
   14171                   #      // ...
   14172                   #
   14173                   # Example (iOS / Obj-C):
   14174                   #
   14175                   #      // ...
   14176                   #      static UIColor* fromProto(Color* protocolor) {
   14177                   #         float red = [protocolor red];
   14178                   #         float green = [protocolor green];
   14179                   #         float blue = [protocolor blue];
   14180                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   14181                   #         float alpha = 1.0;
   14182                   #         if (alpha_wrapper != nil) {
   14183                   #           alpha = [alpha_wrapper value];
   14184                   #         }
   14185                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   14186                   #      }
   14187                   #
   14188                   #      static Color* toProto(UIColor* color) {
   14189                   #          CGFloat red, green, blue, alpha;
   14190                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   14191                   #            return nil;
   14192                   #          }
   14193                   #          Color* result = [Color alloc] init];
   14194                   #          [result setRed:red];
   14195                   #          [result setGreen:green];
   14196                   #          [result setBlue:blue];
   14197                   #          if (alpha <= 0.9999) {
   14198                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   14199                   #          }
   14200                   #          [result autorelease];
   14201                   #          return result;
   14202                   #     }
   14203                   #     // ...
   14204                   #
   14205                   #  Example (JavaScript):
   14206                   #
   14207                   #     // ...
   14208                   #
   14209                   #     var protoToCssColor = function(rgb_color) {
   14210                   #        var redFrac = rgb_color.red || 0.0;
   14211                   #        var greenFrac = rgb_color.green || 0.0;
   14212                   #        var blueFrac = rgb_color.blue || 0.0;
   14213                   #        var red = Math.floor(redFrac * 255);
   14214                   #        var green = Math.floor(greenFrac * 255);
   14215                   #        var blue = Math.floor(blueFrac * 255);
   14216                   #
   14217                   #        if (!('alpha' in rgb_color)) {
   14218                   #           return rgbToCssColor_(red, green, blue);
   14219                   #        }
   14220                   #
   14221                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   14222                   #        var rgbParams = [red, green, blue].join(',');
   14223                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   14224                   #     };
   14225                   #
   14226                   #     var rgbToCssColor_ = function(red, green, blue) {
   14227                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   14228                   #       var hexString = rgbNumber.toString(16);
   14229                   #       var missingZeros = 6 - hexString.length;
   14230                   #       var resultBuilder = ['#'];
   14231                   #       for (var i = 0; i < missingZeros; i++) {
   14232                   #          resultBuilder.push('0');
   14233                   #       }
   14234                   #       resultBuilder.push(hexString);
   14235                   #       return resultBuilder.join('');
   14236                   #     };
   14237                   #
   14238                   #     // ...
   14239                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   14240                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   14241                     # the final pixel color is defined by the equation:
   14242                     #
   14243                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   14244                     #
   14245                     # This means that a value of 1.0 corresponds to a solid color, whereas
   14246                     # a value of 0.0 corresponds to a completely transparent color. This
   14247                     # uses a wrapper message rather than a simple float scalar so that it is
   14248                     # possible to distinguish between a default value and the value being unset.
   14249                     # If omitted, this color object is to be rendered as a solid color
   14250                     # (as if the alpha value had been explicitly given with a value of 1.0).
   14251                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   14252                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   14253               },
   14254               "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   14255                   # row or column will be filled with either first_band_color or
   14256                   # second_band_color, depending on the color of the previous row or
   14257                   # column.
   14258                   # for simplicity of conversion to/from color representations in various
   14259                   # languages over compactness; for example, the fields of this representation
   14260                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   14261                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   14262                   # method in iOS; and, with just a little work, it can be easily formatted into
   14263                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   14264                   #
   14265                   # Example (Java):
   14266                   #
   14267                   #      import com.google.type.Color;
   14268                   #
   14269                   #      // ...
   14270                   #      public static java.awt.Color fromProto(Color protocolor) {
   14271                   #        float alpha = protocolor.hasAlpha()
   14272                   #            ? protocolor.getAlpha().getValue()
   14273                   #            : 1.0;
   14274                   #
   14275                   #        return new java.awt.Color(
   14276                   #            protocolor.getRed(),
   14277                   #            protocolor.getGreen(),
   14278                   #            protocolor.getBlue(),
   14279                   #            alpha);
   14280                   #      }
   14281                   #
   14282                   #      public static Color toProto(java.awt.Color color) {
   14283                   #        float red = (float) color.getRed();
   14284                   #        float green = (float) color.getGreen();
   14285                   #        float blue = (float) color.getBlue();
   14286                   #        float denominator = 255.0;
   14287                   #        Color.Builder resultBuilder =
   14288                   #            Color
   14289                   #                .newBuilder()
   14290                   #                .setRed(red / denominator)
   14291                   #                .setGreen(green / denominator)
   14292                   #                .setBlue(blue / denominator);
   14293                   #        int alpha = color.getAlpha();
   14294                   #        if (alpha != 255) {
   14295                   #          result.setAlpha(
   14296                   #              FloatValue
   14297                   #                  .newBuilder()
   14298                   #                  .setValue(((float) alpha) / denominator)
   14299                   #                  .build());
   14300                   #        }
   14301                   #        return resultBuilder.build();
   14302                   #      }
   14303                   #      // ...
   14304                   #
   14305                   # Example (iOS / Obj-C):
   14306                   #
   14307                   #      // ...
   14308                   #      static UIColor* fromProto(Color* protocolor) {
   14309                   #         float red = [protocolor red];
   14310                   #         float green = [protocolor green];
   14311                   #         float blue = [protocolor blue];
   14312                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   14313                   #         float alpha = 1.0;
   14314                   #         if (alpha_wrapper != nil) {
   14315                   #           alpha = [alpha_wrapper value];
   14316                   #         }
   14317                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   14318                   #      }
   14319                   #
   14320                   #      static Color* toProto(UIColor* color) {
   14321                   #          CGFloat red, green, blue, alpha;
   14322                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   14323                   #            return nil;
   14324                   #          }
   14325                   #          Color* result = [Color alloc] init];
   14326                   #          [result setRed:red];
   14327                   #          [result setGreen:green];
   14328                   #          [result setBlue:blue];
   14329                   #          if (alpha <= 0.9999) {
   14330                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   14331                   #          }
   14332                   #          [result autorelease];
   14333                   #          return result;
   14334                   #     }
   14335                   #     // ...
   14336                   #
   14337                   #  Example (JavaScript):
   14338                   #
   14339                   #     // ...
   14340                   #
   14341                   #     var protoToCssColor = function(rgb_color) {
   14342                   #        var redFrac = rgb_color.red || 0.0;
   14343                   #        var greenFrac = rgb_color.green || 0.0;
   14344                   #        var blueFrac = rgb_color.blue || 0.0;
   14345                   #        var red = Math.floor(redFrac * 255);
   14346                   #        var green = Math.floor(greenFrac * 255);
   14347                   #        var blue = Math.floor(blueFrac * 255);
   14348                   #
   14349                   #        if (!('alpha' in rgb_color)) {
   14350                   #           return rgbToCssColor_(red, green, blue);
   14351                   #        }
   14352                   #
   14353                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   14354                   #        var rgbParams = [red, green, blue].join(',');
   14355                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   14356                   #     };
   14357                   #
   14358                   #     var rgbToCssColor_ = function(red, green, blue) {
   14359                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   14360                   #       var hexString = rgbNumber.toString(16);
   14361                   #       var missingZeros = 6 - hexString.length;
   14362                   #       var resultBuilder = ['#'];
   14363                   #       for (var i = 0; i < missingZeros; i++) {
   14364                   #          resultBuilder.push('0');
   14365                   #       }
   14366                   #       resultBuilder.push(hexString);
   14367                   #       return resultBuilder.join('');
   14368                   #     };
   14369                   #
   14370                   #     // ...
   14371                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   14372                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   14373                     # the final pixel color is defined by the equation:
   14374                     #
   14375                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   14376                     #
   14377                     # This means that a value of 1.0 corresponds to a solid color, whereas
   14378                     # a value of 0.0 corresponds to a completely transparent color. This
   14379                     # uses a wrapper message rather than a simple float scalar so that it is
   14380                     # possible to distinguish between a default value and the value being unset.
   14381                     # If omitted, this color object is to be rendered as a solid color
   14382                     # (as if the alpha value had been explicitly given with a value of 1.0).
   14383                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   14384                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   14385               },
   14386               "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   14387                   # for simplicity of conversion to/from color representations in various
   14388                   # languages over compactness; for example, the fields of this representation
   14389                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   14390                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   14391                   # method in iOS; and, with just a little work, it can be easily formatted into
   14392                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   14393                   #
   14394                   # Example (Java):
   14395                   #
   14396                   #      import com.google.type.Color;
   14397                   #
   14398                   #      // ...
   14399                   #      public static java.awt.Color fromProto(Color protocolor) {
   14400                   #        float alpha = protocolor.hasAlpha()
   14401                   #            ? protocolor.getAlpha().getValue()
   14402                   #            : 1.0;
   14403                   #
   14404                   #        return new java.awt.Color(
   14405                   #            protocolor.getRed(),
   14406                   #            protocolor.getGreen(),
   14407                   #            protocolor.getBlue(),
   14408                   #            alpha);
   14409                   #      }
   14410                   #
   14411                   #      public static Color toProto(java.awt.Color color) {
   14412                   #        float red = (float) color.getRed();
   14413                   #        float green = (float) color.getGreen();
   14414                   #        float blue = (float) color.getBlue();
   14415                   #        float denominator = 255.0;
   14416                   #        Color.Builder resultBuilder =
   14417                   #            Color
   14418                   #                .newBuilder()
   14419                   #                .setRed(red / denominator)
   14420                   #                .setGreen(green / denominator)
   14421                   #                .setBlue(blue / denominator);
   14422                   #        int alpha = color.getAlpha();
   14423                   #        if (alpha != 255) {
   14424                   #          result.setAlpha(
   14425                   #              FloatValue
   14426                   #                  .newBuilder()
   14427                   #                  .setValue(((float) alpha) / denominator)
   14428                   #                  .build());
   14429                   #        }
   14430                   #        return resultBuilder.build();
   14431                   #      }
   14432                   #      // ...
   14433                   #
   14434                   # Example (iOS / Obj-C):
   14435                   #
   14436                   #      // ...
   14437                   #      static UIColor* fromProto(Color* protocolor) {
   14438                   #         float red = [protocolor red];
   14439                   #         float green = [protocolor green];
   14440                   #         float blue = [protocolor blue];
   14441                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   14442                   #         float alpha = 1.0;
   14443                   #         if (alpha_wrapper != nil) {
   14444                   #           alpha = [alpha_wrapper value];
   14445                   #         }
   14446                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   14447                   #      }
   14448                   #
   14449                   #      static Color* toProto(UIColor* color) {
   14450                   #          CGFloat red, green, blue, alpha;
   14451                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   14452                   #            return nil;
   14453                   #          }
   14454                   #          Color* result = [Color alloc] init];
   14455                   #          [result setRed:red];
   14456                   #          [result setGreen:green];
   14457                   #          [result setBlue:blue];
   14458                   #          if (alpha <= 0.9999) {
   14459                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   14460                   #          }
   14461                   #          [result autorelease];
   14462                   #          return result;
   14463                   #     }
   14464                   #     // ...
   14465                   #
   14466                   #  Example (JavaScript):
   14467                   #
   14468                   #     // ...
   14469                   #
   14470                   #     var protoToCssColor = function(rgb_color) {
   14471                   #        var redFrac = rgb_color.red || 0.0;
   14472                   #        var greenFrac = rgb_color.green || 0.0;
   14473                   #        var blueFrac = rgb_color.blue || 0.0;
   14474                   #        var red = Math.floor(redFrac * 255);
   14475                   #        var green = Math.floor(greenFrac * 255);
   14476                   #        var blue = Math.floor(blueFrac * 255);
   14477                   #
   14478                   #        if (!('alpha' in rgb_color)) {
   14479                   #           return rgbToCssColor_(red, green, blue);
   14480                   #        }
   14481                   #
   14482                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   14483                   #        var rgbParams = [red, green, blue].join(',');
   14484                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   14485                   #     };
   14486                   #
   14487                   #     var rgbToCssColor_ = function(red, green, blue) {
   14488                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   14489                   #       var hexString = rgbNumber.toString(16);
   14490                   #       var missingZeros = 6 - hexString.length;
   14491                   #       var resultBuilder = ['#'];
   14492                   #       for (var i = 0; i < missingZeros; i++) {
   14493                   #          resultBuilder.push('0');
   14494                   #       }
   14495                   #       resultBuilder.push(hexString);
   14496                   #       return resultBuilder.join('');
   14497                   #     };
   14498                   #
   14499                   #     // ...
   14500                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   14501                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   14502                     # the final pixel color is defined by the equation:
   14503                     #
   14504                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   14505                     #
   14506                     # This means that a value of 1.0 corresponds to a solid color, whereas
   14507                     # a value of 0.0 corresponds to a completely transparent color. This
   14508                     # uses a wrapper message rather than a simple float scalar so that it is
   14509                     # possible to distinguish between a default value and the value being unset.
   14510                     # If omitted, this color object is to be rendered as a solid color
   14511                     # (as if the alpha value had been explicitly given with a value of 1.0).
   14512                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   14513                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   14514               },
   14515             },
   14516             "bandedRangeId": 42, # The id of the banded range.
   14517           },
   14518         },
   14519         "deleteFilterView": { # Deletes a particular filter view. # Deletes a filter view from a sheet.
   14520           "filterId": 42, # The ID of the filter to delete.
   14521         },
   14522         "mergeCells": { # Merges all cells in the range. # Merges cells together.
   14523           "range": { # A range on a sheet. # The range of cells to merge.
   14524               # All indexes are zero-based.
   14525               # Indexes are half open, e.g the start index is inclusive
   14526               # and the end index is exclusive -- [start_index, end_index).
   14527               # Missing indexes indicate the range is unbounded on that side.
   14528               #
   14529               # For example, if `"Sheet1"` is sheet ID 0, then:
   14530               #
   14531               #   `Sheet1!A1:A1 == sheet_id: 0,
   14532               #                   start_row_index: 0, end_row_index: 1,
   14533               #                   start_column_index: 0, end_column_index: 1`
   14534               #
   14535               #   `Sheet1!A3:B4 == sheet_id: 0,
   14536               #                   start_row_index: 2, end_row_index: 4,
   14537               #                   start_column_index: 0, end_column_index: 2`
   14538               #
   14539               #   `Sheet1!A:B == sheet_id: 0,
   14540               #                 start_column_index: 0, end_column_index: 2`
   14541               #
   14542               #   `Sheet1!A5:B == sheet_id: 0,
   14543               #                  start_row_index: 4,
   14544               #                  start_column_index: 0, end_column_index: 2`
   14545               #
   14546               #   `Sheet1 == sheet_id:0`
   14547               #
   14548               # The start index must always be less than or equal to the end index.
   14549               # If the start index equals the end index, then the range is empty.
   14550               # Empty ranges are typically not meaningful and are usually rendered in the
   14551               # UI as `#REF!`.
   14552             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   14553             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   14554             "sheetId": 42, # The sheet this range is on.
   14555             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   14556             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   14557           },
   14558           "mergeType": "A String", # How the cells should be merged.
   14559         },
   14560         "deleteProtectedRange": { # Deletes the protected range with the given ID. # Deletes a protected range.
   14561           "protectedRangeId": 42, # The ID of the protected range to delete.
   14562         },
   14563         "insertRange": { # Inserts cells into a range, shifting the existing cells over or down. # Inserts new cells in a sheet, shifting the existing cells.
   14564           "range": { # A range on a sheet. # The range to insert new cells into.
   14565               # All indexes are zero-based.
   14566               # Indexes are half open, e.g the start index is inclusive
   14567               # and the end index is exclusive -- [start_index, end_index).
   14568               # Missing indexes indicate the range is unbounded on that side.
   14569               #
   14570               # For example, if `"Sheet1"` is sheet ID 0, then:
   14571               #
   14572               #   `Sheet1!A1:A1 == sheet_id: 0,
   14573               #                   start_row_index: 0, end_row_index: 1,
   14574               #                   start_column_index: 0, end_column_index: 1`
   14575               #
   14576               #   `Sheet1!A3:B4 == sheet_id: 0,
   14577               #                   start_row_index: 2, end_row_index: 4,
   14578               #                   start_column_index: 0, end_column_index: 2`
   14579               #
   14580               #   `Sheet1!A:B == sheet_id: 0,
   14581               #                 start_column_index: 0, end_column_index: 2`
   14582               #
   14583               #   `Sheet1!A5:B == sheet_id: 0,
   14584               #                  start_row_index: 4,
   14585               #                  start_column_index: 0, end_column_index: 2`
   14586               #
   14587               #   `Sheet1 == sheet_id:0`
   14588               #
   14589               # The start index must always be less than or equal to the end index.
   14590               # If the start index equals the end index, then the range is empty.
   14591               # Empty ranges are typically not meaningful and are usually rendered in the
   14592               # UI as `#REF!`.
   14593             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   14594             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   14595             "sheetId": 42, # The sheet this range is on.
   14596             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   14597             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   14598           },
   14599           "shiftDimension": "A String", # The dimension which will be shifted when inserting cells.
   14600               # If ROWS, existing cells will be shifted down.
   14601               # If COLUMNS, existing cells will be shifted right.
   14602         },
   14603         "deleteSheet": { # Deletes the requested sheet. # Deletes a sheet.
   14604           "sheetId": 42, # The ID of the sheet to delete.
   14605         },
   14606         "updateBorders": { # Updates the borders of a range. # Updates the borders in a range of cells.
   14607             # If a field is not set in the request, that means the border remains as-is.
   14608             # For example, with two subsequent UpdateBordersRequest:
   14609             #
   14610             #  1. range: A1:A5 `{ top: RED, bottom: WHITE }`
   14611             #  2. range: A1:A5 `{ left: BLUE }`
   14612             #
   14613             # That would result in A1:A5 having a borders of
   14614             # `{ top: RED, bottom: WHITE, left: BLUE }`.
   14615             # If you want to clear a border, explicitly set the style to
   14616             # NONE.
   14617           "right": { # A border along a cell. # The border to put at the right of the range.
   14618             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   14619                 # for simplicity of conversion to/from color representations in various
   14620                 # languages over compactness; for example, the fields of this representation
   14621                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   14622                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   14623                 # method in iOS; and, with just a little work, it can be easily formatted into
   14624                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   14625                 #
   14626                 # Example (Java):
   14627                 #
   14628                 #      import com.google.type.Color;
   14629                 #
   14630                 #      // ...
   14631                 #      public static java.awt.Color fromProto(Color protocolor) {
   14632                 #        float alpha = protocolor.hasAlpha()
   14633                 #            ? protocolor.getAlpha().getValue()
   14634                 #            : 1.0;
   14635                 #
   14636                 #        return new java.awt.Color(
   14637                 #            protocolor.getRed(),
   14638                 #            protocolor.getGreen(),
   14639                 #            protocolor.getBlue(),
   14640                 #            alpha);
   14641                 #      }
   14642                 #
   14643                 #      public static Color toProto(java.awt.Color color) {
   14644                 #        float red = (float) color.getRed();
   14645                 #        float green = (float) color.getGreen();
   14646                 #        float blue = (float) color.getBlue();
   14647                 #        float denominator = 255.0;
   14648                 #        Color.Builder resultBuilder =
   14649                 #            Color
   14650                 #                .newBuilder()
   14651                 #                .setRed(red / denominator)
   14652                 #                .setGreen(green / denominator)
   14653                 #                .setBlue(blue / denominator);
   14654                 #        int alpha = color.getAlpha();
   14655                 #        if (alpha != 255) {
   14656                 #          result.setAlpha(
   14657                 #              FloatValue
   14658                 #                  .newBuilder()
   14659                 #                  .setValue(((float) alpha) / denominator)
   14660                 #                  .build());
   14661                 #        }
   14662                 #        return resultBuilder.build();
   14663                 #      }
   14664                 #      // ...
   14665                 #
   14666                 # Example (iOS / Obj-C):
   14667                 #
   14668                 #      // ...
   14669                 #      static UIColor* fromProto(Color* protocolor) {
   14670                 #         float red = [protocolor red];
   14671                 #         float green = [protocolor green];
   14672                 #         float blue = [protocolor blue];
   14673                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   14674                 #         float alpha = 1.0;
   14675                 #         if (alpha_wrapper != nil) {
   14676                 #           alpha = [alpha_wrapper value];
   14677                 #         }
   14678                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   14679                 #      }
   14680                 #
   14681                 #      static Color* toProto(UIColor* color) {
   14682                 #          CGFloat red, green, blue, alpha;
   14683                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   14684                 #            return nil;
   14685                 #          }
   14686                 #          Color* result = [Color alloc] init];
   14687                 #          [result setRed:red];
   14688                 #          [result setGreen:green];
   14689                 #          [result setBlue:blue];
   14690                 #          if (alpha <= 0.9999) {
   14691                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   14692                 #          }
   14693                 #          [result autorelease];
   14694                 #          return result;
   14695                 #     }
   14696                 #     // ...
   14697                 #
   14698                 #  Example (JavaScript):
   14699                 #
   14700                 #     // ...
   14701                 #
   14702                 #     var protoToCssColor = function(rgb_color) {
   14703                 #        var redFrac = rgb_color.red || 0.0;
   14704                 #        var greenFrac = rgb_color.green || 0.0;
   14705                 #        var blueFrac = rgb_color.blue || 0.0;
   14706                 #        var red = Math.floor(redFrac * 255);
   14707                 #        var green = Math.floor(greenFrac * 255);
   14708                 #        var blue = Math.floor(blueFrac * 255);
   14709                 #
   14710                 #        if (!('alpha' in rgb_color)) {
   14711                 #           return rgbToCssColor_(red, green, blue);
   14712                 #        }
   14713                 #
   14714                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   14715                 #        var rgbParams = [red, green, blue].join(',');
   14716                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   14717                 #     };
   14718                 #
   14719                 #     var rgbToCssColor_ = function(red, green, blue) {
   14720                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   14721                 #       var hexString = rgbNumber.toString(16);
   14722                 #       var missingZeros = 6 - hexString.length;
   14723                 #       var resultBuilder = ['#'];
   14724                 #       for (var i = 0; i < missingZeros; i++) {
   14725                 #          resultBuilder.push('0');
   14726                 #       }
   14727                 #       resultBuilder.push(hexString);
   14728                 #       return resultBuilder.join('');
   14729                 #     };
   14730                 #
   14731                 #     // ...
   14732               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   14733               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   14734                   # the final pixel color is defined by the equation:
   14735                   #
   14736                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   14737                   #
   14738                   # This means that a value of 1.0 corresponds to a solid color, whereas
   14739                   # a value of 0.0 corresponds to a completely transparent color. This
   14740                   # uses a wrapper message rather than a simple float scalar so that it is
   14741                   # possible to distinguish between a default value and the value being unset.
   14742                   # If omitted, this color object is to be rendered as a solid color
   14743                   # (as if the alpha value had been explicitly given with a value of 1.0).
   14744               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   14745               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   14746             },
   14747             "width": 42, # The width of the border, in pixels.
   14748                 # Deprecated; the width is determined by the "style" field.
   14749             "style": "A String", # The style of the border.
   14750           },
   14751           "bottom": { # A border along a cell. # The border to put at the bottom of the range.
   14752             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   14753                 # for simplicity of conversion to/from color representations in various
   14754                 # languages over compactness; for example, the fields of this representation
   14755                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   14756                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   14757                 # method in iOS; and, with just a little work, it can be easily formatted into
   14758                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   14759                 #
   14760                 # Example (Java):
   14761                 #
   14762                 #      import com.google.type.Color;
   14763                 #
   14764                 #      // ...
   14765                 #      public static java.awt.Color fromProto(Color protocolor) {
   14766                 #        float alpha = protocolor.hasAlpha()
   14767                 #            ? protocolor.getAlpha().getValue()
   14768                 #            : 1.0;
   14769                 #
   14770                 #        return new java.awt.Color(
   14771                 #            protocolor.getRed(),
   14772                 #            protocolor.getGreen(),
   14773                 #            protocolor.getBlue(),
   14774                 #            alpha);
   14775                 #      }
   14776                 #
   14777                 #      public static Color toProto(java.awt.Color color) {
   14778                 #        float red = (float) color.getRed();
   14779                 #        float green = (float) color.getGreen();
   14780                 #        float blue = (float) color.getBlue();
   14781                 #        float denominator = 255.0;
   14782                 #        Color.Builder resultBuilder =
   14783                 #            Color
   14784                 #                .newBuilder()
   14785                 #                .setRed(red / denominator)
   14786                 #                .setGreen(green / denominator)
   14787                 #                .setBlue(blue / denominator);
   14788                 #        int alpha = color.getAlpha();
   14789                 #        if (alpha != 255) {
   14790                 #          result.setAlpha(
   14791                 #              FloatValue
   14792                 #                  .newBuilder()
   14793                 #                  .setValue(((float) alpha) / denominator)
   14794                 #                  .build());
   14795                 #        }
   14796                 #        return resultBuilder.build();
   14797                 #      }
   14798                 #      // ...
   14799                 #
   14800                 # Example (iOS / Obj-C):
   14801                 #
   14802                 #      // ...
   14803                 #      static UIColor* fromProto(Color* protocolor) {
   14804                 #         float red = [protocolor red];
   14805                 #         float green = [protocolor green];
   14806                 #         float blue = [protocolor blue];
   14807                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   14808                 #         float alpha = 1.0;
   14809                 #         if (alpha_wrapper != nil) {
   14810                 #           alpha = [alpha_wrapper value];
   14811                 #         }
   14812                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   14813                 #      }
   14814                 #
   14815                 #      static Color* toProto(UIColor* color) {
   14816                 #          CGFloat red, green, blue, alpha;
   14817                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   14818                 #            return nil;
   14819                 #          }
   14820                 #          Color* result = [Color alloc] init];
   14821                 #          [result setRed:red];
   14822                 #          [result setGreen:green];
   14823                 #          [result setBlue:blue];
   14824                 #          if (alpha <= 0.9999) {
   14825                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   14826                 #          }
   14827                 #          [result autorelease];
   14828                 #          return result;
   14829                 #     }
   14830                 #     // ...
   14831                 #
   14832                 #  Example (JavaScript):
   14833                 #
   14834                 #     // ...
   14835                 #
   14836                 #     var protoToCssColor = function(rgb_color) {
   14837                 #        var redFrac = rgb_color.red || 0.0;
   14838                 #        var greenFrac = rgb_color.green || 0.0;
   14839                 #        var blueFrac = rgb_color.blue || 0.0;
   14840                 #        var red = Math.floor(redFrac * 255);
   14841                 #        var green = Math.floor(greenFrac * 255);
   14842                 #        var blue = Math.floor(blueFrac * 255);
   14843                 #
   14844                 #        if (!('alpha' in rgb_color)) {
   14845                 #           return rgbToCssColor_(red, green, blue);
   14846                 #        }
   14847                 #
   14848                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   14849                 #        var rgbParams = [red, green, blue].join(',');
   14850                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   14851                 #     };
   14852                 #
   14853                 #     var rgbToCssColor_ = function(red, green, blue) {
   14854                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   14855                 #       var hexString = rgbNumber.toString(16);
   14856                 #       var missingZeros = 6 - hexString.length;
   14857                 #       var resultBuilder = ['#'];
   14858                 #       for (var i = 0; i < missingZeros; i++) {
   14859                 #          resultBuilder.push('0');
   14860                 #       }
   14861                 #       resultBuilder.push(hexString);
   14862                 #       return resultBuilder.join('');
   14863                 #     };
   14864                 #
   14865                 #     // ...
   14866               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   14867               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   14868                   # the final pixel color is defined by the equation:
   14869                   #
   14870                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   14871                   #
   14872                   # This means that a value of 1.0 corresponds to a solid color, whereas
   14873                   # a value of 0.0 corresponds to a completely transparent color. This
   14874                   # uses a wrapper message rather than a simple float scalar so that it is
   14875                   # possible to distinguish between a default value and the value being unset.
   14876                   # If omitted, this color object is to be rendered as a solid color
   14877                   # (as if the alpha value had been explicitly given with a value of 1.0).
   14878               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   14879               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   14880             },
   14881             "width": 42, # The width of the border, in pixels.
   14882                 # Deprecated; the width is determined by the "style" field.
   14883             "style": "A String", # The style of the border.
   14884           },
   14885           "top": { # A border along a cell. # The border to put at the top of the range.
   14886             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   14887                 # for simplicity of conversion to/from color representations in various
   14888                 # languages over compactness; for example, the fields of this representation
   14889                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   14890                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   14891                 # method in iOS; and, with just a little work, it can be easily formatted into
   14892                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   14893                 #
   14894                 # Example (Java):
   14895                 #
   14896                 #      import com.google.type.Color;
   14897                 #
   14898                 #      // ...
   14899                 #      public static java.awt.Color fromProto(Color protocolor) {
   14900                 #        float alpha = protocolor.hasAlpha()
   14901                 #            ? protocolor.getAlpha().getValue()
   14902                 #            : 1.0;
   14903                 #
   14904                 #        return new java.awt.Color(
   14905                 #            protocolor.getRed(),
   14906                 #            protocolor.getGreen(),
   14907                 #            protocolor.getBlue(),
   14908                 #            alpha);
   14909                 #      }
   14910                 #
   14911                 #      public static Color toProto(java.awt.Color color) {
   14912                 #        float red = (float) color.getRed();
   14913                 #        float green = (float) color.getGreen();
   14914                 #        float blue = (float) color.getBlue();
   14915                 #        float denominator = 255.0;
   14916                 #        Color.Builder resultBuilder =
   14917                 #            Color
   14918                 #                .newBuilder()
   14919                 #                .setRed(red / denominator)
   14920                 #                .setGreen(green / denominator)
   14921                 #                .setBlue(blue / denominator);
   14922                 #        int alpha = color.getAlpha();
   14923                 #        if (alpha != 255) {
   14924                 #          result.setAlpha(
   14925                 #              FloatValue
   14926                 #                  .newBuilder()
   14927                 #                  .setValue(((float) alpha) / denominator)
   14928                 #                  .build());
   14929                 #        }
   14930                 #        return resultBuilder.build();
   14931                 #      }
   14932                 #      // ...
   14933                 #
   14934                 # Example (iOS / Obj-C):
   14935                 #
   14936                 #      // ...
   14937                 #      static UIColor* fromProto(Color* protocolor) {
   14938                 #         float red = [protocolor red];
   14939                 #         float green = [protocolor green];
   14940                 #         float blue = [protocolor blue];
   14941                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   14942                 #         float alpha = 1.0;
   14943                 #         if (alpha_wrapper != nil) {
   14944                 #           alpha = [alpha_wrapper value];
   14945                 #         }
   14946                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   14947                 #      }
   14948                 #
   14949                 #      static Color* toProto(UIColor* color) {
   14950                 #          CGFloat red, green, blue, alpha;
   14951                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   14952                 #            return nil;
   14953                 #          }
   14954                 #          Color* result = [Color alloc] init];
   14955                 #          [result setRed:red];
   14956                 #          [result setGreen:green];
   14957                 #          [result setBlue:blue];
   14958                 #          if (alpha <= 0.9999) {
   14959                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   14960                 #          }
   14961                 #          [result autorelease];
   14962                 #          return result;
   14963                 #     }
   14964                 #     // ...
   14965                 #
   14966                 #  Example (JavaScript):
   14967                 #
   14968                 #     // ...
   14969                 #
   14970                 #     var protoToCssColor = function(rgb_color) {
   14971                 #        var redFrac = rgb_color.red || 0.0;
   14972                 #        var greenFrac = rgb_color.green || 0.0;
   14973                 #        var blueFrac = rgb_color.blue || 0.0;
   14974                 #        var red = Math.floor(redFrac * 255);
   14975                 #        var green = Math.floor(greenFrac * 255);
   14976                 #        var blue = Math.floor(blueFrac * 255);
   14977                 #
   14978                 #        if (!('alpha' in rgb_color)) {
   14979                 #           return rgbToCssColor_(red, green, blue);
   14980                 #        }
   14981                 #
   14982                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   14983                 #        var rgbParams = [red, green, blue].join(',');
   14984                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   14985                 #     };
   14986                 #
   14987                 #     var rgbToCssColor_ = function(red, green, blue) {
   14988                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   14989                 #       var hexString = rgbNumber.toString(16);
   14990                 #       var missingZeros = 6 - hexString.length;
   14991                 #       var resultBuilder = ['#'];
   14992                 #       for (var i = 0; i < missingZeros; i++) {
   14993                 #          resultBuilder.push('0');
   14994                 #       }
   14995                 #       resultBuilder.push(hexString);
   14996                 #       return resultBuilder.join('');
   14997                 #     };
   14998                 #
   14999                 #     // ...
   15000               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   15001               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   15002                   # the final pixel color is defined by the equation:
   15003                   #
   15004                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   15005                   #
   15006                   # This means that a value of 1.0 corresponds to a solid color, whereas
   15007                   # a value of 0.0 corresponds to a completely transparent color. This
   15008                   # uses a wrapper message rather than a simple float scalar so that it is
   15009                   # possible to distinguish between a default value and the value being unset.
   15010                   # If omitted, this color object is to be rendered as a solid color
   15011                   # (as if the alpha value had been explicitly given with a value of 1.0).
   15012               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   15013               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   15014             },
   15015             "width": 42, # The width of the border, in pixels.
   15016                 # Deprecated; the width is determined by the "style" field.
   15017             "style": "A String", # The style of the border.
   15018           },
   15019           "innerHorizontal": { # A border along a cell. # The horizontal border to put within the range.
   15020             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   15021                 # for simplicity of conversion to/from color representations in various
   15022                 # languages over compactness; for example, the fields of this representation
   15023                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   15024                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   15025                 # method in iOS; and, with just a little work, it can be easily formatted into
   15026                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   15027                 #
   15028                 # Example (Java):
   15029                 #
   15030                 #      import com.google.type.Color;
   15031                 #
   15032                 #      // ...
   15033                 #      public static java.awt.Color fromProto(Color protocolor) {
   15034                 #        float alpha = protocolor.hasAlpha()
   15035                 #            ? protocolor.getAlpha().getValue()
   15036                 #            : 1.0;
   15037                 #
   15038                 #        return new java.awt.Color(
   15039                 #            protocolor.getRed(),
   15040                 #            protocolor.getGreen(),
   15041                 #            protocolor.getBlue(),
   15042                 #            alpha);
   15043                 #      }
   15044                 #
   15045                 #      public static Color toProto(java.awt.Color color) {
   15046                 #        float red = (float) color.getRed();
   15047                 #        float green = (float) color.getGreen();
   15048                 #        float blue = (float) color.getBlue();
   15049                 #        float denominator = 255.0;
   15050                 #        Color.Builder resultBuilder =
   15051                 #            Color
   15052                 #                .newBuilder()
   15053                 #                .setRed(red / denominator)
   15054                 #                .setGreen(green / denominator)
   15055                 #                .setBlue(blue / denominator);
   15056                 #        int alpha = color.getAlpha();
   15057                 #        if (alpha != 255) {
   15058                 #          result.setAlpha(
   15059                 #              FloatValue
   15060                 #                  .newBuilder()
   15061                 #                  .setValue(((float) alpha) / denominator)
   15062                 #                  .build());
   15063                 #        }
   15064                 #        return resultBuilder.build();
   15065                 #      }
   15066                 #      // ...
   15067                 #
   15068                 # Example (iOS / Obj-C):
   15069                 #
   15070                 #      // ...
   15071                 #      static UIColor* fromProto(Color* protocolor) {
   15072                 #         float red = [protocolor red];
   15073                 #         float green = [protocolor green];
   15074                 #         float blue = [protocolor blue];
   15075                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   15076                 #         float alpha = 1.0;
   15077                 #         if (alpha_wrapper != nil) {
   15078                 #           alpha = [alpha_wrapper value];
   15079                 #         }
   15080                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   15081                 #      }
   15082                 #
   15083                 #      static Color* toProto(UIColor* color) {
   15084                 #          CGFloat red, green, blue, alpha;
   15085                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   15086                 #            return nil;
   15087                 #          }
   15088                 #          Color* result = [Color alloc] init];
   15089                 #          [result setRed:red];
   15090                 #          [result setGreen:green];
   15091                 #          [result setBlue:blue];
   15092                 #          if (alpha <= 0.9999) {
   15093                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   15094                 #          }
   15095                 #          [result autorelease];
   15096                 #          return result;
   15097                 #     }
   15098                 #     // ...
   15099                 #
   15100                 #  Example (JavaScript):
   15101                 #
   15102                 #     // ...
   15103                 #
   15104                 #     var protoToCssColor = function(rgb_color) {
   15105                 #        var redFrac = rgb_color.red || 0.0;
   15106                 #        var greenFrac = rgb_color.green || 0.0;
   15107                 #        var blueFrac = rgb_color.blue || 0.0;
   15108                 #        var red = Math.floor(redFrac * 255);
   15109                 #        var green = Math.floor(greenFrac * 255);
   15110                 #        var blue = Math.floor(blueFrac * 255);
   15111                 #
   15112                 #        if (!('alpha' in rgb_color)) {
   15113                 #           return rgbToCssColor_(red, green, blue);
   15114                 #        }
   15115                 #
   15116                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   15117                 #        var rgbParams = [red, green, blue].join(',');
   15118                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   15119                 #     };
   15120                 #
   15121                 #     var rgbToCssColor_ = function(red, green, blue) {
   15122                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   15123                 #       var hexString = rgbNumber.toString(16);
   15124                 #       var missingZeros = 6 - hexString.length;
   15125                 #       var resultBuilder = ['#'];
   15126                 #       for (var i = 0; i < missingZeros; i++) {
   15127                 #          resultBuilder.push('0');
   15128                 #       }
   15129                 #       resultBuilder.push(hexString);
   15130                 #       return resultBuilder.join('');
   15131                 #     };
   15132                 #
   15133                 #     // ...
   15134               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   15135               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   15136                   # the final pixel color is defined by the equation:
   15137                   #
   15138                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   15139                   #
   15140                   # This means that a value of 1.0 corresponds to a solid color, whereas
   15141                   # a value of 0.0 corresponds to a completely transparent color. This
   15142                   # uses a wrapper message rather than a simple float scalar so that it is
   15143                   # possible to distinguish between a default value and the value being unset.
   15144                   # If omitted, this color object is to be rendered as a solid color
   15145                   # (as if the alpha value had been explicitly given with a value of 1.0).
   15146               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   15147               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   15148             },
   15149             "width": 42, # The width of the border, in pixels.
   15150                 # Deprecated; the width is determined by the "style" field.
   15151             "style": "A String", # The style of the border.
   15152           },
   15153           "range": { # A range on a sheet. # The range whose borders should be updated.
   15154               # All indexes are zero-based.
   15155               # Indexes are half open, e.g the start index is inclusive
   15156               # and the end index is exclusive -- [start_index, end_index).
   15157               # Missing indexes indicate the range is unbounded on that side.
   15158               #
   15159               # For example, if `"Sheet1"` is sheet ID 0, then:
   15160               #
   15161               #   `Sheet1!A1:A1 == sheet_id: 0,
   15162               #                   start_row_index: 0, end_row_index: 1,
   15163               #                   start_column_index: 0, end_column_index: 1`
   15164               #
   15165               #   `Sheet1!A3:B4 == sheet_id: 0,
   15166               #                   start_row_index: 2, end_row_index: 4,
   15167               #                   start_column_index: 0, end_column_index: 2`
   15168               #
   15169               #   `Sheet1!A:B == sheet_id: 0,
   15170               #                 start_column_index: 0, end_column_index: 2`
   15171               #
   15172               #   `Sheet1!A5:B == sheet_id: 0,
   15173               #                  start_row_index: 4,
   15174               #                  start_column_index: 0, end_column_index: 2`
   15175               #
   15176               #   `Sheet1 == sheet_id:0`
   15177               #
   15178               # The start index must always be less than or equal to the end index.
   15179               # If the start index equals the end index, then the range is empty.
   15180               # Empty ranges are typically not meaningful and are usually rendered in the
   15181               # UI as `#REF!`.
   15182             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   15183             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   15184             "sheetId": 42, # The sheet this range is on.
   15185             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   15186             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   15187           },
   15188           "innerVertical": { # A border along a cell. # The vertical border to put within the range.
   15189             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   15190                 # for simplicity of conversion to/from color representations in various
   15191                 # languages over compactness; for example, the fields of this representation
   15192                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   15193                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   15194                 # method in iOS; and, with just a little work, it can be easily formatted into
   15195                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   15196                 #
   15197                 # Example (Java):
   15198                 #
   15199                 #      import com.google.type.Color;
   15200                 #
   15201                 #      // ...
   15202                 #      public static java.awt.Color fromProto(Color protocolor) {
   15203                 #        float alpha = protocolor.hasAlpha()
   15204                 #            ? protocolor.getAlpha().getValue()
   15205                 #            : 1.0;
   15206                 #
   15207                 #        return new java.awt.Color(
   15208                 #            protocolor.getRed(),
   15209                 #            protocolor.getGreen(),
   15210                 #            protocolor.getBlue(),
   15211                 #            alpha);
   15212                 #      }
   15213                 #
   15214                 #      public static Color toProto(java.awt.Color color) {
   15215                 #        float red = (float) color.getRed();
   15216                 #        float green = (float) color.getGreen();
   15217                 #        float blue = (float) color.getBlue();
   15218                 #        float denominator = 255.0;
   15219                 #        Color.Builder resultBuilder =
   15220                 #            Color
   15221                 #                .newBuilder()
   15222                 #                .setRed(red / denominator)
   15223                 #                .setGreen(green / denominator)
   15224                 #                .setBlue(blue / denominator);
   15225                 #        int alpha = color.getAlpha();
   15226                 #        if (alpha != 255) {
   15227                 #          result.setAlpha(
   15228                 #              FloatValue
   15229                 #                  .newBuilder()
   15230                 #                  .setValue(((float) alpha) / denominator)
   15231                 #                  .build());
   15232                 #        }
   15233                 #        return resultBuilder.build();
   15234                 #      }
   15235                 #      // ...
   15236                 #
   15237                 # Example (iOS / Obj-C):
   15238                 #
   15239                 #      // ...
   15240                 #      static UIColor* fromProto(Color* protocolor) {
   15241                 #         float red = [protocolor red];
   15242                 #         float green = [protocolor green];
   15243                 #         float blue = [protocolor blue];
   15244                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   15245                 #         float alpha = 1.0;
   15246                 #         if (alpha_wrapper != nil) {
   15247                 #           alpha = [alpha_wrapper value];
   15248                 #         }
   15249                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   15250                 #      }
   15251                 #
   15252                 #      static Color* toProto(UIColor* color) {
   15253                 #          CGFloat red, green, blue, alpha;
   15254                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   15255                 #            return nil;
   15256                 #          }
   15257                 #          Color* result = [Color alloc] init];
   15258                 #          [result setRed:red];
   15259                 #          [result setGreen:green];
   15260                 #          [result setBlue:blue];
   15261                 #          if (alpha <= 0.9999) {
   15262                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   15263                 #          }
   15264                 #          [result autorelease];
   15265                 #          return result;
   15266                 #     }
   15267                 #     // ...
   15268                 #
   15269                 #  Example (JavaScript):
   15270                 #
   15271                 #     // ...
   15272                 #
   15273                 #     var protoToCssColor = function(rgb_color) {
   15274                 #        var redFrac = rgb_color.red || 0.0;
   15275                 #        var greenFrac = rgb_color.green || 0.0;
   15276                 #        var blueFrac = rgb_color.blue || 0.0;
   15277                 #        var red = Math.floor(redFrac * 255);
   15278                 #        var green = Math.floor(greenFrac * 255);
   15279                 #        var blue = Math.floor(blueFrac * 255);
   15280                 #
   15281                 #        if (!('alpha' in rgb_color)) {
   15282                 #           return rgbToCssColor_(red, green, blue);
   15283                 #        }
   15284                 #
   15285                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   15286                 #        var rgbParams = [red, green, blue].join(',');
   15287                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   15288                 #     };
   15289                 #
   15290                 #     var rgbToCssColor_ = function(red, green, blue) {
   15291                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   15292                 #       var hexString = rgbNumber.toString(16);
   15293                 #       var missingZeros = 6 - hexString.length;
   15294                 #       var resultBuilder = ['#'];
   15295                 #       for (var i = 0; i < missingZeros; i++) {
   15296                 #          resultBuilder.push('0');
   15297                 #       }
   15298                 #       resultBuilder.push(hexString);
   15299                 #       return resultBuilder.join('');
   15300                 #     };
   15301                 #
   15302                 #     // ...
   15303               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   15304               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   15305                   # the final pixel color is defined by the equation:
   15306                   #
   15307                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   15308                   #
   15309                   # This means that a value of 1.0 corresponds to a solid color, whereas
   15310                   # a value of 0.0 corresponds to a completely transparent color. This
   15311                   # uses a wrapper message rather than a simple float scalar so that it is
   15312                   # possible to distinguish between a default value and the value being unset.
   15313                   # If omitted, this color object is to be rendered as a solid color
   15314                   # (as if the alpha value had been explicitly given with a value of 1.0).
   15315               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   15316               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   15317             },
   15318             "width": 42, # The width of the border, in pixels.
   15319                 # Deprecated; the width is determined by the "style" field.
   15320             "style": "A String", # The style of the border.
   15321           },
   15322           "left": { # A border along a cell. # The border to put at the left of the range.
   15323             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   15324                 # for simplicity of conversion to/from color representations in various
   15325                 # languages over compactness; for example, the fields of this representation
   15326                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   15327                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   15328                 # method in iOS; and, with just a little work, it can be easily formatted into
   15329                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   15330                 #
   15331                 # Example (Java):
   15332                 #
   15333                 #      import com.google.type.Color;
   15334                 #
   15335                 #      // ...
   15336                 #      public static java.awt.Color fromProto(Color protocolor) {
   15337                 #        float alpha = protocolor.hasAlpha()
   15338                 #            ? protocolor.getAlpha().getValue()
   15339                 #            : 1.0;
   15340                 #
   15341                 #        return new java.awt.Color(
   15342                 #            protocolor.getRed(),
   15343                 #            protocolor.getGreen(),
   15344                 #            protocolor.getBlue(),
   15345                 #            alpha);
   15346                 #      }
   15347                 #
   15348                 #      public static Color toProto(java.awt.Color color) {
   15349                 #        float red = (float) color.getRed();
   15350                 #        float green = (float) color.getGreen();
   15351                 #        float blue = (float) color.getBlue();
   15352                 #        float denominator = 255.0;
   15353                 #        Color.Builder resultBuilder =
   15354                 #            Color
   15355                 #                .newBuilder()
   15356                 #                .setRed(red / denominator)
   15357                 #                .setGreen(green / denominator)
   15358                 #                .setBlue(blue / denominator);
   15359                 #        int alpha = color.getAlpha();
   15360                 #        if (alpha != 255) {
   15361                 #          result.setAlpha(
   15362                 #              FloatValue
   15363                 #                  .newBuilder()
   15364                 #                  .setValue(((float) alpha) / denominator)
   15365                 #                  .build());
   15366                 #        }
   15367                 #        return resultBuilder.build();
   15368                 #      }
   15369                 #      // ...
   15370                 #
   15371                 # Example (iOS / Obj-C):
   15372                 #
   15373                 #      // ...
   15374                 #      static UIColor* fromProto(Color* protocolor) {
   15375                 #         float red = [protocolor red];
   15376                 #         float green = [protocolor green];
   15377                 #         float blue = [protocolor blue];
   15378                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   15379                 #         float alpha = 1.0;
   15380                 #         if (alpha_wrapper != nil) {
   15381                 #           alpha = [alpha_wrapper value];
   15382                 #         }
   15383                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   15384                 #      }
   15385                 #
   15386                 #      static Color* toProto(UIColor* color) {
   15387                 #          CGFloat red, green, blue, alpha;
   15388                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   15389                 #            return nil;
   15390                 #          }
   15391                 #          Color* result = [Color alloc] init];
   15392                 #          [result setRed:red];
   15393                 #          [result setGreen:green];
   15394                 #          [result setBlue:blue];
   15395                 #          if (alpha <= 0.9999) {
   15396                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   15397                 #          }
   15398                 #          [result autorelease];
   15399                 #          return result;
   15400                 #     }
   15401                 #     // ...
   15402                 #
   15403                 #  Example (JavaScript):
   15404                 #
   15405                 #     // ...
   15406                 #
   15407                 #     var protoToCssColor = function(rgb_color) {
   15408                 #        var redFrac = rgb_color.red || 0.0;
   15409                 #        var greenFrac = rgb_color.green || 0.0;
   15410                 #        var blueFrac = rgb_color.blue || 0.0;
   15411                 #        var red = Math.floor(redFrac * 255);
   15412                 #        var green = Math.floor(greenFrac * 255);
   15413                 #        var blue = Math.floor(blueFrac * 255);
   15414                 #
   15415                 #        if (!('alpha' in rgb_color)) {
   15416                 #           return rgbToCssColor_(red, green, blue);
   15417                 #        }
   15418                 #
   15419                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   15420                 #        var rgbParams = [red, green, blue].join(',');
   15421                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   15422                 #     };
   15423                 #
   15424                 #     var rgbToCssColor_ = function(red, green, blue) {
   15425                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   15426                 #       var hexString = rgbNumber.toString(16);
   15427                 #       var missingZeros = 6 - hexString.length;
   15428                 #       var resultBuilder = ['#'];
   15429                 #       for (var i = 0; i < missingZeros; i++) {
   15430                 #          resultBuilder.push('0');
   15431                 #       }
   15432                 #       resultBuilder.push(hexString);
   15433                 #       return resultBuilder.join('');
   15434                 #     };
   15435                 #
   15436                 #     // ...
   15437               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   15438               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   15439                   # the final pixel color is defined by the equation:
   15440                   #
   15441                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   15442                   #
   15443                   # This means that a value of 1.0 corresponds to a solid color, whereas
   15444                   # a value of 0.0 corresponds to a completely transparent color. This
   15445                   # uses a wrapper message rather than a simple float scalar so that it is
   15446                   # possible to distinguish between a default value and the value being unset.
   15447                   # If omitted, this color object is to be rendered as a solid color
   15448                   # (as if the alpha value had been explicitly given with a value of 1.0).
   15449               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   15450               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   15451             },
   15452             "width": 42, # The width of the border, in pixels.
   15453                 # Deprecated; the width is determined by the "style" field.
   15454             "style": "A String", # The style of the border.
   15455           },
   15456         },
   15457         "cutPaste": { # Moves data from the source to the destination. # Cuts data from one area and pastes it to another.
   15458           "pasteType": "A String", # What kind of data to paste.  All the source data will be cut, regardless
   15459               # of what is pasted.
   15460           "source": { # A range on a sheet. # The source data to cut.
   15461               # All indexes are zero-based.
   15462               # Indexes are half open, e.g the start index is inclusive
   15463               # and the end index is exclusive -- [start_index, end_index).
   15464               # Missing indexes indicate the range is unbounded on that side.
   15465               #
   15466               # For example, if `"Sheet1"` is sheet ID 0, then:
   15467               #
   15468               #   `Sheet1!A1:A1 == sheet_id: 0,
   15469               #                   start_row_index: 0, end_row_index: 1,
   15470               #                   start_column_index: 0, end_column_index: 1`
   15471               #
   15472               #   `Sheet1!A3:B4 == sheet_id: 0,
   15473               #                   start_row_index: 2, end_row_index: 4,
   15474               #                   start_column_index: 0, end_column_index: 2`
   15475               #
   15476               #   `Sheet1!A:B == sheet_id: 0,
   15477               #                 start_column_index: 0, end_column_index: 2`
   15478               #
   15479               #   `Sheet1!A5:B == sheet_id: 0,
   15480               #                  start_row_index: 4,
   15481               #                  start_column_index: 0, end_column_index: 2`
   15482               #
   15483               #   `Sheet1 == sheet_id:0`
   15484               #
   15485               # The start index must always be less than or equal to the end index.
   15486               # If the start index equals the end index, then the range is empty.
   15487               # Empty ranges are typically not meaningful and are usually rendered in the
   15488               # UI as `#REF!`.
   15489             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   15490             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   15491             "sheetId": 42, # The sheet this range is on.
   15492             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   15493             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   15494           },
   15495           "destination": { # A coordinate in a sheet. # The top-left coordinate where the data should be pasted.
   15496               # All indexes are zero-based.
   15497             "rowIndex": 42, # The row index of the coordinate.
   15498             "columnIndex": 42, # The column index of the coordinate.
   15499             "sheetId": 42, # The sheet this coordinate is on.
   15500           },
   15501         },
   15502         "copyPaste": { # Copies data from the source to the destination. # Copies data from one area and pastes it to another.
   15503           "pasteType": "A String", # What kind of data to paste.
   15504           "source": { # A range on a sheet. # The source range to copy.
   15505               # All indexes are zero-based.
   15506               # Indexes are half open, e.g the start index is inclusive
   15507               # and the end index is exclusive -- [start_index, end_index).
   15508               # Missing indexes indicate the range is unbounded on that side.
   15509               #
   15510               # For example, if `"Sheet1"` is sheet ID 0, then:
   15511               #
   15512               #   `Sheet1!A1:A1 == sheet_id: 0,
   15513               #                   start_row_index: 0, end_row_index: 1,
   15514               #                   start_column_index: 0, end_column_index: 1`
   15515               #
   15516               #   `Sheet1!A3:B4 == sheet_id: 0,
   15517               #                   start_row_index: 2, end_row_index: 4,
   15518               #                   start_column_index: 0, end_column_index: 2`
   15519               #
   15520               #   `Sheet1!A:B == sheet_id: 0,
   15521               #                 start_column_index: 0, end_column_index: 2`
   15522               #
   15523               #   `Sheet1!A5:B == sheet_id: 0,
   15524               #                  start_row_index: 4,
   15525               #                  start_column_index: 0, end_column_index: 2`
   15526               #
   15527               #   `Sheet1 == sheet_id:0`
   15528               #
   15529               # The start index must always be less than or equal to the end index.
   15530               # If the start index equals the end index, then the range is empty.
   15531               # Empty ranges are typically not meaningful and are usually rendered in the
   15532               # UI as `#REF!`.
   15533             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   15534             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   15535             "sheetId": 42, # The sheet this range is on.
   15536             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   15537             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   15538           },
   15539           "destination": { # A range on a sheet. # The location to paste to. If the range covers a span that's
   15540               # a multiple of the source's height or width, then the
   15541               # data will be repeated to fill in the destination range.
   15542               # If the range is smaller than the source range, the entire
   15543               # source data will still be copied (beyond the end of the destination range).
   15544               # All indexes are zero-based.
   15545               # Indexes are half open, e.g the start index is inclusive
   15546               # and the end index is exclusive -- [start_index, end_index).
   15547               # Missing indexes indicate the range is unbounded on that side.
   15548               #
   15549               # For example, if `"Sheet1"` is sheet ID 0, then:
   15550               #
   15551               #   `Sheet1!A1:A1 == sheet_id: 0,
   15552               #                   start_row_index: 0, end_row_index: 1,
   15553               #                   start_column_index: 0, end_column_index: 1`
   15554               #
   15555               #   `Sheet1!A3:B4 == sheet_id: 0,
   15556               #                   start_row_index: 2, end_row_index: 4,
   15557               #                   start_column_index: 0, end_column_index: 2`
   15558               #
   15559               #   `Sheet1!A:B == sheet_id: 0,
   15560               #                 start_column_index: 0, end_column_index: 2`
   15561               #
   15562               #   `Sheet1!A5:B == sheet_id: 0,
   15563               #                  start_row_index: 4,
   15564               #                  start_column_index: 0, end_column_index: 2`
   15565               #
   15566               #   `Sheet1 == sheet_id:0`
   15567               #
   15568               # The start index must always be less than or equal to the end index.
   15569               # If the start index equals the end index, then the range is empty.
   15570               # Empty ranges are typically not meaningful and are usually rendered in the
   15571               # UI as `#REF!`.
   15572             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   15573             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   15574             "sheetId": 42, # The sheet this range is on.
   15575             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   15576             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   15577           },
   15578           "pasteOrientation": "A String", # How that data should be oriented when pasting.
   15579         },
   15580         "addSheet": { # Adds a new sheet. # Adds a sheet.
   15581             # When a sheet is added at a given index,
   15582             # all subsequent sheets' indexes are incremented.
   15583             # To add an object sheet, use AddChartRequest instead and specify
   15584             # EmbeddedObjectPosition.sheetId or
   15585             # EmbeddedObjectPosition.newSheet.
   15586           "properties": { # Properties of a sheet. # The properties the new sheet should have.
   15587               # All properties are optional.
   15588               # The sheetId field is optional; if one is not
   15589               # set, an id will be randomly generated. (It is an error to specify the ID
   15590               # of a sheet that already exists.)
   15591             "sheetType": "A String", # The type of sheet. Defaults to GRID.
   15592                 # This field cannot be changed once set.
   15593             "index": 42, # The index of the sheet within the spreadsheet.
   15594                 # When adding or updating sheet properties, if this field
   15595                 # is excluded then the sheet will be added or moved to the end
   15596                 # of the sheet list. When updating sheet indices or inserting
   15597                 # sheets, movement is considered in "before the move" indexes.
   15598                 # For example, if there were 3 sheets (S1, S2, S3) in order to
   15599                 # move S1 ahead of S2 the index would have to be set to 2. A sheet
   15600                 # index update request will be ignored if the requested index is
   15601                 # identical to the sheets current index or if the requested new
   15602                 # index is equal to the current sheet index + 1.
   15603             "title": "A String", # The name of the sheet.
   15604             "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
   15605                 # (If the sheet is an object sheet, containing a chart or image, then
   15606                 # this field will be absent.)
   15607                 # When writing it is an error to set any grid properties on non-grid sheets.
   15608               "columnCount": 42, # The number of columns in the grid.
   15609               "frozenRowCount": 42, # The number of rows that are frozen in the grid.
   15610               "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
   15611               "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
   15612               "rowCount": 42, # The number of rows in the grid.
   15613             },
   15614             "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
   15615             "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
   15616                 # for simplicity of conversion to/from color representations in various
   15617                 # languages over compactness; for example, the fields of this representation
   15618                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   15619                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   15620                 # method in iOS; and, with just a little work, it can be easily formatted into
   15621                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   15622                 #
   15623                 # Example (Java):
   15624                 #
   15625                 #      import com.google.type.Color;
   15626                 #
   15627                 #      // ...
   15628                 #      public static java.awt.Color fromProto(Color protocolor) {
   15629                 #        float alpha = protocolor.hasAlpha()
   15630                 #            ? protocolor.getAlpha().getValue()
   15631                 #            : 1.0;
   15632                 #
   15633                 #        return new java.awt.Color(
   15634                 #            protocolor.getRed(),
   15635                 #            protocolor.getGreen(),
   15636                 #            protocolor.getBlue(),
   15637                 #            alpha);
   15638                 #      }
   15639                 #
   15640                 #      public static Color toProto(java.awt.Color color) {
   15641                 #        float red = (float) color.getRed();
   15642                 #        float green = (float) color.getGreen();
   15643                 #        float blue = (float) color.getBlue();
   15644                 #        float denominator = 255.0;
   15645                 #        Color.Builder resultBuilder =
   15646                 #            Color
   15647                 #                .newBuilder()
   15648                 #                .setRed(red / denominator)
   15649                 #                .setGreen(green / denominator)
   15650                 #                .setBlue(blue / denominator);
   15651                 #        int alpha = color.getAlpha();
   15652                 #        if (alpha != 255) {
   15653                 #          result.setAlpha(
   15654                 #              FloatValue
   15655                 #                  .newBuilder()
   15656                 #                  .setValue(((float) alpha) / denominator)
   15657                 #                  .build());
   15658                 #        }
   15659                 #        return resultBuilder.build();
   15660                 #      }
   15661                 #      // ...
   15662                 #
   15663                 # Example (iOS / Obj-C):
   15664                 #
   15665                 #      // ...
   15666                 #      static UIColor* fromProto(Color* protocolor) {
   15667                 #         float red = [protocolor red];
   15668                 #         float green = [protocolor green];
   15669                 #         float blue = [protocolor blue];
   15670                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   15671                 #         float alpha = 1.0;
   15672                 #         if (alpha_wrapper != nil) {
   15673                 #           alpha = [alpha_wrapper value];
   15674                 #         }
   15675                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   15676                 #      }
   15677                 #
   15678                 #      static Color* toProto(UIColor* color) {
   15679                 #          CGFloat red, green, blue, alpha;
   15680                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   15681                 #            return nil;
   15682                 #          }
   15683                 #          Color* result = [Color alloc] init];
   15684                 #          [result setRed:red];
   15685                 #          [result setGreen:green];
   15686                 #          [result setBlue:blue];
   15687                 #          if (alpha <= 0.9999) {
   15688                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   15689                 #          }
   15690                 #          [result autorelease];
   15691                 #          return result;
   15692                 #     }
   15693                 #     // ...
   15694                 #
   15695                 #  Example (JavaScript):
   15696                 #
   15697                 #     // ...
   15698                 #
   15699                 #     var protoToCssColor = function(rgb_color) {
   15700                 #        var redFrac = rgb_color.red || 0.0;
   15701                 #        var greenFrac = rgb_color.green || 0.0;
   15702                 #        var blueFrac = rgb_color.blue || 0.0;
   15703                 #        var red = Math.floor(redFrac * 255);
   15704                 #        var green = Math.floor(greenFrac * 255);
   15705                 #        var blue = Math.floor(blueFrac * 255);
   15706                 #
   15707                 #        if (!('alpha' in rgb_color)) {
   15708                 #           return rgbToCssColor_(red, green, blue);
   15709                 #        }
   15710                 #
   15711                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   15712                 #        var rgbParams = [red, green, blue].join(',');
   15713                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   15714                 #     };
   15715                 #
   15716                 #     var rgbToCssColor_ = function(red, green, blue) {
   15717                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   15718                 #       var hexString = rgbNumber.toString(16);
   15719                 #       var missingZeros = 6 - hexString.length;
   15720                 #       var resultBuilder = ['#'];
   15721                 #       for (var i = 0; i < missingZeros; i++) {
   15722                 #          resultBuilder.push('0');
   15723                 #       }
   15724                 #       resultBuilder.push(hexString);
   15725                 #       return resultBuilder.join('');
   15726                 #     };
   15727                 #
   15728                 #     // ...
   15729               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   15730               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   15731                   # the final pixel color is defined by the equation:
   15732                   #
   15733                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   15734                   #
   15735                   # This means that a value of 1.0 corresponds to a solid color, whereas
   15736                   # a value of 0.0 corresponds to a completely transparent color. This
   15737                   # uses a wrapper message rather than a simple float scalar so that it is
   15738                   # possible to distinguish between a default value and the value being unset.
   15739                   # If omitted, this color object is to be rendered as a solid color
   15740                   # (as if the alpha value had been explicitly given with a value of 1.0).
   15741               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   15742               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   15743             },
   15744             "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
   15745             "sheetId": 42, # The ID of the sheet. Must be non-negative.
   15746                 # This field cannot be changed once set.
   15747           },
   15748         },
   15749         "deleteNamedRange": { # Removes the named range with the given ID from the spreadsheet. # Deletes a named range.
   15750           "namedRangeId": "A String", # The ID of the named range to delete.
   15751         },
   15752         "updateNamedRange": { # Updates properties of the named range with the specified # Updates a named range.
   15753             # namedRangeId.
   15754           "fields": "A String", # The fields that should be updated.  At least one field must be specified.
   15755               # The root `namedRange` is implied and should not be specified.
   15756               # A single `"*"` can be used as short-hand for listing every field.
   15757           "namedRange": { # A named range. # The named range to update with the new properties.
   15758             "namedRangeId": "A String", # The ID of the named range.
   15759             "range": { # A range on a sheet. # The range this represents.
   15760                 # All indexes are zero-based.
   15761                 # Indexes are half open, e.g the start index is inclusive
   15762                 # and the end index is exclusive -- [start_index, end_index).
   15763                 # Missing indexes indicate the range is unbounded on that side.
   15764                 #
   15765                 # For example, if `"Sheet1"` is sheet ID 0, then:
   15766                 #
   15767                 #   `Sheet1!A1:A1 == sheet_id: 0,
   15768                 #                   start_row_index: 0, end_row_index: 1,
   15769                 #                   start_column_index: 0, end_column_index: 1`
   15770                 #
   15771                 #   `Sheet1!A3:B4 == sheet_id: 0,
   15772                 #                   start_row_index: 2, end_row_index: 4,
   15773                 #                   start_column_index: 0, end_column_index: 2`
   15774                 #
   15775                 #   `Sheet1!A:B == sheet_id: 0,
   15776                 #                 start_column_index: 0, end_column_index: 2`
   15777                 #
   15778                 #   `Sheet1!A5:B == sheet_id: 0,
   15779                 #                  start_row_index: 4,
   15780                 #                  start_column_index: 0, end_column_index: 2`
   15781                 #
   15782                 #   `Sheet1 == sheet_id:0`
   15783                 #
   15784                 # The start index must always be less than or equal to the end index.
   15785                 # If the start index equals the end index, then the range is empty.
   15786                 # Empty ranges are typically not meaningful and are usually rendered in the
   15787                 # UI as `#REF!`.
   15788               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   15789               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   15790               "sheetId": 42, # The sheet this range is on.
   15791               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   15792               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   15793             },
   15794             "name": "A String", # The name of the named range.
   15795           },
   15796         },
   15797         "insertDimension": { # Inserts rows or columns in a sheet at a particular index. # Inserts new rows or columns in a sheet.
   15798           "inheritFromBefore": True or False, # Whether dimension properties should be extended from the dimensions
   15799               # before or after the newly inserted dimensions.
   15800               # True to inherit from the dimensions before (in which case the start
   15801               # index must be greater than 0), and false to inherit from the dimensions
   15802               # after.
   15803               #
   15804               # For example, if row index 0 has red background and row index 1
   15805               # has a green background, then inserting 2 rows at index 1 can inherit
   15806               # either the green or red background.  If `inheritFromBefore` is true,
   15807               # the two new rows will be red (because the row before the insertion point
   15808               # was red), whereas if `inheritFromBefore` is false, the two new rows will
   15809               # be green (because the row after the insertion point was green).
   15810           "range": { # A range along a single dimension on a sheet. # The dimensions to insert.  Both the start and end indexes must be bounded.
   15811               # All indexes are zero-based.
   15812               # Indexes are half open: the start index is inclusive
   15813               # and the end index is exclusive.
   15814               # Missing indexes indicate the range is unbounded on that side.
   15815             "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
   15816             "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
   15817             "dimension": "A String", # The dimension of the span.
   15818             "sheetId": 42, # The sheet this span is on.
   15819           },
   15820         },
   15821         "updateFilterView": { # Updates properties of the filter view. # Updates the properties of a filter view.
   15822           "filter": { # A filter view. # The new properties of the filter view.
   15823             "title": "A String", # The name of the filter view.
   15824             "namedRangeId": "A String", # The named range this filter view is backed by, if any.
   15825                 #
   15826                 # When writing, only one of range or named_range_id
   15827                 # may be set.
   15828             "filterViewId": 42, # The ID of the filter view.
   15829             "range": { # A range on a sheet. # The range this filter view covers.
   15830                 #
   15831                 # When writing, only one of range or named_range_id
   15832                 # may be set.
   15833                 # All indexes are zero-based.
   15834                 # Indexes are half open, e.g the start index is inclusive
   15835                 # and the end index is exclusive -- [start_index, end_index).
   15836                 # Missing indexes indicate the range is unbounded on that side.
   15837                 #
   15838                 # For example, if `"Sheet1"` is sheet ID 0, then:
   15839                 #
   15840                 #   `Sheet1!A1:A1 == sheet_id: 0,
   15841                 #                   start_row_index: 0, end_row_index: 1,
   15842                 #                   start_column_index: 0, end_column_index: 1`
   15843                 #
   15844                 #   `Sheet1!A3:B4 == sheet_id: 0,
   15845                 #                   start_row_index: 2, end_row_index: 4,
   15846                 #                   start_column_index: 0, end_column_index: 2`
   15847                 #
   15848                 #   `Sheet1!A:B == sheet_id: 0,
   15849                 #                 start_column_index: 0, end_column_index: 2`
   15850                 #
   15851                 #   `Sheet1!A5:B == sheet_id: 0,
   15852                 #                  start_row_index: 4,
   15853                 #                  start_column_index: 0, end_column_index: 2`
   15854                 #
   15855                 #   `Sheet1 == sheet_id:0`
   15856                 #
   15857                 # The start index must always be less than or equal to the end index.
   15858                 # If the start index equals the end index, then the range is empty.
   15859                 # Empty ranges are typically not meaningful and are usually rendered in the
   15860                 # UI as `#REF!`.
   15861               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   15862               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   15863               "sheetId": 42, # The sheet this range is on.
   15864               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   15865               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   15866             },
   15867             "sortSpecs": [ # The sort order per column. Later specifications are used when values
   15868                 # are equal in the earlier specifications.
   15869               { # A sort order associated with a specific column or row.
   15870                 "sortOrder": "A String", # The order data should be sorted.
   15871                 "dimensionIndex": 42, # The dimension the sort should be applied to.
   15872               },
   15873             ],
   15874             "criteria": { # The criteria for showing/hiding values per column.
   15875                 # The map's key is the column index, and the value is the criteria for
   15876                 # that column.
   15877               "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   15878                 "hiddenValues": [ # Values that should be hidden.
   15879                   "A String",
   15880                 ],
   15881                 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   15882                     # (This does not override hiddenValues -- if a value is listed there,
   15883                     #  it will still be hidden.)
   15884                     # BooleanConditions are used by conditional formatting,
   15885                     # data validation, and the criteria in filters.
   15886                   "values": [ # The values of the condition. The number of supported values depends
   15887                       # on the condition type.  Some support zero values,
   15888                       # others one or two values,
   15889                       # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   15890                     { # The value of the condition.
   15891                       "relativeDate": "A String", # A relative date (based on the current date).
   15892                           # Valid only if the type is
   15893                           # DATE_BEFORE,
   15894                           # DATE_AFTER,
   15895                           # DATE_ON_OR_BEFORE or
   15896                           # DATE_ON_OR_AFTER.
   15897                           #
   15898                           # Relative dates are not supported in data validation.
   15899                           # They are supported only in conditional formatting and
   15900                           # conditional filters.
   15901                       "userEnteredValue": "A String", # A value the condition is based on.
   15902                           # The value will be parsed as if the user typed into a cell.
   15903                           # Formulas are supported (and must begin with an `=`).
   15904                     },
   15905                   ],
   15906                   "type": "A String", # The type of condition.
   15907                 },
   15908               },
   15909             },
   15910           },
   15911           "fields": "A String", # The fields that should be updated.  At least one field must be specified.
   15912               # The root `filter` is implied and should not be specified.
   15913               # A single `"*"` can be used as short-hand for listing every field.
   15914         },
   15915         "deleteConditionalFormatRule": { # Deletes a conditional format rule at the given index. # Deletes an existing conditional format rule.
   15916             # All subsequent rules' indexes are decremented.
   15917           "index": 42, # The zero-based index of the rule to be deleted.
   15918           "sheetId": 42, # The sheet the rule is being deleted from.
   15919         },
   15920       },
   15921     ],
   15922     "responseIncludeGridData": True or False, # True if grid data should be returned. Meaningful only if
   15923         # if include_spreadsheet_response is 'true'.
   15924         # This parameter is ignored if a field mask was set in the request.
   15925     "includeSpreadsheetInResponse": True or False, # Determines if the update response should include the spreadsheet
   15926         # resource.
   15927   }
   15928 
   15929   x__xgafv: string, V1 error format.
   15930     Allowed values
   15931       1 - v1 error format
   15932       2 - v2 error format
   15933 
   15934 Returns:
   15935   An object of the form:
   15936 
   15937     { # The reply for batch updating a spreadsheet.
   15938     "spreadsheetId": "A String", # The spreadsheet the updates were applied to.
   15939     "updatedSpreadsheet": { # Resource that represents a spreadsheet. # The spreadsheet after updates were applied. This is only set if
   15940         # [BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is `true`.
   15941       "spreadsheetId": "A String", # The ID of the spreadsheet.
   15942           # This field is read-only.
   15943       "namedRanges": [ # The named ranges defined in a spreadsheet.
   15944         { # A named range.
   15945           "namedRangeId": "A String", # The ID of the named range.
   15946           "range": { # A range on a sheet. # The range this represents.
   15947               # All indexes are zero-based.
   15948               # Indexes are half open, e.g the start index is inclusive
   15949               # and the end index is exclusive -- [start_index, end_index).
   15950               # Missing indexes indicate the range is unbounded on that side.
   15951               #
   15952               # For example, if `"Sheet1"` is sheet ID 0, then:
   15953               #
   15954               #   `Sheet1!A1:A1 == sheet_id: 0,
   15955               #                   start_row_index: 0, end_row_index: 1,
   15956               #                   start_column_index: 0, end_column_index: 1`
   15957               #
   15958               #   `Sheet1!A3:B4 == sheet_id: 0,
   15959               #                   start_row_index: 2, end_row_index: 4,
   15960               #                   start_column_index: 0, end_column_index: 2`
   15961               #
   15962               #   `Sheet1!A:B == sheet_id: 0,
   15963               #                 start_column_index: 0, end_column_index: 2`
   15964               #
   15965               #   `Sheet1!A5:B == sheet_id: 0,
   15966               #                  start_row_index: 4,
   15967               #                  start_column_index: 0, end_column_index: 2`
   15968               #
   15969               #   `Sheet1 == sheet_id:0`
   15970               #
   15971               # The start index must always be less than or equal to the end index.
   15972               # If the start index equals the end index, then the range is empty.
   15973               # Empty ranges are typically not meaningful and are usually rendered in the
   15974               # UI as `#REF!`.
   15975             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   15976             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   15977             "sheetId": 42, # The sheet this range is on.
   15978             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   15979             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   15980           },
   15981           "name": "A String", # The name of the named range.
   15982         },
   15983       ],
   15984       "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
   15985         "title": "A String", # The title of the spreadsheet.
   15986         "locale": "A String", # The locale of the spreadsheet in one of the following formats:
   15987             #
   15988             # * an ISO 639-1 language code such as `en`
   15989             #
   15990             # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
   15991             #
   15992             # * a combination of the ISO language code and country code, such as `en_US`
   15993             #
   15994             # Note: when updating this field, not all locales/languages are supported.
   15995         "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
   15996             # CellData.effectiveFormat will not be set if the
   15997             # cell's format is equal to this default format.
   15998             # This field is read-only.
   15999           "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   16000             "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   16001                 # the user's locale will be used if necessary for the given type.
   16002                 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   16003                 # information about the supported patterns.
   16004             "type": "A String", # The type of the number format.
   16005                 # When writing, this field must be set.
   16006           },
   16007           "textDirection": "A String", # The direction of the text in the cell.
   16008           "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   16009               # When updating padding, every field must be specified.
   16010             "top": 42, # The top padding of the cell.
   16011             "right": 42, # The right padding of the cell.
   16012             "bottom": 42, # The bottom padding of the cell.
   16013             "left": 42, # The left padding of the cell.
   16014           },
   16015           "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   16016           "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   16017               # for simplicity of conversion to/from color representations in various
   16018               # languages over compactness; for example, the fields of this representation
   16019               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   16020               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   16021               # method in iOS; and, with just a little work, it can be easily formatted into
   16022               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   16023               #
   16024               # Example (Java):
   16025               #
   16026               #      import com.google.type.Color;
   16027               #
   16028               #      // ...
   16029               #      public static java.awt.Color fromProto(Color protocolor) {
   16030               #        float alpha = protocolor.hasAlpha()
   16031               #            ? protocolor.getAlpha().getValue()
   16032               #            : 1.0;
   16033               #
   16034               #        return new java.awt.Color(
   16035               #            protocolor.getRed(),
   16036               #            protocolor.getGreen(),
   16037               #            protocolor.getBlue(),
   16038               #            alpha);
   16039               #      }
   16040               #
   16041               #      public static Color toProto(java.awt.Color color) {
   16042               #        float red = (float) color.getRed();
   16043               #        float green = (float) color.getGreen();
   16044               #        float blue = (float) color.getBlue();
   16045               #        float denominator = 255.0;
   16046               #        Color.Builder resultBuilder =
   16047               #            Color
   16048               #                .newBuilder()
   16049               #                .setRed(red / denominator)
   16050               #                .setGreen(green / denominator)
   16051               #                .setBlue(blue / denominator);
   16052               #        int alpha = color.getAlpha();
   16053               #        if (alpha != 255) {
   16054               #          result.setAlpha(
   16055               #              FloatValue
   16056               #                  .newBuilder()
   16057               #                  .setValue(((float) alpha) / denominator)
   16058               #                  .build());
   16059               #        }
   16060               #        return resultBuilder.build();
   16061               #      }
   16062               #      // ...
   16063               #
   16064               # Example (iOS / Obj-C):
   16065               #
   16066               #      // ...
   16067               #      static UIColor* fromProto(Color* protocolor) {
   16068               #         float red = [protocolor red];
   16069               #         float green = [protocolor green];
   16070               #         float blue = [protocolor blue];
   16071               #         FloatValue* alpha_wrapper = [protocolor alpha];
   16072               #         float alpha = 1.0;
   16073               #         if (alpha_wrapper != nil) {
   16074               #           alpha = [alpha_wrapper value];
   16075               #         }
   16076               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   16077               #      }
   16078               #
   16079               #      static Color* toProto(UIColor* color) {
   16080               #          CGFloat red, green, blue, alpha;
   16081               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   16082               #            return nil;
   16083               #          }
   16084               #          Color* result = [Color alloc] init];
   16085               #          [result setRed:red];
   16086               #          [result setGreen:green];
   16087               #          [result setBlue:blue];
   16088               #          if (alpha <= 0.9999) {
   16089               #            [result setAlpha:floatWrapperWithValue(alpha)];
   16090               #          }
   16091               #          [result autorelease];
   16092               #          return result;
   16093               #     }
   16094               #     // ...
   16095               #
   16096               #  Example (JavaScript):
   16097               #
   16098               #     // ...
   16099               #
   16100               #     var protoToCssColor = function(rgb_color) {
   16101               #        var redFrac = rgb_color.red || 0.0;
   16102               #        var greenFrac = rgb_color.green || 0.0;
   16103               #        var blueFrac = rgb_color.blue || 0.0;
   16104               #        var red = Math.floor(redFrac * 255);
   16105               #        var green = Math.floor(greenFrac * 255);
   16106               #        var blue = Math.floor(blueFrac * 255);
   16107               #
   16108               #        if (!('alpha' in rgb_color)) {
   16109               #           return rgbToCssColor_(red, green, blue);
   16110               #        }
   16111               #
   16112               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   16113               #        var rgbParams = [red, green, blue].join(',');
   16114               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   16115               #     };
   16116               #
   16117               #     var rgbToCssColor_ = function(red, green, blue) {
   16118               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   16119               #       var hexString = rgbNumber.toString(16);
   16120               #       var missingZeros = 6 - hexString.length;
   16121               #       var resultBuilder = ['#'];
   16122               #       for (var i = 0; i < missingZeros; i++) {
   16123               #          resultBuilder.push('0');
   16124               #       }
   16125               #       resultBuilder.push(hexString);
   16126               #       return resultBuilder.join('');
   16127               #     };
   16128               #
   16129               #     // ...
   16130             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   16131             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   16132                 # the final pixel color is defined by the equation:
   16133                 #
   16134                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   16135                 #
   16136                 # This means that a value of 1.0 corresponds to a solid color, whereas
   16137                 # a value of 0.0 corresponds to a completely transparent color. This
   16138                 # uses a wrapper message rather than a simple float scalar so that it is
   16139                 # possible to distinguish between a default value and the value being unset.
   16140                 # If omitted, this color object is to be rendered as a solid color
   16141                 # (as if the alpha value had been explicitly given with a value of 1.0).
   16142             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   16143             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   16144           },
   16145           "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   16146           "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   16147               # Absent values indicate that the field isn't specified.
   16148             "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   16149                 # for simplicity of conversion to/from color representations in various
   16150                 # languages over compactness; for example, the fields of this representation
   16151                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   16152                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   16153                 # method in iOS; and, with just a little work, it can be easily formatted into
   16154                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   16155                 #
   16156                 # Example (Java):
   16157                 #
   16158                 #      import com.google.type.Color;
   16159                 #
   16160                 #      // ...
   16161                 #      public static java.awt.Color fromProto(Color protocolor) {
   16162                 #        float alpha = protocolor.hasAlpha()
   16163                 #            ? protocolor.getAlpha().getValue()
   16164                 #            : 1.0;
   16165                 #
   16166                 #        return new java.awt.Color(
   16167                 #            protocolor.getRed(),
   16168                 #            protocolor.getGreen(),
   16169                 #            protocolor.getBlue(),
   16170                 #            alpha);
   16171                 #      }
   16172                 #
   16173                 #      public static Color toProto(java.awt.Color color) {
   16174                 #        float red = (float) color.getRed();
   16175                 #        float green = (float) color.getGreen();
   16176                 #        float blue = (float) color.getBlue();
   16177                 #        float denominator = 255.0;
   16178                 #        Color.Builder resultBuilder =
   16179                 #            Color
   16180                 #                .newBuilder()
   16181                 #                .setRed(red / denominator)
   16182                 #                .setGreen(green / denominator)
   16183                 #                .setBlue(blue / denominator);
   16184                 #        int alpha = color.getAlpha();
   16185                 #        if (alpha != 255) {
   16186                 #          result.setAlpha(
   16187                 #              FloatValue
   16188                 #                  .newBuilder()
   16189                 #                  .setValue(((float) alpha) / denominator)
   16190                 #                  .build());
   16191                 #        }
   16192                 #        return resultBuilder.build();
   16193                 #      }
   16194                 #      // ...
   16195                 #
   16196                 # Example (iOS / Obj-C):
   16197                 #
   16198                 #      // ...
   16199                 #      static UIColor* fromProto(Color* protocolor) {
   16200                 #         float red = [protocolor red];
   16201                 #         float green = [protocolor green];
   16202                 #         float blue = [protocolor blue];
   16203                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   16204                 #         float alpha = 1.0;
   16205                 #         if (alpha_wrapper != nil) {
   16206                 #           alpha = [alpha_wrapper value];
   16207                 #         }
   16208                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   16209                 #      }
   16210                 #
   16211                 #      static Color* toProto(UIColor* color) {
   16212                 #          CGFloat red, green, blue, alpha;
   16213                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   16214                 #            return nil;
   16215                 #          }
   16216                 #          Color* result = [Color alloc] init];
   16217                 #          [result setRed:red];
   16218                 #          [result setGreen:green];
   16219                 #          [result setBlue:blue];
   16220                 #          if (alpha <= 0.9999) {
   16221                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   16222                 #          }
   16223                 #          [result autorelease];
   16224                 #          return result;
   16225                 #     }
   16226                 #     // ...
   16227                 #
   16228                 #  Example (JavaScript):
   16229                 #
   16230                 #     // ...
   16231                 #
   16232                 #     var protoToCssColor = function(rgb_color) {
   16233                 #        var redFrac = rgb_color.red || 0.0;
   16234                 #        var greenFrac = rgb_color.green || 0.0;
   16235                 #        var blueFrac = rgb_color.blue || 0.0;
   16236                 #        var red = Math.floor(redFrac * 255);
   16237                 #        var green = Math.floor(greenFrac * 255);
   16238                 #        var blue = Math.floor(blueFrac * 255);
   16239                 #
   16240                 #        if (!('alpha' in rgb_color)) {
   16241                 #           return rgbToCssColor_(red, green, blue);
   16242                 #        }
   16243                 #
   16244                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   16245                 #        var rgbParams = [red, green, blue].join(',');
   16246                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   16247                 #     };
   16248                 #
   16249                 #     var rgbToCssColor_ = function(red, green, blue) {
   16250                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   16251                 #       var hexString = rgbNumber.toString(16);
   16252                 #       var missingZeros = 6 - hexString.length;
   16253                 #       var resultBuilder = ['#'];
   16254                 #       for (var i = 0; i < missingZeros; i++) {
   16255                 #          resultBuilder.push('0');
   16256                 #       }
   16257                 #       resultBuilder.push(hexString);
   16258                 #       return resultBuilder.join('');
   16259                 #     };
   16260                 #
   16261                 #     // ...
   16262               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   16263               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   16264                   # the final pixel color is defined by the equation:
   16265                   #
   16266                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   16267                   #
   16268                   # This means that a value of 1.0 corresponds to a solid color, whereas
   16269                   # a value of 0.0 corresponds to a completely transparent color. This
   16270                   # uses a wrapper message rather than a simple float scalar so that it is
   16271                   # possible to distinguish between a default value and the value being unset.
   16272                   # If omitted, this color object is to be rendered as a solid color
   16273                   # (as if the alpha value had been explicitly given with a value of 1.0).
   16274               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   16275               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   16276             },
   16277             "bold": True or False, # True if the text is bold.
   16278             "strikethrough": True or False, # True if the text has a strikethrough.
   16279             "fontFamily": "A String", # The font family.
   16280             "fontSize": 42, # The size of the font.
   16281             "italic": True or False, # True if the text is italicized.
   16282             "underline": True or False, # True if the text is underlined.
   16283           },
   16284           "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   16285             "angle": 42, # The angle between the standard orientation and the desired orientation.
   16286                 # Measured in degrees. Valid values are between -90 and 90. Positive
   16287                 # angles are angled upwards, negative are angled downwards.
   16288                 #
   16289                 # Note: For LTR text direction positive angles are in the counterclockwise
   16290                 # direction, whereas for RTL they are in the clockwise direction
   16291             "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   16292                 # characters is unchanged.
   16293                 # For example:
   16294                 #
   16295                 #     | V |
   16296                 #     | e |
   16297                 #     | r |
   16298                 #     | t |
   16299                 #     | i |
   16300                 #     | c |
   16301                 #     | a |
   16302                 #     | l |
   16303           },
   16304           "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   16305           "borders": { # The borders of the cell. # The borders of the cell.
   16306             "top": { # A border along a cell. # The top border of the cell.
   16307               "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   16308                   # for simplicity of conversion to/from color representations in various
   16309                   # languages over compactness; for example, the fields of this representation
   16310                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   16311                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   16312                   # method in iOS; and, with just a little work, it can be easily formatted into
   16313                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   16314                   #
   16315                   # Example (Java):
   16316                   #
   16317                   #      import com.google.type.Color;
   16318                   #
   16319                   #      // ...
   16320                   #      public static java.awt.Color fromProto(Color protocolor) {
   16321                   #        float alpha = protocolor.hasAlpha()
   16322                   #            ? protocolor.getAlpha().getValue()
   16323                   #            : 1.0;
   16324                   #
   16325                   #        return new java.awt.Color(
   16326                   #            protocolor.getRed(),
   16327                   #            protocolor.getGreen(),
   16328                   #            protocolor.getBlue(),
   16329                   #            alpha);
   16330                   #      }
   16331                   #
   16332                   #      public static Color toProto(java.awt.Color color) {
   16333                   #        float red = (float) color.getRed();
   16334                   #        float green = (float) color.getGreen();
   16335                   #        float blue = (float) color.getBlue();
   16336                   #        float denominator = 255.0;
   16337                   #        Color.Builder resultBuilder =
   16338                   #            Color
   16339                   #                .newBuilder()
   16340                   #                .setRed(red / denominator)
   16341                   #                .setGreen(green / denominator)
   16342                   #                .setBlue(blue / denominator);
   16343                   #        int alpha = color.getAlpha();
   16344                   #        if (alpha != 255) {
   16345                   #          result.setAlpha(
   16346                   #              FloatValue
   16347                   #                  .newBuilder()
   16348                   #                  .setValue(((float) alpha) / denominator)
   16349                   #                  .build());
   16350                   #        }
   16351                   #        return resultBuilder.build();
   16352                   #      }
   16353                   #      // ...
   16354                   #
   16355                   # Example (iOS / Obj-C):
   16356                   #
   16357                   #      // ...
   16358                   #      static UIColor* fromProto(Color* protocolor) {
   16359                   #         float red = [protocolor red];
   16360                   #         float green = [protocolor green];
   16361                   #         float blue = [protocolor blue];
   16362                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   16363                   #         float alpha = 1.0;
   16364                   #         if (alpha_wrapper != nil) {
   16365                   #           alpha = [alpha_wrapper value];
   16366                   #         }
   16367                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   16368                   #      }
   16369                   #
   16370                   #      static Color* toProto(UIColor* color) {
   16371                   #          CGFloat red, green, blue, alpha;
   16372                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   16373                   #            return nil;
   16374                   #          }
   16375                   #          Color* result = [Color alloc] init];
   16376                   #          [result setRed:red];
   16377                   #          [result setGreen:green];
   16378                   #          [result setBlue:blue];
   16379                   #          if (alpha <= 0.9999) {
   16380                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   16381                   #          }
   16382                   #          [result autorelease];
   16383                   #          return result;
   16384                   #     }
   16385                   #     // ...
   16386                   #
   16387                   #  Example (JavaScript):
   16388                   #
   16389                   #     // ...
   16390                   #
   16391                   #     var protoToCssColor = function(rgb_color) {
   16392                   #        var redFrac = rgb_color.red || 0.0;
   16393                   #        var greenFrac = rgb_color.green || 0.0;
   16394                   #        var blueFrac = rgb_color.blue || 0.0;
   16395                   #        var red = Math.floor(redFrac * 255);
   16396                   #        var green = Math.floor(greenFrac * 255);
   16397                   #        var blue = Math.floor(blueFrac * 255);
   16398                   #
   16399                   #        if (!('alpha' in rgb_color)) {
   16400                   #           return rgbToCssColor_(red, green, blue);
   16401                   #        }
   16402                   #
   16403                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   16404                   #        var rgbParams = [red, green, blue].join(',');
   16405                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   16406                   #     };
   16407                   #
   16408                   #     var rgbToCssColor_ = function(red, green, blue) {
   16409                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   16410                   #       var hexString = rgbNumber.toString(16);
   16411                   #       var missingZeros = 6 - hexString.length;
   16412                   #       var resultBuilder = ['#'];
   16413                   #       for (var i = 0; i < missingZeros; i++) {
   16414                   #          resultBuilder.push('0');
   16415                   #       }
   16416                   #       resultBuilder.push(hexString);
   16417                   #       return resultBuilder.join('');
   16418                   #     };
   16419                   #
   16420                   #     // ...
   16421                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   16422                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   16423                     # the final pixel color is defined by the equation:
   16424                     #
   16425                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   16426                     #
   16427                     # This means that a value of 1.0 corresponds to a solid color, whereas
   16428                     # a value of 0.0 corresponds to a completely transparent color. This
   16429                     # uses a wrapper message rather than a simple float scalar so that it is
   16430                     # possible to distinguish between a default value and the value being unset.
   16431                     # If omitted, this color object is to be rendered as a solid color
   16432                     # (as if the alpha value had been explicitly given with a value of 1.0).
   16433                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   16434                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   16435               },
   16436               "width": 42, # The width of the border, in pixels.
   16437                   # Deprecated; the width is determined by the "style" field.
   16438               "style": "A String", # The style of the border.
   16439             },
   16440             "right": { # A border along a cell. # The right border of the cell.
   16441               "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   16442                   # for simplicity of conversion to/from color representations in various
   16443                   # languages over compactness; for example, the fields of this representation
   16444                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   16445                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   16446                   # method in iOS; and, with just a little work, it can be easily formatted into
   16447                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   16448                   #
   16449                   # Example (Java):
   16450                   #
   16451                   #      import com.google.type.Color;
   16452                   #
   16453                   #      // ...
   16454                   #      public static java.awt.Color fromProto(Color protocolor) {
   16455                   #        float alpha = protocolor.hasAlpha()
   16456                   #            ? protocolor.getAlpha().getValue()
   16457                   #            : 1.0;
   16458                   #
   16459                   #        return new java.awt.Color(
   16460                   #            protocolor.getRed(),
   16461                   #            protocolor.getGreen(),
   16462                   #            protocolor.getBlue(),
   16463                   #            alpha);
   16464                   #      }
   16465                   #
   16466                   #      public static Color toProto(java.awt.Color color) {
   16467                   #        float red = (float) color.getRed();
   16468                   #        float green = (float) color.getGreen();
   16469                   #        float blue = (float) color.getBlue();
   16470                   #        float denominator = 255.0;
   16471                   #        Color.Builder resultBuilder =
   16472                   #            Color
   16473                   #                .newBuilder()
   16474                   #                .setRed(red / denominator)
   16475                   #                .setGreen(green / denominator)
   16476                   #                .setBlue(blue / denominator);
   16477                   #        int alpha = color.getAlpha();
   16478                   #        if (alpha != 255) {
   16479                   #          result.setAlpha(
   16480                   #              FloatValue
   16481                   #                  .newBuilder()
   16482                   #                  .setValue(((float) alpha) / denominator)
   16483                   #                  .build());
   16484                   #        }
   16485                   #        return resultBuilder.build();
   16486                   #      }
   16487                   #      // ...
   16488                   #
   16489                   # Example (iOS / Obj-C):
   16490                   #
   16491                   #      // ...
   16492                   #      static UIColor* fromProto(Color* protocolor) {
   16493                   #         float red = [protocolor red];
   16494                   #         float green = [protocolor green];
   16495                   #         float blue = [protocolor blue];
   16496                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   16497                   #         float alpha = 1.0;
   16498                   #         if (alpha_wrapper != nil) {
   16499                   #           alpha = [alpha_wrapper value];
   16500                   #         }
   16501                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   16502                   #      }
   16503                   #
   16504                   #      static Color* toProto(UIColor* color) {
   16505                   #          CGFloat red, green, blue, alpha;
   16506                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   16507                   #            return nil;
   16508                   #          }
   16509                   #          Color* result = [Color alloc] init];
   16510                   #          [result setRed:red];
   16511                   #          [result setGreen:green];
   16512                   #          [result setBlue:blue];
   16513                   #          if (alpha <= 0.9999) {
   16514                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   16515                   #          }
   16516                   #          [result autorelease];
   16517                   #          return result;
   16518                   #     }
   16519                   #     // ...
   16520                   #
   16521                   #  Example (JavaScript):
   16522                   #
   16523                   #     // ...
   16524                   #
   16525                   #     var protoToCssColor = function(rgb_color) {
   16526                   #        var redFrac = rgb_color.red || 0.0;
   16527                   #        var greenFrac = rgb_color.green || 0.0;
   16528                   #        var blueFrac = rgb_color.blue || 0.0;
   16529                   #        var red = Math.floor(redFrac * 255);
   16530                   #        var green = Math.floor(greenFrac * 255);
   16531                   #        var blue = Math.floor(blueFrac * 255);
   16532                   #
   16533                   #        if (!('alpha' in rgb_color)) {
   16534                   #           return rgbToCssColor_(red, green, blue);
   16535                   #        }
   16536                   #
   16537                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   16538                   #        var rgbParams = [red, green, blue].join(',');
   16539                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   16540                   #     };
   16541                   #
   16542                   #     var rgbToCssColor_ = function(red, green, blue) {
   16543                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   16544                   #       var hexString = rgbNumber.toString(16);
   16545                   #       var missingZeros = 6 - hexString.length;
   16546                   #       var resultBuilder = ['#'];
   16547                   #       for (var i = 0; i < missingZeros; i++) {
   16548                   #          resultBuilder.push('0');
   16549                   #       }
   16550                   #       resultBuilder.push(hexString);
   16551                   #       return resultBuilder.join('');
   16552                   #     };
   16553                   #
   16554                   #     // ...
   16555                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   16556                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   16557                     # the final pixel color is defined by the equation:
   16558                     #
   16559                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   16560                     #
   16561                     # This means that a value of 1.0 corresponds to a solid color, whereas
   16562                     # a value of 0.0 corresponds to a completely transparent color. This
   16563                     # uses a wrapper message rather than a simple float scalar so that it is
   16564                     # possible to distinguish between a default value and the value being unset.
   16565                     # If omitted, this color object is to be rendered as a solid color
   16566                     # (as if the alpha value had been explicitly given with a value of 1.0).
   16567                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   16568                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   16569               },
   16570               "width": 42, # The width of the border, in pixels.
   16571                   # Deprecated; the width is determined by the "style" field.
   16572               "style": "A String", # The style of the border.
   16573             },
   16574             "bottom": { # A border along a cell. # The bottom border of the cell.
   16575               "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   16576                   # for simplicity of conversion to/from color representations in various
   16577                   # languages over compactness; for example, the fields of this representation
   16578                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   16579                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   16580                   # method in iOS; and, with just a little work, it can be easily formatted into
   16581                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   16582                   #
   16583                   # Example (Java):
   16584                   #
   16585                   #      import com.google.type.Color;
   16586                   #
   16587                   #      // ...
   16588                   #      public static java.awt.Color fromProto(Color protocolor) {
   16589                   #        float alpha = protocolor.hasAlpha()
   16590                   #            ? protocolor.getAlpha().getValue()
   16591                   #            : 1.0;
   16592                   #
   16593                   #        return new java.awt.Color(
   16594                   #            protocolor.getRed(),
   16595                   #            protocolor.getGreen(),
   16596                   #            protocolor.getBlue(),
   16597                   #            alpha);
   16598                   #      }
   16599                   #
   16600                   #      public static Color toProto(java.awt.Color color) {
   16601                   #        float red = (float) color.getRed();
   16602                   #        float green = (float) color.getGreen();
   16603                   #        float blue = (float) color.getBlue();
   16604                   #        float denominator = 255.0;
   16605                   #        Color.Builder resultBuilder =
   16606                   #            Color
   16607                   #                .newBuilder()
   16608                   #                .setRed(red / denominator)
   16609                   #                .setGreen(green / denominator)
   16610                   #                .setBlue(blue / denominator);
   16611                   #        int alpha = color.getAlpha();
   16612                   #        if (alpha != 255) {
   16613                   #          result.setAlpha(
   16614                   #              FloatValue
   16615                   #                  .newBuilder()
   16616                   #                  .setValue(((float) alpha) / denominator)
   16617                   #                  .build());
   16618                   #        }
   16619                   #        return resultBuilder.build();
   16620                   #      }
   16621                   #      // ...
   16622                   #
   16623                   # Example (iOS / Obj-C):
   16624                   #
   16625                   #      // ...
   16626                   #      static UIColor* fromProto(Color* protocolor) {
   16627                   #         float red = [protocolor red];
   16628                   #         float green = [protocolor green];
   16629                   #         float blue = [protocolor blue];
   16630                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   16631                   #         float alpha = 1.0;
   16632                   #         if (alpha_wrapper != nil) {
   16633                   #           alpha = [alpha_wrapper value];
   16634                   #         }
   16635                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   16636                   #      }
   16637                   #
   16638                   #      static Color* toProto(UIColor* color) {
   16639                   #          CGFloat red, green, blue, alpha;
   16640                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   16641                   #            return nil;
   16642                   #          }
   16643                   #          Color* result = [Color alloc] init];
   16644                   #          [result setRed:red];
   16645                   #          [result setGreen:green];
   16646                   #          [result setBlue:blue];
   16647                   #          if (alpha <= 0.9999) {
   16648                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   16649                   #          }
   16650                   #          [result autorelease];
   16651                   #          return result;
   16652                   #     }
   16653                   #     // ...
   16654                   #
   16655                   #  Example (JavaScript):
   16656                   #
   16657                   #     // ...
   16658                   #
   16659                   #     var protoToCssColor = function(rgb_color) {
   16660                   #        var redFrac = rgb_color.red || 0.0;
   16661                   #        var greenFrac = rgb_color.green || 0.0;
   16662                   #        var blueFrac = rgb_color.blue || 0.0;
   16663                   #        var red = Math.floor(redFrac * 255);
   16664                   #        var green = Math.floor(greenFrac * 255);
   16665                   #        var blue = Math.floor(blueFrac * 255);
   16666                   #
   16667                   #        if (!('alpha' in rgb_color)) {
   16668                   #           return rgbToCssColor_(red, green, blue);
   16669                   #        }
   16670                   #
   16671                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   16672                   #        var rgbParams = [red, green, blue].join(',');
   16673                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   16674                   #     };
   16675                   #
   16676                   #     var rgbToCssColor_ = function(red, green, blue) {
   16677                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   16678                   #       var hexString = rgbNumber.toString(16);
   16679                   #       var missingZeros = 6 - hexString.length;
   16680                   #       var resultBuilder = ['#'];
   16681                   #       for (var i = 0; i < missingZeros; i++) {
   16682                   #          resultBuilder.push('0');
   16683                   #       }
   16684                   #       resultBuilder.push(hexString);
   16685                   #       return resultBuilder.join('');
   16686                   #     };
   16687                   #
   16688                   #     // ...
   16689                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   16690                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   16691                     # the final pixel color is defined by the equation:
   16692                     #
   16693                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   16694                     #
   16695                     # This means that a value of 1.0 corresponds to a solid color, whereas
   16696                     # a value of 0.0 corresponds to a completely transparent color. This
   16697                     # uses a wrapper message rather than a simple float scalar so that it is
   16698                     # possible to distinguish between a default value and the value being unset.
   16699                     # If omitted, this color object is to be rendered as a solid color
   16700                     # (as if the alpha value had been explicitly given with a value of 1.0).
   16701                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   16702                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   16703               },
   16704               "width": 42, # The width of the border, in pixels.
   16705                   # Deprecated; the width is determined by the "style" field.
   16706               "style": "A String", # The style of the border.
   16707             },
   16708             "left": { # A border along a cell. # The left border of the cell.
   16709               "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   16710                   # for simplicity of conversion to/from color representations in various
   16711                   # languages over compactness; for example, the fields of this representation
   16712                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   16713                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   16714                   # method in iOS; and, with just a little work, it can be easily formatted into
   16715                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   16716                   #
   16717                   # Example (Java):
   16718                   #
   16719                   #      import com.google.type.Color;
   16720                   #
   16721                   #      // ...
   16722                   #      public static java.awt.Color fromProto(Color protocolor) {
   16723                   #        float alpha = protocolor.hasAlpha()
   16724                   #            ? protocolor.getAlpha().getValue()
   16725                   #            : 1.0;
   16726                   #
   16727                   #        return new java.awt.Color(
   16728                   #            protocolor.getRed(),
   16729                   #            protocolor.getGreen(),
   16730                   #            protocolor.getBlue(),
   16731                   #            alpha);
   16732                   #      }
   16733                   #
   16734                   #      public static Color toProto(java.awt.Color color) {
   16735                   #        float red = (float) color.getRed();
   16736                   #        float green = (float) color.getGreen();
   16737                   #        float blue = (float) color.getBlue();
   16738                   #        float denominator = 255.0;
   16739                   #        Color.Builder resultBuilder =
   16740                   #            Color
   16741                   #                .newBuilder()
   16742                   #                .setRed(red / denominator)
   16743                   #                .setGreen(green / denominator)
   16744                   #                .setBlue(blue / denominator);
   16745                   #        int alpha = color.getAlpha();
   16746                   #        if (alpha != 255) {
   16747                   #          result.setAlpha(
   16748                   #              FloatValue
   16749                   #                  .newBuilder()
   16750                   #                  .setValue(((float) alpha) / denominator)
   16751                   #                  .build());
   16752                   #        }
   16753                   #        return resultBuilder.build();
   16754                   #      }
   16755                   #      // ...
   16756                   #
   16757                   # Example (iOS / Obj-C):
   16758                   #
   16759                   #      // ...
   16760                   #      static UIColor* fromProto(Color* protocolor) {
   16761                   #         float red = [protocolor red];
   16762                   #         float green = [protocolor green];
   16763                   #         float blue = [protocolor blue];
   16764                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   16765                   #         float alpha = 1.0;
   16766                   #         if (alpha_wrapper != nil) {
   16767                   #           alpha = [alpha_wrapper value];
   16768                   #         }
   16769                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   16770                   #      }
   16771                   #
   16772                   #      static Color* toProto(UIColor* color) {
   16773                   #          CGFloat red, green, blue, alpha;
   16774                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   16775                   #            return nil;
   16776                   #          }
   16777                   #          Color* result = [Color alloc] init];
   16778                   #          [result setRed:red];
   16779                   #          [result setGreen:green];
   16780                   #          [result setBlue:blue];
   16781                   #          if (alpha <= 0.9999) {
   16782                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   16783                   #          }
   16784                   #          [result autorelease];
   16785                   #          return result;
   16786                   #     }
   16787                   #     // ...
   16788                   #
   16789                   #  Example (JavaScript):
   16790                   #
   16791                   #     // ...
   16792                   #
   16793                   #     var protoToCssColor = function(rgb_color) {
   16794                   #        var redFrac = rgb_color.red || 0.0;
   16795                   #        var greenFrac = rgb_color.green || 0.0;
   16796                   #        var blueFrac = rgb_color.blue || 0.0;
   16797                   #        var red = Math.floor(redFrac * 255);
   16798                   #        var green = Math.floor(greenFrac * 255);
   16799                   #        var blue = Math.floor(blueFrac * 255);
   16800                   #
   16801                   #        if (!('alpha' in rgb_color)) {
   16802                   #           return rgbToCssColor_(red, green, blue);
   16803                   #        }
   16804                   #
   16805                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   16806                   #        var rgbParams = [red, green, blue].join(',');
   16807                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   16808                   #     };
   16809                   #
   16810                   #     var rgbToCssColor_ = function(red, green, blue) {
   16811                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   16812                   #       var hexString = rgbNumber.toString(16);
   16813                   #       var missingZeros = 6 - hexString.length;
   16814                   #       var resultBuilder = ['#'];
   16815                   #       for (var i = 0; i < missingZeros; i++) {
   16816                   #          resultBuilder.push('0');
   16817                   #       }
   16818                   #       resultBuilder.push(hexString);
   16819                   #       return resultBuilder.join('');
   16820                   #     };
   16821                   #
   16822                   #     // ...
   16823                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   16824                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   16825                     # the final pixel color is defined by the equation:
   16826                     #
   16827                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   16828                     #
   16829                     # This means that a value of 1.0 corresponds to a solid color, whereas
   16830                     # a value of 0.0 corresponds to a completely transparent color. This
   16831                     # uses a wrapper message rather than a simple float scalar so that it is
   16832                     # possible to distinguish between a default value and the value being unset.
   16833                     # If omitted, this color object is to be rendered as a solid color
   16834                     # (as if the alpha value had been explicitly given with a value of 1.0).
   16835                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   16836                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   16837               },
   16838               "width": 42, # The width of the border, in pixels.
   16839                   # Deprecated; the width is determined by the "style" field.
   16840               "style": "A String", # The style of the border.
   16841             },
   16842           },
   16843           "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   16844         },
   16845         "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
   16846         "iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
   16847             # calculation.  Absence of this field means that circular references will
   16848             # result in calculation errors.
   16849             # calculation.
   16850           "convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
   16851               # less than this threshold value, the calculation rounds stop.
   16852           "maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
   16853               # rounds to perform.
   16854         },
   16855         "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
   16856             # `America/New_York`. If the time zone isn't recognized, this may
   16857             # be a custom time zone such as `GMT-07:00`.
   16858       },
   16859       "sheets": [ # The sheets that are part of a spreadsheet.
   16860         { # A sheet in a spreadsheet.
   16861           "conditionalFormats": [ # The conditional format rules in this sheet.
   16862             { # A rule describing a conditional format.
   16863               "ranges": [ # The ranges that will be formatted if the condition is true.
   16864                   # All the ranges must be on the same grid.
   16865                 { # A range on a sheet.
   16866                     # All indexes are zero-based.
   16867                     # Indexes are half open, e.g the start index is inclusive
   16868                     # and the end index is exclusive -- [start_index, end_index).
   16869                     # Missing indexes indicate the range is unbounded on that side.
   16870                     #
   16871                     # For example, if `"Sheet1"` is sheet ID 0, then:
   16872                     #
   16873                     #   `Sheet1!A1:A1 == sheet_id: 0,
   16874                     #                   start_row_index: 0, end_row_index: 1,
   16875                     #                   start_column_index: 0, end_column_index: 1`
   16876                     #
   16877                     #   `Sheet1!A3:B4 == sheet_id: 0,
   16878                     #                   start_row_index: 2, end_row_index: 4,
   16879                     #                   start_column_index: 0, end_column_index: 2`
   16880                     #
   16881                     #   `Sheet1!A:B == sheet_id: 0,
   16882                     #                 start_column_index: 0, end_column_index: 2`
   16883                     #
   16884                     #   `Sheet1!A5:B == sheet_id: 0,
   16885                     #                  start_row_index: 4,
   16886                     #                  start_column_index: 0, end_column_index: 2`
   16887                     #
   16888                     #   `Sheet1 == sheet_id:0`
   16889                     #
   16890                     # The start index must always be less than or equal to the end index.
   16891                     # If the start index equals the end index, then the range is empty.
   16892                     # Empty ranges are typically not meaningful and are usually rendered in the
   16893                     # UI as `#REF!`.
   16894                   "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   16895                   "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   16896                   "sheetId": 42, # The sheet this range is on.
   16897                   "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   16898                   "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   16899                 },
   16900               ],
   16901               "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
   16902                 "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
   16903                     # the format will be applied.
   16904                     # BooleanConditions are used by conditional formatting,
   16905                     # data validation, and the criteria in filters.
   16906                   "values": [ # The values of the condition. The number of supported values depends
   16907                       # on the condition type.  Some support zero values,
   16908                       # others one or two values,
   16909                       # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   16910                     { # The value of the condition.
   16911                       "relativeDate": "A String", # A relative date (based on the current date).
   16912                           # Valid only if the type is
   16913                           # DATE_BEFORE,
   16914                           # DATE_AFTER,
   16915                           # DATE_ON_OR_BEFORE or
   16916                           # DATE_ON_OR_AFTER.
   16917                           #
   16918                           # Relative dates are not supported in data validation.
   16919                           # They are supported only in conditional formatting and
   16920                           # conditional filters.
   16921                       "userEnteredValue": "A String", # A value the condition is based on.
   16922                           # The value will be parsed as if the user typed into a cell.
   16923                           # Formulas are supported (and must begin with an `=`).
   16924                     },
   16925                   ],
   16926                   "type": "A String", # The type of condition.
   16927                 },
   16928                 "format": { # The format of a cell. # The format to apply.
   16929                     # Conditional formatting can only apply a subset of formatting:
   16930                     # bold, italic,
   16931                     # strikethrough,
   16932                     # foreground color &
   16933                     # background color.
   16934                   "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   16935                     "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   16936                         # the user's locale will be used if necessary for the given type.
   16937                         # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   16938                         # information about the supported patterns.
   16939                     "type": "A String", # The type of the number format.
   16940                         # When writing, this field must be set.
   16941                   },
   16942                   "textDirection": "A String", # The direction of the text in the cell.
   16943                   "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   16944                       # When updating padding, every field must be specified.
   16945                     "top": 42, # The top padding of the cell.
   16946                     "right": 42, # The right padding of the cell.
   16947                     "bottom": 42, # The bottom padding of the cell.
   16948                     "left": 42, # The left padding of the cell.
   16949                   },
   16950                   "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   16951                   "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   16952                       # for simplicity of conversion to/from color representations in various
   16953                       # languages over compactness; for example, the fields of this representation
   16954                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   16955                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   16956                       # method in iOS; and, with just a little work, it can be easily formatted into
   16957                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   16958                       #
   16959                       # Example (Java):
   16960                       #
   16961                       #      import com.google.type.Color;
   16962                       #
   16963                       #      // ...
   16964                       #      public static java.awt.Color fromProto(Color protocolor) {
   16965                       #        float alpha = protocolor.hasAlpha()
   16966                       #            ? protocolor.getAlpha().getValue()
   16967                       #            : 1.0;
   16968                       #
   16969                       #        return new java.awt.Color(
   16970                       #            protocolor.getRed(),
   16971                       #            protocolor.getGreen(),
   16972                       #            protocolor.getBlue(),
   16973                       #            alpha);
   16974                       #      }
   16975                       #
   16976                       #      public static Color toProto(java.awt.Color color) {
   16977                       #        float red = (float) color.getRed();
   16978                       #        float green = (float) color.getGreen();
   16979                       #        float blue = (float) color.getBlue();
   16980                       #        float denominator = 255.0;
   16981                       #        Color.Builder resultBuilder =
   16982                       #            Color
   16983                       #                .newBuilder()
   16984                       #                .setRed(red / denominator)
   16985                       #                .setGreen(green / denominator)
   16986                       #                .setBlue(blue / denominator);
   16987                       #        int alpha = color.getAlpha();
   16988                       #        if (alpha != 255) {
   16989                       #          result.setAlpha(
   16990                       #              FloatValue
   16991                       #                  .newBuilder()
   16992                       #                  .setValue(((float) alpha) / denominator)
   16993                       #                  .build());
   16994                       #        }
   16995                       #        return resultBuilder.build();
   16996                       #      }
   16997                       #      // ...
   16998                       #
   16999                       # Example (iOS / Obj-C):
   17000                       #
   17001                       #      // ...
   17002                       #      static UIColor* fromProto(Color* protocolor) {
   17003                       #         float red = [protocolor red];
   17004                       #         float green = [protocolor green];
   17005                       #         float blue = [protocolor blue];
   17006                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   17007                       #         float alpha = 1.0;
   17008                       #         if (alpha_wrapper != nil) {
   17009                       #           alpha = [alpha_wrapper value];
   17010                       #         }
   17011                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   17012                       #      }
   17013                       #
   17014                       #      static Color* toProto(UIColor* color) {
   17015                       #          CGFloat red, green, blue, alpha;
   17016                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   17017                       #            return nil;
   17018                       #          }
   17019                       #          Color* result = [Color alloc] init];
   17020                       #          [result setRed:red];
   17021                       #          [result setGreen:green];
   17022                       #          [result setBlue:blue];
   17023                       #          if (alpha <= 0.9999) {
   17024                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   17025                       #          }
   17026                       #          [result autorelease];
   17027                       #          return result;
   17028                       #     }
   17029                       #     // ...
   17030                       #
   17031                       #  Example (JavaScript):
   17032                       #
   17033                       #     // ...
   17034                       #
   17035                       #     var protoToCssColor = function(rgb_color) {
   17036                       #        var redFrac = rgb_color.red || 0.0;
   17037                       #        var greenFrac = rgb_color.green || 0.0;
   17038                       #        var blueFrac = rgb_color.blue || 0.0;
   17039                       #        var red = Math.floor(redFrac * 255);
   17040                       #        var green = Math.floor(greenFrac * 255);
   17041                       #        var blue = Math.floor(blueFrac * 255);
   17042                       #
   17043                       #        if (!('alpha' in rgb_color)) {
   17044                       #           return rgbToCssColor_(red, green, blue);
   17045                       #        }
   17046                       #
   17047                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   17048                       #        var rgbParams = [red, green, blue].join(',');
   17049                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   17050                       #     };
   17051                       #
   17052                       #     var rgbToCssColor_ = function(red, green, blue) {
   17053                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   17054                       #       var hexString = rgbNumber.toString(16);
   17055                       #       var missingZeros = 6 - hexString.length;
   17056                       #       var resultBuilder = ['#'];
   17057                       #       for (var i = 0; i < missingZeros; i++) {
   17058                       #          resultBuilder.push('0');
   17059                       #       }
   17060                       #       resultBuilder.push(hexString);
   17061                       #       return resultBuilder.join('');
   17062                       #     };
   17063                       #
   17064                       #     // ...
   17065                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   17066                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   17067                         # the final pixel color is defined by the equation:
   17068                         #
   17069                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   17070                         #
   17071                         # This means that a value of 1.0 corresponds to a solid color, whereas
   17072                         # a value of 0.0 corresponds to a completely transparent color. This
   17073                         # uses a wrapper message rather than a simple float scalar so that it is
   17074                         # possible to distinguish between a default value and the value being unset.
   17075                         # If omitted, this color object is to be rendered as a solid color
   17076                         # (as if the alpha value had been explicitly given with a value of 1.0).
   17077                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   17078                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   17079                   },
   17080                   "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   17081                   "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   17082                       # Absent values indicate that the field isn't specified.
   17083                     "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   17084                         # for simplicity of conversion to/from color representations in various
   17085                         # languages over compactness; for example, the fields of this representation
   17086                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   17087                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   17088                         # method in iOS; and, with just a little work, it can be easily formatted into
   17089                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   17090                         #
   17091                         # Example (Java):
   17092                         #
   17093                         #      import com.google.type.Color;
   17094                         #
   17095                         #      // ...
   17096                         #      public static java.awt.Color fromProto(Color protocolor) {
   17097                         #        float alpha = protocolor.hasAlpha()
   17098                         #            ? protocolor.getAlpha().getValue()
   17099                         #            : 1.0;
   17100                         #
   17101                         #        return new java.awt.Color(
   17102                         #            protocolor.getRed(),
   17103                         #            protocolor.getGreen(),
   17104                         #            protocolor.getBlue(),
   17105                         #            alpha);
   17106                         #      }
   17107                         #
   17108                         #      public static Color toProto(java.awt.Color color) {
   17109                         #        float red = (float) color.getRed();
   17110                         #        float green = (float) color.getGreen();
   17111                         #        float blue = (float) color.getBlue();
   17112                         #        float denominator = 255.0;
   17113                         #        Color.Builder resultBuilder =
   17114                         #            Color
   17115                         #                .newBuilder()
   17116                         #                .setRed(red / denominator)
   17117                         #                .setGreen(green / denominator)
   17118                         #                .setBlue(blue / denominator);
   17119                         #        int alpha = color.getAlpha();
   17120                         #        if (alpha != 255) {
   17121                         #          result.setAlpha(
   17122                         #              FloatValue
   17123                         #                  .newBuilder()
   17124                         #                  .setValue(((float) alpha) / denominator)
   17125                         #                  .build());
   17126                         #        }
   17127                         #        return resultBuilder.build();
   17128                         #      }
   17129                         #      // ...
   17130                         #
   17131                         # Example (iOS / Obj-C):
   17132                         #
   17133                         #      // ...
   17134                         #      static UIColor* fromProto(Color* protocolor) {
   17135                         #         float red = [protocolor red];
   17136                         #         float green = [protocolor green];
   17137                         #         float blue = [protocolor blue];
   17138                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   17139                         #         float alpha = 1.0;
   17140                         #         if (alpha_wrapper != nil) {
   17141                         #           alpha = [alpha_wrapper value];
   17142                         #         }
   17143                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   17144                         #      }
   17145                         #
   17146                         #      static Color* toProto(UIColor* color) {
   17147                         #          CGFloat red, green, blue, alpha;
   17148                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   17149                         #            return nil;
   17150                         #          }
   17151                         #          Color* result = [Color alloc] init];
   17152                         #          [result setRed:red];
   17153                         #          [result setGreen:green];
   17154                         #          [result setBlue:blue];
   17155                         #          if (alpha <= 0.9999) {
   17156                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   17157                         #          }
   17158                         #          [result autorelease];
   17159                         #          return result;
   17160                         #     }
   17161                         #     // ...
   17162                         #
   17163                         #  Example (JavaScript):
   17164                         #
   17165                         #     // ...
   17166                         #
   17167                         #     var protoToCssColor = function(rgb_color) {
   17168                         #        var redFrac = rgb_color.red || 0.0;
   17169                         #        var greenFrac = rgb_color.green || 0.0;
   17170                         #        var blueFrac = rgb_color.blue || 0.0;
   17171                         #        var red = Math.floor(redFrac * 255);
   17172                         #        var green = Math.floor(greenFrac * 255);
   17173                         #        var blue = Math.floor(blueFrac * 255);
   17174                         #
   17175                         #        if (!('alpha' in rgb_color)) {
   17176                         #           return rgbToCssColor_(red, green, blue);
   17177                         #        }
   17178                         #
   17179                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   17180                         #        var rgbParams = [red, green, blue].join(',');
   17181                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   17182                         #     };
   17183                         #
   17184                         #     var rgbToCssColor_ = function(red, green, blue) {
   17185                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   17186                         #       var hexString = rgbNumber.toString(16);
   17187                         #       var missingZeros = 6 - hexString.length;
   17188                         #       var resultBuilder = ['#'];
   17189                         #       for (var i = 0; i < missingZeros; i++) {
   17190                         #          resultBuilder.push('0');
   17191                         #       }
   17192                         #       resultBuilder.push(hexString);
   17193                         #       return resultBuilder.join('');
   17194                         #     };
   17195                         #
   17196                         #     // ...
   17197                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   17198                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   17199                           # the final pixel color is defined by the equation:
   17200                           #
   17201                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   17202                           #
   17203                           # This means that a value of 1.0 corresponds to a solid color, whereas
   17204                           # a value of 0.0 corresponds to a completely transparent color. This
   17205                           # uses a wrapper message rather than a simple float scalar so that it is
   17206                           # possible to distinguish between a default value and the value being unset.
   17207                           # If omitted, this color object is to be rendered as a solid color
   17208                           # (as if the alpha value had been explicitly given with a value of 1.0).
   17209                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   17210                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   17211                     },
   17212                     "bold": True or False, # True if the text is bold.
   17213                     "strikethrough": True or False, # True if the text has a strikethrough.
   17214                     "fontFamily": "A String", # The font family.
   17215                     "fontSize": 42, # The size of the font.
   17216                     "italic": True or False, # True if the text is italicized.
   17217                     "underline": True or False, # True if the text is underlined.
   17218                   },
   17219                   "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   17220                     "angle": 42, # The angle between the standard orientation and the desired orientation.
   17221                         # Measured in degrees. Valid values are between -90 and 90. Positive
   17222                         # angles are angled upwards, negative are angled downwards.
   17223                         #
   17224                         # Note: For LTR text direction positive angles are in the counterclockwise
   17225                         # direction, whereas for RTL they are in the clockwise direction
   17226                     "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   17227                         # characters is unchanged.
   17228                         # For example:
   17229                         #
   17230                         #     | V |
   17231                         #     | e |
   17232                         #     | r |
   17233                         #     | t |
   17234                         #     | i |
   17235                         #     | c |
   17236                         #     | a |
   17237                         #     | l |
   17238                   },
   17239                   "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   17240                   "borders": { # The borders of the cell. # The borders of the cell.
   17241                     "top": { # A border along a cell. # The top border of the cell.
   17242                       "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   17243                           # for simplicity of conversion to/from color representations in various
   17244                           # languages over compactness; for example, the fields of this representation
   17245                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   17246                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   17247                           # method in iOS; and, with just a little work, it can be easily formatted into
   17248                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   17249                           #
   17250                           # Example (Java):
   17251                           #
   17252                           #      import com.google.type.Color;
   17253                           #
   17254                           #      // ...
   17255                           #      public static java.awt.Color fromProto(Color protocolor) {
   17256                           #        float alpha = protocolor.hasAlpha()
   17257                           #            ? protocolor.getAlpha().getValue()
   17258                           #            : 1.0;
   17259                           #
   17260                           #        return new java.awt.Color(
   17261                           #            protocolor.getRed(),
   17262                           #            protocolor.getGreen(),
   17263                           #            protocolor.getBlue(),
   17264                           #            alpha);
   17265                           #      }
   17266                           #
   17267                           #      public static Color toProto(java.awt.Color color) {
   17268                           #        float red = (float) color.getRed();
   17269                           #        float green = (float) color.getGreen();
   17270                           #        float blue = (float) color.getBlue();
   17271                           #        float denominator = 255.0;
   17272                           #        Color.Builder resultBuilder =
   17273                           #            Color
   17274                           #                .newBuilder()
   17275                           #                .setRed(red / denominator)
   17276                           #                .setGreen(green / denominator)
   17277                           #                .setBlue(blue / denominator);
   17278                           #        int alpha = color.getAlpha();
   17279                           #        if (alpha != 255) {
   17280                           #          result.setAlpha(
   17281                           #              FloatValue
   17282                           #                  .newBuilder()
   17283                           #                  .setValue(((float) alpha) / denominator)
   17284                           #                  .build());
   17285                           #        }
   17286                           #        return resultBuilder.build();
   17287                           #      }
   17288                           #      // ...
   17289                           #
   17290                           # Example (iOS / Obj-C):
   17291                           #
   17292                           #      // ...
   17293                           #      static UIColor* fromProto(Color* protocolor) {
   17294                           #         float red = [protocolor red];
   17295                           #         float green = [protocolor green];
   17296                           #         float blue = [protocolor blue];
   17297                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   17298                           #         float alpha = 1.0;
   17299                           #         if (alpha_wrapper != nil) {
   17300                           #           alpha = [alpha_wrapper value];
   17301                           #         }
   17302                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   17303                           #      }
   17304                           #
   17305                           #      static Color* toProto(UIColor* color) {
   17306                           #          CGFloat red, green, blue, alpha;
   17307                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   17308                           #            return nil;
   17309                           #          }
   17310                           #          Color* result = [Color alloc] init];
   17311                           #          [result setRed:red];
   17312                           #          [result setGreen:green];
   17313                           #          [result setBlue:blue];
   17314                           #          if (alpha <= 0.9999) {
   17315                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   17316                           #          }
   17317                           #          [result autorelease];
   17318                           #          return result;
   17319                           #     }
   17320                           #     // ...
   17321                           #
   17322                           #  Example (JavaScript):
   17323                           #
   17324                           #     // ...
   17325                           #
   17326                           #     var protoToCssColor = function(rgb_color) {
   17327                           #        var redFrac = rgb_color.red || 0.0;
   17328                           #        var greenFrac = rgb_color.green || 0.0;
   17329                           #        var blueFrac = rgb_color.blue || 0.0;
   17330                           #        var red = Math.floor(redFrac * 255);
   17331                           #        var green = Math.floor(greenFrac * 255);
   17332                           #        var blue = Math.floor(blueFrac * 255);
   17333                           #
   17334                           #        if (!('alpha' in rgb_color)) {
   17335                           #           return rgbToCssColor_(red, green, blue);
   17336                           #        }
   17337                           #
   17338                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   17339                           #        var rgbParams = [red, green, blue].join(',');
   17340                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   17341                           #     };
   17342                           #
   17343                           #     var rgbToCssColor_ = function(red, green, blue) {
   17344                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   17345                           #       var hexString = rgbNumber.toString(16);
   17346                           #       var missingZeros = 6 - hexString.length;
   17347                           #       var resultBuilder = ['#'];
   17348                           #       for (var i = 0; i < missingZeros; i++) {
   17349                           #          resultBuilder.push('0');
   17350                           #       }
   17351                           #       resultBuilder.push(hexString);
   17352                           #       return resultBuilder.join('');
   17353                           #     };
   17354                           #
   17355                           #     // ...
   17356                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   17357                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   17358                             # the final pixel color is defined by the equation:
   17359                             #
   17360                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   17361                             #
   17362                             # This means that a value of 1.0 corresponds to a solid color, whereas
   17363                             # a value of 0.0 corresponds to a completely transparent color. This
   17364                             # uses a wrapper message rather than a simple float scalar so that it is
   17365                             # possible to distinguish between a default value and the value being unset.
   17366                             # If omitted, this color object is to be rendered as a solid color
   17367                             # (as if the alpha value had been explicitly given with a value of 1.0).
   17368                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   17369                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   17370                       },
   17371                       "width": 42, # The width of the border, in pixels.
   17372                           # Deprecated; the width is determined by the "style" field.
   17373                       "style": "A String", # The style of the border.
   17374                     },
   17375                     "right": { # A border along a cell. # The right border of the cell.
   17376                       "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   17377                           # for simplicity of conversion to/from color representations in various
   17378                           # languages over compactness; for example, the fields of this representation
   17379                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   17380                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   17381                           # method in iOS; and, with just a little work, it can be easily formatted into
   17382                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   17383                           #
   17384                           # Example (Java):
   17385                           #
   17386                           #      import com.google.type.Color;
   17387                           #
   17388                           #      // ...
   17389                           #      public static java.awt.Color fromProto(Color protocolor) {
   17390                           #        float alpha = protocolor.hasAlpha()
   17391                           #            ? protocolor.getAlpha().getValue()
   17392                           #            : 1.0;
   17393                           #
   17394                           #        return new java.awt.Color(
   17395                           #            protocolor.getRed(),
   17396                           #            protocolor.getGreen(),
   17397                           #            protocolor.getBlue(),
   17398                           #            alpha);
   17399                           #      }
   17400                           #
   17401                           #      public static Color toProto(java.awt.Color color) {
   17402                           #        float red = (float) color.getRed();
   17403                           #        float green = (float) color.getGreen();
   17404                           #        float blue = (float) color.getBlue();
   17405                           #        float denominator = 255.0;
   17406                           #        Color.Builder resultBuilder =
   17407                           #            Color
   17408                           #                .newBuilder()
   17409                           #                .setRed(red / denominator)
   17410                           #                .setGreen(green / denominator)
   17411                           #                .setBlue(blue / denominator);
   17412                           #        int alpha = color.getAlpha();
   17413                           #        if (alpha != 255) {
   17414                           #          result.setAlpha(
   17415                           #              FloatValue
   17416                           #                  .newBuilder()
   17417                           #                  .setValue(((float) alpha) / denominator)
   17418                           #                  .build());
   17419                           #        }
   17420                           #        return resultBuilder.build();
   17421                           #      }
   17422                           #      // ...
   17423                           #
   17424                           # Example (iOS / Obj-C):
   17425                           #
   17426                           #      // ...
   17427                           #      static UIColor* fromProto(Color* protocolor) {
   17428                           #         float red = [protocolor red];
   17429                           #         float green = [protocolor green];
   17430                           #         float blue = [protocolor blue];
   17431                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   17432                           #         float alpha = 1.0;
   17433                           #         if (alpha_wrapper != nil) {
   17434                           #           alpha = [alpha_wrapper value];
   17435                           #         }
   17436                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   17437                           #      }
   17438                           #
   17439                           #      static Color* toProto(UIColor* color) {
   17440                           #          CGFloat red, green, blue, alpha;
   17441                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   17442                           #            return nil;
   17443                           #          }
   17444                           #          Color* result = [Color alloc] init];
   17445                           #          [result setRed:red];
   17446                           #          [result setGreen:green];
   17447                           #          [result setBlue:blue];
   17448                           #          if (alpha <= 0.9999) {
   17449                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   17450                           #          }
   17451                           #          [result autorelease];
   17452                           #          return result;
   17453                           #     }
   17454                           #     // ...
   17455                           #
   17456                           #  Example (JavaScript):
   17457                           #
   17458                           #     // ...
   17459                           #
   17460                           #     var protoToCssColor = function(rgb_color) {
   17461                           #        var redFrac = rgb_color.red || 0.0;
   17462                           #        var greenFrac = rgb_color.green || 0.0;
   17463                           #        var blueFrac = rgb_color.blue || 0.0;
   17464                           #        var red = Math.floor(redFrac * 255);
   17465                           #        var green = Math.floor(greenFrac * 255);
   17466                           #        var blue = Math.floor(blueFrac * 255);
   17467                           #
   17468                           #        if (!('alpha' in rgb_color)) {
   17469                           #           return rgbToCssColor_(red, green, blue);
   17470                           #        }
   17471                           #
   17472                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   17473                           #        var rgbParams = [red, green, blue].join(',');
   17474                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   17475                           #     };
   17476                           #
   17477                           #     var rgbToCssColor_ = function(red, green, blue) {
   17478                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   17479                           #       var hexString = rgbNumber.toString(16);
   17480                           #       var missingZeros = 6 - hexString.length;
   17481                           #       var resultBuilder = ['#'];
   17482                           #       for (var i = 0; i < missingZeros; i++) {
   17483                           #          resultBuilder.push('0');
   17484                           #       }
   17485                           #       resultBuilder.push(hexString);
   17486                           #       return resultBuilder.join('');
   17487                           #     };
   17488                           #
   17489                           #     // ...
   17490                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   17491                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   17492                             # the final pixel color is defined by the equation:
   17493                             #
   17494                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   17495                             #
   17496                             # This means that a value of 1.0 corresponds to a solid color, whereas
   17497                             # a value of 0.0 corresponds to a completely transparent color. This
   17498                             # uses a wrapper message rather than a simple float scalar so that it is
   17499                             # possible to distinguish between a default value and the value being unset.
   17500                             # If omitted, this color object is to be rendered as a solid color
   17501                             # (as if the alpha value had been explicitly given with a value of 1.0).
   17502                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   17503                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   17504                       },
   17505                       "width": 42, # The width of the border, in pixels.
   17506                           # Deprecated; the width is determined by the "style" field.
   17507                       "style": "A String", # The style of the border.
   17508                     },
   17509                     "bottom": { # A border along a cell. # The bottom border of the cell.
   17510                       "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   17511                           # for simplicity of conversion to/from color representations in various
   17512                           # languages over compactness; for example, the fields of this representation
   17513                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   17514                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   17515                           # method in iOS; and, with just a little work, it can be easily formatted into
   17516                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   17517                           #
   17518                           # Example (Java):
   17519                           #
   17520                           #      import com.google.type.Color;
   17521                           #
   17522                           #      // ...
   17523                           #      public static java.awt.Color fromProto(Color protocolor) {
   17524                           #        float alpha = protocolor.hasAlpha()
   17525                           #            ? protocolor.getAlpha().getValue()
   17526                           #            : 1.0;
   17527                           #
   17528                           #        return new java.awt.Color(
   17529                           #            protocolor.getRed(),
   17530                           #            protocolor.getGreen(),
   17531                           #            protocolor.getBlue(),
   17532                           #            alpha);
   17533                           #      }
   17534                           #
   17535                           #      public static Color toProto(java.awt.Color color) {
   17536                           #        float red = (float) color.getRed();
   17537                           #        float green = (float) color.getGreen();
   17538                           #        float blue = (float) color.getBlue();
   17539                           #        float denominator = 255.0;
   17540                           #        Color.Builder resultBuilder =
   17541                           #            Color
   17542                           #                .newBuilder()
   17543                           #                .setRed(red / denominator)
   17544                           #                .setGreen(green / denominator)
   17545                           #                .setBlue(blue / denominator);
   17546                           #        int alpha = color.getAlpha();
   17547                           #        if (alpha != 255) {
   17548                           #          result.setAlpha(
   17549                           #              FloatValue
   17550                           #                  .newBuilder()
   17551                           #                  .setValue(((float) alpha) / denominator)
   17552                           #                  .build());
   17553                           #        }
   17554                           #        return resultBuilder.build();
   17555                           #      }
   17556                           #      // ...
   17557                           #
   17558                           # Example (iOS / Obj-C):
   17559                           #
   17560                           #      // ...
   17561                           #      static UIColor* fromProto(Color* protocolor) {
   17562                           #         float red = [protocolor red];
   17563                           #         float green = [protocolor green];
   17564                           #         float blue = [protocolor blue];
   17565                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   17566                           #         float alpha = 1.0;
   17567                           #         if (alpha_wrapper != nil) {
   17568                           #           alpha = [alpha_wrapper value];
   17569                           #         }
   17570                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   17571                           #      }
   17572                           #
   17573                           #      static Color* toProto(UIColor* color) {
   17574                           #          CGFloat red, green, blue, alpha;
   17575                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   17576                           #            return nil;
   17577                           #          }
   17578                           #          Color* result = [Color alloc] init];
   17579                           #          [result setRed:red];
   17580                           #          [result setGreen:green];
   17581                           #          [result setBlue:blue];
   17582                           #          if (alpha <= 0.9999) {
   17583                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   17584                           #          }
   17585                           #          [result autorelease];
   17586                           #          return result;
   17587                           #     }
   17588                           #     // ...
   17589                           #
   17590                           #  Example (JavaScript):
   17591                           #
   17592                           #     // ...
   17593                           #
   17594                           #     var protoToCssColor = function(rgb_color) {
   17595                           #        var redFrac = rgb_color.red || 0.0;
   17596                           #        var greenFrac = rgb_color.green || 0.0;
   17597                           #        var blueFrac = rgb_color.blue || 0.0;
   17598                           #        var red = Math.floor(redFrac * 255);
   17599                           #        var green = Math.floor(greenFrac * 255);
   17600                           #        var blue = Math.floor(blueFrac * 255);
   17601                           #
   17602                           #        if (!('alpha' in rgb_color)) {
   17603                           #           return rgbToCssColor_(red, green, blue);
   17604                           #        }
   17605                           #
   17606                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   17607                           #        var rgbParams = [red, green, blue].join(',');
   17608                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   17609                           #     };
   17610                           #
   17611                           #     var rgbToCssColor_ = function(red, green, blue) {
   17612                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   17613                           #       var hexString = rgbNumber.toString(16);
   17614                           #       var missingZeros = 6 - hexString.length;
   17615                           #       var resultBuilder = ['#'];
   17616                           #       for (var i = 0; i < missingZeros; i++) {
   17617                           #          resultBuilder.push('0');
   17618                           #       }
   17619                           #       resultBuilder.push(hexString);
   17620                           #       return resultBuilder.join('');
   17621                           #     };
   17622                           #
   17623                           #     // ...
   17624                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   17625                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   17626                             # the final pixel color is defined by the equation:
   17627                             #
   17628                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   17629                             #
   17630                             # This means that a value of 1.0 corresponds to a solid color, whereas
   17631                             # a value of 0.0 corresponds to a completely transparent color. This
   17632                             # uses a wrapper message rather than a simple float scalar so that it is
   17633                             # possible to distinguish between a default value and the value being unset.
   17634                             # If omitted, this color object is to be rendered as a solid color
   17635                             # (as if the alpha value had been explicitly given with a value of 1.0).
   17636                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   17637                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   17638                       },
   17639                       "width": 42, # The width of the border, in pixels.
   17640                           # Deprecated; the width is determined by the "style" field.
   17641                       "style": "A String", # The style of the border.
   17642                     },
   17643                     "left": { # A border along a cell. # The left border of the cell.
   17644                       "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   17645                           # for simplicity of conversion to/from color representations in various
   17646                           # languages over compactness; for example, the fields of this representation
   17647                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   17648                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   17649                           # method in iOS; and, with just a little work, it can be easily formatted into
   17650                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   17651                           #
   17652                           # Example (Java):
   17653                           #
   17654                           #      import com.google.type.Color;
   17655                           #
   17656                           #      // ...
   17657                           #      public static java.awt.Color fromProto(Color protocolor) {
   17658                           #        float alpha = protocolor.hasAlpha()
   17659                           #            ? protocolor.getAlpha().getValue()
   17660                           #            : 1.0;
   17661                           #
   17662                           #        return new java.awt.Color(
   17663                           #            protocolor.getRed(),
   17664                           #            protocolor.getGreen(),
   17665                           #            protocolor.getBlue(),
   17666                           #            alpha);
   17667                           #      }
   17668                           #
   17669                           #      public static Color toProto(java.awt.Color color) {
   17670                           #        float red = (float) color.getRed();
   17671                           #        float green = (float) color.getGreen();
   17672                           #        float blue = (float) color.getBlue();
   17673                           #        float denominator = 255.0;
   17674                           #        Color.Builder resultBuilder =
   17675                           #            Color
   17676                           #                .newBuilder()
   17677                           #                .setRed(red / denominator)
   17678                           #                .setGreen(green / denominator)
   17679                           #                .setBlue(blue / denominator);
   17680                           #        int alpha = color.getAlpha();
   17681                           #        if (alpha != 255) {
   17682                           #          result.setAlpha(
   17683                           #              FloatValue
   17684                           #                  .newBuilder()
   17685                           #                  .setValue(((float) alpha) / denominator)
   17686                           #                  .build());
   17687                           #        }
   17688                           #        return resultBuilder.build();
   17689                           #      }
   17690                           #      // ...
   17691                           #
   17692                           # Example (iOS / Obj-C):
   17693                           #
   17694                           #      // ...
   17695                           #      static UIColor* fromProto(Color* protocolor) {
   17696                           #         float red = [protocolor red];
   17697                           #         float green = [protocolor green];
   17698                           #         float blue = [protocolor blue];
   17699                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   17700                           #         float alpha = 1.0;
   17701                           #         if (alpha_wrapper != nil) {
   17702                           #           alpha = [alpha_wrapper value];
   17703                           #         }
   17704                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   17705                           #      }
   17706                           #
   17707                           #      static Color* toProto(UIColor* color) {
   17708                           #          CGFloat red, green, blue, alpha;
   17709                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   17710                           #            return nil;
   17711                           #          }
   17712                           #          Color* result = [Color alloc] init];
   17713                           #          [result setRed:red];
   17714                           #          [result setGreen:green];
   17715                           #          [result setBlue:blue];
   17716                           #          if (alpha <= 0.9999) {
   17717                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   17718                           #          }
   17719                           #          [result autorelease];
   17720                           #          return result;
   17721                           #     }
   17722                           #     // ...
   17723                           #
   17724                           #  Example (JavaScript):
   17725                           #
   17726                           #     // ...
   17727                           #
   17728                           #     var protoToCssColor = function(rgb_color) {
   17729                           #        var redFrac = rgb_color.red || 0.0;
   17730                           #        var greenFrac = rgb_color.green || 0.0;
   17731                           #        var blueFrac = rgb_color.blue || 0.0;
   17732                           #        var red = Math.floor(redFrac * 255);
   17733                           #        var green = Math.floor(greenFrac * 255);
   17734                           #        var blue = Math.floor(blueFrac * 255);
   17735                           #
   17736                           #        if (!('alpha' in rgb_color)) {
   17737                           #           return rgbToCssColor_(red, green, blue);
   17738                           #        }
   17739                           #
   17740                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   17741                           #        var rgbParams = [red, green, blue].join(',');
   17742                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   17743                           #     };
   17744                           #
   17745                           #     var rgbToCssColor_ = function(red, green, blue) {
   17746                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   17747                           #       var hexString = rgbNumber.toString(16);
   17748                           #       var missingZeros = 6 - hexString.length;
   17749                           #       var resultBuilder = ['#'];
   17750                           #       for (var i = 0; i < missingZeros; i++) {
   17751                           #          resultBuilder.push('0');
   17752                           #       }
   17753                           #       resultBuilder.push(hexString);
   17754                           #       return resultBuilder.join('');
   17755                           #     };
   17756                           #
   17757                           #     // ...
   17758                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   17759                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   17760                             # the final pixel color is defined by the equation:
   17761                             #
   17762                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   17763                             #
   17764                             # This means that a value of 1.0 corresponds to a solid color, whereas
   17765                             # a value of 0.0 corresponds to a completely transparent color. This
   17766                             # uses a wrapper message rather than a simple float scalar so that it is
   17767                             # possible to distinguish between a default value and the value being unset.
   17768                             # If omitted, this color object is to be rendered as a solid color
   17769                             # (as if the alpha value had been explicitly given with a value of 1.0).
   17770                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   17771                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   17772                       },
   17773                       "width": 42, # The width of the border, in pixels.
   17774                           # Deprecated; the width is determined by the "style" field.
   17775                       "style": "A String", # The style of the border.
   17776                     },
   17777                   },
   17778                   "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   17779                 },
   17780               },
   17781               "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
   17782                   # the interpolation points listed. The format of a cell will vary
   17783                   # based on its contents as compared to the values of the interpolation
   17784                   # points.
   17785                 "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
   17786                     # These pin the gradient color scale according to the color,
   17787                     # type and value chosen.
   17788                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   17789                       # for simplicity of conversion to/from color representations in various
   17790                       # languages over compactness; for example, the fields of this representation
   17791                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   17792                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   17793                       # method in iOS; and, with just a little work, it can be easily formatted into
   17794                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   17795                       #
   17796                       # Example (Java):
   17797                       #
   17798                       #      import com.google.type.Color;
   17799                       #
   17800                       #      // ...
   17801                       #      public static java.awt.Color fromProto(Color protocolor) {
   17802                       #        float alpha = protocolor.hasAlpha()
   17803                       #            ? protocolor.getAlpha().getValue()
   17804                       #            : 1.0;
   17805                       #
   17806                       #        return new java.awt.Color(
   17807                       #            protocolor.getRed(),
   17808                       #            protocolor.getGreen(),
   17809                       #            protocolor.getBlue(),
   17810                       #            alpha);
   17811                       #      }
   17812                       #
   17813                       #      public static Color toProto(java.awt.Color color) {
   17814                       #        float red = (float) color.getRed();
   17815                       #        float green = (float) color.getGreen();
   17816                       #        float blue = (float) color.getBlue();
   17817                       #        float denominator = 255.0;
   17818                       #        Color.Builder resultBuilder =
   17819                       #            Color
   17820                       #                .newBuilder()
   17821                       #                .setRed(red / denominator)
   17822                       #                .setGreen(green / denominator)
   17823                       #                .setBlue(blue / denominator);
   17824                       #        int alpha = color.getAlpha();
   17825                       #        if (alpha != 255) {
   17826                       #          result.setAlpha(
   17827                       #              FloatValue
   17828                       #                  .newBuilder()
   17829                       #                  .setValue(((float) alpha) / denominator)
   17830                       #                  .build());
   17831                       #        }
   17832                       #        return resultBuilder.build();
   17833                       #      }
   17834                       #      // ...
   17835                       #
   17836                       # Example (iOS / Obj-C):
   17837                       #
   17838                       #      // ...
   17839                       #      static UIColor* fromProto(Color* protocolor) {
   17840                       #         float red = [protocolor red];
   17841                       #         float green = [protocolor green];
   17842                       #         float blue = [protocolor blue];
   17843                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   17844                       #         float alpha = 1.0;
   17845                       #         if (alpha_wrapper != nil) {
   17846                       #           alpha = [alpha_wrapper value];
   17847                       #         }
   17848                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   17849                       #      }
   17850                       #
   17851                       #      static Color* toProto(UIColor* color) {
   17852                       #          CGFloat red, green, blue, alpha;
   17853                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   17854                       #            return nil;
   17855                       #          }
   17856                       #          Color* result = [Color alloc] init];
   17857                       #          [result setRed:red];
   17858                       #          [result setGreen:green];
   17859                       #          [result setBlue:blue];
   17860                       #          if (alpha <= 0.9999) {
   17861                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   17862                       #          }
   17863                       #          [result autorelease];
   17864                       #          return result;
   17865                       #     }
   17866                       #     // ...
   17867                       #
   17868                       #  Example (JavaScript):
   17869                       #
   17870                       #     // ...
   17871                       #
   17872                       #     var protoToCssColor = function(rgb_color) {
   17873                       #        var redFrac = rgb_color.red || 0.0;
   17874                       #        var greenFrac = rgb_color.green || 0.0;
   17875                       #        var blueFrac = rgb_color.blue || 0.0;
   17876                       #        var red = Math.floor(redFrac * 255);
   17877                       #        var green = Math.floor(greenFrac * 255);
   17878                       #        var blue = Math.floor(blueFrac * 255);
   17879                       #
   17880                       #        if (!('alpha' in rgb_color)) {
   17881                       #           return rgbToCssColor_(red, green, blue);
   17882                       #        }
   17883                       #
   17884                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   17885                       #        var rgbParams = [red, green, blue].join(',');
   17886                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   17887                       #     };
   17888                       #
   17889                       #     var rgbToCssColor_ = function(red, green, blue) {
   17890                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   17891                       #       var hexString = rgbNumber.toString(16);
   17892                       #       var missingZeros = 6 - hexString.length;
   17893                       #       var resultBuilder = ['#'];
   17894                       #       for (var i = 0; i < missingZeros; i++) {
   17895                       #          resultBuilder.push('0');
   17896                       #       }
   17897                       #       resultBuilder.push(hexString);
   17898                       #       return resultBuilder.join('');
   17899                       #     };
   17900                       #
   17901                       #     // ...
   17902                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   17903                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   17904                         # the final pixel color is defined by the equation:
   17905                         #
   17906                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   17907                         #
   17908                         # This means that a value of 1.0 corresponds to a solid color, whereas
   17909                         # a value of 0.0 corresponds to a completely transparent color. This
   17910                         # uses a wrapper message rather than a simple float scalar so that it is
   17911                         # possible to distinguish between a default value and the value being unset.
   17912                         # If omitted, this color object is to be rendered as a solid color
   17913                         # (as if the alpha value had been explicitly given with a value of 1.0).
   17914                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   17915                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   17916                   },
   17917                   "type": "A String", # How the value should be interpreted.
   17918                   "value": "A String", # The value this interpolation point uses.  May be a formula.
   17919                       # Unused if type is MIN or
   17920                       # MAX.
   17921                 },
   17922                 "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
   17923                     # These pin the gradient color scale according to the color,
   17924                     # type and value chosen.
   17925                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   17926                       # for simplicity of conversion to/from color representations in various
   17927                       # languages over compactness; for example, the fields of this representation
   17928                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   17929                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   17930                       # method in iOS; and, with just a little work, it can be easily formatted into
   17931                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   17932                       #
   17933                       # Example (Java):
   17934                       #
   17935                       #      import com.google.type.Color;
   17936                       #
   17937                       #      // ...
   17938                       #      public static java.awt.Color fromProto(Color protocolor) {
   17939                       #        float alpha = protocolor.hasAlpha()
   17940                       #            ? protocolor.getAlpha().getValue()
   17941                       #            : 1.0;
   17942                       #
   17943                       #        return new java.awt.Color(
   17944                       #            protocolor.getRed(),
   17945                       #            protocolor.getGreen(),
   17946                       #            protocolor.getBlue(),
   17947                       #            alpha);
   17948                       #      }
   17949                       #
   17950                       #      public static Color toProto(java.awt.Color color) {
   17951                       #        float red = (float) color.getRed();
   17952                       #        float green = (float) color.getGreen();
   17953                       #        float blue = (float) color.getBlue();
   17954                       #        float denominator = 255.0;
   17955                       #        Color.Builder resultBuilder =
   17956                       #            Color
   17957                       #                .newBuilder()
   17958                       #                .setRed(red / denominator)
   17959                       #                .setGreen(green / denominator)
   17960                       #                .setBlue(blue / denominator);
   17961                       #        int alpha = color.getAlpha();
   17962                       #        if (alpha != 255) {
   17963                       #          result.setAlpha(
   17964                       #              FloatValue
   17965                       #                  .newBuilder()
   17966                       #                  .setValue(((float) alpha) / denominator)
   17967                       #                  .build());
   17968                       #        }
   17969                       #        return resultBuilder.build();
   17970                       #      }
   17971                       #      // ...
   17972                       #
   17973                       # Example (iOS / Obj-C):
   17974                       #
   17975                       #      // ...
   17976                       #      static UIColor* fromProto(Color* protocolor) {
   17977                       #         float red = [protocolor red];
   17978                       #         float green = [protocolor green];
   17979                       #         float blue = [protocolor blue];
   17980                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   17981                       #         float alpha = 1.0;
   17982                       #         if (alpha_wrapper != nil) {
   17983                       #           alpha = [alpha_wrapper value];
   17984                       #         }
   17985                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   17986                       #      }
   17987                       #
   17988                       #      static Color* toProto(UIColor* color) {
   17989                       #          CGFloat red, green, blue, alpha;
   17990                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   17991                       #            return nil;
   17992                       #          }
   17993                       #          Color* result = [Color alloc] init];
   17994                       #          [result setRed:red];
   17995                       #          [result setGreen:green];
   17996                       #          [result setBlue:blue];
   17997                       #          if (alpha <= 0.9999) {
   17998                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   17999                       #          }
   18000                       #          [result autorelease];
   18001                       #          return result;
   18002                       #     }
   18003                       #     // ...
   18004                       #
   18005                       #  Example (JavaScript):
   18006                       #
   18007                       #     // ...
   18008                       #
   18009                       #     var protoToCssColor = function(rgb_color) {
   18010                       #        var redFrac = rgb_color.red || 0.0;
   18011                       #        var greenFrac = rgb_color.green || 0.0;
   18012                       #        var blueFrac = rgb_color.blue || 0.0;
   18013                       #        var red = Math.floor(redFrac * 255);
   18014                       #        var green = Math.floor(greenFrac * 255);
   18015                       #        var blue = Math.floor(blueFrac * 255);
   18016                       #
   18017                       #        if (!('alpha' in rgb_color)) {
   18018                       #           return rgbToCssColor_(red, green, blue);
   18019                       #        }
   18020                       #
   18021                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   18022                       #        var rgbParams = [red, green, blue].join(',');
   18023                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   18024                       #     };
   18025                       #
   18026                       #     var rgbToCssColor_ = function(red, green, blue) {
   18027                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   18028                       #       var hexString = rgbNumber.toString(16);
   18029                       #       var missingZeros = 6 - hexString.length;
   18030                       #       var resultBuilder = ['#'];
   18031                       #       for (var i = 0; i < missingZeros; i++) {
   18032                       #          resultBuilder.push('0');
   18033                       #       }
   18034                       #       resultBuilder.push(hexString);
   18035                       #       return resultBuilder.join('');
   18036                       #     };
   18037                       #
   18038                       #     // ...
   18039                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   18040                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   18041                         # the final pixel color is defined by the equation:
   18042                         #
   18043                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   18044                         #
   18045                         # This means that a value of 1.0 corresponds to a solid color, whereas
   18046                         # a value of 0.0 corresponds to a completely transparent color. This
   18047                         # uses a wrapper message rather than a simple float scalar so that it is
   18048                         # possible to distinguish between a default value and the value being unset.
   18049                         # If omitted, this color object is to be rendered as a solid color
   18050                         # (as if the alpha value had been explicitly given with a value of 1.0).
   18051                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   18052                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   18053                   },
   18054                   "type": "A String", # How the value should be interpreted.
   18055                   "value": "A String", # The value this interpolation point uses.  May be a formula.
   18056                       # Unused if type is MIN or
   18057                       # MAX.
   18058                 },
   18059                 "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
   18060                     # These pin the gradient color scale according to the color,
   18061                     # type and value chosen.
   18062                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   18063                       # for simplicity of conversion to/from color representations in various
   18064                       # languages over compactness; for example, the fields of this representation
   18065                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   18066                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   18067                       # method in iOS; and, with just a little work, it can be easily formatted into
   18068                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   18069                       #
   18070                       # Example (Java):
   18071                       #
   18072                       #      import com.google.type.Color;
   18073                       #
   18074                       #      // ...
   18075                       #      public static java.awt.Color fromProto(Color protocolor) {
   18076                       #        float alpha = protocolor.hasAlpha()
   18077                       #            ? protocolor.getAlpha().getValue()
   18078                       #            : 1.0;
   18079                       #
   18080                       #        return new java.awt.Color(
   18081                       #            protocolor.getRed(),
   18082                       #            protocolor.getGreen(),
   18083                       #            protocolor.getBlue(),
   18084                       #            alpha);
   18085                       #      }
   18086                       #
   18087                       #      public static Color toProto(java.awt.Color color) {
   18088                       #        float red = (float) color.getRed();
   18089                       #        float green = (float) color.getGreen();
   18090                       #        float blue = (float) color.getBlue();
   18091                       #        float denominator = 255.0;
   18092                       #        Color.Builder resultBuilder =
   18093                       #            Color
   18094                       #                .newBuilder()
   18095                       #                .setRed(red / denominator)
   18096                       #                .setGreen(green / denominator)
   18097                       #                .setBlue(blue / denominator);
   18098                       #        int alpha = color.getAlpha();
   18099                       #        if (alpha != 255) {
   18100                       #          result.setAlpha(
   18101                       #              FloatValue
   18102                       #                  .newBuilder()
   18103                       #                  .setValue(((float) alpha) / denominator)
   18104                       #                  .build());
   18105                       #        }
   18106                       #        return resultBuilder.build();
   18107                       #      }
   18108                       #      // ...
   18109                       #
   18110                       # Example (iOS / Obj-C):
   18111                       #
   18112                       #      // ...
   18113                       #      static UIColor* fromProto(Color* protocolor) {
   18114                       #         float red = [protocolor red];
   18115                       #         float green = [protocolor green];
   18116                       #         float blue = [protocolor blue];
   18117                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   18118                       #         float alpha = 1.0;
   18119                       #         if (alpha_wrapper != nil) {
   18120                       #           alpha = [alpha_wrapper value];
   18121                       #         }
   18122                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   18123                       #      }
   18124                       #
   18125                       #      static Color* toProto(UIColor* color) {
   18126                       #          CGFloat red, green, blue, alpha;
   18127                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   18128                       #            return nil;
   18129                       #          }
   18130                       #          Color* result = [Color alloc] init];
   18131                       #          [result setRed:red];
   18132                       #          [result setGreen:green];
   18133                       #          [result setBlue:blue];
   18134                       #          if (alpha <= 0.9999) {
   18135                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   18136                       #          }
   18137                       #          [result autorelease];
   18138                       #          return result;
   18139                       #     }
   18140                       #     // ...
   18141                       #
   18142                       #  Example (JavaScript):
   18143                       #
   18144                       #     // ...
   18145                       #
   18146                       #     var protoToCssColor = function(rgb_color) {
   18147                       #        var redFrac = rgb_color.red || 0.0;
   18148                       #        var greenFrac = rgb_color.green || 0.0;
   18149                       #        var blueFrac = rgb_color.blue || 0.0;
   18150                       #        var red = Math.floor(redFrac * 255);
   18151                       #        var green = Math.floor(greenFrac * 255);
   18152                       #        var blue = Math.floor(blueFrac * 255);
   18153                       #
   18154                       #        if (!('alpha' in rgb_color)) {
   18155                       #           return rgbToCssColor_(red, green, blue);
   18156                       #        }
   18157                       #
   18158                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   18159                       #        var rgbParams = [red, green, blue].join(',');
   18160                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   18161                       #     };
   18162                       #
   18163                       #     var rgbToCssColor_ = function(red, green, blue) {
   18164                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   18165                       #       var hexString = rgbNumber.toString(16);
   18166                       #       var missingZeros = 6 - hexString.length;
   18167                       #       var resultBuilder = ['#'];
   18168                       #       for (var i = 0; i < missingZeros; i++) {
   18169                       #          resultBuilder.push('0');
   18170                       #       }
   18171                       #       resultBuilder.push(hexString);
   18172                       #       return resultBuilder.join('');
   18173                       #     };
   18174                       #
   18175                       #     // ...
   18176                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   18177                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   18178                         # the final pixel color is defined by the equation:
   18179                         #
   18180                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   18181                         #
   18182                         # This means that a value of 1.0 corresponds to a solid color, whereas
   18183                         # a value of 0.0 corresponds to a completely transparent color. This
   18184                         # uses a wrapper message rather than a simple float scalar so that it is
   18185                         # possible to distinguish between a default value and the value being unset.
   18186                         # If omitted, this color object is to be rendered as a solid color
   18187                         # (as if the alpha value had been explicitly given with a value of 1.0).
   18188                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   18189                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   18190                   },
   18191                   "type": "A String", # How the value should be interpreted.
   18192                   "value": "A String", # The value this interpolation point uses.  May be a formula.
   18193                       # Unused if type is MIN or
   18194                       # MAX.
   18195                 },
   18196               },
   18197             },
   18198           ],
   18199           "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet.
   18200             { # A banded (alternating colors) range in a sheet.
   18201               "range": { # A range on a sheet. # The range over which these properties are applied.
   18202                   # All indexes are zero-based.
   18203                   # Indexes are half open, e.g the start index is inclusive
   18204                   # and the end index is exclusive -- [start_index, end_index).
   18205                   # Missing indexes indicate the range is unbounded on that side.
   18206                   #
   18207                   # For example, if `"Sheet1"` is sheet ID 0, then:
   18208                   #
   18209                   #   `Sheet1!A1:A1 == sheet_id: 0,
   18210                   #                   start_row_index: 0, end_row_index: 1,
   18211                   #                   start_column_index: 0, end_column_index: 1`
   18212                   #
   18213                   #   `Sheet1!A3:B4 == sheet_id: 0,
   18214                   #                   start_row_index: 2, end_row_index: 4,
   18215                   #                   start_column_index: 0, end_column_index: 2`
   18216                   #
   18217                   #   `Sheet1!A:B == sheet_id: 0,
   18218                   #                 start_column_index: 0, end_column_index: 2`
   18219                   #
   18220                   #   `Sheet1!A5:B == sheet_id: 0,
   18221                   #                  start_row_index: 4,
   18222                   #                  start_column_index: 0, end_column_index: 2`
   18223                   #
   18224                   #   `Sheet1 == sheet_id:0`
   18225                   #
   18226                   # The start index must always be less than or equal to the end index.
   18227                   # If the start index equals the end index, then the range is empty.
   18228                   # Empty ranges are typically not meaningful and are usually rendered in the
   18229                   # UI as `#REF!`.
   18230                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   18231                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   18232                 "sheetId": 42, # The sheet this range is on.
   18233                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   18234                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   18235               },
   18236               "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
   18237                   # by-column basis throughout all the columns in the range. At least one of
   18238                   # row_properties or column_properties must be specified.
   18239                   # BandedRange.row_properties and BandedRange.column_properties are
   18240                   # set, the fill colors are applied to cells according to the following rules:
   18241                   #
   18242                   # * header_color and footer_color take priority over band colors.
   18243                   # * first_band_color takes priority over second_band_color.
   18244                   # * row_properties takes priority over column_properties.
   18245                   #
   18246                   # For example, the first row color takes priority over the first column
   18247                   # color, but the first column color takes priority over the second row color.
   18248                   # Similarly, the row header takes priority over the column header in the
   18249                   # top left cell, but the column header takes priority over the first row
   18250                   # color if the row header is not set.
   18251                 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   18252                     # for simplicity of conversion to/from color representations in various
   18253                     # languages over compactness; for example, the fields of this representation
   18254                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   18255                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   18256                     # method in iOS; and, with just a little work, it can be easily formatted into
   18257                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   18258                     #
   18259                     # Example (Java):
   18260                     #
   18261                     #      import com.google.type.Color;
   18262                     #
   18263                     #      // ...
   18264                     #      public static java.awt.Color fromProto(Color protocolor) {
   18265                     #        float alpha = protocolor.hasAlpha()
   18266                     #            ? protocolor.getAlpha().getValue()
   18267                     #            : 1.0;
   18268                     #
   18269                     #        return new java.awt.Color(
   18270                     #            protocolor.getRed(),
   18271                     #            protocolor.getGreen(),
   18272                     #            protocolor.getBlue(),
   18273                     #            alpha);
   18274                     #      }
   18275                     #
   18276                     #      public static Color toProto(java.awt.Color color) {
   18277                     #        float red = (float) color.getRed();
   18278                     #        float green = (float) color.getGreen();
   18279                     #        float blue = (float) color.getBlue();
   18280                     #        float denominator = 255.0;
   18281                     #        Color.Builder resultBuilder =
   18282                     #            Color
   18283                     #                .newBuilder()
   18284                     #                .setRed(red / denominator)
   18285                     #                .setGreen(green / denominator)
   18286                     #                .setBlue(blue / denominator);
   18287                     #        int alpha = color.getAlpha();
   18288                     #        if (alpha != 255) {
   18289                     #          result.setAlpha(
   18290                     #              FloatValue
   18291                     #                  .newBuilder()
   18292                     #                  .setValue(((float) alpha) / denominator)
   18293                     #                  .build());
   18294                     #        }
   18295                     #        return resultBuilder.build();
   18296                     #      }
   18297                     #      // ...
   18298                     #
   18299                     # Example (iOS / Obj-C):
   18300                     #
   18301                     #      // ...
   18302                     #      static UIColor* fromProto(Color* protocolor) {
   18303                     #         float red = [protocolor red];
   18304                     #         float green = [protocolor green];
   18305                     #         float blue = [protocolor blue];
   18306                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   18307                     #         float alpha = 1.0;
   18308                     #         if (alpha_wrapper != nil) {
   18309                     #           alpha = [alpha_wrapper value];
   18310                     #         }
   18311                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   18312                     #      }
   18313                     #
   18314                     #      static Color* toProto(UIColor* color) {
   18315                     #          CGFloat red, green, blue, alpha;
   18316                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   18317                     #            return nil;
   18318                     #          }
   18319                     #          Color* result = [Color alloc] init];
   18320                     #          [result setRed:red];
   18321                     #          [result setGreen:green];
   18322                     #          [result setBlue:blue];
   18323                     #          if (alpha <= 0.9999) {
   18324                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   18325                     #          }
   18326                     #          [result autorelease];
   18327                     #          return result;
   18328                     #     }
   18329                     #     // ...
   18330                     #
   18331                     #  Example (JavaScript):
   18332                     #
   18333                     #     // ...
   18334                     #
   18335                     #     var protoToCssColor = function(rgb_color) {
   18336                     #        var redFrac = rgb_color.red || 0.0;
   18337                     #        var greenFrac = rgb_color.green || 0.0;
   18338                     #        var blueFrac = rgb_color.blue || 0.0;
   18339                     #        var red = Math.floor(redFrac * 255);
   18340                     #        var green = Math.floor(greenFrac * 255);
   18341                     #        var blue = Math.floor(blueFrac * 255);
   18342                     #
   18343                     #        if (!('alpha' in rgb_color)) {
   18344                     #           return rgbToCssColor_(red, green, blue);
   18345                     #        }
   18346                     #
   18347                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   18348                     #        var rgbParams = [red, green, blue].join(',');
   18349                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   18350                     #     };
   18351                     #
   18352                     #     var rgbToCssColor_ = function(red, green, blue) {
   18353                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   18354                     #       var hexString = rgbNumber.toString(16);
   18355                     #       var missingZeros = 6 - hexString.length;
   18356                     #       var resultBuilder = ['#'];
   18357                     #       for (var i = 0; i < missingZeros; i++) {
   18358                     #          resultBuilder.push('0');
   18359                     #       }
   18360                     #       resultBuilder.push(hexString);
   18361                     #       return resultBuilder.join('');
   18362                     #     };
   18363                     #
   18364                     #     // ...
   18365                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   18366                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   18367                       # the final pixel color is defined by the equation:
   18368                       #
   18369                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   18370                       #
   18371                       # This means that a value of 1.0 corresponds to a solid color, whereas
   18372                       # a value of 0.0 corresponds to a completely transparent color. This
   18373                       # uses a wrapper message rather than a simple float scalar so that it is
   18374                       # possible to distinguish between a default value and the value being unset.
   18375                       # If omitted, this color object is to be rendered as a solid color
   18376                       # (as if the alpha value had been explicitly given with a value of 1.0).
   18377                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   18378                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   18379                 },
   18380                 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   18381                     # row or column will be filled with this color and the colors will
   18382                     # alternate between first_band_color and second_band_color starting
   18383                     # from the second row or column. Otherwise, the first row or column will be
   18384                     # filled with first_band_color and the colors will proceed to alternate
   18385                     # as they normally would.
   18386                     # for simplicity of conversion to/from color representations in various
   18387                     # languages over compactness; for example, the fields of this representation
   18388                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   18389                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   18390                     # method in iOS; and, with just a little work, it can be easily formatted into
   18391                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   18392                     #
   18393                     # Example (Java):
   18394                     #
   18395                     #      import com.google.type.Color;
   18396                     #
   18397                     #      // ...
   18398                     #      public static java.awt.Color fromProto(Color protocolor) {
   18399                     #        float alpha = protocolor.hasAlpha()
   18400                     #            ? protocolor.getAlpha().getValue()
   18401                     #            : 1.0;
   18402                     #
   18403                     #        return new java.awt.Color(
   18404                     #            protocolor.getRed(),
   18405                     #            protocolor.getGreen(),
   18406                     #            protocolor.getBlue(),
   18407                     #            alpha);
   18408                     #      }
   18409                     #
   18410                     #      public static Color toProto(java.awt.Color color) {
   18411                     #        float red = (float) color.getRed();
   18412                     #        float green = (float) color.getGreen();
   18413                     #        float blue = (float) color.getBlue();
   18414                     #        float denominator = 255.0;
   18415                     #        Color.Builder resultBuilder =
   18416                     #            Color
   18417                     #                .newBuilder()
   18418                     #                .setRed(red / denominator)
   18419                     #                .setGreen(green / denominator)
   18420                     #                .setBlue(blue / denominator);
   18421                     #        int alpha = color.getAlpha();
   18422                     #        if (alpha != 255) {
   18423                     #          result.setAlpha(
   18424                     #              FloatValue
   18425                     #                  .newBuilder()
   18426                     #                  .setValue(((float) alpha) / denominator)
   18427                     #                  .build());
   18428                     #        }
   18429                     #        return resultBuilder.build();
   18430                     #      }
   18431                     #      // ...
   18432                     #
   18433                     # Example (iOS / Obj-C):
   18434                     #
   18435                     #      // ...
   18436                     #      static UIColor* fromProto(Color* protocolor) {
   18437                     #         float red = [protocolor red];
   18438                     #         float green = [protocolor green];
   18439                     #         float blue = [protocolor blue];
   18440                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   18441                     #         float alpha = 1.0;
   18442                     #         if (alpha_wrapper != nil) {
   18443                     #           alpha = [alpha_wrapper value];
   18444                     #         }
   18445                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   18446                     #      }
   18447                     #
   18448                     #      static Color* toProto(UIColor* color) {
   18449                     #          CGFloat red, green, blue, alpha;
   18450                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   18451                     #            return nil;
   18452                     #          }
   18453                     #          Color* result = [Color alloc] init];
   18454                     #          [result setRed:red];
   18455                     #          [result setGreen:green];
   18456                     #          [result setBlue:blue];
   18457                     #          if (alpha <= 0.9999) {
   18458                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   18459                     #          }
   18460                     #          [result autorelease];
   18461                     #          return result;
   18462                     #     }
   18463                     #     // ...
   18464                     #
   18465                     #  Example (JavaScript):
   18466                     #
   18467                     #     // ...
   18468                     #
   18469                     #     var protoToCssColor = function(rgb_color) {
   18470                     #        var redFrac = rgb_color.red || 0.0;
   18471                     #        var greenFrac = rgb_color.green || 0.0;
   18472                     #        var blueFrac = rgb_color.blue || 0.0;
   18473                     #        var red = Math.floor(redFrac * 255);
   18474                     #        var green = Math.floor(greenFrac * 255);
   18475                     #        var blue = Math.floor(blueFrac * 255);
   18476                     #
   18477                     #        if (!('alpha' in rgb_color)) {
   18478                     #           return rgbToCssColor_(red, green, blue);
   18479                     #        }
   18480                     #
   18481                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   18482                     #        var rgbParams = [red, green, blue].join(',');
   18483                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   18484                     #     };
   18485                     #
   18486                     #     var rgbToCssColor_ = function(red, green, blue) {
   18487                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   18488                     #       var hexString = rgbNumber.toString(16);
   18489                     #       var missingZeros = 6 - hexString.length;
   18490                     #       var resultBuilder = ['#'];
   18491                     #       for (var i = 0; i < missingZeros; i++) {
   18492                     #          resultBuilder.push('0');
   18493                     #       }
   18494                     #       resultBuilder.push(hexString);
   18495                     #       return resultBuilder.join('');
   18496                     #     };
   18497                     #
   18498                     #     // ...
   18499                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   18500                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   18501                       # the final pixel color is defined by the equation:
   18502                       #
   18503                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   18504                       #
   18505                       # This means that a value of 1.0 corresponds to a solid color, whereas
   18506                       # a value of 0.0 corresponds to a completely transparent color. This
   18507                       # uses a wrapper message rather than a simple float scalar so that it is
   18508                       # possible to distinguish between a default value and the value being unset.
   18509                       # If omitted, this color object is to be rendered as a solid color
   18510                       # (as if the alpha value had been explicitly given with a value of 1.0).
   18511                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   18512                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   18513                 },
   18514                 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   18515                     # row or column will be filled with either first_band_color or
   18516                     # second_band_color, depending on the color of the previous row or
   18517                     # column.
   18518                     # for simplicity of conversion to/from color representations in various
   18519                     # languages over compactness; for example, the fields of this representation
   18520                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   18521                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   18522                     # method in iOS; and, with just a little work, it can be easily formatted into
   18523                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   18524                     #
   18525                     # Example (Java):
   18526                     #
   18527                     #      import com.google.type.Color;
   18528                     #
   18529                     #      // ...
   18530                     #      public static java.awt.Color fromProto(Color protocolor) {
   18531                     #        float alpha = protocolor.hasAlpha()
   18532                     #            ? protocolor.getAlpha().getValue()
   18533                     #            : 1.0;
   18534                     #
   18535                     #        return new java.awt.Color(
   18536                     #            protocolor.getRed(),
   18537                     #            protocolor.getGreen(),
   18538                     #            protocolor.getBlue(),
   18539                     #            alpha);
   18540                     #      }
   18541                     #
   18542                     #      public static Color toProto(java.awt.Color color) {
   18543                     #        float red = (float) color.getRed();
   18544                     #        float green = (float) color.getGreen();
   18545                     #        float blue = (float) color.getBlue();
   18546                     #        float denominator = 255.0;
   18547                     #        Color.Builder resultBuilder =
   18548                     #            Color
   18549                     #                .newBuilder()
   18550                     #                .setRed(red / denominator)
   18551                     #                .setGreen(green / denominator)
   18552                     #                .setBlue(blue / denominator);
   18553                     #        int alpha = color.getAlpha();
   18554                     #        if (alpha != 255) {
   18555                     #          result.setAlpha(
   18556                     #              FloatValue
   18557                     #                  .newBuilder()
   18558                     #                  .setValue(((float) alpha) / denominator)
   18559                     #                  .build());
   18560                     #        }
   18561                     #        return resultBuilder.build();
   18562                     #      }
   18563                     #      // ...
   18564                     #
   18565                     # Example (iOS / Obj-C):
   18566                     #
   18567                     #      // ...
   18568                     #      static UIColor* fromProto(Color* protocolor) {
   18569                     #         float red = [protocolor red];
   18570                     #         float green = [protocolor green];
   18571                     #         float blue = [protocolor blue];
   18572                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   18573                     #         float alpha = 1.0;
   18574                     #         if (alpha_wrapper != nil) {
   18575                     #           alpha = [alpha_wrapper value];
   18576                     #         }
   18577                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   18578                     #      }
   18579                     #
   18580                     #      static Color* toProto(UIColor* color) {
   18581                     #          CGFloat red, green, blue, alpha;
   18582                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   18583                     #            return nil;
   18584                     #          }
   18585                     #          Color* result = [Color alloc] init];
   18586                     #          [result setRed:red];
   18587                     #          [result setGreen:green];
   18588                     #          [result setBlue:blue];
   18589                     #          if (alpha <= 0.9999) {
   18590                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   18591                     #          }
   18592                     #          [result autorelease];
   18593                     #          return result;
   18594                     #     }
   18595                     #     // ...
   18596                     #
   18597                     #  Example (JavaScript):
   18598                     #
   18599                     #     // ...
   18600                     #
   18601                     #     var protoToCssColor = function(rgb_color) {
   18602                     #        var redFrac = rgb_color.red || 0.0;
   18603                     #        var greenFrac = rgb_color.green || 0.0;
   18604                     #        var blueFrac = rgb_color.blue || 0.0;
   18605                     #        var red = Math.floor(redFrac * 255);
   18606                     #        var green = Math.floor(greenFrac * 255);
   18607                     #        var blue = Math.floor(blueFrac * 255);
   18608                     #
   18609                     #        if (!('alpha' in rgb_color)) {
   18610                     #           return rgbToCssColor_(red, green, blue);
   18611                     #        }
   18612                     #
   18613                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   18614                     #        var rgbParams = [red, green, blue].join(',');
   18615                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   18616                     #     };
   18617                     #
   18618                     #     var rgbToCssColor_ = function(red, green, blue) {
   18619                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   18620                     #       var hexString = rgbNumber.toString(16);
   18621                     #       var missingZeros = 6 - hexString.length;
   18622                     #       var resultBuilder = ['#'];
   18623                     #       for (var i = 0; i < missingZeros; i++) {
   18624                     #          resultBuilder.push('0');
   18625                     #       }
   18626                     #       resultBuilder.push(hexString);
   18627                     #       return resultBuilder.join('');
   18628                     #     };
   18629                     #
   18630                     #     // ...
   18631                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   18632                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   18633                       # the final pixel color is defined by the equation:
   18634                       #
   18635                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   18636                       #
   18637                       # This means that a value of 1.0 corresponds to a solid color, whereas
   18638                       # a value of 0.0 corresponds to a completely transparent color. This
   18639                       # uses a wrapper message rather than a simple float scalar so that it is
   18640                       # possible to distinguish between a default value and the value being unset.
   18641                       # If omitted, this color object is to be rendered as a solid color
   18642                       # (as if the alpha value had been explicitly given with a value of 1.0).
   18643                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   18644                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   18645                 },
   18646                 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   18647                     # for simplicity of conversion to/from color representations in various
   18648                     # languages over compactness; for example, the fields of this representation
   18649                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   18650                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   18651                     # method in iOS; and, with just a little work, it can be easily formatted into
   18652                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   18653                     #
   18654                     # Example (Java):
   18655                     #
   18656                     #      import com.google.type.Color;
   18657                     #
   18658                     #      // ...
   18659                     #      public static java.awt.Color fromProto(Color protocolor) {
   18660                     #        float alpha = protocolor.hasAlpha()
   18661                     #            ? protocolor.getAlpha().getValue()
   18662                     #            : 1.0;
   18663                     #
   18664                     #        return new java.awt.Color(
   18665                     #            protocolor.getRed(),
   18666                     #            protocolor.getGreen(),
   18667                     #            protocolor.getBlue(),
   18668                     #            alpha);
   18669                     #      }
   18670                     #
   18671                     #      public static Color toProto(java.awt.Color color) {
   18672                     #        float red = (float) color.getRed();
   18673                     #        float green = (float) color.getGreen();
   18674                     #        float blue = (float) color.getBlue();
   18675                     #        float denominator = 255.0;
   18676                     #        Color.Builder resultBuilder =
   18677                     #            Color
   18678                     #                .newBuilder()
   18679                     #                .setRed(red / denominator)
   18680                     #                .setGreen(green / denominator)
   18681                     #                .setBlue(blue / denominator);
   18682                     #        int alpha = color.getAlpha();
   18683                     #        if (alpha != 255) {
   18684                     #          result.setAlpha(
   18685                     #              FloatValue
   18686                     #                  .newBuilder()
   18687                     #                  .setValue(((float) alpha) / denominator)
   18688                     #                  .build());
   18689                     #        }
   18690                     #        return resultBuilder.build();
   18691                     #      }
   18692                     #      // ...
   18693                     #
   18694                     # Example (iOS / Obj-C):
   18695                     #
   18696                     #      // ...
   18697                     #      static UIColor* fromProto(Color* protocolor) {
   18698                     #         float red = [protocolor red];
   18699                     #         float green = [protocolor green];
   18700                     #         float blue = [protocolor blue];
   18701                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   18702                     #         float alpha = 1.0;
   18703                     #         if (alpha_wrapper != nil) {
   18704                     #           alpha = [alpha_wrapper value];
   18705                     #         }
   18706                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   18707                     #      }
   18708                     #
   18709                     #      static Color* toProto(UIColor* color) {
   18710                     #          CGFloat red, green, blue, alpha;
   18711                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   18712                     #            return nil;
   18713                     #          }
   18714                     #          Color* result = [Color alloc] init];
   18715                     #          [result setRed:red];
   18716                     #          [result setGreen:green];
   18717                     #          [result setBlue:blue];
   18718                     #          if (alpha <= 0.9999) {
   18719                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   18720                     #          }
   18721                     #          [result autorelease];
   18722                     #          return result;
   18723                     #     }
   18724                     #     // ...
   18725                     #
   18726                     #  Example (JavaScript):
   18727                     #
   18728                     #     // ...
   18729                     #
   18730                     #     var protoToCssColor = function(rgb_color) {
   18731                     #        var redFrac = rgb_color.red || 0.0;
   18732                     #        var greenFrac = rgb_color.green || 0.0;
   18733                     #        var blueFrac = rgb_color.blue || 0.0;
   18734                     #        var red = Math.floor(redFrac * 255);
   18735                     #        var green = Math.floor(greenFrac * 255);
   18736                     #        var blue = Math.floor(blueFrac * 255);
   18737                     #
   18738                     #        if (!('alpha' in rgb_color)) {
   18739                     #           return rgbToCssColor_(red, green, blue);
   18740                     #        }
   18741                     #
   18742                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   18743                     #        var rgbParams = [red, green, blue].join(',');
   18744                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   18745                     #     };
   18746                     #
   18747                     #     var rgbToCssColor_ = function(red, green, blue) {
   18748                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   18749                     #       var hexString = rgbNumber.toString(16);
   18750                     #       var missingZeros = 6 - hexString.length;
   18751                     #       var resultBuilder = ['#'];
   18752                     #       for (var i = 0; i < missingZeros; i++) {
   18753                     #          resultBuilder.push('0');
   18754                     #       }
   18755                     #       resultBuilder.push(hexString);
   18756                     #       return resultBuilder.join('');
   18757                     #     };
   18758                     #
   18759                     #     // ...
   18760                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   18761                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   18762                       # the final pixel color is defined by the equation:
   18763                       #
   18764                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   18765                       #
   18766                       # This means that a value of 1.0 corresponds to a solid color, whereas
   18767                       # a value of 0.0 corresponds to a completely transparent color. This
   18768                       # uses a wrapper message rather than a simple float scalar so that it is
   18769                       # possible to distinguish between a default value and the value being unset.
   18770                       # If omitted, this color object is to be rendered as a solid color
   18771                       # (as if the alpha value had been explicitly given with a value of 1.0).
   18772                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   18773                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   18774                 },
   18775               },
   18776               "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
   18777                   # basis throughout all the rows in the range. At least one of
   18778                   # row_properties or column_properties must be specified.
   18779                   # BandedRange.row_properties and BandedRange.column_properties are
   18780                   # set, the fill colors are applied to cells according to the following rules:
   18781                   #
   18782                   # * header_color and footer_color take priority over band colors.
   18783                   # * first_band_color takes priority over second_band_color.
   18784                   # * row_properties takes priority over column_properties.
   18785                   #
   18786                   # For example, the first row color takes priority over the first column
   18787                   # color, but the first column color takes priority over the second row color.
   18788                   # Similarly, the row header takes priority over the column header in the
   18789                   # top left cell, but the column header takes priority over the first row
   18790                   # color if the row header is not set.
   18791                 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   18792                     # for simplicity of conversion to/from color representations in various
   18793                     # languages over compactness; for example, the fields of this representation
   18794                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   18795                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   18796                     # method in iOS; and, with just a little work, it can be easily formatted into
   18797                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   18798                     #
   18799                     # Example (Java):
   18800                     #
   18801                     #      import com.google.type.Color;
   18802                     #
   18803                     #      // ...
   18804                     #      public static java.awt.Color fromProto(Color protocolor) {
   18805                     #        float alpha = protocolor.hasAlpha()
   18806                     #            ? protocolor.getAlpha().getValue()
   18807                     #            : 1.0;
   18808                     #
   18809                     #        return new java.awt.Color(
   18810                     #            protocolor.getRed(),
   18811                     #            protocolor.getGreen(),
   18812                     #            protocolor.getBlue(),
   18813                     #            alpha);
   18814                     #      }
   18815                     #
   18816                     #      public static Color toProto(java.awt.Color color) {
   18817                     #        float red = (float) color.getRed();
   18818                     #        float green = (float) color.getGreen();
   18819                     #        float blue = (float) color.getBlue();
   18820                     #        float denominator = 255.0;
   18821                     #        Color.Builder resultBuilder =
   18822                     #            Color
   18823                     #                .newBuilder()
   18824                     #                .setRed(red / denominator)
   18825                     #                .setGreen(green / denominator)
   18826                     #                .setBlue(blue / denominator);
   18827                     #        int alpha = color.getAlpha();
   18828                     #        if (alpha != 255) {
   18829                     #          result.setAlpha(
   18830                     #              FloatValue
   18831                     #                  .newBuilder()
   18832                     #                  .setValue(((float) alpha) / denominator)
   18833                     #                  .build());
   18834                     #        }
   18835                     #        return resultBuilder.build();
   18836                     #      }
   18837                     #      // ...
   18838                     #
   18839                     # Example (iOS / Obj-C):
   18840                     #
   18841                     #      // ...
   18842                     #      static UIColor* fromProto(Color* protocolor) {
   18843                     #         float red = [protocolor red];
   18844                     #         float green = [protocolor green];
   18845                     #         float blue = [protocolor blue];
   18846                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   18847                     #         float alpha = 1.0;
   18848                     #         if (alpha_wrapper != nil) {
   18849                     #           alpha = [alpha_wrapper value];
   18850                     #         }
   18851                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   18852                     #      }
   18853                     #
   18854                     #      static Color* toProto(UIColor* color) {
   18855                     #          CGFloat red, green, blue, alpha;
   18856                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   18857                     #            return nil;
   18858                     #          }
   18859                     #          Color* result = [Color alloc] init];
   18860                     #          [result setRed:red];
   18861                     #          [result setGreen:green];
   18862                     #          [result setBlue:blue];
   18863                     #          if (alpha <= 0.9999) {
   18864                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   18865                     #          }
   18866                     #          [result autorelease];
   18867                     #          return result;
   18868                     #     }
   18869                     #     // ...
   18870                     #
   18871                     #  Example (JavaScript):
   18872                     #
   18873                     #     // ...
   18874                     #
   18875                     #     var protoToCssColor = function(rgb_color) {
   18876                     #        var redFrac = rgb_color.red || 0.0;
   18877                     #        var greenFrac = rgb_color.green || 0.0;
   18878                     #        var blueFrac = rgb_color.blue || 0.0;
   18879                     #        var red = Math.floor(redFrac * 255);
   18880                     #        var green = Math.floor(greenFrac * 255);
   18881                     #        var blue = Math.floor(blueFrac * 255);
   18882                     #
   18883                     #        if (!('alpha' in rgb_color)) {
   18884                     #           return rgbToCssColor_(red, green, blue);
   18885                     #        }
   18886                     #
   18887                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   18888                     #        var rgbParams = [red, green, blue].join(',');
   18889                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   18890                     #     };
   18891                     #
   18892                     #     var rgbToCssColor_ = function(red, green, blue) {
   18893                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   18894                     #       var hexString = rgbNumber.toString(16);
   18895                     #       var missingZeros = 6 - hexString.length;
   18896                     #       var resultBuilder = ['#'];
   18897                     #       for (var i = 0; i < missingZeros; i++) {
   18898                     #          resultBuilder.push('0');
   18899                     #       }
   18900                     #       resultBuilder.push(hexString);
   18901                     #       return resultBuilder.join('');
   18902                     #     };
   18903                     #
   18904                     #     // ...
   18905                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   18906                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   18907                       # the final pixel color is defined by the equation:
   18908                       #
   18909                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   18910                       #
   18911                       # This means that a value of 1.0 corresponds to a solid color, whereas
   18912                       # a value of 0.0 corresponds to a completely transparent color. This
   18913                       # uses a wrapper message rather than a simple float scalar so that it is
   18914                       # possible to distinguish between a default value and the value being unset.
   18915                       # If omitted, this color object is to be rendered as a solid color
   18916                       # (as if the alpha value had been explicitly given with a value of 1.0).
   18917                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   18918                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   18919                 },
   18920                 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   18921                     # row or column will be filled with this color and the colors will
   18922                     # alternate between first_band_color and second_band_color starting
   18923                     # from the second row or column. Otherwise, the first row or column will be
   18924                     # filled with first_band_color and the colors will proceed to alternate
   18925                     # as they normally would.
   18926                     # for simplicity of conversion to/from color representations in various
   18927                     # languages over compactness; for example, the fields of this representation
   18928                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   18929                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   18930                     # method in iOS; and, with just a little work, it can be easily formatted into
   18931                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   18932                     #
   18933                     # Example (Java):
   18934                     #
   18935                     #      import com.google.type.Color;
   18936                     #
   18937                     #      // ...
   18938                     #      public static java.awt.Color fromProto(Color protocolor) {
   18939                     #        float alpha = protocolor.hasAlpha()
   18940                     #            ? protocolor.getAlpha().getValue()
   18941                     #            : 1.0;
   18942                     #
   18943                     #        return new java.awt.Color(
   18944                     #            protocolor.getRed(),
   18945                     #            protocolor.getGreen(),
   18946                     #            protocolor.getBlue(),
   18947                     #            alpha);
   18948                     #      }
   18949                     #
   18950                     #      public static Color toProto(java.awt.Color color) {
   18951                     #        float red = (float) color.getRed();
   18952                     #        float green = (float) color.getGreen();
   18953                     #        float blue = (float) color.getBlue();
   18954                     #        float denominator = 255.0;
   18955                     #        Color.Builder resultBuilder =
   18956                     #            Color
   18957                     #                .newBuilder()
   18958                     #                .setRed(red / denominator)
   18959                     #                .setGreen(green / denominator)
   18960                     #                .setBlue(blue / denominator);
   18961                     #        int alpha = color.getAlpha();
   18962                     #        if (alpha != 255) {
   18963                     #          result.setAlpha(
   18964                     #              FloatValue
   18965                     #                  .newBuilder()
   18966                     #                  .setValue(((float) alpha) / denominator)
   18967                     #                  .build());
   18968                     #        }
   18969                     #        return resultBuilder.build();
   18970                     #      }
   18971                     #      // ...
   18972                     #
   18973                     # Example (iOS / Obj-C):
   18974                     #
   18975                     #      // ...
   18976                     #      static UIColor* fromProto(Color* protocolor) {
   18977                     #         float red = [protocolor red];
   18978                     #         float green = [protocolor green];
   18979                     #         float blue = [protocolor blue];
   18980                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   18981                     #         float alpha = 1.0;
   18982                     #         if (alpha_wrapper != nil) {
   18983                     #           alpha = [alpha_wrapper value];
   18984                     #         }
   18985                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   18986                     #      }
   18987                     #
   18988                     #      static Color* toProto(UIColor* color) {
   18989                     #          CGFloat red, green, blue, alpha;
   18990                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   18991                     #            return nil;
   18992                     #          }
   18993                     #          Color* result = [Color alloc] init];
   18994                     #          [result setRed:red];
   18995                     #          [result setGreen:green];
   18996                     #          [result setBlue:blue];
   18997                     #          if (alpha <= 0.9999) {
   18998                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   18999                     #          }
   19000                     #          [result autorelease];
   19001                     #          return result;
   19002                     #     }
   19003                     #     // ...
   19004                     #
   19005                     #  Example (JavaScript):
   19006                     #
   19007                     #     // ...
   19008                     #
   19009                     #     var protoToCssColor = function(rgb_color) {
   19010                     #        var redFrac = rgb_color.red || 0.0;
   19011                     #        var greenFrac = rgb_color.green || 0.0;
   19012                     #        var blueFrac = rgb_color.blue || 0.0;
   19013                     #        var red = Math.floor(redFrac * 255);
   19014                     #        var green = Math.floor(greenFrac * 255);
   19015                     #        var blue = Math.floor(blueFrac * 255);
   19016                     #
   19017                     #        if (!('alpha' in rgb_color)) {
   19018                     #           return rgbToCssColor_(red, green, blue);
   19019                     #        }
   19020                     #
   19021                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   19022                     #        var rgbParams = [red, green, blue].join(',');
   19023                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   19024                     #     };
   19025                     #
   19026                     #     var rgbToCssColor_ = function(red, green, blue) {
   19027                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   19028                     #       var hexString = rgbNumber.toString(16);
   19029                     #       var missingZeros = 6 - hexString.length;
   19030                     #       var resultBuilder = ['#'];
   19031                     #       for (var i = 0; i < missingZeros; i++) {
   19032                     #          resultBuilder.push('0');
   19033                     #       }
   19034                     #       resultBuilder.push(hexString);
   19035                     #       return resultBuilder.join('');
   19036                     #     };
   19037                     #
   19038                     #     // ...
   19039                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   19040                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   19041                       # the final pixel color is defined by the equation:
   19042                       #
   19043                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   19044                       #
   19045                       # This means that a value of 1.0 corresponds to a solid color, whereas
   19046                       # a value of 0.0 corresponds to a completely transparent color. This
   19047                       # uses a wrapper message rather than a simple float scalar so that it is
   19048                       # possible to distinguish between a default value and the value being unset.
   19049                       # If omitted, this color object is to be rendered as a solid color
   19050                       # (as if the alpha value had been explicitly given with a value of 1.0).
   19051                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   19052                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   19053                 },
   19054                 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   19055                     # row or column will be filled with either first_band_color or
   19056                     # second_band_color, depending on the color of the previous row or
   19057                     # column.
   19058                     # for simplicity of conversion to/from color representations in various
   19059                     # languages over compactness; for example, the fields of this representation
   19060                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   19061                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   19062                     # method in iOS; and, with just a little work, it can be easily formatted into
   19063                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   19064                     #
   19065                     # Example (Java):
   19066                     #
   19067                     #      import com.google.type.Color;
   19068                     #
   19069                     #      // ...
   19070                     #      public static java.awt.Color fromProto(Color protocolor) {
   19071                     #        float alpha = protocolor.hasAlpha()
   19072                     #            ? protocolor.getAlpha().getValue()
   19073                     #            : 1.0;
   19074                     #
   19075                     #        return new java.awt.Color(
   19076                     #            protocolor.getRed(),
   19077                     #            protocolor.getGreen(),
   19078                     #            protocolor.getBlue(),
   19079                     #            alpha);
   19080                     #      }
   19081                     #
   19082                     #      public static Color toProto(java.awt.Color color) {
   19083                     #        float red = (float) color.getRed();
   19084                     #        float green = (float) color.getGreen();
   19085                     #        float blue = (float) color.getBlue();
   19086                     #        float denominator = 255.0;
   19087                     #        Color.Builder resultBuilder =
   19088                     #            Color
   19089                     #                .newBuilder()
   19090                     #                .setRed(red / denominator)
   19091                     #                .setGreen(green / denominator)
   19092                     #                .setBlue(blue / denominator);
   19093                     #        int alpha = color.getAlpha();
   19094                     #        if (alpha != 255) {
   19095                     #          result.setAlpha(
   19096                     #              FloatValue
   19097                     #                  .newBuilder()
   19098                     #                  .setValue(((float) alpha) / denominator)
   19099                     #                  .build());
   19100                     #        }
   19101                     #        return resultBuilder.build();
   19102                     #      }
   19103                     #      // ...
   19104                     #
   19105                     # Example (iOS / Obj-C):
   19106                     #
   19107                     #      // ...
   19108                     #      static UIColor* fromProto(Color* protocolor) {
   19109                     #         float red = [protocolor red];
   19110                     #         float green = [protocolor green];
   19111                     #         float blue = [protocolor blue];
   19112                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   19113                     #         float alpha = 1.0;
   19114                     #         if (alpha_wrapper != nil) {
   19115                     #           alpha = [alpha_wrapper value];
   19116                     #         }
   19117                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   19118                     #      }
   19119                     #
   19120                     #      static Color* toProto(UIColor* color) {
   19121                     #          CGFloat red, green, blue, alpha;
   19122                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   19123                     #            return nil;
   19124                     #          }
   19125                     #          Color* result = [Color alloc] init];
   19126                     #          [result setRed:red];
   19127                     #          [result setGreen:green];
   19128                     #          [result setBlue:blue];
   19129                     #          if (alpha <= 0.9999) {
   19130                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   19131                     #          }
   19132                     #          [result autorelease];
   19133                     #          return result;
   19134                     #     }
   19135                     #     // ...
   19136                     #
   19137                     #  Example (JavaScript):
   19138                     #
   19139                     #     // ...
   19140                     #
   19141                     #     var protoToCssColor = function(rgb_color) {
   19142                     #        var redFrac = rgb_color.red || 0.0;
   19143                     #        var greenFrac = rgb_color.green || 0.0;
   19144                     #        var blueFrac = rgb_color.blue || 0.0;
   19145                     #        var red = Math.floor(redFrac * 255);
   19146                     #        var green = Math.floor(greenFrac * 255);
   19147                     #        var blue = Math.floor(blueFrac * 255);
   19148                     #
   19149                     #        if (!('alpha' in rgb_color)) {
   19150                     #           return rgbToCssColor_(red, green, blue);
   19151                     #        }
   19152                     #
   19153                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   19154                     #        var rgbParams = [red, green, blue].join(',');
   19155                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   19156                     #     };
   19157                     #
   19158                     #     var rgbToCssColor_ = function(red, green, blue) {
   19159                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   19160                     #       var hexString = rgbNumber.toString(16);
   19161                     #       var missingZeros = 6 - hexString.length;
   19162                     #       var resultBuilder = ['#'];
   19163                     #       for (var i = 0; i < missingZeros; i++) {
   19164                     #          resultBuilder.push('0');
   19165                     #       }
   19166                     #       resultBuilder.push(hexString);
   19167                     #       return resultBuilder.join('');
   19168                     #     };
   19169                     #
   19170                     #     // ...
   19171                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   19172                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   19173                       # the final pixel color is defined by the equation:
   19174                       #
   19175                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   19176                       #
   19177                       # This means that a value of 1.0 corresponds to a solid color, whereas
   19178                       # a value of 0.0 corresponds to a completely transparent color. This
   19179                       # uses a wrapper message rather than a simple float scalar so that it is
   19180                       # possible to distinguish between a default value and the value being unset.
   19181                       # If omitted, this color object is to be rendered as a solid color
   19182                       # (as if the alpha value had been explicitly given with a value of 1.0).
   19183                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   19184                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   19185                 },
   19186                 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   19187                     # for simplicity of conversion to/from color representations in various
   19188                     # languages over compactness; for example, the fields of this representation
   19189                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   19190                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   19191                     # method in iOS; and, with just a little work, it can be easily formatted into
   19192                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   19193                     #
   19194                     # Example (Java):
   19195                     #
   19196                     #      import com.google.type.Color;
   19197                     #
   19198                     #      // ...
   19199                     #      public static java.awt.Color fromProto(Color protocolor) {
   19200                     #        float alpha = protocolor.hasAlpha()
   19201                     #            ? protocolor.getAlpha().getValue()
   19202                     #            : 1.0;
   19203                     #
   19204                     #        return new java.awt.Color(
   19205                     #            protocolor.getRed(),
   19206                     #            protocolor.getGreen(),
   19207                     #            protocolor.getBlue(),
   19208                     #            alpha);
   19209                     #      }
   19210                     #
   19211                     #      public static Color toProto(java.awt.Color color) {
   19212                     #        float red = (float) color.getRed();
   19213                     #        float green = (float) color.getGreen();
   19214                     #        float blue = (float) color.getBlue();
   19215                     #        float denominator = 255.0;
   19216                     #        Color.Builder resultBuilder =
   19217                     #            Color
   19218                     #                .newBuilder()
   19219                     #                .setRed(red / denominator)
   19220                     #                .setGreen(green / denominator)
   19221                     #                .setBlue(blue / denominator);
   19222                     #        int alpha = color.getAlpha();
   19223                     #        if (alpha != 255) {
   19224                     #          result.setAlpha(
   19225                     #              FloatValue
   19226                     #                  .newBuilder()
   19227                     #                  .setValue(((float) alpha) / denominator)
   19228                     #                  .build());
   19229                     #        }
   19230                     #        return resultBuilder.build();
   19231                     #      }
   19232                     #      // ...
   19233                     #
   19234                     # Example (iOS / Obj-C):
   19235                     #
   19236                     #      // ...
   19237                     #      static UIColor* fromProto(Color* protocolor) {
   19238                     #         float red = [protocolor red];
   19239                     #         float green = [protocolor green];
   19240                     #         float blue = [protocolor blue];
   19241                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   19242                     #         float alpha = 1.0;
   19243                     #         if (alpha_wrapper != nil) {
   19244                     #           alpha = [alpha_wrapper value];
   19245                     #         }
   19246                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   19247                     #      }
   19248                     #
   19249                     #      static Color* toProto(UIColor* color) {
   19250                     #          CGFloat red, green, blue, alpha;
   19251                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   19252                     #            return nil;
   19253                     #          }
   19254                     #          Color* result = [Color alloc] init];
   19255                     #          [result setRed:red];
   19256                     #          [result setGreen:green];
   19257                     #          [result setBlue:blue];
   19258                     #          if (alpha <= 0.9999) {
   19259                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   19260                     #          }
   19261                     #          [result autorelease];
   19262                     #          return result;
   19263                     #     }
   19264                     #     // ...
   19265                     #
   19266                     #  Example (JavaScript):
   19267                     #
   19268                     #     // ...
   19269                     #
   19270                     #     var protoToCssColor = function(rgb_color) {
   19271                     #        var redFrac = rgb_color.red || 0.0;
   19272                     #        var greenFrac = rgb_color.green || 0.0;
   19273                     #        var blueFrac = rgb_color.blue || 0.0;
   19274                     #        var red = Math.floor(redFrac * 255);
   19275                     #        var green = Math.floor(greenFrac * 255);
   19276                     #        var blue = Math.floor(blueFrac * 255);
   19277                     #
   19278                     #        if (!('alpha' in rgb_color)) {
   19279                     #           return rgbToCssColor_(red, green, blue);
   19280                     #        }
   19281                     #
   19282                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   19283                     #        var rgbParams = [red, green, blue].join(',');
   19284                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   19285                     #     };
   19286                     #
   19287                     #     var rgbToCssColor_ = function(red, green, blue) {
   19288                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   19289                     #       var hexString = rgbNumber.toString(16);
   19290                     #       var missingZeros = 6 - hexString.length;
   19291                     #       var resultBuilder = ['#'];
   19292                     #       for (var i = 0; i < missingZeros; i++) {
   19293                     #          resultBuilder.push('0');
   19294                     #       }
   19295                     #       resultBuilder.push(hexString);
   19296                     #       return resultBuilder.join('');
   19297                     #     };
   19298                     #
   19299                     #     // ...
   19300                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   19301                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   19302                       # the final pixel color is defined by the equation:
   19303                       #
   19304                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   19305                       #
   19306                       # This means that a value of 1.0 corresponds to a solid color, whereas
   19307                       # a value of 0.0 corresponds to a completely transparent color. This
   19308                       # uses a wrapper message rather than a simple float scalar so that it is
   19309                       # possible to distinguish between a default value and the value being unset.
   19310                       # If omitted, this color object is to be rendered as a solid color
   19311                       # (as if the alpha value had been explicitly given with a value of 1.0).
   19312                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   19313                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   19314                 },
   19315               },
   19316               "bandedRangeId": 42, # The id of the banded range.
   19317             },
   19318           ],
   19319           "merges": [ # The ranges that are merged together.
   19320             { # A range on a sheet.
   19321                 # All indexes are zero-based.
   19322                 # Indexes are half open, e.g the start index is inclusive
   19323                 # and the end index is exclusive -- [start_index, end_index).
   19324                 # Missing indexes indicate the range is unbounded on that side.
   19325                 #
   19326                 # For example, if `"Sheet1"` is sheet ID 0, then:
   19327                 #
   19328                 #   `Sheet1!A1:A1 == sheet_id: 0,
   19329                 #                   start_row_index: 0, end_row_index: 1,
   19330                 #                   start_column_index: 0, end_column_index: 1`
   19331                 #
   19332                 #   `Sheet1!A3:B4 == sheet_id: 0,
   19333                 #                   start_row_index: 2, end_row_index: 4,
   19334                 #                   start_column_index: 0, end_column_index: 2`
   19335                 #
   19336                 #   `Sheet1!A:B == sheet_id: 0,
   19337                 #                 start_column_index: 0, end_column_index: 2`
   19338                 #
   19339                 #   `Sheet1!A5:B == sheet_id: 0,
   19340                 #                  start_row_index: 4,
   19341                 #                  start_column_index: 0, end_column_index: 2`
   19342                 #
   19343                 #   `Sheet1 == sheet_id:0`
   19344                 #
   19345                 # The start index must always be less than or equal to the end index.
   19346                 # If the start index equals the end index, then the range is empty.
   19347                 # Empty ranges are typically not meaningful and are usually rendered in the
   19348                 # UI as `#REF!`.
   19349               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   19350               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   19351               "sheetId": 42, # The sheet this range is on.
   19352               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   19353               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   19354             },
   19355           ],
   19356           "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
   19357             "range": { # A range on a sheet. # The range the filter covers.
   19358                 # All indexes are zero-based.
   19359                 # Indexes are half open, e.g the start index is inclusive
   19360                 # and the end index is exclusive -- [start_index, end_index).
   19361                 # Missing indexes indicate the range is unbounded on that side.
   19362                 #
   19363                 # For example, if `"Sheet1"` is sheet ID 0, then:
   19364                 #
   19365                 #   `Sheet1!A1:A1 == sheet_id: 0,
   19366                 #                   start_row_index: 0, end_row_index: 1,
   19367                 #                   start_column_index: 0, end_column_index: 1`
   19368                 #
   19369                 #   `Sheet1!A3:B4 == sheet_id: 0,
   19370                 #                   start_row_index: 2, end_row_index: 4,
   19371                 #                   start_column_index: 0, end_column_index: 2`
   19372                 #
   19373                 #   `Sheet1!A:B == sheet_id: 0,
   19374                 #                 start_column_index: 0, end_column_index: 2`
   19375                 #
   19376                 #   `Sheet1!A5:B == sheet_id: 0,
   19377                 #                  start_row_index: 4,
   19378                 #                  start_column_index: 0, end_column_index: 2`
   19379                 #
   19380                 #   `Sheet1 == sheet_id:0`
   19381                 #
   19382                 # The start index must always be less than or equal to the end index.
   19383                 # If the start index equals the end index, then the range is empty.
   19384                 # Empty ranges are typically not meaningful and are usually rendered in the
   19385                 # UI as `#REF!`.
   19386               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   19387               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   19388               "sheetId": 42, # The sheet this range is on.
   19389               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   19390               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   19391             },
   19392             "sortSpecs": [ # The sort order per column. Later specifications are used when values
   19393                 # are equal in the earlier specifications.
   19394               { # A sort order associated with a specific column or row.
   19395                 "sortOrder": "A String", # The order data should be sorted.
   19396                 "dimensionIndex": 42, # The dimension the sort should be applied to.
   19397               },
   19398             ],
   19399             "criteria": { # The criteria for showing/hiding values per column.
   19400                 # The map's key is the column index, and the value is the criteria for
   19401                 # that column.
   19402               "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   19403                 "hiddenValues": [ # Values that should be hidden.
   19404                   "A String",
   19405                 ],
   19406                 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   19407                     # (This does not override hiddenValues -- if a value is listed there,
   19408                     #  it will still be hidden.)
   19409                     # BooleanConditions are used by conditional formatting,
   19410                     # data validation, and the criteria in filters.
   19411                   "values": [ # The values of the condition. The number of supported values depends
   19412                       # on the condition type.  Some support zero values,
   19413                       # others one or two values,
   19414                       # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   19415                     { # The value of the condition.
   19416                       "relativeDate": "A String", # A relative date (based on the current date).
   19417                           # Valid only if the type is
   19418                           # DATE_BEFORE,
   19419                           # DATE_AFTER,
   19420                           # DATE_ON_OR_BEFORE or
   19421                           # DATE_ON_OR_AFTER.
   19422                           #
   19423                           # Relative dates are not supported in data validation.
   19424                           # They are supported only in conditional formatting and
   19425                           # conditional filters.
   19426                       "userEnteredValue": "A String", # A value the condition is based on.
   19427                           # The value will be parsed as if the user typed into a cell.
   19428                           # Formulas are supported (and must begin with an `=`).
   19429                     },
   19430                   ],
   19431                   "type": "A String", # The type of condition.
   19432                 },
   19433               },
   19434             },
   19435           },
   19436           "charts": [ # The specifications of every chart on this sheet.
   19437             { # A chart embedded in a sheet.
   19438               "chartId": 42, # The ID of the chart.
   19439               "position": { # The position of an embedded object such as a chart. # The position of the chart.
   19440                 "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
   19441                     # is chosen for you. Used only when writing.
   19442                 "sheetId": 42, # The sheet this is on. Set only if the embedded object
   19443                     # is on its own sheet. Must be non-negative.
   19444                 "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
   19445                   "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
   19446                       # All indexes are zero-based.
   19447                     "rowIndex": 42, # The row index of the coordinate.
   19448                     "columnIndex": 42, # The column index of the coordinate.
   19449                     "sheetId": 42, # The sheet this coordinate is on.
   19450                   },
   19451                   "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
   19452                       # from the anchor cell.
   19453                   "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
   19454                   "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
   19455                       # from the anchor cell.
   19456                   "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
   19457                 },
   19458               },
   19459               "spec": { # The specifications of a chart. # The specification of the chart.
   19460                 "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
   19461                 "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
   19462                   "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
   19463                     "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   19464                       "sources": [ # The ranges of data for a series or domain.
   19465                           # Exactly one dimension must have a length of 1,
   19466                           # and all sources in the list must have the same dimension
   19467                           # with length 1.
   19468                           # The domain (if it exists) & all series must have the same number
   19469                           # of source ranges. If using more than one source range, then the source
   19470                           # range at a given offset must be contiguous across the domain and series.
   19471                           #
   19472                           # For example, these are valid configurations:
   19473                           #
   19474                           #     domain sources: A1:A5
   19475                           #     series1 sources: B1:B5
   19476                           #     series2 sources: D6:D10
   19477                           #
   19478                           #     domain sources: A1:A5, C10:C12
   19479                           #     series1 sources: B1:B5, D10:D12
   19480                           #     series2 sources: C1:C5, E10:E12
   19481                         { # A range on a sheet.
   19482                             # All indexes are zero-based.
   19483                             # Indexes are half open, e.g the start index is inclusive
   19484                             # and the end index is exclusive -- [start_index, end_index).
   19485                             # Missing indexes indicate the range is unbounded on that side.
   19486                             #
   19487                             # For example, if `"Sheet1"` is sheet ID 0, then:
   19488                             #
   19489                             #   `Sheet1!A1:A1 == sheet_id: 0,
   19490                             #                   start_row_index: 0, end_row_index: 1,
   19491                             #                   start_column_index: 0, end_column_index: 1`
   19492                             #
   19493                             #   `Sheet1!A3:B4 == sheet_id: 0,
   19494                             #                   start_row_index: 2, end_row_index: 4,
   19495                             #                   start_column_index: 0, end_column_index: 2`
   19496                             #
   19497                             #   `Sheet1!A:B == sheet_id: 0,
   19498                             #                 start_column_index: 0, end_column_index: 2`
   19499                             #
   19500                             #   `Sheet1!A5:B == sheet_id: 0,
   19501                             #                  start_row_index: 4,
   19502                             #                  start_column_index: 0, end_column_index: 2`
   19503                             #
   19504                             #   `Sheet1 == sheet_id:0`
   19505                             #
   19506                             # The start index must always be less than or equal to the end index.
   19507                             # If the start index equals the end index, then the range is empty.
   19508                             # Empty ranges are typically not meaningful and are usually rendered in the
   19509                             # UI as `#REF!`.
   19510                           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   19511                           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   19512                           "sheetId": 42, # The sheet this range is on.
   19513                           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   19514                           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   19515                         },
   19516                       ],
   19517                     },
   19518                   },
   19519                   "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
   19520                     "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   19521                       "sources": [ # The ranges of data for a series or domain.
   19522                           # Exactly one dimension must have a length of 1,
   19523                           # and all sources in the list must have the same dimension
   19524                           # with length 1.
   19525                           # The domain (if it exists) & all series must have the same number
   19526                           # of source ranges. If using more than one source range, then the source
   19527                           # range at a given offset must be contiguous across the domain and series.
   19528                           #
   19529                           # For example, these are valid configurations:
   19530                           #
   19531                           #     domain sources: A1:A5
   19532                           #     series1 sources: B1:B5
   19533                           #     series2 sources: D6:D10
   19534                           #
   19535                           #     domain sources: A1:A5, C10:C12
   19536                           #     series1 sources: B1:B5, D10:D12
   19537                           #     series2 sources: C1:C5, E10:E12
   19538                         { # A range on a sheet.
   19539                             # All indexes are zero-based.
   19540                             # Indexes are half open, e.g the start index is inclusive
   19541                             # and the end index is exclusive -- [start_index, end_index).
   19542                             # Missing indexes indicate the range is unbounded on that side.
   19543                             #
   19544                             # For example, if `"Sheet1"` is sheet ID 0, then:
   19545                             #
   19546                             #   `Sheet1!A1:A1 == sheet_id: 0,
   19547                             #                   start_row_index: 0, end_row_index: 1,
   19548                             #                   start_column_index: 0, end_column_index: 1`
   19549                             #
   19550                             #   `Sheet1!A3:B4 == sheet_id: 0,
   19551                             #                   start_row_index: 2, end_row_index: 4,
   19552                             #                   start_column_index: 0, end_column_index: 2`
   19553                             #
   19554                             #   `Sheet1!A:B == sheet_id: 0,
   19555                             #                 start_column_index: 0, end_column_index: 2`
   19556                             #
   19557                             #   `Sheet1!A5:B == sheet_id: 0,
   19558                             #                  start_row_index: 4,
   19559                             #                  start_column_index: 0, end_column_index: 2`
   19560                             #
   19561                             #   `Sheet1 == sheet_id:0`
   19562                             #
   19563                             # The start index must always be less than or equal to the end index.
   19564                             # If the start index equals the end index, then the range is empty.
   19565                             # Empty ranges are typically not meaningful and are usually rendered in the
   19566                             # UI as `#REF!`.
   19567                           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   19568                           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   19569                           "sheetId": 42, # The sheet this range is on.
   19570                           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   19571                           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   19572                         },
   19573                       ],
   19574                     },
   19575                   },
   19576                   "threeDimensional": True or False, # True if the pie is three dimensional.
   19577                   "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
   19578                   "pieHole": 3.14, # The size of the hole in the pie chart.
   19579                 },
   19580                 "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
   19581                     # See BasicChartType for the list of all
   19582                     # charts this supports.
   19583                     # of charts this supports.
   19584                   "headerCount": 42, # The number of rows or columns in the data that are "headers".
   19585                       # If not set, Google Sheets will guess how many rows are headers based
   19586                       # on the data.
   19587                       #
   19588                       # (Note that BasicChartAxis.title may override the axis title
   19589                       #  inferred from the header values.)
   19590                   "series": [ # The data this chart is visualizing.
   19591                     { # A single series of data in a chart.
   19592                         # For example, if charting stock prices over time, multiple series may exist,
   19593                         # one for the "Open Price", "High Price", "Low Price" and "Close Price".
   19594                       "series": { # The data included in a domain or series. # The data being visualized in this chart series.
   19595                         "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   19596                           "sources": [ # The ranges of data for a series or domain.
   19597                               # Exactly one dimension must have a length of 1,
   19598                               # and all sources in the list must have the same dimension
   19599                               # with length 1.
   19600                               # The domain (if it exists) & all series must have the same number
   19601                               # of source ranges. If using more than one source range, then the source
   19602                               # range at a given offset must be contiguous across the domain and series.
   19603                               #
   19604                               # For example, these are valid configurations:
   19605                               #
   19606                               #     domain sources: A1:A5
   19607                               #     series1 sources: B1:B5
   19608                               #     series2 sources: D6:D10
   19609                               #
   19610                               #     domain sources: A1:A5, C10:C12
   19611                               #     series1 sources: B1:B5, D10:D12
   19612                               #     series2 sources: C1:C5, E10:E12
   19613                             { # A range on a sheet.
   19614                                 # All indexes are zero-based.
   19615                                 # Indexes are half open, e.g the start index is inclusive
   19616                                 # and the end index is exclusive -- [start_index, end_index).
   19617                                 # Missing indexes indicate the range is unbounded on that side.
   19618                                 #
   19619                                 # For example, if `"Sheet1"` is sheet ID 0, then:
   19620                                 #
   19621                                 #   `Sheet1!A1:A1 == sheet_id: 0,
   19622                                 #                   start_row_index: 0, end_row_index: 1,
   19623                                 #                   start_column_index: 0, end_column_index: 1`
   19624                                 #
   19625                                 #   `Sheet1!A3:B4 == sheet_id: 0,
   19626                                 #                   start_row_index: 2, end_row_index: 4,
   19627                                 #                   start_column_index: 0, end_column_index: 2`
   19628                                 #
   19629                                 #   `Sheet1!A:B == sheet_id: 0,
   19630                                 #                 start_column_index: 0, end_column_index: 2`
   19631                                 #
   19632                                 #   `Sheet1!A5:B == sheet_id: 0,
   19633                                 #                  start_row_index: 4,
   19634                                 #                  start_column_index: 0, end_column_index: 2`
   19635                                 #
   19636                                 #   `Sheet1 == sheet_id:0`
   19637                                 #
   19638                                 # The start index must always be less than or equal to the end index.
   19639                                 # If the start index equals the end index, then the range is empty.
   19640                                 # Empty ranges are typically not meaningful and are usually rendered in the
   19641                                 # UI as `#REF!`.
   19642                               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   19643                               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   19644                               "sheetId": 42, # The sheet this range is on.
   19645                               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   19646                               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   19647                             },
   19648                           ],
   19649                         },
   19650                       },
   19651                       "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
   19652                           # For example, if charting stocks over time, the "Volume" series
   19653                           # may want to be pinned to the right with the prices pinned to the left,
   19654                           # because the scale of trading volume is different than the scale of
   19655                           # prices.
   19656                           # It is an error to specify an axis that isn't a valid minor axis
   19657                           # for the chart's type.
   19658                       "type": "A String", # The type of this series. Valid only if the
   19659                           # chartType is
   19660                           # COMBO.
   19661                           # Different types will change the way the series is visualized.
   19662                           # Only LINE, AREA,
   19663                           # and COLUMN are supported.
   19664                     },
   19665                   ],
   19666                   "legendPosition": "A String", # The position of the chart legend.
   19667                   "domains": [ # The domain of data this is charting.
   19668                       # Only a single domain is supported.
   19669                     { # The domain of a chart.
   19670                         # For example, if charting stock prices over time, this would be the date.
   19671                       "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
   19672                           # this is the data representing the dates.
   19673                         "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   19674                           "sources": [ # The ranges of data for a series or domain.
   19675                               # Exactly one dimension must have a length of 1,
   19676                               # and all sources in the list must have the same dimension
   19677                               # with length 1.
   19678                               # The domain (if it exists) & all series must have the same number
   19679                               # of source ranges. If using more than one source range, then the source
   19680                               # range at a given offset must be contiguous across the domain and series.
   19681                               #
   19682                               # For example, these are valid configurations:
   19683                               #
   19684                               #     domain sources: A1:A5
   19685                               #     series1 sources: B1:B5
   19686                               #     series2 sources: D6:D10
   19687                               #
   19688                               #     domain sources: A1:A5, C10:C12
   19689                               #     series1 sources: B1:B5, D10:D12
   19690                               #     series2 sources: C1:C5, E10:E12
   19691                             { # A range on a sheet.
   19692                                 # All indexes are zero-based.
   19693                                 # Indexes are half open, e.g the start index is inclusive
   19694                                 # and the end index is exclusive -- [start_index, end_index).
   19695                                 # Missing indexes indicate the range is unbounded on that side.
   19696                                 #
   19697                                 # For example, if `"Sheet1"` is sheet ID 0, then:
   19698                                 #
   19699                                 #   `Sheet1!A1:A1 == sheet_id: 0,
   19700                                 #                   start_row_index: 0, end_row_index: 1,
   19701                                 #                   start_column_index: 0, end_column_index: 1`
   19702                                 #
   19703                                 #   `Sheet1!A3:B4 == sheet_id: 0,
   19704                                 #                   start_row_index: 2, end_row_index: 4,
   19705                                 #                   start_column_index: 0, end_column_index: 2`
   19706                                 #
   19707                                 #   `Sheet1!A:B == sheet_id: 0,
   19708                                 #                 start_column_index: 0, end_column_index: 2`
   19709                                 #
   19710                                 #   `Sheet1!A5:B == sheet_id: 0,
   19711                                 #                  start_row_index: 4,
   19712                                 #                  start_column_index: 0, end_column_index: 2`
   19713                                 #
   19714                                 #   `Sheet1 == sheet_id:0`
   19715                                 #
   19716                                 # The start index must always be less than or equal to the end index.
   19717                                 # If the start index equals the end index, then the range is empty.
   19718                                 # Empty ranges are typically not meaningful and are usually rendered in the
   19719                                 # UI as `#REF!`.
   19720                               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   19721                               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   19722                               "sheetId": 42, # The sheet this range is on.
   19723                               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   19724                               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   19725                             },
   19726                           ],
   19727                         },
   19728                       },
   19729                     },
   19730                   ],
   19731                   "chartType": "A String", # The type of the chart.
   19732                   "axis": [ # The axis on the chart.
   19733                     { # An axis of the chart.
   19734                         # A chart may not have more than one axis per
   19735                         # axis position.
   19736                       "position": "A String", # The position of this axis.
   19737                       "format": { # The format of a run of text in a cell. # The format of the title.
   19738                           # Only valid if the axis is not associated with the domain.
   19739                           # Absent values indicate that the field isn't specified.
   19740                         "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   19741                             # for simplicity of conversion to/from color representations in various
   19742                             # languages over compactness; for example, the fields of this representation
   19743                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   19744                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   19745                             # method in iOS; and, with just a little work, it can be easily formatted into
   19746                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   19747                             #
   19748                             # Example (Java):
   19749                             #
   19750                             #      import com.google.type.Color;
   19751                             #
   19752                             #      // ...
   19753                             #      public static java.awt.Color fromProto(Color protocolor) {
   19754                             #        float alpha = protocolor.hasAlpha()
   19755                             #            ? protocolor.getAlpha().getValue()
   19756                             #            : 1.0;
   19757                             #
   19758                             #        return new java.awt.Color(
   19759                             #            protocolor.getRed(),
   19760                             #            protocolor.getGreen(),
   19761                             #            protocolor.getBlue(),
   19762                             #            alpha);
   19763                             #      }
   19764                             #
   19765                             #      public static Color toProto(java.awt.Color color) {
   19766                             #        float red = (float) color.getRed();
   19767                             #        float green = (float) color.getGreen();
   19768                             #        float blue = (float) color.getBlue();
   19769                             #        float denominator = 255.0;
   19770                             #        Color.Builder resultBuilder =
   19771                             #            Color
   19772                             #                .newBuilder()
   19773                             #                .setRed(red / denominator)
   19774                             #                .setGreen(green / denominator)
   19775                             #                .setBlue(blue / denominator);
   19776                             #        int alpha = color.getAlpha();
   19777                             #        if (alpha != 255) {
   19778                             #          result.setAlpha(
   19779                             #              FloatValue
   19780                             #                  .newBuilder()
   19781                             #                  .setValue(((float) alpha) / denominator)
   19782                             #                  .build());
   19783                             #        }
   19784                             #        return resultBuilder.build();
   19785                             #      }
   19786                             #      // ...
   19787                             #
   19788                             # Example (iOS / Obj-C):
   19789                             #
   19790                             #      // ...
   19791                             #      static UIColor* fromProto(Color* protocolor) {
   19792                             #         float red = [protocolor red];
   19793                             #         float green = [protocolor green];
   19794                             #         float blue = [protocolor blue];
   19795                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   19796                             #         float alpha = 1.0;
   19797                             #         if (alpha_wrapper != nil) {
   19798                             #           alpha = [alpha_wrapper value];
   19799                             #         }
   19800                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   19801                             #      }
   19802                             #
   19803                             #      static Color* toProto(UIColor* color) {
   19804                             #          CGFloat red, green, blue, alpha;
   19805                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   19806                             #            return nil;
   19807                             #          }
   19808                             #          Color* result = [Color alloc] init];
   19809                             #          [result setRed:red];
   19810                             #          [result setGreen:green];
   19811                             #          [result setBlue:blue];
   19812                             #          if (alpha <= 0.9999) {
   19813                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   19814                             #          }
   19815                             #          [result autorelease];
   19816                             #          return result;
   19817                             #     }
   19818                             #     // ...
   19819                             #
   19820                             #  Example (JavaScript):
   19821                             #
   19822                             #     // ...
   19823                             #
   19824                             #     var protoToCssColor = function(rgb_color) {
   19825                             #        var redFrac = rgb_color.red || 0.0;
   19826                             #        var greenFrac = rgb_color.green || 0.0;
   19827                             #        var blueFrac = rgb_color.blue || 0.0;
   19828                             #        var red = Math.floor(redFrac * 255);
   19829                             #        var green = Math.floor(greenFrac * 255);
   19830                             #        var blue = Math.floor(blueFrac * 255);
   19831                             #
   19832                             #        if (!('alpha' in rgb_color)) {
   19833                             #           return rgbToCssColor_(red, green, blue);
   19834                             #        }
   19835                             #
   19836                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   19837                             #        var rgbParams = [red, green, blue].join(',');
   19838                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   19839                             #     };
   19840                             #
   19841                             #     var rgbToCssColor_ = function(red, green, blue) {
   19842                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   19843                             #       var hexString = rgbNumber.toString(16);
   19844                             #       var missingZeros = 6 - hexString.length;
   19845                             #       var resultBuilder = ['#'];
   19846                             #       for (var i = 0; i < missingZeros; i++) {
   19847                             #          resultBuilder.push('0');
   19848                             #       }
   19849                             #       resultBuilder.push(hexString);
   19850                             #       return resultBuilder.join('');
   19851                             #     };
   19852                             #
   19853                             #     // ...
   19854                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   19855                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   19856                               # the final pixel color is defined by the equation:
   19857                               #
   19858                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   19859                               #
   19860                               # This means that a value of 1.0 corresponds to a solid color, whereas
   19861                               # a value of 0.0 corresponds to a completely transparent color. This
   19862                               # uses a wrapper message rather than a simple float scalar so that it is
   19863                               # possible to distinguish between a default value and the value being unset.
   19864                               # If omitted, this color object is to be rendered as a solid color
   19865                               # (as if the alpha value had been explicitly given with a value of 1.0).
   19866                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   19867                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   19868                         },
   19869                         "bold": True or False, # True if the text is bold.
   19870                         "strikethrough": True or False, # True if the text has a strikethrough.
   19871                         "fontFamily": "A String", # The font family.
   19872                         "fontSize": 42, # The size of the font.
   19873                         "italic": True or False, # True if the text is italicized.
   19874                         "underline": True or False, # True if the text is underlined.
   19875                       },
   19876                       "title": "A String", # The title of this axis. If set, this overrides any title inferred
   19877                           # from headers of the data.
   19878                     },
   19879                   ],
   19880                 },
   19881                 "title": "A String", # The title of the chart.
   19882               },
   19883             },
   19884           ],
   19885           "filterViews": [ # The filter views in this sheet.
   19886             { # A filter view.
   19887               "title": "A String", # The name of the filter view.
   19888               "namedRangeId": "A String", # The named range this filter view is backed by, if any.
   19889                   #
   19890                   # When writing, only one of range or named_range_id
   19891                   # may be set.
   19892               "filterViewId": 42, # The ID of the filter view.
   19893               "range": { # A range on a sheet. # The range this filter view covers.
   19894                   #
   19895                   # When writing, only one of range or named_range_id
   19896                   # may be set.
   19897                   # All indexes are zero-based.
   19898                   # Indexes are half open, e.g the start index is inclusive
   19899                   # and the end index is exclusive -- [start_index, end_index).
   19900                   # Missing indexes indicate the range is unbounded on that side.
   19901                   #
   19902                   # For example, if `"Sheet1"` is sheet ID 0, then:
   19903                   #
   19904                   #   `Sheet1!A1:A1 == sheet_id: 0,
   19905                   #                   start_row_index: 0, end_row_index: 1,
   19906                   #                   start_column_index: 0, end_column_index: 1`
   19907                   #
   19908                   #   `Sheet1!A3:B4 == sheet_id: 0,
   19909                   #                   start_row_index: 2, end_row_index: 4,
   19910                   #                   start_column_index: 0, end_column_index: 2`
   19911                   #
   19912                   #   `Sheet1!A:B == sheet_id: 0,
   19913                   #                 start_column_index: 0, end_column_index: 2`
   19914                   #
   19915                   #   `Sheet1!A5:B == sheet_id: 0,
   19916                   #                  start_row_index: 4,
   19917                   #                  start_column_index: 0, end_column_index: 2`
   19918                   #
   19919                   #   `Sheet1 == sheet_id:0`
   19920                   #
   19921                   # The start index must always be less than or equal to the end index.
   19922                   # If the start index equals the end index, then the range is empty.
   19923                   # Empty ranges are typically not meaningful and are usually rendered in the
   19924                   # UI as `#REF!`.
   19925                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   19926                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   19927                 "sheetId": 42, # The sheet this range is on.
   19928                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   19929                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   19930               },
   19931               "sortSpecs": [ # The sort order per column. Later specifications are used when values
   19932                   # are equal in the earlier specifications.
   19933                 { # A sort order associated with a specific column or row.
   19934                   "sortOrder": "A String", # The order data should be sorted.
   19935                   "dimensionIndex": 42, # The dimension the sort should be applied to.
   19936                 },
   19937               ],
   19938               "criteria": { # The criteria for showing/hiding values per column.
   19939                   # The map's key is the column index, and the value is the criteria for
   19940                   # that column.
   19941                 "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   19942                   "hiddenValues": [ # Values that should be hidden.
   19943                     "A String",
   19944                   ],
   19945                   "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   19946                       # (This does not override hiddenValues -- if a value is listed there,
   19947                       #  it will still be hidden.)
   19948                       # BooleanConditions are used by conditional formatting,
   19949                       # data validation, and the criteria in filters.
   19950                     "values": [ # The values of the condition. The number of supported values depends
   19951                         # on the condition type.  Some support zero values,
   19952                         # others one or two values,
   19953                         # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   19954                       { # The value of the condition.
   19955                         "relativeDate": "A String", # A relative date (based on the current date).
   19956                             # Valid only if the type is
   19957                             # DATE_BEFORE,
   19958                             # DATE_AFTER,
   19959                             # DATE_ON_OR_BEFORE or
   19960                             # DATE_ON_OR_AFTER.
   19961                             #
   19962                             # Relative dates are not supported in data validation.
   19963                             # They are supported only in conditional formatting and
   19964                             # conditional filters.
   19965                         "userEnteredValue": "A String", # A value the condition is based on.
   19966                             # The value will be parsed as if the user typed into a cell.
   19967                             # Formulas are supported (and must begin with an `=`).
   19968                       },
   19969                     ],
   19970                     "type": "A String", # The type of condition.
   19971                   },
   19972                 },
   19973               },
   19974             },
   19975           ],
   19976           "protectedRanges": [ # The protected ranges in this sheet.
   19977             { # A protected range.
   19978               "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
   19979                   # Unprotected ranges are only supported on protected sheets.
   19980                 { # A range on a sheet.
   19981                     # All indexes are zero-based.
   19982                     # Indexes are half open, e.g the start index is inclusive
   19983                     # and the end index is exclusive -- [start_index, end_index).
   19984                     # Missing indexes indicate the range is unbounded on that side.
   19985                     #
   19986                     # For example, if `"Sheet1"` is sheet ID 0, then:
   19987                     #
   19988                     #   `Sheet1!A1:A1 == sheet_id: 0,
   19989                     #                   start_row_index: 0, end_row_index: 1,
   19990                     #                   start_column_index: 0, end_column_index: 1`
   19991                     #
   19992                     #   `Sheet1!A3:B4 == sheet_id: 0,
   19993                     #                   start_row_index: 2, end_row_index: 4,
   19994                     #                   start_column_index: 0, end_column_index: 2`
   19995                     #
   19996                     #   `Sheet1!A:B == sheet_id: 0,
   19997                     #                 start_column_index: 0, end_column_index: 2`
   19998                     #
   19999                     #   `Sheet1!A5:B == sheet_id: 0,
   20000                     #                  start_row_index: 4,
   20001                     #                  start_column_index: 0, end_column_index: 2`
   20002                     #
   20003                     #   `Sheet1 == sheet_id:0`
   20004                     #
   20005                     # The start index must always be less than or equal to the end index.
   20006                     # If the start index equals the end index, then the range is empty.
   20007                     # Empty ranges are typically not meaningful and are usually rendered in the
   20008                     # UI as `#REF!`.
   20009                   "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   20010                   "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   20011                   "sheetId": 42, # The sheet this range is on.
   20012                   "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   20013                   "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   20014                 },
   20015               ],
   20016               "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
   20017                   # protected area.
   20018                   # This field is read-only.
   20019               "description": "A String", # The description of this protected range.
   20020               "namedRangeId": "A String", # The named range this protected range is backed by, if any.
   20021                   #
   20022                   # When writing, only one of range or named_range_id
   20023                   # may be set.
   20024               "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
   20025                   # This field is only visible to users with edit access to the protected
   20026                   # range and the document.
   20027                   # Editors are not supported with warning_only protection.
   20028                 "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
   20029                     # range.  Domain protection is only supported on documents within a domain.
   20030                 "users": [ # The email addresses of users with edit access to the protected range.
   20031                   "A String",
   20032                 ],
   20033                 "groups": [ # The email addresses of groups with edit access to the protected range.
   20034                   "A String",
   20035                 ],
   20036               },
   20037               "protectedRangeId": 42, # The ID of the protected range.
   20038                   # This field is read-only.
   20039               "warningOnly": True or False, # True if this protected range will show a warning when editing.
   20040                   # Warning-based protection means that every user can edit data in the
   20041                   # protected range, except editing will prompt a warning asking the user
   20042                   # to confirm the edit.
   20043                   #
   20044                   # When writing: if this field is true, then editors is ignored.
   20045                   # Additionally, if this field is changed from true to false and the
   20046                   # `editors` field is not set (nor included in the field mask), then
   20047                   # the editors will be set to all the editors in the document.
   20048               "range": { # A range on a sheet. # The range that is being protected.
   20049                   # The range may be fully unbounded, in which case this is considered
   20050                   # a protected sheet.
   20051                   #
   20052                   # When writing, only one of range or named_range_id
   20053                   # may be set.
   20054                   # All indexes are zero-based.
   20055                   # Indexes are half open, e.g the start index is inclusive
   20056                   # and the end index is exclusive -- [start_index, end_index).
   20057                   # Missing indexes indicate the range is unbounded on that side.
   20058                   #
   20059                   # For example, if `"Sheet1"` is sheet ID 0, then:
   20060                   #
   20061                   #   `Sheet1!A1:A1 == sheet_id: 0,
   20062                   #                   start_row_index: 0, end_row_index: 1,
   20063                   #                   start_column_index: 0, end_column_index: 1`
   20064                   #
   20065                   #   `Sheet1!A3:B4 == sheet_id: 0,
   20066                   #                   start_row_index: 2, end_row_index: 4,
   20067                   #                   start_column_index: 0, end_column_index: 2`
   20068                   #
   20069                   #   `Sheet1!A:B == sheet_id: 0,
   20070                   #                 start_column_index: 0, end_column_index: 2`
   20071                   #
   20072                   #   `Sheet1!A5:B == sheet_id: 0,
   20073                   #                  start_row_index: 4,
   20074                   #                  start_column_index: 0, end_column_index: 2`
   20075                   #
   20076                   #   `Sheet1 == sheet_id:0`
   20077                   #
   20078                   # The start index must always be less than or equal to the end index.
   20079                   # If the start index equals the end index, then the range is empty.
   20080                   # Empty ranges are typically not meaningful and are usually rendered in the
   20081                   # UI as `#REF!`.
   20082                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   20083                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   20084                 "sheetId": 42, # The sheet this range is on.
   20085                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   20086                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   20087               },
   20088             },
   20089           ],
   20090           "data": [ # Data in the grid, if this is a grid sheet.
   20091               # The number of GridData objects returned is dependent on the number of
   20092               # ranges requested on this sheet. For example, if this is representing
   20093               # `Sheet1`, and the spreadsheet was requested with ranges
   20094               # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
   20095               # startRow/startColumn of `0`,
   20096               # while the second one will have `startRow 14` (zero-based row 15),
   20097               # and `startColumn 3` (zero-based column D).
   20098             { # Data in the grid, as well as metadata about the dimensions.
   20099               "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
   20100                   # in start_row.
   20101                 { # Properties about a dimension.
   20102                   "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
   20103                   "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
   20104                   "hiddenByFilter": True or False, # True if this dimension is being filtered.
   20105                       # This field is read-only.
   20106                 },
   20107               ],
   20108               "startColumn": 42, # The first column this GridData refers to, zero-based.
   20109               "rowData": [ # The data in the grid, one entry per row,
   20110                   # starting with the row in startRow.
   20111                   # The values in RowData will correspond to columns starting
   20112                   # at start_column.
   20113                 { # Data about each cell in a row.
   20114                   "values": [ # The values in the row, one per column.
   20115                     { # Data about a specific cell.
   20116                       "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
   20117                           # is computed dynamically based on its data, grouping, filters, values,
   20118                           # etc. Only the top-left cell of the pivot table contains the pivot table
   20119                           # definition. The other cells will contain the calculated values of the
   20120                           # results of the pivot in their effective_value fields.
   20121                         "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
   20122                             # or vertically (as rows).
   20123                         "rows": [ # Each row grouping in the pivot table.
   20124                           { # A single grouping (either row or column) in a pivot table.
   20125                             "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   20126                             "valueMetadata": [ # Metadata about values in the grouping.
   20127                               { # Metadata about a value in a pivot grouping.
   20128                                 "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   20129                                 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   20130                                     # (Note that formulaValue is not valid,
   20131                                     #  because the values will be calculated.)
   20132                                   "stringValue": "A String", # Represents a string value.
   20133                                       # Leading single quotes are not included. For example, if the user typed
   20134                                       # `'123` into the UI, this would be represented as a `stringValue` of
   20135                                       # `"123"`.
   20136                                   "boolValue": True or False, # Represents a boolean value.
   20137                                   "errorValue": { # An error in a cell. # Represents an error.
   20138                                       # This field is read-only.
   20139                                     "message": "A String", # A message with more information about the error
   20140                                         # (in the spreadsheet's locale).
   20141                                     "type": "A String", # The type of error.
   20142                                   },
   20143                                   "formulaValue": "A String", # Represents a formula.
   20144                                   "numberValue": 3.14, # Represents a double value.
   20145                                       # Note: Dates, Times and DateTimes are represented as doubles in
   20146                                       # "serial number" format.
   20147                                 },
   20148                               },
   20149                             ],
   20150                             "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   20151                                 # If not specified, sorting is alphabetical by this group's values.
   20152                               "buckets": [ # Determines the bucket from which values are chosen to sort.
   20153                                   #
   20154                                   # For example, in a pivot table with one row group & two column groups,
   20155                                   # the row group can list up to two values. The first value corresponds
   20156                                   # to a value within the first column group, and the second value
   20157                                   # corresponds to a value in the second column group.  If no values
   20158                                   # are listed, this would indicate that the row should be sorted according
   20159                                   # to the "Grand Total" over the column groups. If a single value is listed,
   20160                                   # this would correspond to using the "Total" of that bucket.
   20161                                 { # The kinds of value that a cell in a spreadsheet can have.
   20162                                   "stringValue": "A String", # Represents a string value.
   20163                                       # Leading single quotes are not included. For example, if the user typed
   20164                                       # `'123` into the UI, this would be represented as a `stringValue` of
   20165                                       # `"123"`.
   20166                                   "boolValue": True or False, # Represents a boolean value.
   20167                                   "errorValue": { # An error in a cell. # Represents an error.
   20168                                       # This field is read-only.
   20169                                     "message": "A String", # A message with more information about the error
   20170                                         # (in the spreadsheet's locale).
   20171                                     "type": "A String", # The type of error.
   20172                                   },
   20173                                   "formulaValue": "A String", # Represents a formula.
   20174                                   "numberValue": 3.14, # Represents a double value.
   20175                                       # Note: Dates, Times and DateTimes are represented as doubles in
   20176                                       # "serial number" format.
   20177                                 },
   20178                               ],
   20179                               "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   20180                                   # grouping should be sorted by.
   20181                             },
   20182                             "sortOrder": "A String", # The order the values in this group should be sorted.
   20183                             "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   20184                                 #
   20185                                 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   20186                                 # means this group refers to column `C`, whereas the offset `1` would refer
   20187                                 # to column `D`.
   20188                           },
   20189                         ],
   20190                         "source": { # A range on a sheet. # The range the pivot table is reading data from.
   20191                             # All indexes are zero-based.
   20192                             # Indexes are half open, e.g the start index is inclusive
   20193                             # and the end index is exclusive -- [start_index, end_index).
   20194                             # Missing indexes indicate the range is unbounded on that side.
   20195                             #
   20196                             # For example, if `"Sheet1"` is sheet ID 0, then:
   20197                             #
   20198                             #   `Sheet1!A1:A1 == sheet_id: 0,
   20199                             #                   start_row_index: 0, end_row_index: 1,
   20200                             #                   start_column_index: 0, end_column_index: 1`
   20201                             #
   20202                             #   `Sheet1!A3:B4 == sheet_id: 0,
   20203                             #                   start_row_index: 2, end_row_index: 4,
   20204                             #                   start_column_index: 0, end_column_index: 2`
   20205                             #
   20206                             #   `Sheet1!A:B == sheet_id: 0,
   20207                             #                 start_column_index: 0, end_column_index: 2`
   20208                             #
   20209                             #   `Sheet1!A5:B == sheet_id: 0,
   20210                             #                  start_row_index: 4,
   20211                             #                  start_column_index: 0, end_column_index: 2`
   20212                             #
   20213                             #   `Sheet1 == sheet_id:0`
   20214                             #
   20215                             # The start index must always be less than or equal to the end index.
   20216                             # If the start index equals the end index, then the range is empty.
   20217                             # Empty ranges are typically not meaningful and are usually rendered in the
   20218                             # UI as `#REF!`.
   20219                           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   20220                           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   20221                           "sheetId": 42, # The sheet this range is on.
   20222                           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   20223                           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   20224                         },
   20225                         "values": [ # A list of values to include in the pivot table.
   20226                           { # The definition of how a value in a pivot table should be calculated.
   20227                             "formula": "A String", # A custom formula to calculate the value.  The formula must start
   20228                                 # with an `=` character.
   20229                             "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
   20230                                 #
   20231                                 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   20232                                 # means this value refers to column `C`, whereas the offset `1` would
   20233                                 # refer to column `D`.
   20234                             "summarizeFunction": "A String", # A function to summarize the value.
   20235                                 # If formula is set, the only supported values are
   20236                                 # SUM and
   20237                                 # CUSTOM.
   20238                                 # If sourceColumnOffset is set, then `CUSTOM`
   20239                                 # is not supported.
   20240                             "name": "A String", # A name to use for the value. This is only used if formula was set.
   20241                                 # Otherwise, the column name is used.
   20242                           },
   20243                         ],
   20244                         "criteria": { # An optional mapping of filters per source column offset.
   20245                             #
   20246                             # The filters will be applied before aggregating data into the pivot table.
   20247                             # The map's key is the column offset of the source range that you want to
   20248                             # filter, and the value is the criteria for that column.
   20249                             #
   20250                             # For example, if the source was `C10:E15`, a key of `0` will have the filter
   20251                             # for column `C`, whereas the key `1` is for column `D`.
   20252                           "a_key": { # Criteria for showing/hiding rows in a pivot table.
   20253                             "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
   20254                               "A String",
   20255                             ],
   20256                           },
   20257                         },
   20258                         "columns": [ # Each column grouping in the pivot table.
   20259                           { # A single grouping (either row or column) in a pivot table.
   20260                             "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   20261                             "valueMetadata": [ # Metadata about values in the grouping.
   20262                               { # Metadata about a value in a pivot grouping.
   20263                                 "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   20264                                 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   20265                                     # (Note that formulaValue is not valid,
   20266                                     #  because the values will be calculated.)
   20267                                   "stringValue": "A String", # Represents a string value.
   20268                                       # Leading single quotes are not included. For example, if the user typed
   20269                                       # `'123` into the UI, this would be represented as a `stringValue` of
   20270                                       # `"123"`.
   20271                                   "boolValue": True or False, # Represents a boolean value.
   20272                                   "errorValue": { # An error in a cell. # Represents an error.
   20273                                       # This field is read-only.
   20274                                     "message": "A String", # A message with more information about the error
   20275                                         # (in the spreadsheet's locale).
   20276                                     "type": "A String", # The type of error.
   20277                                   },
   20278                                   "formulaValue": "A String", # Represents a formula.
   20279                                   "numberValue": 3.14, # Represents a double value.
   20280                                       # Note: Dates, Times and DateTimes are represented as doubles in
   20281                                       # "serial number" format.
   20282                                 },
   20283                               },
   20284                             ],
   20285                             "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   20286                                 # If not specified, sorting is alphabetical by this group's values.
   20287                               "buckets": [ # Determines the bucket from which values are chosen to sort.
   20288                                   #
   20289                                   # For example, in a pivot table with one row group & two column groups,
   20290                                   # the row group can list up to two values. The first value corresponds
   20291                                   # to a value within the first column group, and the second value
   20292                                   # corresponds to a value in the second column group.  If no values
   20293                                   # are listed, this would indicate that the row should be sorted according
   20294                                   # to the "Grand Total" over the column groups. If a single value is listed,
   20295                                   # this would correspond to using the "Total" of that bucket.
   20296                                 { # The kinds of value that a cell in a spreadsheet can have.
   20297                                   "stringValue": "A String", # Represents a string value.
   20298                                       # Leading single quotes are not included. For example, if the user typed
   20299                                       # `'123` into the UI, this would be represented as a `stringValue` of
   20300                                       # `"123"`.
   20301                                   "boolValue": True or False, # Represents a boolean value.
   20302                                   "errorValue": { # An error in a cell. # Represents an error.
   20303                                       # This field is read-only.
   20304                                     "message": "A String", # A message with more information about the error
   20305                                         # (in the spreadsheet's locale).
   20306                                     "type": "A String", # The type of error.
   20307                                   },
   20308                                   "formulaValue": "A String", # Represents a formula.
   20309                                   "numberValue": 3.14, # Represents a double value.
   20310                                       # Note: Dates, Times and DateTimes are represented as doubles in
   20311                                       # "serial number" format.
   20312                                 },
   20313                               ],
   20314                               "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   20315                                   # grouping should be sorted by.
   20316                             },
   20317                             "sortOrder": "A String", # The order the values in this group should be sorted.
   20318                             "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   20319                                 #
   20320                                 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   20321                                 # means this group refers to column `C`, whereas the offset `1` would refer
   20322                                 # to column `D`.
   20323                           },
   20324                         ],
   20325                       },
   20326                       "hyperlink": "A String", # A hyperlink this cell points to, if any.
   20327                           # This field is read-only.  (To set it, use a `=HYPERLINK` formula
   20328                           # in the userEnteredValue.formulaValue
   20329                           # field.)
   20330                       "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
   20331                           # the calculated value.  For cells with literals, this will be
   20332                           # the same as the user_entered_value.
   20333                           # This field is read-only.
   20334                         "stringValue": "A String", # Represents a string value.
   20335                             # Leading single quotes are not included. For example, if the user typed
   20336                             # `'123` into the UI, this would be represented as a `stringValue` of
   20337                             # `"123"`.
   20338                         "boolValue": True or False, # Represents a boolean value.
   20339                         "errorValue": { # An error in a cell. # Represents an error.
   20340                             # This field is read-only.
   20341                           "message": "A String", # A message with more information about the error
   20342                               # (in the spreadsheet's locale).
   20343                           "type": "A String", # The type of error.
   20344                         },
   20345                         "formulaValue": "A String", # Represents a formula.
   20346                         "numberValue": 3.14, # Represents a double value.
   20347                             # Note: Dates, Times and DateTimes are represented as doubles in
   20348                             # "serial number" format.
   20349                       },
   20350                       "formattedValue": "A String", # The formatted value of the cell.
   20351                           # This is the value as it's shown to the user.
   20352                           # This field is read-only.
   20353                       "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
   20354                           # Note: Dates, Times and DateTimes are represented as doubles in
   20355                           # serial number format.
   20356                         "stringValue": "A String", # Represents a string value.
   20357                             # Leading single quotes are not included. For example, if the user typed
   20358                             # `'123` into the UI, this would be represented as a `stringValue` of
   20359                             # `"123"`.
   20360                         "boolValue": True or False, # Represents a boolean value.
   20361                         "errorValue": { # An error in a cell. # Represents an error.
   20362                             # This field is read-only.
   20363                           "message": "A String", # A message with more information about the error
   20364                               # (in the spreadsheet's locale).
   20365                           "type": "A String", # The type of error.
   20366                         },
   20367                         "formulaValue": "A String", # Represents a formula.
   20368                         "numberValue": 3.14, # Represents a double value.
   20369                             # Note: Dates, Times and DateTimes are represented as doubles in
   20370                             # "serial number" format.
   20371                       },
   20372                       "note": "A String", # Any note on the cell.
   20373                       "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
   20374                           # This includes the results of applying any conditional formatting and,
   20375                           # if the cell contains a formula, the computed number format.
   20376                           # If the effective format is the default format, effective format will
   20377                           # not be written.
   20378                           # This field is read-only.
   20379                         "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   20380                           "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   20381                               # the user's locale will be used if necessary for the given type.
   20382                               # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   20383                               # information about the supported patterns.
   20384                           "type": "A String", # The type of the number format.
   20385                               # When writing, this field must be set.
   20386                         },
   20387                         "textDirection": "A String", # The direction of the text in the cell.
   20388                         "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   20389                             # When updating padding, every field must be specified.
   20390                           "top": 42, # The top padding of the cell.
   20391                           "right": 42, # The right padding of the cell.
   20392                           "bottom": 42, # The bottom padding of the cell.
   20393                           "left": 42, # The left padding of the cell.
   20394                         },
   20395                         "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   20396                         "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   20397                             # for simplicity of conversion to/from color representations in various
   20398                             # languages over compactness; for example, the fields of this representation
   20399                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   20400                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   20401                             # method in iOS; and, with just a little work, it can be easily formatted into
   20402                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   20403                             #
   20404                             # Example (Java):
   20405                             #
   20406                             #      import com.google.type.Color;
   20407                             #
   20408                             #      // ...
   20409                             #      public static java.awt.Color fromProto(Color protocolor) {
   20410                             #        float alpha = protocolor.hasAlpha()
   20411                             #            ? protocolor.getAlpha().getValue()
   20412                             #            : 1.0;
   20413                             #
   20414                             #        return new java.awt.Color(
   20415                             #            protocolor.getRed(),
   20416                             #            protocolor.getGreen(),
   20417                             #            protocolor.getBlue(),
   20418                             #            alpha);
   20419                             #      }
   20420                             #
   20421                             #      public static Color toProto(java.awt.Color color) {
   20422                             #        float red = (float) color.getRed();
   20423                             #        float green = (float) color.getGreen();
   20424                             #        float blue = (float) color.getBlue();
   20425                             #        float denominator = 255.0;
   20426                             #        Color.Builder resultBuilder =
   20427                             #            Color
   20428                             #                .newBuilder()
   20429                             #                .setRed(red / denominator)
   20430                             #                .setGreen(green / denominator)
   20431                             #                .setBlue(blue / denominator);
   20432                             #        int alpha = color.getAlpha();
   20433                             #        if (alpha != 255) {
   20434                             #          result.setAlpha(
   20435                             #              FloatValue
   20436                             #                  .newBuilder()
   20437                             #                  .setValue(((float) alpha) / denominator)
   20438                             #                  .build());
   20439                             #        }
   20440                             #        return resultBuilder.build();
   20441                             #      }
   20442                             #      // ...
   20443                             #
   20444                             # Example (iOS / Obj-C):
   20445                             #
   20446                             #      // ...
   20447                             #      static UIColor* fromProto(Color* protocolor) {
   20448                             #         float red = [protocolor red];
   20449                             #         float green = [protocolor green];
   20450                             #         float blue = [protocolor blue];
   20451                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   20452                             #         float alpha = 1.0;
   20453                             #         if (alpha_wrapper != nil) {
   20454                             #           alpha = [alpha_wrapper value];
   20455                             #         }
   20456                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   20457                             #      }
   20458                             #
   20459                             #      static Color* toProto(UIColor* color) {
   20460                             #          CGFloat red, green, blue, alpha;
   20461                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   20462                             #            return nil;
   20463                             #          }
   20464                             #          Color* result = [Color alloc] init];
   20465                             #          [result setRed:red];
   20466                             #          [result setGreen:green];
   20467                             #          [result setBlue:blue];
   20468                             #          if (alpha <= 0.9999) {
   20469                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   20470                             #          }
   20471                             #          [result autorelease];
   20472                             #          return result;
   20473                             #     }
   20474                             #     // ...
   20475                             #
   20476                             #  Example (JavaScript):
   20477                             #
   20478                             #     // ...
   20479                             #
   20480                             #     var protoToCssColor = function(rgb_color) {
   20481                             #        var redFrac = rgb_color.red || 0.0;
   20482                             #        var greenFrac = rgb_color.green || 0.0;
   20483                             #        var blueFrac = rgb_color.blue || 0.0;
   20484                             #        var red = Math.floor(redFrac * 255);
   20485                             #        var green = Math.floor(greenFrac * 255);
   20486                             #        var blue = Math.floor(blueFrac * 255);
   20487                             #
   20488                             #        if (!('alpha' in rgb_color)) {
   20489                             #           return rgbToCssColor_(red, green, blue);
   20490                             #        }
   20491                             #
   20492                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   20493                             #        var rgbParams = [red, green, blue].join(',');
   20494                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   20495                             #     };
   20496                             #
   20497                             #     var rgbToCssColor_ = function(red, green, blue) {
   20498                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   20499                             #       var hexString = rgbNumber.toString(16);
   20500                             #       var missingZeros = 6 - hexString.length;
   20501                             #       var resultBuilder = ['#'];
   20502                             #       for (var i = 0; i < missingZeros; i++) {
   20503                             #          resultBuilder.push('0');
   20504                             #       }
   20505                             #       resultBuilder.push(hexString);
   20506                             #       return resultBuilder.join('');
   20507                             #     };
   20508                             #
   20509                             #     // ...
   20510                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   20511                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   20512                               # the final pixel color is defined by the equation:
   20513                               #
   20514                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   20515                               #
   20516                               # This means that a value of 1.0 corresponds to a solid color, whereas
   20517                               # a value of 0.0 corresponds to a completely transparent color. This
   20518                               # uses a wrapper message rather than a simple float scalar so that it is
   20519                               # possible to distinguish between a default value and the value being unset.
   20520                               # If omitted, this color object is to be rendered as a solid color
   20521                               # (as if the alpha value had been explicitly given with a value of 1.0).
   20522                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   20523                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   20524                         },
   20525                         "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   20526                         "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   20527                             # Absent values indicate that the field isn't specified.
   20528                           "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   20529                               # for simplicity of conversion to/from color representations in various
   20530                               # languages over compactness; for example, the fields of this representation
   20531                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   20532                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   20533                               # method in iOS; and, with just a little work, it can be easily formatted into
   20534                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   20535                               #
   20536                               # Example (Java):
   20537                               #
   20538                               #      import com.google.type.Color;
   20539                               #
   20540                               #      // ...
   20541                               #      public static java.awt.Color fromProto(Color protocolor) {
   20542                               #        float alpha = protocolor.hasAlpha()
   20543                               #            ? protocolor.getAlpha().getValue()
   20544                               #            : 1.0;
   20545                               #
   20546                               #        return new java.awt.Color(
   20547                               #            protocolor.getRed(),
   20548                               #            protocolor.getGreen(),
   20549                               #            protocolor.getBlue(),
   20550                               #            alpha);
   20551                               #      }
   20552                               #
   20553                               #      public static Color toProto(java.awt.Color color) {
   20554                               #        float red = (float) color.getRed();
   20555                               #        float green = (float) color.getGreen();
   20556                               #        float blue = (float) color.getBlue();
   20557                               #        float denominator = 255.0;
   20558                               #        Color.Builder resultBuilder =
   20559                               #            Color
   20560                               #                .newBuilder()
   20561                               #                .setRed(red / denominator)
   20562                               #                .setGreen(green / denominator)
   20563                               #                .setBlue(blue / denominator);
   20564                               #        int alpha = color.getAlpha();
   20565                               #        if (alpha != 255) {
   20566                               #          result.setAlpha(
   20567                               #              FloatValue
   20568                               #                  .newBuilder()
   20569                               #                  .setValue(((float) alpha) / denominator)
   20570                               #                  .build());
   20571                               #        }
   20572                               #        return resultBuilder.build();
   20573                               #      }
   20574                               #      // ...
   20575                               #
   20576                               # Example (iOS / Obj-C):
   20577                               #
   20578                               #      // ...
   20579                               #      static UIColor* fromProto(Color* protocolor) {
   20580                               #         float red = [protocolor red];
   20581                               #         float green = [protocolor green];
   20582                               #         float blue = [protocolor blue];
   20583                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   20584                               #         float alpha = 1.0;
   20585                               #         if (alpha_wrapper != nil) {
   20586                               #           alpha = [alpha_wrapper value];
   20587                               #         }
   20588                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   20589                               #      }
   20590                               #
   20591                               #      static Color* toProto(UIColor* color) {
   20592                               #          CGFloat red, green, blue, alpha;
   20593                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   20594                               #            return nil;
   20595                               #          }
   20596                               #          Color* result = [Color alloc] init];
   20597                               #          [result setRed:red];
   20598                               #          [result setGreen:green];
   20599                               #          [result setBlue:blue];
   20600                               #          if (alpha <= 0.9999) {
   20601                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   20602                               #          }
   20603                               #          [result autorelease];
   20604                               #          return result;
   20605                               #     }
   20606                               #     // ...
   20607                               #
   20608                               #  Example (JavaScript):
   20609                               #
   20610                               #     // ...
   20611                               #
   20612                               #     var protoToCssColor = function(rgb_color) {
   20613                               #        var redFrac = rgb_color.red || 0.0;
   20614                               #        var greenFrac = rgb_color.green || 0.0;
   20615                               #        var blueFrac = rgb_color.blue || 0.0;
   20616                               #        var red = Math.floor(redFrac * 255);
   20617                               #        var green = Math.floor(greenFrac * 255);
   20618                               #        var blue = Math.floor(blueFrac * 255);
   20619                               #
   20620                               #        if (!('alpha' in rgb_color)) {
   20621                               #           return rgbToCssColor_(red, green, blue);
   20622                               #        }
   20623                               #
   20624                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   20625                               #        var rgbParams = [red, green, blue].join(',');
   20626                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   20627                               #     };
   20628                               #
   20629                               #     var rgbToCssColor_ = function(red, green, blue) {
   20630                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   20631                               #       var hexString = rgbNumber.toString(16);
   20632                               #       var missingZeros = 6 - hexString.length;
   20633                               #       var resultBuilder = ['#'];
   20634                               #       for (var i = 0; i < missingZeros; i++) {
   20635                               #          resultBuilder.push('0');
   20636                               #       }
   20637                               #       resultBuilder.push(hexString);
   20638                               #       return resultBuilder.join('');
   20639                               #     };
   20640                               #
   20641                               #     // ...
   20642                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   20643                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   20644                                 # the final pixel color is defined by the equation:
   20645                                 #
   20646                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   20647                                 #
   20648                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   20649                                 # a value of 0.0 corresponds to a completely transparent color. This
   20650                                 # uses a wrapper message rather than a simple float scalar so that it is
   20651                                 # possible to distinguish between a default value and the value being unset.
   20652                                 # If omitted, this color object is to be rendered as a solid color
   20653                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   20654                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   20655                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   20656                           },
   20657                           "bold": True or False, # True if the text is bold.
   20658                           "strikethrough": True or False, # True if the text has a strikethrough.
   20659                           "fontFamily": "A String", # The font family.
   20660                           "fontSize": 42, # The size of the font.
   20661                           "italic": True or False, # True if the text is italicized.
   20662                           "underline": True or False, # True if the text is underlined.
   20663                         },
   20664                         "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   20665                           "angle": 42, # The angle between the standard orientation and the desired orientation.
   20666                               # Measured in degrees. Valid values are between -90 and 90. Positive
   20667                               # angles are angled upwards, negative are angled downwards.
   20668                               #
   20669                               # Note: For LTR text direction positive angles are in the counterclockwise
   20670                               # direction, whereas for RTL they are in the clockwise direction
   20671                           "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   20672                               # characters is unchanged.
   20673                               # For example:
   20674                               #
   20675                               #     | V |
   20676                               #     | e |
   20677                               #     | r |
   20678                               #     | t |
   20679                               #     | i |
   20680                               #     | c |
   20681                               #     | a |
   20682                               #     | l |
   20683                         },
   20684                         "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   20685                         "borders": { # The borders of the cell. # The borders of the cell.
   20686                           "top": { # A border along a cell. # The top border of the cell.
   20687                             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   20688                                 # for simplicity of conversion to/from color representations in various
   20689                                 # languages over compactness; for example, the fields of this representation
   20690                                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   20691                                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   20692                                 # method in iOS; and, with just a little work, it can be easily formatted into
   20693                                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   20694                                 #
   20695                                 # Example (Java):
   20696                                 #
   20697                                 #      import com.google.type.Color;
   20698                                 #
   20699                                 #      // ...
   20700                                 #      public static java.awt.Color fromProto(Color protocolor) {
   20701                                 #        float alpha = protocolor.hasAlpha()
   20702                                 #            ? protocolor.getAlpha().getValue()
   20703                                 #            : 1.0;
   20704                                 #
   20705                                 #        return new java.awt.Color(
   20706                                 #            protocolor.getRed(),
   20707                                 #            protocolor.getGreen(),
   20708                                 #            protocolor.getBlue(),
   20709                                 #            alpha);
   20710                                 #      }
   20711                                 #
   20712                                 #      public static Color toProto(java.awt.Color color) {
   20713                                 #        float red = (float) color.getRed();
   20714                                 #        float green = (float) color.getGreen();
   20715                                 #        float blue = (float) color.getBlue();
   20716                                 #        float denominator = 255.0;
   20717                                 #        Color.Builder resultBuilder =
   20718                                 #            Color
   20719                                 #                .newBuilder()
   20720                                 #                .setRed(red / denominator)
   20721                                 #                .setGreen(green / denominator)
   20722                                 #                .setBlue(blue / denominator);
   20723                                 #        int alpha = color.getAlpha();
   20724                                 #        if (alpha != 255) {
   20725                                 #          result.setAlpha(
   20726                                 #              FloatValue
   20727                                 #                  .newBuilder()
   20728                                 #                  .setValue(((float) alpha) / denominator)
   20729                                 #                  .build());
   20730                                 #        }
   20731                                 #        return resultBuilder.build();
   20732                                 #      }
   20733                                 #      // ...
   20734                                 #
   20735                                 # Example (iOS / Obj-C):
   20736                                 #
   20737                                 #      // ...
   20738                                 #      static UIColor* fromProto(Color* protocolor) {
   20739                                 #         float red = [protocolor red];
   20740                                 #         float green = [protocolor green];
   20741                                 #         float blue = [protocolor blue];
   20742                                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   20743                                 #         float alpha = 1.0;
   20744                                 #         if (alpha_wrapper != nil) {
   20745                                 #           alpha = [alpha_wrapper value];
   20746                                 #         }
   20747                                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   20748                                 #      }
   20749                                 #
   20750                                 #      static Color* toProto(UIColor* color) {
   20751                                 #          CGFloat red, green, blue, alpha;
   20752                                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   20753                                 #            return nil;
   20754                                 #          }
   20755                                 #          Color* result = [Color alloc] init];
   20756                                 #          [result setRed:red];
   20757                                 #          [result setGreen:green];
   20758                                 #          [result setBlue:blue];
   20759                                 #          if (alpha <= 0.9999) {
   20760                                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   20761                                 #          }
   20762                                 #          [result autorelease];
   20763                                 #          return result;
   20764                                 #     }
   20765                                 #     // ...
   20766                                 #
   20767                                 #  Example (JavaScript):
   20768                                 #
   20769                                 #     // ...
   20770                                 #
   20771                                 #     var protoToCssColor = function(rgb_color) {
   20772                                 #        var redFrac = rgb_color.red || 0.0;
   20773                                 #        var greenFrac = rgb_color.green || 0.0;
   20774                                 #        var blueFrac = rgb_color.blue || 0.0;
   20775                                 #        var red = Math.floor(redFrac * 255);
   20776                                 #        var green = Math.floor(greenFrac * 255);
   20777                                 #        var blue = Math.floor(blueFrac * 255);
   20778                                 #
   20779                                 #        if (!('alpha' in rgb_color)) {
   20780                                 #           return rgbToCssColor_(red, green, blue);
   20781                                 #        }
   20782                                 #
   20783                                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   20784                                 #        var rgbParams = [red, green, blue].join(',');
   20785                                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   20786                                 #     };
   20787                                 #
   20788                                 #     var rgbToCssColor_ = function(red, green, blue) {
   20789                                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   20790                                 #       var hexString = rgbNumber.toString(16);
   20791                                 #       var missingZeros = 6 - hexString.length;
   20792                                 #       var resultBuilder = ['#'];
   20793                                 #       for (var i = 0; i < missingZeros; i++) {
   20794                                 #          resultBuilder.push('0');
   20795                                 #       }
   20796                                 #       resultBuilder.push(hexString);
   20797                                 #       return resultBuilder.join('');
   20798                                 #     };
   20799                                 #
   20800                                 #     // ...
   20801                               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   20802                               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   20803                                   # the final pixel color is defined by the equation:
   20804                                   #
   20805                                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   20806                                   #
   20807                                   # This means that a value of 1.0 corresponds to a solid color, whereas
   20808                                   # a value of 0.0 corresponds to a completely transparent color. This
   20809                                   # uses a wrapper message rather than a simple float scalar so that it is
   20810                                   # possible to distinguish between a default value and the value being unset.
   20811                                   # If omitted, this color object is to be rendered as a solid color
   20812                                   # (as if the alpha value had been explicitly given with a value of 1.0).
   20813                               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   20814                               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   20815                             },
   20816                             "width": 42, # The width of the border, in pixels.
   20817                                 # Deprecated; the width is determined by the "style" field.
   20818                             "style": "A String", # The style of the border.
   20819                           },
   20820                           "right": { # A border along a cell. # The right border of the cell.
   20821                             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   20822                                 # for simplicity of conversion to/from color representations in various
   20823                                 # languages over compactness; for example, the fields of this representation
   20824                                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   20825                                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   20826                                 # method in iOS; and, with just a little work, it can be easily formatted into
   20827                                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   20828                                 #
   20829                                 # Example (Java):
   20830                                 #
   20831                                 #      import com.google.type.Color;
   20832                                 #
   20833                                 #      // ...
   20834                                 #      public static java.awt.Color fromProto(Color protocolor) {
   20835                                 #        float alpha = protocolor.hasAlpha()
   20836                                 #            ? protocolor.getAlpha().getValue()
   20837                                 #            : 1.0;
   20838                                 #
   20839                                 #        return new java.awt.Color(
   20840                                 #            protocolor.getRed(),
   20841                                 #            protocolor.getGreen(),
   20842                                 #            protocolor.getBlue(),
   20843                                 #            alpha);
   20844                                 #      }
   20845                                 #
   20846                                 #      public static Color toProto(java.awt.Color color) {
   20847                                 #        float red = (float) color.getRed();
   20848                                 #        float green = (float) color.getGreen();
   20849                                 #        float blue = (float) color.getBlue();
   20850                                 #        float denominator = 255.0;
   20851                                 #        Color.Builder resultBuilder =
   20852                                 #            Color
   20853                                 #                .newBuilder()
   20854                                 #                .setRed(red / denominator)
   20855                                 #                .setGreen(green / denominator)
   20856                                 #                .setBlue(blue / denominator);
   20857                                 #        int alpha = color.getAlpha();
   20858                                 #        if (alpha != 255) {
   20859                                 #          result.setAlpha(
   20860                                 #              FloatValue
   20861                                 #                  .newBuilder()
   20862                                 #                  .setValue(((float) alpha) / denominator)
   20863                                 #                  .build());
   20864                                 #        }
   20865                                 #        return resultBuilder.build();
   20866                                 #      }
   20867                                 #      // ...
   20868                                 #
   20869                                 # Example (iOS / Obj-C):
   20870                                 #
   20871                                 #      // ...
   20872                                 #      static UIColor* fromProto(Color* protocolor) {
   20873                                 #         float red = [protocolor red];
   20874                                 #         float green = [protocolor green];
   20875                                 #         float blue = [protocolor blue];
   20876                                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   20877                                 #         float alpha = 1.0;
   20878                                 #         if (alpha_wrapper != nil) {
   20879                                 #           alpha = [alpha_wrapper value];
   20880                                 #         }
   20881                                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   20882                                 #      }
   20883                                 #
   20884                                 #      static Color* toProto(UIColor* color) {
   20885                                 #          CGFloat red, green, blue, alpha;
   20886                                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   20887                                 #            return nil;
   20888                                 #          }
   20889                                 #          Color* result = [Color alloc] init];
   20890                                 #          [result setRed:red];
   20891                                 #          [result setGreen:green];
   20892                                 #          [result setBlue:blue];
   20893                                 #          if (alpha <= 0.9999) {
   20894                                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   20895                                 #          }
   20896                                 #          [result autorelease];
   20897                                 #          return result;
   20898                                 #     }
   20899                                 #     // ...
   20900                                 #
   20901                                 #  Example (JavaScript):
   20902                                 #
   20903                                 #     // ...
   20904                                 #
   20905                                 #     var protoToCssColor = function(rgb_color) {
   20906                                 #        var redFrac = rgb_color.red || 0.0;
   20907                                 #        var greenFrac = rgb_color.green || 0.0;
   20908                                 #        var blueFrac = rgb_color.blue || 0.0;
   20909                                 #        var red = Math.floor(redFrac * 255);
   20910                                 #        var green = Math.floor(greenFrac * 255);
   20911                                 #        var blue = Math.floor(blueFrac * 255);
   20912                                 #
   20913                                 #        if (!('alpha' in rgb_color)) {
   20914                                 #           return rgbToCssColor_(red, green, blue);
   20915                                 #        }
   20916                                 #
   20917                                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   20918                                 #        var rgbParams = [red, green, blue].join(',');
   20919                                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   20920                                 #     };
   20921                                 #
   20922                                 #     var rgbToCssColor_ = function(red, green, blue) {
   20923                                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   20924                                 #       var hexString = rgbNumber.toString(16);
   20925                                 #       var missingZeros = 6 - hexString.length;
   20926                                 #       var resultBuilder = ['#'];
   20927                                 #       for (var i = 0; i < missingZeros; i++) {
   20928                                 #          resultBuilder.push('0');
   20929                                 #       }
   20930                                 #       resultBuilder.push(hexString);
   20931                                 #       return resultBuilder.join('');
   20932                                 #     };
   20933                                 #
   20934                                 #     // ...
   20935                               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   20936                               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   20937                                   # the final pixel color is defined by the equation:
   20938                                   #
   20939                                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   20940                                   #
   20941                                   # This means that a value of 1.0 corresponds to a solid color, whereas
   20942                                   # a value of 0.0 corresponds to a completely transparent color. This
   20943                                   # uses a wrapper message rather than a simple float scalar so that it is
   20944                                   # possible to distinguish between a default value and the value being unset.
   20945                                   # If omitted, this color object is to be rendered as a solid color
   20946                                   # (as if the alpha value had been explicitly given with a value of 1.0).
   20947                               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   20948                               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   20949                             },
   20950                             "width": 42, # The width of the border, in pixels.
   20951                                 # Deprecated; the width is determined by the "style" field.
   20952                             "style": "A String", # The style of the border.
   20953                           },
   20954                           "bottom": { # A border along a cell. # The bottom border of the cell.
   20955                             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   20956                                 # for simplicity of conversion to/from color representations in various
   20957                                 # languages over compactness; for example, the fields of this representation
   20958                                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   20959                                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   20960                                 # method in iOS; and, with just a little work, it can be easily formatted into
   20961                                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   20962                                 #
   20963                                 # Example (Java):
   20964                                 #
   20965                                 #      import com.google.type.Color;
   20966                                 #
   20967                                 #      // ...
   20968                                 #      public static java.awt.Color fromProto(Color protocolor) {
   20969                                 #        float alpha = protocolor.hasAlpha()
   20970                                 #            ? protocolor.getAlpha().getValue()
   20971                                 #            : 1.0;
   20972                                 #
   20973                                 #        return new java.awt.Color(
   20974                                 #            protocolor.getRed(),
   20975                                 #            protocolor.getGreen(),
   20976                                 #            protocolor.getBlue(),
   20977                                 #            alpha);
   20978                                 #      }
   20979                                 #
   20980                                 #      public static Color toProto(java.awt.Color color) {
   20981                                 #        float red = (float) color.getRed();
   20982                                 #        float green = (float) color.getGreen();
   20983                                 #        float blue = (float) color.getBlue();
   20984                                 #        float denominator = 255.0;
   20985                                 #        Color.Builder resultBuilder =
   20986                                 #            Color
   20987                                 #                .newBuilder()
   20988                                 #                .setRed(red / denominator)
   20989                                 #                .setGreen(green / denominator)
   20990                                 #                .setBlue(blue / denominator);
   20991                                 #        int alpha = color.getAlpha();
   20992                                 #        if (alpha != 255) {
   20993                                 #          result.setAlpha(
   20994                                 #              FloatValue
   20995                                 #                  .newBuilder()
   20996                                 #                  .setValue(((float) alpha) / denominator)
   20997                                 #                  .build());
   20998                                 #        }
   20999                                 #        return resultBuilder.build();
   21000                                 #      }
   21001                                 #      // ...
   21002                                 #
   21003                                 # Example (iOS / Obj-C):
   21004                                 #
   21005                                 #      // ...
   21006                                 #      static UIColor* fromProto(Color* protocolor) {
   21007                                 #         float red = [protocolor red];
   21008                                 #         float green = [protocolor green];
   21009                                 #         float blue = [protocolor blue];
   21010                                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   21011                                 #         float alpha = 1.0;
   21012                                 #         if (alpha_wrapper != nil) {
   21013                                 #           alpha = [alpha_wrapper value];
   21014                                 #         }
   21015                                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   21016                                 #      }
   21017                                 #
   21018                                 #      static Color* toProto(UIColor* color) {
   21019                                 #          CGFloat red, green, blue, alpha;
   21020                                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   21021                                 #            return nil;
   21022                                 #          }
   21023                                 #          Color* result = [Color alloc] init];
   21024                                 #          [result setRed:red];
   21025                                 #          [result setGreen:green];
   21026                                 #          [result setBlue:blue];
   21027                                 #          if (alpha <= 0.9999) {
   21028                                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   21029                                 #          }
   21030                                 #          [result autorelease];
   21031                                 #          return result;
   21032                                 #     }
   21033                                 #     // ...
   21034                                 #
   21035                                 #  Example (JavaScript):
   21036                                 #
   21037                                 #     // ...
   21038                                 #
   21039                                 #     var protoToCssColor = function(rgb_color) {
   21040                                 #        var redFrac = rgb_color.red || 0.0;
   21041                                 #        var greenFrac = rgb_color.green || 0.0;
   21042                                 #        var blueFrac = rgb_color.blue || 0.0;
   21043                                 #        var red = Math.floor(redFrac * 255);
   21044                                 #        var green = Math.floor(greenFrac * 255);
   21045                                 #        var blue = Math.floor(blueFrac * 255);
   21046                                 #
   21047                                 #        if (!('alpha' in rgb_color)) {
   21048                                 #           return rgbToCssColor_(red, green, blue);
   21049                                 #        }
   21050                                 #
   21051                                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   21052                                 #        var rgbParams = [red, green, blue].join(',');
   21053                                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   21054                                 #     };
   21055                                 #
   21056                                 #     var rgbToCssColor_ = function(red, green, blue) {
   21057                                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   21058                                 #       var hexString = rgbNumber.toString(16);
   21059                                 #       var missingZeros = 6 - hexString.length;
   21060                                 #       var resultBuilder = ['#'];
   21061                                 #       for (var i = 0; i < missingZeros; i++) {
   21062                                 #          resultBuilder.push('0');
   21063                                 #       }
   21064                                 #       resultBuilder.push(hexString);
   21065                                 #       return resultBuilder.join('');
   21066                                 #     };
   21067                                 #
   21068                                 #     // ...
   21069                               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   21070                               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   21071                                   # the final pixel color is defined by the equation:
   21072                                   #
   21073                                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   21074                                   #
   21075                                   # This means that a value of 1.0 corresponds to a solid color, whereas
   21076                                   # a value of 0.0 corresponds to a completely transparent color. This
   21077                                   # uses a wrapper message rather than a simple float scalar so that it is
   21078                                   # possible to distinguish between a default value and the value being unset.
   21079                                   # If omitted, this color object is to be rendered as a solid color
   21080                                   # (as if the alpha value had been explicitly given with a value of 1.0).
   21081                               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   21082                               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   21083                             },
   21084                             "width": 42, # The width of the border, in pixels.
   21085                                 # Deprecated; the width is determined by the "style" field.
   21086                             "style": "A String", # The style of the border.
   21087                           },
   21088                           "left": { # A border along a cell. # The left border of the cell.
   21089                             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   21090                                 # for simplicity of conversion to/from color representations in various
   21091                                 # languages over compactness; for example, the fields of this representation
   21092                                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   21093                                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   21094                                 # method in iOS; and, with just a little work, it can be easily formatted into
   21095                                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   21096                                 #
   21097                                 # Example (Java):
   21098                                 #
   21099                                 #      import com.google.type.Color;
   21100                                 #
   21101                                 #      // ...
   21102                                 #      public static java.awt.Color fromProto(Color protocolor) {
   21103                                 #        float alpha = protocolor.hasAlpha()
   21104                                 #            ? protocolor.getAlpha().getValue()
   21105                                 #            : 1.0;
   21106                                 #
   21107                                 #        return new java.awt.Color(
   21108                                 #            protocolor.getRed(),
   21109                                 #            protocolor.getGreen(),
   21110                                 #            protocolor.getBlue(),
   21111                                 #            alpha);
   21112                                 #      }
   21113                                 #
   21114                                 #      public static Color toProto(java.awt.Color color) {
   21115                                 #        float red = (float) color.getRed();
   21116                                 #        float green = (float) color.getGreen();
   21117                                 #        float blue = (float) color.getBlue();
   21118                                 #        float denominator = 255.0;
   21119                                 #        Color.Builder resultBuilder =
   21120                                 #            Color
   21121                                 #                .newBuilder()
   21122                                 #                .setRed(red / denominator)
   21123                                 #                .setGreen(green / denominator)
   21124                                 #                .setBlue(blue / denominator);
   21125                                 #        int alpha = color.getAlpha();
   21126                                 #        if (alpha != 255) {
   21127                                 #          result.setAlpha(
   21128                                 #              FloatValue
   21129                                 #                  .newBuilder()
   21130                                 #                  .setValue(((float) alpha) / denominator)
   21131                                 #                  .build());
   21132                                 #        }
   21133                                 #        return resultBuilder.build();
   21134                                 #      }
   21135                                 #      // ...
   21136                                 #
   21137                                 # Example (iOS / Obj-C):
   21138                                 #
   21139                                 #      // ...
   21140                                 #      static UIColor* fromProto(Color* protocolor) {
   21141                                 #         float red = [protocolor red];
   21142                                 #         float green = [protocolor green];
   21143                                 #         float blue = [protocolor blue];
   21144                                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   21145                                 #         float alpha = 1.0;
   21146                                 #         if (alpha_wrapper != nil) {
   21147                                 #           alpha = [alpha_wrapper value];
   21148                                 #         }
   21149                                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   21150                                 #      }
   21151                                 #
   21152                                 #      static Color* toProto(UIColor* color) {
   21153                                 #          CGFloat red, green, blue, alpha;
   21154                                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   21155                                 #            return nil;
   21156                                 #          }
   21157                                 #          Color* result = [Color alloc] init];
   21158                                 #          [result setRed:red];
   21159                                 #          [result setGreen:green];
   21160                                 #          [result setBlue:blue];
   21161                                 #          if (alpha <= 0.9999) {
   21162                                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   21163                                 #          }
   21164                                 #          [result autorelease];
   21165                                 #          return result;
   21166                                 #     }
   21167                                 #     // ...
   21168                                 #
   21169                                 #  Example (JavaScript):
   21170                                 #
   21171                                 #     // ...
   21172                                 #
   21173                                 #     var protoToCssColor = function(rgb_color) {
   21174                                 #        var redFrac = rgb_color.red || 0.0;
   21175                                 #        var greenFrac = rgb_color.green || 0.0;
   21176                                 #        var blueFrac = rgb_color.blue || 0.0;
   21177                                 #        var red = Math.floor(redFrac * 255);
   21178                                 #        var green = Math.floor(greenFrac * 255);
   21179                                 #        var blue = Math.floor(blueFrac * 255);
   21180                                 #
   21181                                 #        if (!('alpha' in rgb_color)) {
   21182                                 #           return rgbToCssColor_(red, green, blue);
   21183                                 #        }
   21184                                 #
   21185                                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   21186                                 #        var rgbParams = [red, green, blue].join(',');
   21187                                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   21188                                 #     };
   21189                                 #
   21190                                 #     var rgbToCssColor_ = function(red, green, blue) {
   21191                                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   21192                                 #       var hexString = rgbNumber.toString(16);
   21193                                 #       var missingZeros = 6 - hexString.length;
   21194                                 #       var resultBuilder = ['#'];
   21195                                 #       for (var i = 0; i < missingZeros; i++) {
   21196                                 #          resultBuilder.push('0');
   21197                                 #       }
   21198                                 #       resultBuilder.push(hexString);
   21199                                 #       return resultBuilder.join('');
   21200                                 #     };
   21201                                 #
   21202                                 #     // ...
   21203                               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   21204                               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   21205                                   # the final pixel color is defined by the equation:
   21206                                   #
   21207                                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   21208                                   #
   21209                                   # This means that a value of 1.0 corresponds to a solid color, whereas
   21210                                   # a value of 0.0 corresponds to a completely transparent color. This
   21211                                   # uses a wrapper message rather than a simple float scalar so that it is
   21212                                   # possible to distinguish between a default value and the value being unset.
   21213                                   # If omitted, this color object is to be rendered as a solid color
   21214                                   # (as if the alpha value had been explicitly given with a value of 1.0).
   21215                               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   21216                               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   21217                             },
   21218                             "width": 42, # The width of the border, in pixels.
   21219                                 # Deprecated; the width is determined by the "style" field.
   21220                             "style": "A String", # The style of the border.
   21221                           },
   21222                         },
   21223                         "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   21224                       },
   21225                       "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
   21226                           #
   21227                           # When writing, the new format will be merged with the existing format.
   21228                         "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   21229                           "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   21230                               # the user's locale will be used if necessary for the given type.
   21231                               # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   21232                               # information about the supported patterns.
   21233                           "type": "A String", # The type of the number format.
   21234                               # When writing, this field must be set.
   21235                         },
   21236                         "textDirection": "A String", # The direction of the text in the cell.
   21237                         "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   21238                             # When updating padding, every field must be specified.
   21239                           "top": 42, # The top padding of the cell.
   21240                           "right": 42, # The right padding of the cell.
   21241                           "bottom": 42, # The bottom padding of the cell.
   21242                           "left": 42, # The left padding of the cell.
   21243                         },
   21244                         "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   21245                         "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   21246                             # for simplicity of conversion to/from color representations in various
   21247                             # languages over compactness; for example, the fields of this representation
   21248                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   21249                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   21250                             # method in iOS; and, with just a little work, it can be easily formatted into
   21251                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   21252                             #
   21253                             # Example (Java):
   21254                             #
   21255                             #      import com.google.type.Color;
   21256                             #
   21257                             #      // ...
   21258                             #      public static java.awt.Color fromProto(Color protocolor) {
   21259                             #        float alpha = protocolor.hasAlpha()
   21260                             #            ? protocolor.getAlpha().getValue()
   21261                             #            : 1.0;
   21262                             #
   21263                             #        return new java.awt.Color(
   21264                             #            protocolor.getRed(),
   21265                             #            protocolor.getGreen(),
   21266                             #            protocolor.getBlue(),
   21267                             #            alpha);
   21268                             #      }
   21269                             #
   21270                             #      public static Color toProto(java.awt.Color color) {
   21271                             #        float red = (float) color.getRed();
   21272                             #        float green = (float) color.getGreen();
   21273                             #        float blue = (float) color.getBlue();
   21274                             #        float denominator = 255.0;
   21275                             #        Color.Builder resultBuilder =
   21276                             #            Color
   21277                             #                .newBuilder()
   21278                             #                .setRed(red / denominator)
   21279                             #                .setGreen(green / denominator)
   21280                             #                .setBlue(blue / denominator);
   21281                             #        int alpha = color.getAlpha();
   21282                             #        if (alpha != 255) {
   21283                             #          result.setAlpha(
   21284                             #              FloatValue
   21285                             #                  .newBuilder()
   21286                             #                  .setValue(((float) alpha) / denominator)
   21287                             #                  .build());
   21288                             #        }
   21289                             #        return resultBuilder.build();
   21290                             #      }
   21291                             #      // ...
   21292                             #
   21293                             # Example (iOS / Obj-C):
   21294                             #
   21295                             #      // ...
   21296                             #      static UIColor* fromProto(Color* protocolor) {
   21297                             #         float red = [protocolor red];
   21298                             #         float green = [protocolor green];
   21299                             #         float blue = [protocolor blue];
   21300                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   21301                             #         float alpha = 1.0;
   21302                             #         if (alpha_wrapper != nil) {
   21303                             #           alpha = [alpha_wrapper value];
   21304                             #         }
   21305                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   21306                             #      }
   21307                             #
   21308                             #      static Color* toProto(UIColor* color) {
   21309                             #          CGFloat red, green, blue, alpha;
   21310                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   21311                             #            return nil;
   21312                             #          }
   21313                             #          Color* result = [Color alloc] init];
   21314                             #          [result setRed:red];
   21315                             #          [result setGreen:green];
   21316                             #          [result setBlue:blue];
   21317                             #          if (alpha <= 0.9999) {
   21318                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   21319                             #          }
   21320                             #          [result autorelease];
   21321                             #          return result;
   21322                             #     }
   21323                             #     // ...
   21324                             #
   21325                             #  Example (JavaScript):
   21326                             #
   21327                             #     // ...
   21328                             #
   21329                             #     var protoToCssColor = function(rgb_color) {
   21330                             #        var redFrac = rgb_color.red || 0.0;
   21331                             #        var greenFrac = rgb_color.green || 0.0;
   21332                             #        var blueFrac = rgb_color.blue || 0.0;
   21333                             #        var red = Math.floor(redFrac * 255);
   21334                             #        var green = Math.floor(greenFrac * 255);
   21335                             #        var blue = Math.floor(blueFrac * 255);
   21336                             #
   21337                             #        if (!('alpha' in rgb_color)) {
   21338                             #           return rgbToCssColor_(red, green, blue);
   21339                             #        }
   21340                             #
   21341                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   21342                             #        var rgbParams = [red, green, blue].join(',');
   21343                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   21344                             #     };
   21345                             #
   21346                             #     var rgbToCssColor_ = function(red, green, blue) {
   21347                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   21348                             #       var hexString = rgbNumber.toString(16);
   21349                             #       var missingZeros = 6 - hexString.length;
   21350                             #       var resultBuilder = ['#'];
   21351                             #       for (var i = 0; i < missingZeros; i++) {
   21352                             #          resultBuilder.push('0');
   21353                             #       }
   21354                             #       resultBuilder.push(hexString);
   21355                             #       return resultBuilder.join('');
   21356                             #     };
   21357                             #
   21358                             #     // ...
   21359                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   21360                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   21361                               # the final pixel color is defined by the equation:
   21362                               #
   21363                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   21364                               #
   21365                               # This means that a value of 1.0 corresponds to a solid color, whereas
   21366                               # a value of 0.0 corresponds to a completely transparent color. This
   21367                               # uses a wrapper message rather than a simple float scalar so that it is
   21368                               # possible to distinguish between a default value and the value being unset.
   21369                               # If omitted, this color object is to be rendered as a solid color
   21370                               # (as if the alpha value had been explicitly given with a value of 1.0).
   21371                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   21372                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   21373                         },
   21374                         "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   21375                         "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   21376                             # Absent values indicate that the field isn't specified.
   21377                           "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   21378                               # for simplicity of conversion to/from color representations in various
   21379                               # languages over compactness; for example, the fields of this representation
   21380                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   21381                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   21382                               # method in iOS; and, with just a little work, it can be easily formatted into
   21383                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   21384                               #
   21385                               # Example (Java):
   21386                               #
   21387                               #      import com.google.type.Color;
   21388                               #
   21389                               #      // ...
   21390                               #      public static java.awt.Color fromProto(Color protocolor) {
   21391                               #        float alpha = protocolor.hasAlpha()
   21392                               #            ? protocolor.getAlpha().getValue()
   21393                               #            : 1.0;
   21394                               #
   21395                               #        return new java.awt.Color(
   21396                               #            protocolor.getRed(),
   21397                               #            protocolor.getGreen(),
   21398                               #            protocolor.getBlue(),
   21399                               #            alpha);
   21400                               #      }
   21401                               #
   21402                               #      public static Color toProto(java.awt.Color color) {
   21403                               #        float red = (float) color.getRed();
   21404                               #        float green = (float) color.getGreen();
   21405                               #        float blue = (float) color.getBlue();
   21406                               #        float denominator = 255.0;
   21407                               #        Color.Builder resultBuilder =
   21408                               #            Color
   21409                               #                .newBuilder()
   21410                               #                .setRed(red / denominator)
   21411                               #                .setGreen(green / denominator)
   21412                               #                .setBlue(blue / denominator);
   21413                               #        int alpha = color.getAlpha();
   21414                               #        if (alpha != 255) {
   21415                               #          result.setAlpha(
   21416                               #              FloatValue
   21417                               #                  .newBuilder()
   21418                               #                  .setValue(((float) alpha) / denominator)
   21419                               #                  .build());
   21420                               #        }
   21421                               #        return resultBuilder.build();
   21422                               #      }
   21423                               #      // ...
   21424                               #
   21425                               # Example (iOS / Obj-C):
   21426                               #
   21427                               #      // ...
   21428                               #      static UIColor* fromProto(Color* protocolor) {
   21429                               #         float red = [protocolor red];
   21430                               #         float green = [protocolor green];
   21431                               #         float blue = [protocolor blue];
   21432                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   21433                               #         float alpha = 1.0;
   21434                               #         if (alpha_wrapper != nil) {
   21435                               #           alpha = [alpha_wrapper value];
   21436                               #         }
   21437                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   21438                               #      }
   21439                               #
   21440                               #      static Color* toProto(UIColor* color) {
   21441                               #          CGFloat red, green, blue, alpha;
   21442                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   21443                               #            return nil;
   21444                               #          }
   21445                               #          Color* result = [Color alloc] init];
   21446                               #          [result setRed:red];
   21447                               #          [result setGreen:green];
   21448                               #          [result setBlue:blue];
   21449                               #          if (alpha <= 0.9999) {
   21450                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   21451                               #          }
   21452                               #          [result autorelease];
   21453                               #          return result;
   21454                               #     }
   21455                               #     // ...
   21456                               #
   21457                               #  Example (JavaScript):
   21458                               #
   21459                               #     // ...
   21460                               #
   21461                               #     var protoToCssColor = function(rgb_color) {
   21462                               #        var redFrac = rgb_color.red || 0.0;
   21463                               #        var greenFrac = rgb_color.green || 0.0;
   21464                               #        var blueFrac = rgb_color.blue || 0.0;
   21465                               #        var red = Math.floor(redFrac * 255);
   21466                               #        var green = Math.floor(greenFrac * 255);
   21467                               #        var blue = Math.floor(blueFrac * 255);
   21468                               #
   21469                               #        if (!('alpha' in rgb_color)) {
   21470                               #           return rgbToCssColor_(red, green, blue);
   21471                               #        }
   21472                               #
   21473                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   21474                               #        var rgbParams = [red, green, blue].join(',');
   21475                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   21476                               #     };
   21477                               #
   21478                               #     var rgbToCssColor_ = function(red, green, blue) {
   21479                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   21480                               #       var hexString = rgbNumber.toString(16);
   21481                               #       var missingZeros = 6 - hexString.length;
   21482                               #       var resultBuilder = ['#'];
   21483                               #       for (var i = 0; i < missingZeros; i++) {
   21484                               #          resultBuilder.push('0');
   21485                               #       }
   21486                               #       resultBuilder.push(hexString);
   21487                               #       return resultBuilder.join('');
   21488                               #     };
   21489                               #
   21490                               #     // ...
   21491                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   21492                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   21493                                 # the final pixel color is defined by the equation:
   21494                                 #
   21495                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   21496                                 #
   21497                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   21498                                 # a value of 0.0 corresponds to a completely transparent color. This
   21499                                 # uses a wrapper message rather than a simple float scalar so that it is
   21500                                 # possible to distinguish between a default value and the value being unset.
   21501                                 # If omitted, this color object is to be rendered as a solid color
   21502                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   21503                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   21504                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   21505                           },
   21506                           "bold": True or False, # True if the text is bold.
   21507                           "strikethrough": True or False, # True if the text has a strikethrough.
   21508                           "fontFamily": "A String", # The font family.
   21509                           "fontSize": 42, # The size of the font.
   21510                           "italic": True or False, # True if the text is italicized.
   21511                           "underline": True or False, # True if the text is underlined.
   21512                         },
   21513                         "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   21514                           "angle": 42, # The angle between the standard orientation and the desired orientation.
   21515                               # Measured in degrees. Valid values are between -90 and 90. Positive
   21516                               # angles are angled upwards, negative are angled downwards.
   21517                               #
   21518                               # Note: For LTR text direction positive angles are in the counterclockwise
   21519                               # direction, whereas for RTL they are in the clockwise direction
   21520                           "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   21521                               # characters is unchanged.
   21522                               # For example:
   21523                               #
   21524                               #     | V |
   21525                               #     | e |
   21526                               #     | r |
   21527                               #     | t |
   21528                               #     | i |
   21529                               #     | c |
   21530                               #     | a |
   21531                               #     | l |
   21532                         },
   21533                         "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   21534                         "borders": { # The borders of the cell. # The borders of the cell.
   21535                           "top": { # A border along a cell. # The top border of the cell.
   21536                             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   21537                                 # for simplicity of conversion to/from color representations in various
   21538                                 # languages over compactness; for example, the fields of this representation
   21539                                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   21540                                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   21541                                 # method in iOS; and, with just a little work, it can be easily formatted into
   21542                                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   21543                                 #
   21544                                 # Example (Java):
   21545                                 #
   21546                                 #      import com.google.type.Color;
   21547                                 #
   21548                                 #      // ...
   21549                                 #      public static java.awt.Color fromProto(Color protocolor) {
   21550                                 #        float alpha = protocolor.hasAlpha()
   21551                                 #            ? protocolor.getAlpha().getValue()
   21552                                 #            : 1.0;
   21553                                 #
   21554                                 #        return new java.awt.Color(
   21555                                 #            protocolor.getRed(),
   21556                                 #            protocolor.getGreen(),
   21557                                 #            protocolor.getBlue(),
   21558                                 #            alpha);
   21559                                 #      }
   21560                                 #
   21561                                 #      public static Color toProto(java.awt.Color color) {
   21562                                 #        float red = (float) color.getRed();
   21563                                 #        float green = (float) color.getGreen();
   21564                                 #        float blue = (float) color.getBlue();
   21565                                 #        float denominator = 255.0;
   21566                                 #        Color.Builder resultBuilder =
   21567                                 #            Color
   21568                                 #                .newBuilder()
   21569                                 #                .setRed(red / denominator)
   21570                                 #                .setGreen(green / denominator)
   21571                                 #                .setBlue(blue / denominator);
   21572                                 #        int alpha = color.getAlpha();
   21573                                 #        if (alpha != 255) {
   21574                                 #          result.setAlpha(
   21575                                 #              FloatValue
   21576                                 #                  .newBuilder()
   21577                                 #                  .setValue(((float) alpha) / denominator)
   21578                                 #                  .build());
   21579                                 #        }
   21580                                 #        return resultBuilder.build();
   21581                                 #      }
   21582                                 #      // ...
   21583                                 #
   21584                                 # Example (iOS / Obj-C):
   21585                                 #
   21586                                 #      // ...
   21587                                 #      static UIColor* fromProto(Color* protocolor) {
   21588                                 #         float red = [protocolor red];
   21589                                 #         float green = [protocolor green];
   21590                                 #         float blue = [protocolor blue];
   21591                                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   21592                                 #         float alpha = 1.0;
   21593                                 #         if (alpha_wrapper != nil) {
   21594                                 #           alpha = [alpha_wrapper value];
   21595                                 #         }
   21596                                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   21597                                 #      }
   21598                                 #
   21599                                 #      static Color* toProto(UIColor* color) {
   21600                                 #          CGFloat red, green, blue, alpha;
   21601                                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   21602                                 #            return nil;
   21603                                 #          }
   21604                                 #          Color* result = [Color alloc] init];
   21605                                 #          [result setRed:red];
   21606                                 #          [result setGreen:green];
   21607                                 #          [result setBlue:blue];
   21608                                 #          if (alpha <= 0.9999) {
   21609                                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   21610                                 #          }
   21611                                 #          [result autorelease];
   21612                                 #          return result;
   21613                                 #     }
   21614                                 #     // ...
   21615                                 #
   21616                                 #  Example (JavaScript):
   21617                                 #
   21618                                 #     // ...
   21619                                 #
   21620                                 #     var protoToCssColor = function(rgb_color) {
   21621                                 #        var redFrac = rgb_color.red || 0.0;
   21622                                 #        var greenFrac = rgb_color.green || 0.0;
   21623                                 #        var blueFrac = rgb_color.blue || 0.0;
   21624                                 #        var red = Math.floor(redFrac * 255);
   21625                                 #        var green = Math.floor(greenFrac * 255);
   21626                                 #        var blue = Math.floor(blueFrac * 255);
   21627                                 #
   21628                                 #        if (!('alpha' in rgb_color)) {
   21629                                 #           return rgbToCssColor_(red, green, blue);
   21630                                 #        }
   21631                                 #
   21632                                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   21633                                 #        var rgbParams = [red, green, blue].join(',');
   21634                                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   21635                                 #     };
   21636                                 #
   21637                                 #     var rgbToCssColor_ = function(red, green, blue) {
   21638                                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   21639                                 #       var hexString = rgbNumber.toString(16);
   21640                                 #       var missingZeros = 6 - hexString.length;
   21641                                 #       var resultBuilder = ['#'];
   21642                                 #       for (var i = 0; i < missingZeros; i++) {
   21643                                 #          resultBuilder.push('0');
   21644                                 #       }
   21645                                 #       resultBuilder.push(hexString);
   21646                                 #       return resultBuilder.join('');
   21647                                 #     };
   21648                                 #
   21649                                 #     // ...
   21650                               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   21651                               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   21652                                   # the final pixel color is defined by the equation:
   21653                                   #
   21654                                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   21655                                   #
   21656                                   # This means that a value of 1.0 corresponds to a solid color, whereas
   21657                                   # a value of 0.0 corresponds to a completely transparent color. This
   21658                                   # uses a wrapper message rather than a simple float scalar so that it is
   21659                                   # possible to distinguish between a default value and the value being unset.
   21660                                   # If omitted, this color object is to be rendered as a solid color
   21661                                   # (as if the alpha value had been explicitly given with a value of 1.0).
   21662                               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   21663                               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   21664                             },
   21665                             "width": 42, # The width of the border, in pixels.
   21666                                 # Deprecated; the width is determined by the "style" field.
   21667                             "style": "A String", # The style of the border.
   21668                           },
   21669                           "right": { # A border along a cell. # The right border of the cell.
   21670                             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   21671                                 # for simplicity of conversion to/from color representations in various
   21672                                 # languages over compactness; for example, the fields of this representation
   21673                                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   21674                                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   21675                                 # method in iOS; and, with just a little work, it can be easily formatted into
   21676                                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   21677                                 #
   21678                                 # Example (Java):
   21679                                 #
   21680                                 #      import com.google.type.Color;
   21681                                 #
   21682                                 #      // ...
   21683                                 #      public static java.awt.Color fromProto(Color protocolor) {
   21684                                 #        float alpha = protocolor.hasAlpha()
   21685                                 #            ? protocolor.getAlpha().getValue()
   21686                                 #            : 1.0;
   21687                                 #
   21688                                 #        return new java.awt.Color(
   21689                                 #            protocolor.getRed(),
   21690                                 #            protocolor.getGreen(),
   21691                                 #            protocolor.getBlue(),
   21692                                 #            alpha);
   21693                                 #      }
   21694                                 #
   21695                                 #      public static Color toProto(java.awt.Color color) {
   21696                                 #        float red = (float) color.getRed();
   21697                                 #        float green = (float) color.getGreen();
   21698                                 #        float blue = (float) color.getBlue();
   21699                                 #        float denominator = 255.0;
   21700                                 #        Color.Builder resultBuilder =
   21701                                 #            Color
   21702                                 #                .newBuilder()
   21703                                 #                .setRed(red / denominator)
   21704                                 #                .setGreen(green / denominator)
   21705                                 #                .setBlue(blue / denominator);
   21706                                 #        int alpha = color.getAlpha();
   21707                                 #        if (alpha != 255) {
   21708                                 #          result.setAlpha(
   21709                                 #              FloatValue
   21710                                 #                  .newBuilder()
   21711                                 #                  .setValue(((float) alpha) / denominator)
   21712                                 #                  .build());
   21713                                 #        }
   21714                                 #        return resultBuilder.build();
   21715                                 #      }
   21716                                 #      // ...
   21717                                 #
   21718                                 # Example (iOS / Obj-C):
   21719                                 #
   21720                                 #      // ...
   21721                                 #      static UIColor* fromProto(Color* protocolor) {
   21722                                 #         float red = [protocolor red];
   21723                                 #         float green = [protocolor green];
   21724                                 #         float blue = [protocolor blue];
   21725                                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   21726                                 #         float alpha = 1.0;
   21727                                 #         if (alpha_wrapper != nil) {
   21728                                 #           alpha = [alpha_wrapper value];
   21729                                 #         }
   21730                                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   21731                                 #      }
   21732                                 #
   21733                                 #      static Color* toProto(UIColor* color) {
   21734                                 #          CGFloat red, green, blue, alpha;
   21735                                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   21736                                 #            return nil;
   21737                                 #          }
   21738                                 #          Color* result = [Color alloc] init];
   21739                                 #          [result setRed:red];
   21740                                 #          [result setGreen:green];
   21741                                 #          [result setBlue:blue];
   21742                                 #          if (alpha <= 0.9999) {
   21743                                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   21744                                 #          }
   21745                                 #          [result autorelease];
   21746                                 #          return result;
   21747                                 #     }
   21748                                 #     // ...
   21749                                 #
   21750                                 #  Example (JavaScript):
   21751                                 #
   21752                                 #     // ...
   21753                                 #
   21754                                 #     var protoToCssColor = function(rgb_color) {
   21755                                 #        var redFrac = rgb_color.red || 0.0;
   21756                                 #        var greenFrac = rgb_color.green || 0.0;
   21757                                 #        var blueFrac = rgb_color.blue || 0.0;
   21758                                 #        var red = Math.floor(redFrac * 255);
   21759                                 #        var green = Math.floor(greenFrac * 255);
   21760                                 #        var blue = Math.floor(blueFrac * 255);
   21761                                 #
   21762                                 #        if (!('alpha' in rgb_color)) {
   21763                                 #           return rgbToCssColor_(red, green, blue);
   21764                                 #        }
   21765                                 #
   21766                                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   21767                                 #        var rgbParams = [red, green, blue].join(',');
   21768                                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   21769                                 #     };
   21770                                 #
   21771                                 #     var rgbToCssColor_ = function(red, green, blue) {
   21772                                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   21773                                 #       var hexString = rgbNumber.toString(16);
   21774                                 #       var missingZeros = 6 - hexString.length;
   21775                                 #       var resultBuilder = ['#'];
   21776                                 #       for (var i = 0; i < missingZeros; i++) {
   21777                                 #          resultBuilder.push('0');
   21778                                 #       }
   21779                                 #       resultBuilder.push(hexString);
   21780                                 #       return resultBuilder.join('');
   21781                                 #     };
   21782                                 #
   21783                                 #     // ...
   21784                               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   21785                               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   21786                                   # the final pixel color is defined by the equation:
   21787                                   #
   21788                                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   21789                                   #
   21790                                   # This means that a value of 1.0 corresponds to a solid color, whereas
   21791                                   # a value of 0.0 corresponds to a completely transparent color. This
   21792                                   # uses a wrapper message rather than a simple float scalar so that it is
   21793                                   # possible to distinguish between a default value and the value being unset.
   21794                                   # If omitted, this color object is to be rendered as a solid color
   21795                                   # (as if the alpha value had been explicitly given with a value of 1.0).
   21796                               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   21797                               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   21798                             },
   21799                             "width": 42, # The width of the border, in pixels.
   21800                                 # Deprecated; the width is determined by the "style" field.
   21801                             "style": "A String", # The style of the border.
   21802                           },
   21803                           "bottom": { # A border along a cell. # The bottom border of the cell.
   21804                             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   21805                                 # for simplicity of conversion to/from color representations in various
   21806                                 # languages over compactness; for example, the fields of this representation
   21807                                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   21808                                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   21809                                 # method in iOS; and, with just a little work, it can be easily formatted into
   21810                                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   21811                                 #
   21812                                 # Example (Java):
   21813                                 #
   21814                                 #      import com.google.type.Color;
   21815                                 #
   21816                                 #      // ...
   21817                                 #      public static java.awt.Color fromProto(Color protocolor) {
   21818                                 #        float alpha = protocolor.hasAlpha()
   21819                                 #            ? protocolor.getAlpha().getValue()
   21820                                 #            : 1.0;
   21821                                 #
   21822                                 #        return new java.awt.Color(
   21823                                 #            protocolor.getRed(),
   21824                                 #            protocolor.getGreen(),
   21825                                 #            protocolor.getBlue(),
   21826                                 #            alpha);
   21827                                 #      }
   21828                                 #
   21829                                 #      public static Color toProto(java.awt.Color color) {
   21830                                 #        float red = (float) color.getRed();
   21831                                 #        float green = (float) color.getGreen();
   21832                                 #        float blue = (float) color.getBlue();
   21833                                 #        float denominator = 255.0;
   21834                                 #        Color.Builder resultBuilder =
   21835                                 #            Color
   21836                                 #                .newBuilder()
   21837                                 #                .setRed(red / denominator)
   21838                                 #                .setGreen(green / denominator)
   21839                                 #                .setBlue(blue / denominator);
   21840                                 #        int alpha = color.getAlpha();
   21841                                 #        if (alpha != 255) {
   21842                                 #          result.setAlpha(
   21843                                 #              FloatValue
   21844                                 #                  .newBuilder()
   21845                                 #                  .setValue(((float) alpha) / denominator)
   21846                                 #                  .build());
   21847                                 #        }
   21848                                 #        return resultBuilder.build();
   21849                                 #      }
   21850                                 #      // ...
   21851                                 #
   21852                                 # Example (iOS / Obj-C):
   21853                                 #
   21854                                 #      // ...
   21855                                 #      static UIColor* fromProto(Color* protocolor) {
   21856                                 #         float red = [protocolor red];
   21857                                 #         float green = [protocolor green];
   21858                                 #         float blue = [protocolor blue];
   21859                                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   21860                                 #         float alpha = 1.0;
   21861                                 #         if (alpha_wrapper != nil) {
   21862                                 #           alpha = [alpha_wrapper value];
   21863                                 #         }
   21864                                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   21865                                 #      }
   21866                                 #
   21867                                 #      static Color* toProto(UIColor* color) {
   21868                                 #          CGFloat red, green, blue, alpha;
   21869                                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   21870                                 #            return nil;
   21871                                 #          }
   21872                                 #          Color* result = [Color alloc] init];
   21873                                 #          [result setRed:red];
   21874                                 #          [result setGreen:green];
   21875                                 #          [result setBlue:blue];
   21876                                 #          if (alpha <= 0.9999) {
   21877                                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   21878                                 #          }
   21879                                 #          [result autorelease];
   21880                                 #          return result;
   21881                                 #     }
   21882                                 #     // ...
   21883                                 #
   21884                                 #  Example (JavaScript):
   21885                                 #
   21886                                 #     // ...
   21887                                 #
   21888                                 #     var protoToCssColor = function(rgb_color) {
   21889                                 #        var redFrac = rgb_color.red || 0.0;
   21890                                 #        var greenFrac = rgb_color.green || 0.0;
   21891                                 #        var blueFrac = rgb_color.blue || 0.0;
   21892                                 #        var red = Math.floor(redFrac * 255);
   21893                                 #        var green = Math.floor(greenFrac * 255);
   21894                                 #        var blue = Math.floor(blueFrac * 255);
   21895                                 #
   21896                                 #        if (!('alpha' in rgb_color)) {
   21897                                 #           return rgbToCssColor_(red, green, blue);
   21898                                 #        }
   21899                                 #
   21900                                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   21901                                 #        var rgbParams = [red, green, blue].join(',');
   21902                                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   21903                                 #     };
   21904                                 #
   21905                                 #     var rgbToCssColor_ = function(red, green, blue) {
   21906                                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   21907                                 #       var hexString = rgbNumber.toString(16);
   21908                                 #       var missingZeros = 6 - hexString.length;
   21909                                 #       var resultBuilder = ['#'];
   21910                                 #       for (var i = 0; i < missingZeros; i++) {
   21911                                 #          resultBuilder.push('0');
   21912                                 #       }
   21913                                 #       resultBuilder.push(hexString);
   21914                                 #       return resultBuilder.join('');
   21915                                 #     };
   21916                                 #
   21917                                 #     // ...
   21918                               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   21919                               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   21920                                   # the final pixel color is defined by the equation:
   21921                                   #
   21922                                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   21923                                   #
   21924                                   # This means that a value of 1.0 corresponds to a solid color, whereas
   21925                                   # a value of 0.0 corresponds to a completely transparent color. This
   21926                                   # uses a wrapper message rather than a simple float scalar so that it is
   21927                                   # possible to distinguish between a default value and the value being unset.
   21928                                   # If omitted, this color object is to be rendered as a solid color
   21929                                   # (as if the alpha value had been explicitly given with a value of 1.0).
   21930                               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   21931                               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   21932                             },
   21933                             "width": 42, # The width of the border, in pixels.
   21934                                 # Deprecated; the width is determined by the "style" field.
   21935                             "style": "A String", # The style of the border.
   21936                           },
   21937                           "left": { # A border along a cell. # The left border of the cell.
   21938                             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   21939                                 # for simplicity of conversion to/from color representations in various
   21940                                 # languages over compactness; for example, the fields of this representation
   21941                                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   21942                                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   21943                                 # method in iOS; and, with just a little work, it can be easily formatted into
   21944                                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   21945                                 #
   21946                                 # Example (Java):
   21947                                 #
   21948                                 #      import com.google.type.Color;
   21949                                 #
   21950                                 #      // ...
   21951                                 #      public static java.awt.Color fromProto(Color protocolor) {
   21952                                 #        float alpha = protocolor.hasAlpha()
   21953                                 #            ? protocolor.getAlpha().getValue()
   21954                                 #            : 1.0;
   21955                                 #
   21956                                 #        return new java.awt.Color(
   21957                                 #            protocolor.getRed(),
   21958                                 #            protocolor.getGreen(),
   21959                                 #            protocolor.getBlue(),
   21960                                 #            alpha);
   21961                                 #      }
   21962                                 #
   21963                                 #      public static Color toProto(java.awt.Color color) {
   21964                                 #        float red = (float) color.getRed();
   21965                                 #        float green = (float) color.getGreen();
   21966                                 #        float blue = (float) color.getBlue();
   21967                                 #        float denominator = 255.0;
   21968                                 #        Color.Builder resultBuilder =
   21969                                 #            Color
   21970                                 #                .newBuilder()
   21971                                 #                .setRed(red / denominator)
   21972                                 #                .setGreen(green / denominator)
   21973                                 #                .setBlue(blue / denominator);
   21974                                 #        int alpha = color.getAlpha();
   21975                                 #        if (alpha != 255) {
   21976                                 #          result.setAlpha(
   21977                                 #              FloatValue
   21978                                 #                  .newBuilder()
   21979                                 #                  .setValue(((float) alpha) / denominator)
   21980                                 #                  .build());
   21981                                 #        }
   21982                                 #        return resultBuilder.build();
   21983                                 #      }
   21984                                 #      // ...
   21985                                 #
   21986                                 # Example (iOS / Obj-C):
   21987                                 #
   21988                                 #      // ...
   21989                                 #      static UIColor* fromProto(Color* protocolor) {
   21990                                 #         float red = [protocolor red];
   21991                                 #         float green = [protocolor green];
   21992                                 #         float blue = [protocolor blue];
   21993                                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   21994                                 #         float alpha = 1.0;
   21995                                 #         if (alpha_wrapper != nil) {
   21996                                 #           alpha = [alpha_wrapper value];
   21997                                 #         }
   21998                                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   21999                                 #      }
   22000                                 #
   22001                                 #      static Color* toProto(UIColor* color) {
   22002                                 #          CGFloat red, green, blue, alpha;
   22003                                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   22004                                 #            return nil;
   22005                                 #          }
   22006                                 #          Color* result = [Color alloc] init];
   22007                                 #          [result setRed:red];
   22008                                 #          [result setGreen:green];
   22009                                 #          [result setBlue:blue];
   22010                                 #          if (alpha <= 0.9999) {
   22011                                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   22012                                 #          }
   22013                                 #          [result autorelease];
   22014                                 #          return result;
   22015                                 #     }
   22016                                 #     // ...
   22017                                 #
   22018                                 #  Example (JavaScript):
   22019                                 #
   22020                                 #     // ...
   22021                                 #
   22022                                 #     var protoToCssColor = function(rgb_color) {
   22023                                 #        var redFrac = rgb_color.red || 0.0;
   22024                                 #        var greenFrac = rgb_color.green || 0.0;
   22025                                 #        var blueFrac = rgb_color.blue || 0.0;
   22026                                 #        var red = Math.floor(redFrac * 255);
   22027                                 #        var green = Math.floor(greenFrac * 255);
   22028                                 #        var blue = Math.floor(blueFrac * 255);
   22029                                 #
   22030                                 #        if (!('alpha' in rgb_color)) {
   22031                                 #           return rgbToCssColor_(red, green, blue);
   22032                                 #        }
   22033                                 #
   22034                                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   22035                                 #        var rgbParams = [red, green, blue].join(',');
   22036                                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   22037                                 #     };
   22038                                 #
   22039                                 #     var rgbToCssColor_ = function(red, green, blue) {
   22040                                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   22041                                 #       var hexString = rgbNumber.toString(16);
   22042                                 #       var missingZeros = 6 - hexString.length;
   22043                                 #       var resultBuilder = ['#'];
   22044                                 #       for (var i = 0; i < missingZeros; i++) {
   22045                                 #          resultBuilder.push('0');
   22046                                 #       }
   22047                                 #       resultBuilder.push(hexString);
   22048                                 #       return resultBuilder.join('');
   22049                                 #     };
   22050                                 #
   22051                                 #     // ...
   22052                               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   22053                               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   22054                                   # the final pixel color is defined by the equation:
   22055                                   #
   22056                                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   22057                                   #
   22058                                   # This means that a value of 1.0 corresponds to a solid color, whereas
   22059                                   # a value of 0.0 corresponds to a completely transparent color. This
   22060                                   # uses a wrapper message rather than a simple float scalar so that it is
   22061                                   # possible to distinguish between a default value and the value being unset.
   22062                                   # If omitted, this color object is to be rendered as a solid color
   22063                                   # (as if the alpha value had been explicitly given with a value of 1.0).
   22064                               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   22065                               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   22066                             },
   22067                             "width": 42, # The width of the border, in pixels.
   22068                                 # Deprecated; the width is determined by the "style" field.
   22069                             "style": "A String", # The style of the border.
   22070                           },
   22071                         },
   22072                         "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   22073                       },
   22074                       "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
   22075                           #
   22076                           # When writing, the new data validation rule will overwrite any prior rule.
   22077                         "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
   22078                             # If true, "List" conditions will show a dropdown.
   22079                         "strict": True or False, # True if invalid data should be rejected.
   22080                         "inputMessage": "A String", # A message to show the user when adding data to the cell.
   22081                         "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
   22082                             # BooleanConditions are used by conditional formatting,
   22083                             # data validation, and the criteria in filters.
   22084                           "values": [ # The values of the condition. The number of supported values depends
   22085                               # on the condition type.  Some support zero values,
   22086                               # others one or two values,
   22087                               # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   22088                             { # The value of the condition.
   22089                               "relativeDate": "A String", # A relative date (based on the current date).
   22090                                   # Valid only if the type is
   22091                                   # DATE_BEFORE,
   22092                                   # DATE_AFTER,
   22093                                   # DATE_ON_OR_BEFORE or
   22094                                   # DATE_ON_OR_AFTER.
   22095                                   #
   22096                                   # Relative dates are not supported in data validation.
   22097                                   # They are supported only in conditional formatting and
   22098                                   # conditional filters.
   22099                               "userEnteredValue": "A String", # A value the condition is based on.
   22100                                   # The value will be parsed as if the user typed into a cell.
   22101                                   # Formulas are supported (and must begin with an `=`).
   22102                             },
   22103                           ],
   22104                           "type": "A String", # The type of condition.
   22105                         },
   22106                       },
   22107                       "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
   22108                           # on user entered strings, not formulas, bools, or numbers.
   22109                           # Runs start at specific indexes in the text and continue until the next
   22110                           # run. Properties of a run will continue unless explicitly changed
   22111                           # in a subsequent run (and properties of the first run will continue
   22112                           # the properties of the cell unless explicitly changed).
   22113                           #
   22114                           # When writing, the new runs will overwrite any prior runs.  When writing a
   22115                           # new user_entered_value, previous runs will be erased.
   22116                         { # A run of a text format. The format of this run continues until the start
   22117                             # index of the next run.
   22118                             # When updating, all fields must be set.
   22119                           "startIndex": 42, # The character index where this run starts.
   22120                           "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
   22121                               # Absent values indicate that the field isn't specified.
   22122                             "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   22123                                 # for simplicity of conversion to/from color representations in various
   22124                                 # languages over compactness; for example, the fields of this representation
   22125                                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   22126                                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   22127                                 # method in iOS; and, with just a little work, it can be easily formatted into
   22128                                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   22129                                 #
   22130                                 # Example (Java):
   22131                                 #
   22132                                 #      import com.google.type.Color;
   22133                                 #
   22134                                 #      // ...
   22135                                 #      public static java.awt.Color fromProto(Color protocolor) {
   22136                                 #        float alpha = protocolor.hasAlpha()
   22137                                 #            ? protocolor.getAlpha().getValue()
   22138                                 #            : 1.0;
   22139                                 #
   22140                                 #        return new java.awt.Color(
   22141                                 #            protocolor.getRed(),
   22142                                 #            protocolor.getGreen(),
   22143                                 #            protocolor.getBlue(),
   22144                                 #            alpha);
   22145                                 #      }
   22146                                 #
   22147                                 #      public static Color toProto(java.awt.Color color) {
   22148                                 #        float red = (float) color.getRed();
   22149                                 #        float green = (float) color.getGreen();
   22150                                 #        float blue = (float) color.getBlue();
   22151                                 #        float denominator = 255.0;
   22152                                 #        Color.Builder resultBuilder =
   22153                                 #            Color
   22154                                 #                .newBuilder()
   22155                                 #                .setRed(red / denominator)
   22156                                 #                .setGreen(green / denominator)
   22157                                 #                .setBlue(blue / denominator);
   22158                                 #        int alpha = color.getAlpha();
   22159                                 #        if (alpha != 255) {
   22160                                 #          result.setAlpha(
   22161                                 #              FloatValue
   22162                                 #                  .newBuilder()
   22163                                 #                  .setValue(((float) alpha) / denominator)
   22164                                 #                  .build());
   22165                                 #        }
   22166                                 #        return resultBuilder.build();
   22167                                 #      }
   22168                                 #      // ...
   22169                                 #
   22170                                 # Example (iOS / Obj-C):
   22171                                 #
   22172                                 #      // ...
   22173                                 #      static UIColor* fromProto(Color* protocolor) {
   22174                                 #         float red = [protocolor red];
   22175                                 #         float green = [protocolor green];
   22176                                 #         float blue = [protocolor blue];
   22177                                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   22178                                 #         float alpha = 1.0;
   22179                                 #         if (alpha_wrapper != nil) {
   22180                                 #           alpha = [alpha_wrapper value];
   22181                                 #         }
   22182                                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   22183                                 #      }
   22184                                 #
   22185                                 #      static Color* toProto(UIColor* color) {
   22186                                 #          CGFloat red, green, blue, alpha;
   22187                                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   22188                                 #            return nil;
   22189                                 #          }
   22190                                 #          Color* result = [Color alloc] init];
   22191                                 #          [result setRed:red];
   22192                                 #          [result setGreen:green];
   22193                                 #          [result setBlue:blue];
   22194                                 #          if (alpha <= 0.9999) {
   22195                                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   22196                                 #          }
   22197                                 #          [result autorelease];
   22198                                 #          return result;
   22199                                 #     }
   22200                                 #     // ...
   22201                                 #
   22202                                 #  Example (JavaScript):
   22203                                 #
   22204                                 #     // ...
   22205                                 #
   22206                                 #     var protoToCssColor = function(rgb_color) {
   22207                                 #        var redFrac = rgb_color.red || 0.0;
   22208                                 #        var greenFrac = rgb_color.green || 0.0;
   22209                                 #        var blueFrac = rgb_color.blue || 0.0;
   22210                                 #        var red = Math.floor(redFrac * 255);
   22211                                 #        var green = Math.floor(greenFrac * 255);
   22212                                 #        var blue = Math.floor(blueFrac * 255);
   22213                                 #
   22214                                 #        if (!('alpha' in rgb_color)) {
   22215                                 #           return rgbToCssColor_(red, green, blue);
   22216                                 #        }
   22217                                 #
   22218                                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   22219                                 #        var rgbParams = [red, green, blue].join(',');
   22220                                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   22221                                 #     };
   22222                                 #
   22223                                 #     var rgbToCssColor_ = function(red, green, blue) {
   22224                                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   22225                                 #       var hexString = rgbNumber.toString(16);
   22226                                 #       var missingZeros = 6 - hexString.length;
   22227                                 #       var resultBuilder = ['#'];
   22228                                 #       for (var i = 0; i < missingZeros; i++) {
   22229                                 #          resultBuilder.push('0');
   22230                                 #       }
   22231                                 #       resultBuilder.push(hexString);
   22232                                 #       return resultBuilder.join('');
   22233                                 #     };
   22234                                 #
   22235                                 #     // ...
   22236                               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   22237                               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   22238                                   # the final pixel color is defined by the equation:
   22239                                   #
   22240                                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   22241                                   #
   22242                                   # This means that a value of 1.0 corresponds to a solid color, whereas
   22243                                   # a value of 0.0 corresponds to a completely transparent color. This
   22244                                   # uses a wrapper message rather than a simple float scalar so that it is
   22245                                   # possible to distinguish between a default value and the value being unset.
   22246                                   # If omitted, this color object is to be rendered as a solid color
   22247                                   # (as if the alpha value had been explicitly given with a value of 1.0).
   22248                               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   22249                               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   22250                             },
   22251                             "bold": True or False, # True if the text is bold.
   22252                             "strikethrough": True or False, # True if the text has a strikethrough.
   22253                             "fontFamily": "A String", # The font family.
   22254                             "fontSize": 42, # The size of the font.
   22255                             "italic": True or False, # True if the text is italicized.
   22256                             "underline": True or False, # True if the text is underlined.
   22257                           },
   22258                         },
   22259                       ],
   22260                     },
   22261                   ],
   22262                 },
   22263               ],
   22264               "startRow": 42, # The first row this GridData refers to, zero-based.
   22265               "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
   22266                   # in start_column.
   22267                 { # Properties about a dimension.
   22268                   "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
   22269                   "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
   22270                   "hiddenByFilter": True or False, # True if this dimension is being filtered.
   22271                       # This field is read-only.
   22272                 },
   22273               ],
   22274             },
   22275           ],
   22276           "properties": { # Properties of a sheet. # The properties of the sheet.
   22277             "sheetType": "A String", # The type of sheet. Defaults to GRID.
   22278                 # This field cannot be changed once set.
   22279             "index": 42, # The index of the sheet within the spreadsheet.
   22280                 # When adding or updating sheet properties, if this field
   22281                 # is excluded then the sheet will be added or moved to the end
   22282                 # of the sheet list. When updating sheet indices or inserting
   22283                 # sheets, movement is considered in "before the move" indexes.
   22284                 # For example, if there were 3 sheets (S1, S2, S3) in order to
   22285                 # move S1 ahead of S2 the index would have to be set to 2. A sheet
   22286                 # index update request will be ignored if the requested index is
   22287                 # identical to the sheets current index or if the requested new
   22288                 # index is equal to the current sheet index + 1.
   22289             "title": "A String", # The name of the sheet.
   22290             "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
   22291                 # (If the sheet is an object sheet, containing a chart or image, then
   22292                 # this field will be absent.)
   22293                 # When writing it is an error to set any grid properties on non-grid sheets.
   22294               "columnCount": 42, # The number of columns in the grid.
   22295               "frozenRowCount": 42, # The number of rows that are frozen in the grid.
   22296               "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
   22297               "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
   22298               "rowCount": 42, # The number of rows in the grid.
   22299             },
   22300             "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
   22301             "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
   22302                 # for simplicity of conversion to/from color representations in various
   22303                 # languages over compactness; for example, the fields of this representation
   22304                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   22305                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   22306                 # method in iOS; and, with just a little work, it can be easily formatted into
   22307                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   22308                 #
   22309                 # Example (Java):
   22310                 #
   22311                 #      import com.google.type.Color;
   22312                 #
   22313                 #      // ...
   22314                 #      public static java.awt.Color fromProto(Color protocolor) {
   22315                 #        float alpha = protocolor.hasAlpha()
   22316                 #            ? protocolor.getAlpha().getValue()
   22317                 #            : 1.0;
   22318                 #
   22319                 #        return new java.awt.Color(
   22320                 #            protocolor.getRed(),
   22321                 #            protocolor.getGreen(),
   22322                 #            protocolor.getBlue(),
   22323                 #            alpha);
   22324                 #      }
   22325                 #
   22326                 #      public static Color toProto(java.awt.Color color) {
   22327                 #        float red = (float) color.getRed();
   22328                 #        float green = (float) color.getGreen();
   22329                 #        float blue = (float) color.getBlue();
   22330                 #        float denominator = 255.0;
   22331                 #        Color.Builder resultBuilder =
   22332                 #            Color
   22333                 #                .newBuilder()
   22334                 #                .setRed(red / denominator)
   22335                 #                .setGreen(green / denominator)
   22336                 #                .setBlue(blue / denominator);
   22337                 #        int alpha = color.getAlpha();
   22338                 #        if (alpha != 255) {
   22339                 #          result.setAlpha(
   22340                 #              FloatValue
   22341                 #                  .newBuilder()
   22342                 #                  .setValue(((float) alpha) / denominator)
   22343                 #                  .build());
   22344                 #        }
   22345                 #        return resultBuilder.build();
   22346                 #      }
   22347                 #      // ...
   22348                 #
   22349                 # Example (iOS / Obj-C):
   22350                 #
   22351                 #      // ...
   22352                 #      static UIColor* fromProto(Color* protocolor) {
   22353                 #         float red = [protocolor red];
   22354                 #         float green = [protocolor green];
   22355                 #         float blue = [protocolor blue];
   22356                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   22357                 #         float alpha = 1.0;
   22358                 #         if (alpha_wrapper != nil) {
   22359                 #           alpha = [alpha_wrapper value];
   22360                 #         }
   22361                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   22362                 #      }
   22363                 #
   22364                 #      static Color* toProto(UIColor* color) {
   22365                 #          CGFloat red, green, blue, alpha;
   22366                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   22367                 #            return nil;
   22368                 #          }
   22369                 #          Color* result = [Color alloc] init];
   22370                 #          [result setRed:red];
   22371                 #          [result setGreen:green];
   22372                 #          [result setBlue:blue];
   22373                 #          if (alpha <= 0.9999) {
   22374                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   22375                 #          }
   22376                 #          [result autorelease];
   22377                 #          return result;
   22378                 #     }
   22379                 #     // ...
   22380                 #
   22381                 #  Example (JavaScript):
   22382                 #
   22383                 #     // ...
   22384                 #
   22385                 #     var protoToCssColor = function(rgb_color) {
   22386                 #        var redFrac = rgb_color.red || 0.0;
   22387                 #        var greenFrac = rgb_color.green || 0.0;
   22388                 #        var blueFrac = rgb_color.blue || 0.0;
   22389                 #        var red = Math.floor(redFrac * 255);
   22390                 #        var green = Math.floor(greenFrac * 255);
   22391                 #        var blue = Math.floor(blueFrac * 255);
   22392                 #
   22393                 #        if (!('alpha' in rgb_color)) {
   22394                 #           return rgbToCssColor_(red, green, blue);
   22395                 #        }
   22396                 #
   22397                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   22398                 #        var rgbParams = [red, green, blue].join(',');
   22399                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   22400                 #     };
   22401                 #
   22402                 #     var rgbToCssColor_ = function(red, green, blue) {
   22403                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   22404                 #       var hexString = rgbNumber.toString(16);
   22405                 #       var missingZeros = 6 - hexString.length;
   22406                 #       var resultBuilder = ['#'];
   22407                 #       for (var i = 0; i < missingZeros; i++) {
   22408                 #          resultBuilder.push('0');
   22409                 #       }
   22410                 #       resultBuilder.push(hexString);
   22411                 #       return resultBuilder.join('');
   22412                 #     };
   22413                 #
   22414                 #     // ...
   22415               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   22416               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   22417                   # the final pixel color is defined by the equation:
   22418                   #
   22419                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   22420                   #
   22421                   # This means that a value of 1.0 corresponds to a solid color, whereas
   22422                   # a value of 0.0 corresponds to a completely transparent color. This
   22423                   # uses a wrapper message rather than a simple float scalar so that it is
   22424                   # possible to distinguish between a default value and the value being unset.
   22425                   # If omitted, this color object is to be rendered as a solid color
   22426                   # (as if the alpha value had been explicitly given with a value of 1.0).
   22427               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   22428               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   22429             },
   22430             "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
   22431             "sheetId": 42, # The ID of the sheet. Must be non-negative.
   22432                 # This field cannot be changed once set.
   22433           },
   22434         },
   22435       ],
   22436       "spreadsheetUrl": "A String", # The url of the spreadsheet.
   22437           # This field is read-only.
   22438     },
   22439     "replies": [ # The reply of the updates.  This maps 1:1 with the updates, although
   22440         # replies to some requests may be empty.
   22441       { # A single response from an update.
   22442         "duplicateFilterView": { # The result of a filter view being duplicated. # A reply from duplicating a filter view.
   22443           "filter": { # A filter view. # The newly created filter.
   22444             "title": "A String", # The name of the filter view.
   22445             "namedRangeId": "A String", # The named range this filter view is backed by, if any.
   22446                 #
   22447                 # When writing, only one of range or named_range_id
   22448                 # may be set.
   22449             "filterViewId": 42, # The ID of the filter view.
   22450             "range": { # A range on a sheet. # The range this filter view covers.
   22451                 #
   22452                 # When writing, only one of range or named_range_id
   22453                 # may be set.
   22454                 # All indexes are zero-based.
   22455                 # Indexes are half open, e.g the start index is inclusive
   22456                 # and the end index is exclusive -- [start_index, end_index).
   22457                 # Missing indexes indicate the range is unbounded on that side.
   22458                 #
   22459                 # For example, if `"Sheet1"` is sheet ID 0, then:
   22460                 #
   22461                 #   `Sheet1!A1:A1 == sheet_id: 0,
   22462                 #                   start_row_index: 0, end_row_index: 1,
   22463                 #                   start_column_index: 0, end_column_index: 1`
   22464                 #
   22465                 #   `Sheet1!A3:B4 == sheet_id: 0,
   22466                 #                   start_row_index: 2, end_row_index: 4,
   22467                 #                   start_column_index: 0, end_column_index: 2`
   22468                 #
   22469                 #   `Sheet1!A:B == sheet_id: 0,
   22470                 #                 start_column_index: 0, end_column_index: 2`
   22471                 #
   22472                 #   `Sheet1!A5:B == sheet_id: 0,
   22473                 #                  start_row_index: 4,
   22474                 #                  start_column_index: 0, end_column_index: 2`
   22475                 #
   22476                 #   `Sheet1 == sheet_id:0`
   22477                 #
   22478                 # The start index must always be less than or equal to the end index.
   22479                 # If the start index equals the end index, then the range is empty.
   22480                 # Empty ranges are typically not meaningful and are usually rendered in the
   22481                 # UI as `#REF!`.
   22482               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   22483               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   22484               "sheetId": 42, # The sheet this range is on.
   22485               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   22486               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   22487             },
   22488             "sortSpecs": [ # The sort order per column. Later specifications are used when values
   22489                 # are equal in the earlier specifications.
   22490               { # A sort order associated with a specific column or row.
   22491                 "sortOrder": "A String", # The order data should be sorted.
   22492                 "dimensionIndex": 42, # The dimension the sort should be applied to.
   22493               },
   22494             ],
   22495             "criteria": { # The criteria for showing/hiding values per column.
   22496                 # The map's key is the column index, and the value is the criteria for
   22497                 # that column.
   22498               "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   22499                 "hiddenValues": [ # Values that should be hidden.
   22500                   "A String",
   22501                 ],
   22502                 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   22503                     # (This does not override hiddenValues -- if a value is listed there,
   22504                     #  it will still be hidden.)
   22505                     # BooleanConditions are used by conditional formatting,
   22506                     # data validation, and the criteria in filters.
   22507                   "values": [ # The values of the condition. The number of supported values depends
   22508                       # on the condition type.  Some support zero values,
   22509                       # others one or two values,
   22510                       # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   22511                     { # The value of the condition.
   22512                       "relativeDate": "A String", # A relative date (based on the current date).
   22513                           # Valid only if the type is
   22514                           # DATE_BEFORE,
   22515                           # DATE_AFTER,
   22516                           # DATE_ON_OR_BEFORE or
   22517                           # DATE_ON_OR_AFTER.
   22518                           #
   22519                           # Relative dates are not supported in data validation.
   22520                           # They are supported only in conditional formatting and
   22521                           # conditional filters.
   22522                       "userEnteredValue": "A String", # A value the condition is based on.
   22523                           # The value will be parsed as if the user typed into a cell.
   22524                           # Formulas are supported (and must begin with an `=`).
   22525                     },
   22526                   ],
   22527                   "type": "A String", # The type of condition.
   22528                 },
   22529               },
   22530             },
   22531           },
   22532         },
   22533         "duplicateSheet": { # The result of duplicating a sheet. # A reply from duplicating a sheet.
   22534           "properties": { # Properties of a sheet. # The properties of the duplicate sheet.
   22535             "sheetType": "A String", # The type of sheet. Defaults to GRID.
   22536                 # This field cannot be changed once set.
   22537             "index": 42, # The index of the sheet within the spreadsheet.
   22538                 # When adding or updating sheet properties, if this field
   22539                 # is excluded then the sheet will be added or moved to the end
   22540                 # of the sheet list. When updating sheet indices or inserting
   22541                 # sheets, movement is considered in "before the move" indexes.
   22542                 # For example, if there were 3 sheets (S1, S2, S3) in order to
   22543                 # move S1 ahead of S2 the index would have to be set to 2. A sheet
   22544                 # index update request will be ignored if the requested index is
   22545                 # identical to the sheets current index or if the requested new
   22546                 # index is equal to the current sheet index + 1.
   22547             "title": "A String", # The name of the sheet.
   22548             "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
   22549                 # (If the sheet is an object sheet, containing a chart or image, then
   22550                 # this field will be absent.)
   22551                 # When writing it is an error to set any grid properties on non-grid sheets.
   22552               "columnCount": 42, # The number of columns in the grid.
   22553               "frozenRowCount": 42, # The number of rows that are frozen in the grid.
   22554               "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
   22555               "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
   22556               "rowCount": 42, # The number of rows in the grid.
   22557             },
   22558             "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
   22559             "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
   22560                 # for simplicity of conversion to/from color representations in various
   22561                 # languages over compactness; for example, the fields of this representation
   22562                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   22563                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   22564                 # method in iOS; and, with just a little work, it can be easily formatted into
   22565                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   22566                 #
   22567                 # Example (Java):
   22568                 #
   22569                 #      import com.google.type.Color;
   22570                 #
   22571                 #      // ...
   22572                 #      public static java.awt.Color fromProto(Color protocolor) {
   22573                 #        float alpha = protocolor.hasAlpha()
   22574                 #            ? protocolor.getAlpha().getValue()
   22575                 #            : 1.0;
   22576                 #
   22577                 #        return new java.awt.Color(
   22578                 #            protocolor.getRed(),
   22579                 #            protocolor.getGreen(),
   22580                 #            protocolor.getBlue(),
   22581                 #            alpha);
   22582                 #      }
   22583                 #
   22584                 #      public static Color toProto(java.awt.Color color) {
   22585                 #        float red = (float) color.getRed();
   22586                 #        float green = (float) color.getGreen();
   22587                 #        float blue = (float) color.getBlue();
   22588                 #        float denominator = 255.0;
   22589                 #        Color.Builder resultBuilder =
   22590                 #            Color
   22591                 #                .newBuilder()
   22592                 #                .setRed(red / denominator)
   22593                 #                .setGreen(green / denominator)
   22594                 #                .setBlue(blue / denominator);
   22595                 #        int alpha = color.getAlpha();
   22596                 #        if (alpha != 255) {
   22597                 #          result.setAlpha(
   22598                 #              FloatValue
   22599                 #                  .newBuilder()
   22600                 #                  .setValue(((float) alpha) / denominator)
   22601                 #                  .build());
   22602                 #        }
   22603                 #        return resultBuilder.build();
   22604                 #      }
   22605                 #      // ...
   22606                 #
   22607                 # Example (iOS / Obj-C):
   22608                 #
   22609                 #      // ...
   22610                 #      static UIColor* fromProto(Color* protocolor) {
   22611                 #         float red = [protocolor red];
   22612                 #         float green = [protocolor green];
   22613                 #         float blue = [protocolor blue];
   22614                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   22615                 #         float alpha = 1.0;
   22616                 #         if (alpha_wrapper != nil) {
   22617                 #           alpha = [alpha_wrapper value];
   22618                 #         }
   22619                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   22620                 #      }
   22621                 #
   22622                 #      static Color* toProto(UIColor* color) {
   22623                 #          CGFloat red, green, blue, alpha;
   22624                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   22625                 #            return nil;
   22626                 #          }
   22627                 #          Color* result = [Color alloc] init];
   22628                 #          [result setRed:red];
   22629                 #          [result setGreen:green];
   22630                 #          [result setBlue:blue];
   22631                 #          if (alpha <= 0.9999) {
   22632                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   22633                 #          }
   22634                 #          [result autorelease];
   22635                 #          return result;
   22636                 #     }
   22637                 #     // ...
   22638                 #
   22639                 #  Example (JavaScript):
   22640                 #
   22641                 #     // ...
   22642                 #
   22643                 #     var protoToCssColor = function(rgb_color) {
   22644                 #        var redFrac = rgb_color.red || 0.0;
   22645                 #        var greenFrac = rgb_color.green || 0.0;
   22646                 #        var blueFrac = rgb_color.blue || 0.0;
   22647                 #        var red = Math.floor(redFrac * 255);
   22648                 #        var green = Math.floor(greenFrac * 255);
   22649                 #        var blue = Math.floor(blueFrac * 255);
   22650                 #
   22651                 #        if (!('alpha' in rgb_color)) {
   22652                 #           return rgbToCssColor_(red, green, blue);
   22653                 #        }
   22654                 #
   22655                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   22656                 #        var rgbParams = [red, green, blue].join(',');
   22657                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   22658                 #     };
   22659                 #
   22660                 #     var rgbToCssColor_ = function(red, green, blue) {
   22661                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   22662                 #       var hexString = rgbNumber.toString(16);
   22663                 #       var missingZeros = 6 - hexString.length;
   22664                 #       var resultBuilder = ['#'];
   22665                 #       for (var i = 0; i < missingZeros; i++) {
   22666                 #          resultBuilder.push('0');
   22667                 #       }
   22668                 #       resultBuilder.push(hexString);
   22669                 #       return resultBuilder.join('');
   22670                 #     };
   22671                 #
   22672                 #     // ...
   22673               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   22674               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   22675                   # the final pixel color is defined by the equation:
   22676                   #
   22677                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   22678                   #
   22679                   # This means that a value of 1.0 corresponds to a solid color, whereas
   22680                   # a value of 0.0 corresponds to a completely transparent color. This
   22681                   # uses a wrapper message rather than a simple float scalar so that it is
   22682                   # possible to distinguish between a default value and the value being unset.
   22683                   # If omitted, this color object is to be rendered as a solid color
   22684                   # (as if the alpha value had been explicitly given with a value of 1.0).
   22685               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   22686               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   22687             },
   22688             "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
   22689             "sheetId": 42, # The ID of the sheet. Must be non-negative.
   22690                 # This field cannot be changed once set.
   22691           },
   22692         },
   22693         "updateEmbeddedObjectPosition": { # The result of updating an embedded object's position. # A reply from updating an embedded object's position.
   22694           "position": { # The position of an embedded object such as a chart. # The new position of the embedded object.
   22695             "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
   22696                 # is chosen for you. Used only when writing.
   22697             "sheetId": 42, # The sheet this is on. Set only if the embedded object
   22698                 # is on its own sheet. Must be non-negative.
   22699             "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
   22700               "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
   22701                   # All indexes are zero-based.
   22702                 "rowIndex": 42, # The row index of the coordinate.
   22703                 "columnIndex": 42, # The column index of the coordinate.
   22704                 "sheetId": 42, # The sheet this coordinate is on.
   22705               },
   22706               "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
   22707                   # from the anchor cell.
   22708               "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
   22709               "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
   22710                   # from the anchor cell.
   22711               "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
   22712             },
   22713           },
   22714         },
   22715         "addChart": { # The result of adding a chart to a spreadsheet. # A reply from adding a chart.
   22716           "chart": { # A chart embedded in a sheet. # The newly added chart.
   22717             "chartId": 42, # The ID of the chart.
   22718             "position": { # The position of an embedded object such as a chart. # The position of the chart.
   22719               "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
   22720                   # is chosen for you. Used only when writing.
   22721               "sheetId": 42, # The sheet this is on. Set only if the embedded object
   22722                   # is on its own sheet. Must be non-negative.
   22723               "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
   22724                 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
   22725                     # All indexes are zero-based.
   22726                   "rowIndex": 42, # The row index of the coordinate.
   22727                   "columnIndex": 42, # The column index of the coordinate.
   22728                   "sheetId": 42, # The sheet this coordinate is on.
   22729                 },
   22730                 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
   22731                     # from the anchor cell.
   22732                 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
   22733                 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
   22734                     # from the anchor cell.
   22735                 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
   22736               },
   22737             },
   22738             "spec": { # The specifications of a chart. # The specification of the chart.
   22739               "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
   22740               "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
   22741                 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
   22742                   "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   22743                     "sources": [ # The ranges of data for a series or domain.
   22744                         # Exactly one dimension must have a length of 1,
   22745                         # and all sources in the list must have the same dimension
   22746                         # with length 1.
   22747                         # The domain (if it exists) & all series must have the same number
   22748                         # of source ranges. If using more than one source range, then the source
   22749                         # range at a given offset must be contiguous across the domain and series.
   22750                         #
   22751                         # For example, these are valid configurations:
   22752                         #
   22753                         #     domain sources: A1:A5
   22754                         #     series1 sources: B1:B5
   22755                         #     series2 sources: D6:D10
   22756                         #
   22757                         #     domain sources: A1:A5, C10:C12
   22758                         #     series1 sources: B1:B5, D10:D12
   22759                         #     series2 sources: C1:C5, E10:E12
   22760                       { # A range on a sheet.
   22761                           # All indexes are zero-based.
   22762                           # Indexes are half open, e.g the start index is inclusive
   22763                           # and the end index is exclusive -- [start_index, end_index).
   22764                           # Missing indexes indicate the range is unbounded on that side.
   22765                           #
   22766                           # For example, if `"Sheet1"` is sheet ID 0, then:
   22767                           #
   22768                           #   `Sheet1!A1:A1 == sheet_id: 0,
   22769                           #                   start_row_index: 0, end_row_index: 1,
   22770                           #                   start_column_index: 0, end_column_index: 1`
   22771                           #
   22772                           #   `Sheet1!A3:B4 == sheet_id: 0,
   22773                           #                   start_row_index: 2, end_row_index: 4,
   22774                           #                   start_column_index: 0, end_column_index: 2`
   22775                           #
   22776                           #   `Sheet1!A:B == sheet_id: 0,
   22777                           #                 start_column_index: 0, end_column_index: 2`
   22778                           #
   22779                           #   `Sheet1!A5:B == sheet_id: 0,
   22780                           #                  start_row_index: 4,
   22781                           #                  start_column_index: 0, end_column_index: 2`
   22782                           #
   22783                           #   `Sheet1 == sheet_id:0`
   22784                           #
   22785                           # The start index must always be less than or equal to the end index.
   22786                           # If the start index equals the end index, then the range is empty.
   22787                           # Empty ranges are typically not meaningful and are usually rendered in the
   22788                           # UI as `#REF!`.
   22789                         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   22790                         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   22791                         "sheetId": 42, # The sheet this range is on.
   22792                         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   22793                         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   22794                       },
   22795                     ],
   22796                   },
   22797                 },
   22798                 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
   22799                   "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   22800                     "sources": [ # The ranges of data for a series or domain.
   22801                         # Exactly one dimension must have a length of 1,
   22802                         # and all sources in the list must have the same dimension
   22803                         # with length 1.
   22804                         # The domain (if it exists) & all series must have the same number
   22805                         # of source ranges. If using more than one source range, then the source
   22806                         # range at a given offset must be contiguous across the domain and series.
   22807                         #
   22808                         # For example, these are valid configurations:
   22809                         #
   22810                         #     domain sources: A1:A5
   22811                         #     series1 sources: B1:B5
   22812                         #     series2 sources: D6:D10
   22813                         #
   22814                         #     domain sources: A1:A5, C10:C12
   22815                         #     series1 sources: B1:B5, D10:D12
   22816                         #     series2 sources: C1:C5, E10:E12
   22817                       { # A range on a sheet.
   22818                           # All indexes are zero-based.
   22819                           # Indexes are half open, e.g the start index is inclusive
   22820                           # and the end index is exclusive -- [start_index, end_index).
   22821                           # Missing indexes indicate the range is unbounded on that side.
   22822                           #
   22823                           # For example, if `"Sheet1"` is sheet ID 0, then:
   22824                           #
   22825                           #   `Sheet1!A1:A1 == sheet_id: 0,
   22826                           #                   start_row_index: 0, end_row_index: 1,
   22827                           #                   start_column_index: 0, end_column_index: 1`
   22828                           #
   22829                           #   `Sheet1!A3:B4 == sheet_id: 0,
   22830                           #                   start_row_index: 2, end_row_index: 4,
   22831                           #                   start_column_index: 0, end_column_index: 2`
   22832                           #
   22833                           #   `Sheet1!A:B == sheet_id: 0,
   22834                           #                 start_column_index: 0, end_column_index: 2`
   22835                           #
   22836                           #   `Sheet1!A5:B == sheet_id: 0,
   22837                           #                  start_row_index: 4,
   22838                           #                  start_column_index: 0, end_column_index: 2`
   22839                           #
   22840                           #   `Sheet1 == sheet_id:0`
   22841                           #
   22842                           # The start index must always be less than or equal to the end index.
   22843                           # If the start index equals the end index, then the range is empty.
   22844                           # Empty ranges are typically not meaningful and are usually rendered in the
   22845                           # UI as `#REF!`.
   22846                         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   22847                         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   22848                         "sheetId": 42, # The sheet this range is on.
   22849                         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   22850                         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   22851                       },
   22852                     ],
   22853                   },
   22854                 },
   22855                 "threeDimensional": True or False, # True if the pie is three dimensional.
   22856                 "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
   22857                 "pieHole": 3.14, # The size of the hole in the pie chart.
   22858               },
   22859               "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
   22860                   # See BasicChartType for the list of all
   22861                   # charts this supports.
   22862                   # of charts this supports.
   22863                 "headerCount": 42, # The number of rows or columns in the data that are "headers".
   22864                     # If not set, Google Sheets will guess how many rows are headers based
   22865                     # on the data.
   22866                     #
   22867                     # (Note that BasicChartAxis.title may override the axis title
   22868                     #  inferred from the header values.)
   22869                 "series": [ # The data this chart is visualizing.
   22870                   { # A single series of data in a chart.
   22871                       # For example, if charting stock prices over time, multiple series may exist,
   22872                       # one for the "Open Price", "High Price", "Low Price" and "Close Price".
   22873                     "series": { # The data included in a domain or series. # The data being visualized in this chart series.
   22874                       "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   22875                         "sources": [ # The ranges of data for a series or domain.
   22876                             # Exactly one dimension must have a length of 1,
   22877                             # and all sources in the list must have the same dimension
   22878                             # with length 1.
   22879                             # The domain (if it exists) & all series must have the same number
   22880                             # of source ranges. If using more than one source range, then the source
   22881                             # range at a given offset must be contiguous across the domain and series.
   22882                             #
   22883                             # For example, these are valid configurations:
   22884                             #
   22885                             #     domain sources: A1:A5
   22886                             #     series1 sources: B1:B5
   22887                             #     series2 sources: D6:D10
   22888                             #
   22889                             #     domain sources: A1:A5, C10:C12
   22890                             #     series1 sources: B1:B5, D10:D12
   22891                             #     series2 sources: C1:C5, E10:E12
   22892                           { # A range on a sheet.
   22893                               # All indexes are zero-based.
   22894                               # Indexes are half open, e.g the start index is inclusive
   22895                               # and the end index is exclusive -- [start_index, end_index).
   22896                               # Missing indexes indicate the range is unbounded on that side.
   22897                               #
   22898                               # For example, if `"Sheet1"` is sheet ID 0, then:
   22899                               #
   22900                               #   `Sheet1!A1:A1 == sheet_id: 0,
   22901                               #                   start_row_index: 0, end_row_index: 1,
   22902                               #                   start_column_index: 0, end_column_index: 1`
   22903                               #
   22904                               #   `Sheet1!A3:B4 == sheet_id: 0,
   22905                               #                   start_row_index: 2, end_row_index: 4,
   22906                               #                   start_column_index: 0, end_column_index: 2`
   22907                               #
   22908                               #   `Sheet1!A:B == sheet_id: 0,
   22909                               #                 start_column_index: 0, end_column_index: 2`
   22910                               #
   22911                               #   `Sheet1!A5:B == sheet_id: 0,
   22912                               #                  start_row_index: 4,
   22913                               #                  start_column_index: 0, end_column_index: 2`
   22914                               #
   22915                               #   `Sheet1 == sheet_id:0`
   22916                               #
   22917                               # The start index must always be less than or equal to the end index.
   22918                               # If the start index equals the end index, then the range is empty.
   22919                               # Empty ranges are typically not meaningful and are usually rendered in the
   22920                               # UI as `#REF!`.
   22921                             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   22922                             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   22923                             "sheetId": 42, # The sheet this range is on.
   22924                             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   22925                             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   22926                           },
   22927                         ],
   22928                       },
   22929                     },
   22930                     "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
   22931                         # For example, if charting stocks over time, the "Volume" series
   22932                         # may want to be pinned to the right with the prices pinned to the left,
   22933                         # because the scale of trading volume is different than the scale of
   22934                         # prices.
   22935                         # It is an error to specify an axis that isn't a valid minor axis
   22936                         # for the chart's type.
   22937                     "type": "A String", # The type of this series. Valid only if the
   22938                         # chartType is
   22939                         # COMBO.
   22940                         # Different types will change the way the series is visualized.
   22941                         # Only LINE, AREA,
   22942                         # and COLUMN are supported.
   22943                   },
   22944                 ],
   22945                 "legendPosition": "A String", # The position of the chart legend.
   22946                 "domains": [ # The domain of data this is charting.
   22947                     # Only a single domain is supported.
   22948                   { # The domain of a chart.
   22949                       # For example, if charting stock prices over time, this would be the date.
   22950                     "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
   22951                         # this is the data representing the dates.
   22952                       "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   22953                         "sources": [ # The ranges of data for a series or domain.
   22954                             # Exactly one dimension must have a length of 1,
   22955                             # and all sources in the list must have the same dimension
   22956                             # with length 1.
   22957                             # The domain (if it exists) & all series must have the same number
   22958                             # of source ranges. If using more than one source range, then the source
   22959                             # range at a given offset must be contiguous across the domain and series.
   22960                             #
   22961                             # For example, these are valid configurations:
   22962                             #
   22963                             #     domain sources: A1:A5
   22964                             #     series1 sources: B1:B5
   22965                             #     series2 sources: D6:D10
   22966                             #
   22967                             #     domain sources: A1:A5, C10:C12
   22968                             #     series1 sources: B1:B5, D10:D12
   22969                             #     series2 sources: C1:C5, E10:E12
   22970                           { # A range on a sheet.
   22971                               # All indexes are zero-based.
   22972                               # Indexes are half open, e.g the start index is inclusive
   22973                               # and the end index is exclusive -- [start_index, end_index).
   22974                               # Missing indexes indicate the range is unbounded on that side.
   22975                               #
   22976                               # For example, if `"Sheet1"` is sheet ID 0, then:
   22977                               #
   22978                               #   `Sheet1!A1:A1 == sheet_id: 0,
   22979                               #                   start_row_index: 0, end_row_index: 1,
   22980                               #                   start_column_index: 0, end_column_index: 1`
   22981                               #
   22982                               #   `Sheet1!A3:B4 == sheet_id: 0,
   22983                               #                   start_row_index: 2, end_row_index: 4,
   22984                               #                   start_column_index: 0, end_column_index: 2`
   22985                               #
   22986                               #   `Sheet1!A:B == sheet_id: 0,
   22987                               #                 start_column_index: 0, end_column_index: 2`
   22988                               #
   22989                               #   `Sheet1!A5:B == sheet_id: 0,
   22990                               #                  start_row_index: 4,
   22991                               #                  start_column_index: 0, end_column_index: 2`
   22992                               #
   22993                               #   `Sheet1 == sheet_id:0`
   22994                               #
   22995                               # The start index must always be less than or equal to the end index.
   22996                               # If the start index equals the end index, then the range is empty.
   22997                               # Empty ranges are typically not meaningful and are usually rendered in the
   22998                               # UI as `#REF!`.
   22999                             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   23000                             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   23001                             "sheetId": 42, # The sheet this range is on.
   23002                             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   23003                             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   23004                           },
   23005                         ],
   23006                       },
   23007                     },
   23008                   },
   23009                 ],
   23010                 "chartType": "A String", # The type of the chart.
   23011                 "axis": [ # The axis on the chart.
   23012                   { # An axis of the chart.
   23013                       # A chart may not have more than one axis per
   23014                       # axis position.
   23015                     "position": "A String", # The position of this axis.
   23016                     "format": { # The format of a run of text in a cell. # The format of the title.
   23017                         # Only valid if the axis is not associated with the domain.
   23018                         # Absent values indicate that the field isn't specified.
   23019                       "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   23020                           # for simplicity of conversion to/from color representations in various
   23021                           # languages over compactness; for example, the fields of this representation
   23022                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   23023                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   23024                           # method in iOS; and, with just a little work, it can be easily formatted into
   23025                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   23026                           #
   23027                           # Example (Java):
   23028                           #
   23029                           #      import com.google.type.Color;
   23030                           #
   23031                           #      // ...
   23032                           #      public static java.awt.Color fromProto(Color protocolor) {
   23033                           #        float alpha = protocolor.hasAlpha()
   23034                           #            ? protocolor.getAlpha().getValue()
   23035                           #            : 1.0;
   23036                           #
   23037                           #        return new java.awt.Color(
   23038                           #            protocolor.getRed(),
   23039                           #            protocolor.getGreen(),
   23040                           #            protocolor.getBlue(),
   23041                           #            alpha);
   23042                           #      }
   23043                           #
   23044                           #      public static Color toProto(java.awt.Color color) {
   23045                           #        float red = (float) color.getRed();
   23046                           #        float green = (float) color.getGreen();
   23047                           #        float blue = (float) color.getBlue();
   23048                           #        float denominator = 255.0;
   23049                           #        Color.Builder resultBuilder =
   23050                           #            Color
   23051                           #                .newBuilder()
   23052                           #                .setRed(red / denominator)
   23053                           #                .setGreen(green / denominator)
   23054                           #                .setBlue(blue / denominator);
   23055                           #        int alpha = color.getAlpha();
   23056                           #        if (alpha != 255) {
   23057                           #          result.setAlpha(
   23058                           #              FloatValue
   23059                           #                  .newBuilder()
   23060                           #                  .setValue(((float) alpha) / denominator)
   23061                           #                  .build());
   23062                           #        }
   23063                           #        return resultBuilder.build();
   23064                           #      }
   23065                           #      // ...
   23066                           #
   23067                           # Example (iOS / Obj-C):
   23068                           #
   23069                           #      // ...
   23070                           #      static UIColor* fromProto(Color* protocolor) {
   23071                           #         float red = [protocolor red];
   23072                           #         float green = [protocolor green];
   23073                           #         float blue = [protocolor blue];
   23074                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   23075                           #         float alpha = 1.0;
   23076                           #         if (alpha_wrapper != nil) {
   23077                           #           alpha = [alpha_wrapper value];
   23078                           #         }
   23079                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   23080                           #      }
   23081                           #
   23082                           #      static Color* toProto(UIColor* color) {
   23083                           #          CGFloat red, green, blue, alpha;
   23084                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   23085                           #            return nil;
   23086                           #          }
   23087                           #          Color* result = [Color alloc] init];
   23088                           #          [result setRed:red];
   23089                           #          [result setGreen:green];
   23090                           #          [result setBlue:blue];
   23091                           #          if (alpha <= 0.9999) {
   23092                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   23093                           #          }
   23094                           #          [result autorelease];
   23095                           #          return result;
   23096                           #     }
   23097                           #     // ...
   23098                           #
   23099                           #  Example (JavaScript):
   23100                           #
   23101                           #     // ...
   23102                           #
   23103                           #     var protoToCssColor = function(rgb_color) {
   23104                           #        var redFrac = rgb_color.red || 0.0;
   23105                           #        var greenFrac = rgb_color.green || 0.0;
   23106                           #        var blueFrac = rgb_color.blue || 0.0;
   23107                           #        var red = Math.floor(redFrac * 255);
   23108                           #        var green = Math.floor(greenFrac * 255);
   23109                           #        var blue = Math.floor(blueFrac * 255);
   23110                           #
   23111                           #        if (!('alpha' in rgb_color)) {
   23112                           #           return rgbToCssColor_(red, green, blue);
   23113                           #        }
   23114                           #
   23115                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   23116                           #        var rgbParams = [red, green, blue].join(',');
   23117                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   23118                           #     };
   23119                           #
   23120                           #     var rgbToCssColor_ = function(red, green, blue) {
   23121                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   23122                           #       var hexString = rgbNumber.toString(16);
   23123                           #       var missingZeros = 6 - hexString.length;
   23124                           #       var resultBuilder = ['#'];
   23125                           #       for (var i = 0; i < missingZeros; i++) {
   23126                           #          resultBuilder.push('0');
   23127                           #       }
   23128                           #       resultBuilder.push(hexString);
   23129                           #       return resultBuilder.join('');
   23130                           #     };
   23131                           #
   23132                           #     // ...
   23133                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   23134                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   23135                             # the final pixel color is defined by the equation:
   23136                             #
   23137                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   23138                             #
   23139                             # This means that a value of 1.0 corresponds to a solid color, whereas
   23140                             # a value of 0.0 corresponds to a completely transparent color. This
   23141                             # uses a wrapper message rather than a simple float scalar so that it is
   23142                             # possible to distinguish between a default value and the value being unset.
   23143                             # If omitted, this color object is to be rendered as a solid color
   23144                             # (as if the alpha value had been explicitly given with a value of 1.0).
   23145                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   23146                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   23147                       },
   23148                       "bold": True or False, # True if the text is bold.
   23149                       "strikethrough": True or False, # True if the text has a strikethrough.
   23150                       "fontFamily": "A String", # The font family.
   23151                       "fontSize": 42, # The size of the font.
   23152                       "italic": True or False, # True if the text is italicized.
   23153                       "underline": True or False, # True if the text is underlined.
   23154                     },
   23155                     "title": "A String", # The title of this axis. If set, this overrides any title inferred
   23156                         # from headers of the data.
   23157                   },
   23158                 ],
   23159               },
   23160               "title": "A String", # The title of the chart.
   23161             },
   23162           },
   23163         },
   23164         "updateConditionalFormatRule": { # The result of updating a conditional format rule. # A reply from updating a conditional format rule.
   23165           "oldIndex": 42, # The old index of the rule. Not set if a rule was replaced
   23166               # (because it is the same as new_index).
   23167           "newIndex": 42, # The index of the new rule.
   23168           "oldRule": { # A rule describing a conditional format. # The old (deleted) rule. Not set if a rule was moved
   23169               # (because it is the same as new_rule).
   23170             "ranges": [ # The ranges that will be formatted if the condition is true.
   23171                 # All the ranges must be on the same grid.
   23172               { # A range on a sheet.
   23173                   # All indexes are zero-based.
   23174                   # Indexes are half open, e.g the start index is inclusive
   23175                   # and the end index is exclusive -- [start_index, end_index).
   23176                   # Missing indexes indicate the range is unbounded on that side.
   23177                   #
   23178                   # For example, if `"Sheet1"` is sheet ID 0, then:
   23179                   #
   23180                   #   `Sheet1!A1:A1 == sheet_id: 0,
   23181                   #                   start_row_index: 0, end_row_index: 1,
   23182                   #                   start_column_index: 0, end_column_index: 1`
   23183                   #
   23184                   #   `Sheet1!A3:B4 == sheet_id: 0,
   23185                   #                   start_row_index: 2, end_row_index: 4,
   23186                   #                   start_column_index: 0, end_column_index: 2`
   23187                   #
   23188                   #   `Sheet1!A:B == sheet_id: 0,
   23189                   #                 start_column_index: 0, end_column_index: 2`
   23190                   #
   23191                   #   `Sheet1!A5:B == sheet_id: 0,
   23192                   #                  start_row_index: 4,
   23193                   #                  start_column_index: 0, end_column_index: 2`
   23194                   #
   23195                   #   `Sheet1 == sheet_id:0`
   23196                   #
   23197                   # The start index must always be less than or equal to the end index.
   23198                   # If the start index equals the end index, then the range is empty.
   23199                   # Empty ranges are typically not meaningful and are usually rendered in the
   23200                   # UI as `#REF!`.
   23201                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   23202                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   23203                 "sheetId": 42, # The sheet this range is on.
   23204                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   23205                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   23206               },
   23207             ],
   23208             "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
   23209               "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
   23210                   # the format will be applied.
   23211                   # BooleanConditions are used by conditional formatting,
   23212                   # data validation, and the criteria in filters.
   23213                 "values": [ # The values of the condition. The number of supported values depends
   23214                     # on the condition type.  Some support zero values,
   23215                     # others one or two values,
   23216                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   23217                   { # The value of the condition.
   23218                     "relativeDate": "A String", # A relative date (based on the current date).
   23219                         # Valid only if the type is
   23220                         # DATE_BEFORE,
   23221                         # DATE_AFTER,
   23222                         # DATE_ON_OR_BEFORE or
   23223                         # DATE_ON_OR_AFTER.
   23224                         #
   23225                         # Relative dates are not supported in data validation.
   23226                         # They are supported only in conditional formatting and
   23227                         # conditional filters.
   23228                     "userEnteredValue": "A String", # A value the condition is based on.
   23229                         # The value will be parsed as if the user typed into a cell.
   23230                         # Formulas are supported (and must begin with an `=`).
   23231                   },
   23232                 ],
   23233                 "type": "A String", # The type of condition.
   23234               },
   23235               "format": { # The format of a cell. # The format to apply.
   23236                   # Conditional formatting can only apply a subset of formatting:
   23237                   # bold, italic,
   23238                   # strikethrough,
   23239                   # foreground color &
   23240                   # background color.
   23241                 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   23242                   "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   23243                       # the user's locale will be used if necessary for the given type.
   23244                       # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   23245                       # information about the supported patterns.
   23246                   "type": "A String", # The type of the number format.
   23247                       # When writing, this field must be set.
   23248                 },
   23249                 "textDirection": "A String", # The direction of the text in the cell.
   23250                 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   23251                     # When updating padding, every field must be specified.
   23252                   "top": 42, # The top padding of the cell.
   23253                   "right": 42, # The right padding of the cell.
   23254                   "bottom": 42, # The bottom padding of the cell.
   23255                   "left": 42, # The left padding of the cell.
   23256                 },
   23257                 "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   23258                 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   23259                     # for simplicity of conversion to/from color representations in various
   23260                     # languages over compactness; for example, the fields of this representation
   23261                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   23262                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   23263                     # method in iOS; and, with just a little work, it can be easily formatted into
   23264                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   23265                     #
   23266                     # Example (Java):
   23267                     #
   23268                     #      import com.google.type.Color;
   23269                     #
   23270                     #      // ...
   23271                     #      public static java.awt.Color fromProto(Color protocolor) {
   23272                     #        float alpha = protocolor.hasAlpha()
   23273                     #            ? protocolor.getAlpha().getValue()
   23274                     #            : 1.0;
   23275                     #
   23276                     #        return new java.awt.Color(
   23277                     #            protocolor.getRed(),
   23278                     #            protocolor.getGreen(),
   23279                     #            protocolor.getBlue(),
   23280                     #            alpha);
   23281                     #      }
   23282                     #
   23283                     #      public static Color toProto(java.awt.Color color) {
   23284                     #        float red = (float) color.getRed();
   23285                     #        float green = (float) color.getGreen();
   23286                     #        float blue = (float) color.getBlue();
   23287                     #        float denominator = 255.0;
   23288                     #        Color.Builder resultBuilder =
   23289                     #            Color
   23290                     #                .newBuilder()
   23291                     #                .setRed(red / denominator)
   23292                     #                .setGreen(green / denominator)
   23293                     #                .setBlue(blue / denominator);
   23294                     #        int alpha = color.getAlpha();
   23295                     #        if (alpha != 255) {
   23296                     #          result.setAlpha(
   23297                     #              FloatValue
   23298                     #                  .newBuilder()
   23299                     #                  .setValue(((float) alpha) / denominator)
   23300                     #                  .build());
   23301                     #        }
   23302                     #        return resultBuilder.build();
   23303                     #      }
   23304                     #      // ...
   23305                     #
   23306                     # Example (iOS / Obj-C):
   23307                     #
   23308                     #      // ...
   23309                     #      static UIColor* fromProto(Color* protocolor) {
   23310                     #         float red = [protocolor red];
   23311                     #         float green = [protocolor green];
   23312                     #         float blue = [protocolor blue];
   23313                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   23314                     #         float alpha = 1.0;
   23315                     #         if (alpha_wrapper != nil) {
   23316                     #           alpha = [alpha_wrapper value];
   23317                     #         }
   23318                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   23319                     #      }
   23320                     #
   23321                     #      static Color* toProto(UIColor* color) {
   23322                     #          CGFloat red, green, blue, alpha;
   23323                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   23324                     #            return nil;
   23325                     #          }
   23326                     #          Color* result = [Color alloc] init];
   23327                     #          [result setRed:red];
   23328                     #          [result setGreen:green];
   23329                     #          [result setBlue:blue];
   23330                     #          if (alpha <= 0.9999) {
   23331                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   23332                     #          }
   23333                     #          [result autorelease];
   23334                     #          return result;
   23335                     #     }
   23336                     #     // ...
   23337                     #
   23338                     #  Example (JavaScript):
   23339                     #
   23340                     #     // ...
   23341                     #
   23342                     #     var protoToCssColor = function(rgb_color) {
   23343                     #        var redFrac = rgb_color.red || 0.0;
   23344                     #        var greenFrac = rgb_color.green || 0.0;
   23345                     #        var blueFrac = rgb_color.blue || 0.0;
   23346                     #        var red = Math.floor(redFrac * 255);
   23347                     #        var green = Math.floor(greenFrac * 255);
   23348                     #        var blue = Math.floor(blueFrac * 255);
   23349                     #
   23350                     #        if (!('alpha' in rgb_color)) {
   23351                     #           return rgbToCssColor_(red, green, blue);
   23352                     #        }
   23353                     #
   23354                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   23355                     #        var rgbParams = [red, green, blue].join(',');
   23356                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   23357                     #     };
   23358                     #
   23359                     #     var rgbToCssColor_ = function(red, green, blue) {
   23360                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   23361                     #       var hexString = rgbNumber.toString(16);
   23362                     #       var missingZeros = 6 - hexString.length;
   23363                     #       var resultBuilder = ['#'];
   23364                     #       for (var i = 0; i < missingZeros; i++) {
   23365                     #          resultBuilder.push('0');
   23366                     #       }
   23367                     #       resultBuilder.push(hexString);
   23368                     #       return resultBuilder.join('');
   23369                     #     };
   23370                     #
   23371                     #     // ...
   23372                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   23373                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   23374                       # the final pixel color is defined by the equation:
   23375                       #
   23376                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   23377                       #
   23378                       # This means that a value of 1.0 corresponds to a solid color, whereas
   23379                       # a value of 0.0 corresponds to a completely transparent color. This
   23380                       # uses a wrapper message rather than a simple float scalar so that it is
   23381                       # possible to distinguish between a default value and the value being unset.
   23382                       # If omitted, this color object is to be rendered as a solid color
   23383                       # (as if the alpha value had been explicitly given with a value of 1.0).
   23384                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   23385                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   23386                 },
   23387                 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   23388                 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   23389                     # Absent values indicate that the field isn't specified.
   23390                   "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   23391                       # for simplicity of conversion to/from color representations in various
   23392                       # languages over compactness; for example, the fields of this representation
   23393                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   23394                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   23395                       # method in iOS; and, with just a little work, it can be easily formatted into
   23396                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   23397                       #
   23398                       # Example (Java):
   23399                       #
   23400                       #      import com.google.type.Color;
   23401                       #
   23402                       #      // ...
   23403                       #      public static java.awt.Color fromProto(Color protocolor) {
   23404                       #        float alpha = protocolor.hasAlpha()
   23405                       #            ? protocolor.getAlpha().getValue()
   23406                       #            : 1.0;
   23407                       #
   23408                       #        return new java.awt.Color(
   23409                       #            protocolor.getRed(),
   23410                       #            protocolor.getGreen(),
   23411                       #            protocolor.getBlue(),
   23412                       #            alpha);
   23413                       #      }
   23414                       #
   23415                       #      public static Color toProto(java.awt.Color color) {
   23416                       #        float red = (float) color.getRed();
   23417                       #        float green = (float) color.getGreen();
   23418                       #        float blue = (float) color.getBlue();
   23419                       #        float denominator = 255.0;
   23420                       #        Color.Builder resultBuilder =
   23421                       #            Color
   23422                       #                .newBuilder()
   23423                       #                .setRed(red / denominator)
   23424                       #                .setGreen(green / denominator)
   23425                       #                .setBlue(blue / denominator);
   23426                       #        int alpha = color.getAlpha();
   23427                       #        if (alpha != 255) {
   23428                       #          result.setAlpha(
   23429                       #              FloatValue
   23430                       #                  .newBuilder()
   23431                       #                  .setValue(((float) alpha) / denominator)
   23432                       #                  .build());
   23433                       #        }
   23434                       #        return resultBuilder.build();
   23435                       #      }
   23436                       #      // ...
   23437                       #
   23438                       # Example (iOS / Obj-C):
   23439                       #
   23440                       #      // ...
   23441                       #      static UIColor* fromProto(Color* protocolor) {
   23442                       #         float red = [protocolor red];
   23443                       #         float green = [protocolor green];
   23444                       #         float blue = [protocolor blue];
   23445                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   23446                       #         float alpha = 1.0;
   23447                       #         if (alpha_wrapper != nil) {
   23448                       #           alpha = [alpha_wrapper value];
   23449                       #         }
   23450                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   23451                       #      }
   23452                       #
   23453                       #      static Color* toProto(UIColor* color) {
   23454                       #          CGFloat red, green, blue, alpha;
   23455                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   23456                       #            return nil;
   23457                       #          }
   23458                       #          Color* result = [Color alloc] init];
   23459                       #          [result setRed:red];
   23460                       #          [result setGreen:green];
   23461                       #          [result setBlue:blue];
   23462                       #          if (alpha <= 0.9999) {
   23463                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   23464                       #          }
   23465                       #          [result autorelease];
   23466                       #          return result;
   23467                       #     }
   23468                       #     // ...
   23469                       #
   23470                       #  Example (JavaScript):
   23471                       #
   23472                       #     // ...
   23473                       #
   23474                       #     var protoToCssColor = function(rgb_color) {
   23475                       #        var redFrac = rgb_color.red || 0.0;
   23476                       #        var greenFrac = rgb_color.green || 0.0;
   23477                       #        var blueFrac = rgb_color.blue || 0.0;
   23478                       #        var red = Math.floor(redFrac * 255);
   23479                       #        var green = Math.floor(greenFrac * 255);
   23480                       #        var blue = Math.floor(blueFrac * 255);
   23481                       #
   23482                       #        if (!('alpha' in rgb_color)) {
   23483                       #           return rgbToCssColor_(red, green, blue);
   23484                       #        }
   23485                       #
   23486                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   23487                       #        var rgbParams = [red, green, blue].join(',');
   23488                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   23489                       #     };
   23490                       #
   23491                       #     var rgbToCssColor_ = function(red, green, blue) {
   23492                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   23493                       #       var hexString = rgbNumber.toString(16);
   23494                       #       var missingZeros = 6 - hexString.length;
   23495                       #       var resultBuilder = ['#'];
   23496                       #       for (var i = 0; i < missingZeros; i++) {
   23497                       #          resultBuilder.push('0');
   23498                       #       }
   23499                       #       resultBuilder.push(hexString);
   23500                       #       return resultBuilder.join('');
   23501                       #     };
   23502                       #
   23503                       #     // ...
   23504                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   23505                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   23506                         # the final pixel color is defined by the equation:
   23507                         #
   23508                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   23509                         #
   23510                         # This means that a value of 1.0 corresponds to a solid color, whereas
   23511                         # a value of 0.0 corresponds to a completely transparent color. This
   23512                         # uses a wrapper message rather than a simple float scalar so that it is
   23513                         # possible to distinguish between a default value and the value being unset.
   23514                         # If omitted, this color object is to be rendered as a solid color
   23515                         # (as if the alpha value had been explicitly given with a value of 1.0).
   23516                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   23517                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   23518                   },
   23519                   "bold": True or False, # True if the text is bold.
   23520                   "strikethrough": True or False, # True if the text has a strikethrough.
   23521                   "fontFamily": "A String", # The font family.
   23522                   "fontSize": 42, # The size of the font.
   23523                   "italic": True or False, # True if the text is italicized.
   23524                   "underline": True or False, # True if the text is underlined.
   23525                 },
   23526                 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   23527                   "angle": 42, # The angle between the standard orientation and the desired orientation.
   23528                       # Measured in degrees. Valid values are between -90 and 90. Positive
   23529                       # angles are angled upwards, negative are angled downwards.
   23530                       #
   23531                       # Note: For LTR text direction positive angles are in the counterclockwise
   23532                       # direction, whereas for RTL they are in the clockwise direction
   23533                   "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   23534                       # characters is unchanged.
   23535                       # For example:
   23536                       #
   23537                       #     | V |
   23538                       #     | e |
   23539                       #     | r |
   23540                       #     | t |
   23541                       #     | i |
   23542                       #     | c |
   23543                       #     | a |
   23544                       #     | l |
   23545                 },
   23546                 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   23547                 "borders": { # The borders of the cell. # The borders of the cell.
   23548                   "top": { # A border along a cell. # The top border of the cell.
   23549                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   23550                         # for simplicity of conversion to/from color representations in various
   23551                         # languages over compactness; for example, the fields of this representation
   23552                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   23553                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   23554                         # method in iOS; and, with just a little work, it can be easily formatted into
   23555                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   23556                         #
   23557                         # Example (Java):
   23558                         #
   23559                         #      import com.google.type.Color;
   23560                         #
   23561                         #      // ...
   23562                         #      public static java.awt.Color fromProto(Color protocolor) {
   23563                         #        float alpha = protocolor.hasAlpha()
   23564                         #            ? protocolor.getAlpha().getValue()
   23565                         #            : 1.0;
   23566                         #
   23567                         #        return new java.awt.Color(
   23568                         #            protocolor.getRed(),
   23569                         #            protocolor.getGreen(),
   23570                         #            protocolor.getBlue(),
   23571                         #            alpha);
   23572                         #      }
   23573                         #
   23574                         #      public static Color toProto(java.awt.Color color) {
   23575                         #        float red = (float) color.getRed();
   23576                         #        float green = (float) color.getGreen();
   23577                         #        float blue = (float) color.getBlue();
   23578                         #        float denominator = 255.0;
   23579                         #        Color.Builder resultBuilder =
   23580                         #            Color
   23581                         #                .newBuilder()
   23582                         #                .setRed(red / denominator)
   23583                         #                .setGreen(green / denominator)
   23584                         #                .setBlue(blue / denominator);
   23585                         #        int alpha = color.getAlpha();
   23586                         #        if (alpha != 255) {
   23587                         #          result.setAlpha(
   23588                         #              FloatValue
   23589                         #                  .newBuilder()
   23590                         #                  .setValue(((float) alpha) / denominator)
   23591                         #                  .build());
   23592                         #        }
   23593                         #        return resultBuilder.build();
   23594                         #      }
   23595                         #      // ...
   23596                         #
   23597                         # Example (iOS / Obj-C):
   23598                         #
   23599                         #      // ...
   23600                         #      static UIColor* fromProto(Color* protocolor) {
   23601                         #         float red = [protocolor red];
   23602                         #         float green = [protocolor green];
   23603                         #         float blue = [protocolor blue];
   23604                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   23605                         #         float alpha = 1.0;
   23606                         #         if (alpha_wrapper != nil) {
   23607                         #           alpha = [alpha_wrapper value];
   23608                         #         }
   23609                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   23610                         #      }
   23611                         #
   23612                         #      static Color* toProto(UIColor* color) {
   23613                         #          CGFloat red, green, blue, alpha;
   23614                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   23615                         #            return nil;
   23616                         #          }
   23617                         #          Color* result = [Color alloc] init];
   23618                         #          [result setRed:red];
   23619                         #          [result setGreen:green];
   23620                         #          [result setBlue:blue];
   23621                         #          if (alpha <= 0.9999) {
   23622                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   23623                         #          }
   23624                         #          [result autorelease];
   23625                         #          return result;
   23626                         #     }
   23627                         #     // ...
   23628                         #
   23629                         #  Example (JavaScript):
   23630                         #
   23631                         #     // ...
   23632                         #
   23633                         #     var protoToCssColor = function(rgb_color) {
   23634                         #        var redFrac = rgb_color.red || 0.0;
   23635                         #        var greenFrac = rgb_color.green || 0.0;
   23636                         #        var blueFrac = rgb_color.blue || 0.0;
   23637                         #        var red = Math.floor(redFrac * 255);
   23638                         #        var green = Math.floor(greenFrac * 255);
   23639                         #        var blue = Math.floor(blueFrac * 255);
   23640                         #
   23641                         #        if (!('alpha' in rgb_color)) {
   23642                         #           return rgbToCssColor_(red, green, blue);
   23643                         #        }
   23644                         #
   23645                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   23646                         #        var rgbParams = [red, green, blue].join(',');
   23647                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   23648                         #     };
   23649                         #
   23650                         #     var rgbToCssColor_ = function(red, green, blue) {
   23651                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   23652                         #       var hexString = rgbNumber.toString(16);
   23653                         #       var missingZeros = 6 - hexString.length;
   23654                         #       var resultBuilder = ['#'];
   23655                         #       for (var i = 0; i < missingZeros; i++) {
   23656                         #          resultBuilder.push('0');
   23657                         #       }
   23658                         #       resultBuilder.push(hexString);
   23659                         #       return resultBuilder.join('');
   23660                         #     };
   23661                         #
   23662                         #     // ...
   23663                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   23664                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   23665                           # the final pixel color is defined by the equation:
   23666                           #
   23667                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   23668                           #
   23669                           # This means that a value of 1.0 corresponds to a solid color, whereas
   23670                           # a value of 0.0 corresponds to a completely transparent color. This
   23671                           # uses a wrapper message rather than a simple float scalar so that it is
   23672                           # possible to distinguish between a default value and the value being unset.
   23673                           # If omitted, this color object is to be rendered as a solid color
   23674                           # (as if the alpha value had been explicitly given with a value of 1.0).
   23675                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   23676                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   23677                     },
   23678                     "width": 42, # The width of the border, in pixels.
   23679                         # Deprecated; the width is determined by the "style" field.
   23680                     "style": "A String", # The style of the border.
   23681                   },
   23682                   "right": { # A border along a cell. # The right border of the cell.
   23683                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   23684                         # for simplicity of conversion to/from color representations in various
   23685                         # languages over compactness; for example, the fields of this representation
   23686                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   23687                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   23688                         # method in iOS; and, with just a little work, it can be easily formatted into
   23689                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   23690                         #
   23691                         # Example (Java):
   23692                         #
   23693                         #      import com.google.type.Color;
   23694                         #
   23695                         #      // ...
   23696                         #      public static java.awt.Color fromProto(Color protocolor) {
   23697                         #        float alpha = protocolor.hasAlpha()
   23698                         #            ? protocolor.getAlpha().getValue()
   23699                         #            : 1.0;
   23700                         #
   23701                         #        return new java.awt.Color(
   23702                         #            protocolor.getRed(),
   23703                         #            protocolor.getGreen(),
   23704                         #            protocolor.getBlue(),
   23705                         #            alpha);
   23706                         #      }
   23707                         #
   23708                         #      public static Color toProto(java.awt.Color color) {
   23709                         #        float red = (float) color.getRed();
   23710                         #        float green = (float) color.getGreen();
   23711                         #        float blue = (float) color.getBlue();
   23712                         #        float denominator = 255.0;
   23713                         #        Color.Builder resultBuilder =
   23714                         #            Color
   23715                         #                .newBuilder()
   23716                         #                .setRed(red / denominator)
   23717                         #                .setGreen(green / denominator)
   23718                         #                .setBlue(blue / denominator);
   23719                         #        int alpha = color.getAlpha();
   23720                         #        if (alpha != 255) {
   23721                         #          result.setAlpha(
   23722                         #              FloatValue
   23723                         #                  .newBuilder()
   23724                         #                  .setValue(((float) alpha) / denominator)
   23725                         #                  .build());
   23726                         #        }
   23727                         #        return resultBuilder.build();
   23728                         #      }
   23729                         #      // ...
   23730                         #
   23731                         # Example (iOS / Obj-C):
   23732                         #
   23733                         #      // ...
   23734                         #      static UIColor* fromProto(Color* protocolor) {
   23735                         #         float red = [protocolor red];
   23736                         #         float green = [protocolor green];
   23737                         #         float blue = [protocolor blue];
   23738                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   23739                         #         float alpha = 1.0;
   23740                         #         if (alpha_wrapper != nil) {
   23741                         #           alpha = [alpha_wrapper value];
   23742                         #         }
   23743                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   23744                         #      }
   23745                         #
   23746                         #      static Color* toProto(UIColor* color) {
   23747                         #          CGFloat red, green, blue, alpha;
   23748                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   23749                         #            return nil;
   23750                         #          }
   23751                         #          Color* result = [Color alloc] init];
   23752                         #          [result setRed:red];
   23753                         #          [result setGreen:green];
   23754                         #          [result setBlue:blue];
   23755                         #          if (alpha <= 0.9999) {
   23756                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   23757                         #          }
   23758                         #          [result autorelease];
   23759                         #          return result;
   23760                         #     }
   23761                         #     // ...
   23762                         #
   23763                         #  Example (JavaScript):
   23764                         #
   23765                         #     // ...
   23766                         #
   23767                         #     var protoToCssColor = function(rgb_color) {
   23768                         #        var redFrac = rgb_color.red || 0.0;
   23769                         #        var greenFrac = rgb_color.green || 0.0;
   23770                         #        var blueFrac = rgb_color.blue || 0.0;
   23771                         #        var red = Math.floor(redFrac * 255);
   23772                         #        var green = Math.floor(greenFrac * 255);
   23773                         #        var blue = Math.floor(blueFrac * 255);
   23774                         #
   23775                         #        if (!('alpha' in rgb_color)) {
   23776                         #           return rgbToCssColor_(red, green, blue);
   23777                         #        }
   23778                         #
   23779                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   23780                         #        var rgbParams = [red, green, blue].join(',');
   23781                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   23782                         #     };
   23783                         #
   23784                         #     var rgbToCssColor_ = function(red, green, blue) {
   23785                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   23786                         #       var hexString = rgbNumber.toString(16);
   23787                         #       var missingZeros = 6 - hexString.length;
   23788                         #       var resultBuilder = ['#'];
   23789                         #       for (var i = 0; i < missingZeros; i++) {
   23790                         #          resultBuilder.push('0');
   23791                         #       }
   23792                         #       resultBuilder.push(hexString);
   23793                         #       return resultBuilder.join('');
   23794                         #     };
   23795                         #
   23796                         #     // ...
   23797                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   23798                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   23799                           # the final pixel color is defined by the equation:
   23800                           #
   23801                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   23802                           #
   23803                           # This means that a value of 1.0 corresponds to a solid color, whereas
   23804                           # a value of 0.0 corresponds to a completely transparent color. This
   23805                           # uses a wrapper message rather than a simple float scalar so that it is
   23806                           # possible to distinguish between a default value and the value being unset.
   23807                           # If omitted, this color object is to be rendered as a solid color
   23808                           # (as if the alpha value had been explicitly given with a value of 1.0).
   23809                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   23810                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   23811                     },
   23812                     "width": 42, # The width of the border, in pixels.
   23813                         # Deprecated; the width is determined by the "style" field.
   23814                     "style": "A String", # The style of the border.
   23815                   },
   23816                   "bottom": { # A border along a cell. # The bottom border of the cell.
   23817                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   23818                         # for simplicity of conversion to/from color representations in various
   23819                         # languages over compactness; for example, the fields of this representation
   23820                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   23821                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   23822                         # method in iOS; and, with just a little work, it can be easily formatted into
   23823                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   23824                         #
   23825                         # Example (Java):
   23826                         #
   23827                         #      import com.google.type.Color;
   23828                         #
   23829                         #      // ...
   23830                         #      public static java.awt.Color fromProto(Color protocolor) {
   23831                         #        float alpha = protocolor.hasAlpha()
   23832                         #            ? protocolor.getAlpha().getValue()
   23833                         #            : 1.0;
   23834                         #
   23835                         #        return new java.awt.Color(
   23836                         #            protocolor.getRed(),
   23837                         #            protocolor.getGreen(),
   23838                         #            protocolor.getBlue(),
   23839                         #            alpha);
   23840                         #      }
   23841                         #
   23842                         #      public static Color toProto(java.awt.Color color) {
   23843                         #        float red = (float) color.getRed();
   23844                         #        float green = (float) color.getGreen();
   23845                         #        float blue = (float) color.getBlue();
   23846                         #        float denominator = 255.0;
   23847                         #        Color.Builder resultBuilder =
   23848                         #            Color
   23849                         #                .newBuilder()
   23850                         #                .setRed(red / denominator)
   23851                         #                .setGreen(green / denominator)
   23852                         #                .setBlue(blue / denominator);
   23853                         #        int alpha = color.getAlpha();
   23854                         #        if (alpha != 255) {
   23855                         #          result.setAlpha(
   23856                         #              FloatValue
   23857                         #                  .newBuilder()
   23858                         #                  .setValue(((float) alpha) / denominator)
   23859                         #                  .build());
   23860                         #        }
   23861                         #        return resultBuilder.build();
   23862                         #      }
   23863                         #      // ...
   23864                         #
   23865                         # Example (iOS / Obj-C):
   23866                         #
   23867                         #      // ...
   23868                         #      static UIColor* fromProto(Color* protocolor) {
   23869                         #         float red = [protocolor red];
   23870                         #         float green = [protocolor green];
   23871                         #         float blue = [protocolor blue];
   23872                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   23873                         #         float alpha = 1.0;
   23874                         #         if (alpha_wrapper != nil) {
   23875                         #           alpha = [alpha_wrapper value];
   23876                         #         }
   23877                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   23878                         #      }
   23879                         #
   23880                         #      static Color* toProto(UIColor* color) {
   23881                         #          CGFloat red, green, blue, alpha;
   23882                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   23883                         #            return nil;
   23884                         #          }
   23885                         #          Color* result = [Color alloc] init];
   23886                         #          [result setRed:red];
   23887                         #          [result setGreen:green];
   23888                         #          [result setBlue:blue];
   23889                         #          if (alpha <= 0.9999) {
   23890                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   23891                         #          }
   23892                         #          [result autorelease];
   23893                         #          return result;
   23894                         #     }
   23895                         #     // ...
   23896                         #
   23897                         #  Example (JavaScript):
   23898                         #
   23899                         #     // ...
   23900                         #
   23901                         #     var protoToCssColor = function(rgb_color) {
   23902                         #        var redFrac = rgb_color.red || 0.0;
   23903                         #        var greenFrac = rgb_color.green || 0.0;
   23904                         #        var blueFrac = rgb_color.blue || 0.0;
   23905                         #        var red = Math.floor(redFrac * 255);
   23906                         #        var green = Math.floor(greenFrac * 255);
   23907                         #        var blue = Math.floor(blueFrac * 255);
   23908                         #
   23909                         #        if (!('alpha' in rgb_color)) {
   23910                         #           return rgbToCssColor_(red, green, blue);
   23911                         #        }
   23912                         #
   23913                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   23914                         #        var rgbParams = [red, green, blue].join(',');
   23915                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   23916                         #     };
   23917                         #
   23918                         #     var rgbToCssColor_ = function(red, green, blue) {
   23919                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   23920                         #       var hexString = rgbNumber.toString(16);
   23921                         #       var missingZeros = 6 - hexString.length;
   23922                         #       var resultBuilder = ['#'];
   23923                         #       for (var i = 0; i < missingZeros; i++) {
   23924                         #          resultBuilder.push('0');
   23925                         #       }
   23926                         #       resultBuilder.push(hexString);
   23927                         #       return resultBuilder.join('');
   23928                         #     };
   23929                         #
   23930                         #     // ...
   23931                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   23932                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   23933                           # the final pixel color is defined by the equation:
   23934                           #
   23935                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   23936                           #
   23937                           # This means that a value of 1.0 corresponds to a solid color, whereas
   23938                           # a value of 0.0 corresponds to a completely transparent color. This
   23939                           # uses a wrapper message rather than a simple float scalar so that it is
   23940                           # possible to distinguish between a default value and the value being unset.
   23941                           # If omitted, this color object is to be rendered as a solid color
   23942                           # (as if the alpha value had been explicitly given with a value of 1.0).
   23943                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   23944                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   23945                     },
   23946                     "width": 42, # The width of the border, in pixels.
   23947                         # Deprecated; the width is determined by the "style" field.
   23948                     "style": "A String", # The style of the border.
   23949                   },
   23950                   "left": { # A border along a cell. # The left border of the cell.
   23951                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   23952                         # for simplicity of conversion to/from color representations in various
   23953                         # languages over compactness; for example, the fields of this representation
   23954                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   23955                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   23956                         # method in iOS; and, with just a little work, it can be easily formatted into
   23957                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   23958                         #
   23959                         # Example (Java):
   23960                         #
   23961                         #      import com.google.type.Color;
   23962                         #
   23963                         #      // ...
   23964                         #      public static java.awt.Color fromProto(Color protocolor) {
   23965                         #        float alpha = protocolor.hasAlpha()
   23966                         #            ? protocolor.getAlpha().getValue()
   23967                         #            : 1.0;
   23968                         #
   23969                         #        return new java.awt.Color(
   23970                         #            protocolor.getRed(),
   23971                         #            protocolor.getGreen(),
   23972                         #            protocolor.getBlue(),
   23973                         #            alpha);
   23974                         #      }
   23975                         #
   23976                         #      public static Color toProto(java.awt.Color color) {
   23977                         #        float red = (float) color.getRed();
   23978                         #        float green = (float) color.getGreen();
   23979                         #        float blue = (float) color.getBlue();
   23980                         #        float denominator = 255.0;
   23981                         #        Color.Builder resultBuilder =
   23982                         #            Color
   23983                         #                .newBuilder()
   23984                         #                .setRed(red / denominator)
   23985                         #                .setGreen(green / denominator)
   23986                         #                .setBlue(blue / denominator);
   23987                         #        int alpha = color.getAlpha();
   23988                         #        if (alpha != 255) {
   23989                         #          result.setAlpha(
   23990                         #              FloatValue
   23991                         #                  .newBuilder()
   23992                         #                  .setValue(((float) alpha) / denominator)
   23993                         #                  .build());
   23994                         #        }
   23995                         #        return resultBuilder.build();
   23996                         #      }
   23997                         #      // ...
   23998                         #
   23999                         # Example (iOS / Obj-C):
   24000                         #
   24001                         #      // ...
   24002                         #      static UIColor* fromProto(Color* protocolor) {
   24003                         #         float red = [protocolor red];
   24004                         #         float green = [protocolor green];
   24005                         #         float blue = [protocolor blue];
   24006                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   24007                         #         float alpha = 1.0;
   24008                         #         if (alpha_wrapper != nil) {
   24009                         #           alpha = [alpha_wrapper value];
   24010                         #         }
   24011                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   24012                         #      }
   24013                         #
   24014                         #      static Color* toProto(UIColor* color) {
   24015                         #          CGFloat red, green, blue, alpha;
   24016                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   24017                         #            return nil;
   24018                         #          }
   24019                         #          Color* result = [Color alloc] init];
   24020                         #          [result setRed:red];
   24021                         #          [result setGreen:green];
   24022                         #          [result setBlue:blue];
   24023                         #          if (alpha <= 0.9999) {
   24024                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   24025                         #          }
   24026                         #          [result autorelease];
   24027                         #          return result;
   24028                         #     }
   24029                         #     // ...
   24030                         #
   24031                         #  Example (JavaScript):
   24032                         #
   24033                         #     // ...
   24034                         #
   24035                         #     var protoToCssColor = function(rgb_color) {
   24036                         #        var redFrac = rgb_color.red || 0.0;
   24037                         #        var greenFrac = rgb_color.green || 0.0;
   24038                         #        var blueFrac = rgb_color.blue || 0.0;
   24039                         #        var red = Math.floor(redFrac * 255);
   24040                         #        var green = Math.floor(greenFrac * 255);
   24041                         #        var blue = Math.floor(blueFrac * 255);
   24042                         #
   24043                         #        if (!('alpha' in rgb_color)) {
   24044                         #           return rgbToCssColor_(red, green, blue);
   24045                         #        }
   24046                         #
   24047                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   24048                         #        var rgbParams = [red, green, blue].join(',');
   24049                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   24050                         #     };
   24051                         #
   24052                         #     var rgbToCssColor_ = function(red, green, blue) {
   24053                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   24054                         #       var hexString = rgbNumber.toString(16);
   24055                         #       var missingZeros = 6 - hexString.length;
   24056                         #       var resultBuilder = ['#'];
   24057                         #       for (var i = 0; i < missingZeros; i++) {
   24058                         #          resultBuilder.push('0');
   24059                         #       }
   24060                         #       resultBuilder.push(hexString);
   24061                         #       return resultBuilder.join('');
   24062                         #     };
   24063                         #
   24064                         #     // ...
   24065                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   24066                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   24067                           # the final pixel color is defined by the equation:
   24068                           #
   24069                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   24070                           #
   24071                           # This means that a value of 1.0 corresponds to a solid color, whereas
   24072                           # a value of 0.0 corresponds to a completely transparent color. This
   24073                           # uses a wrapper message rather than a simple float scalar so that it is
   24074                           # possible to distinguish between a default value and the value being unset.
   24075                           # If omitted, this color object is to be rendered as a solid color
   24076                           # (as if the alpha value had been explicitly given with a value of 1.0).
   24077                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   24078                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   24079                     },
   24080                     "width": 42, # The width of the border, in pixels.
   24081                         # Deprecated; the width is determined by the "style" field.
   24082                     "style": "A String", # The style of the border.
   24083                   },
   24084                 },
   24085                 "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   24086               },
   24087             },
   24088             "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
   24089                 # the interpolation points listed. The format of a cell will vary
   24090                 # based on its contents as compared to the values of the interpolation
   24091                 # points.
   24092               "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
   24093                   # These pin the gradient color scale according to the color,
   24094                   # type and value chosen.
   24095                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   24096                     # for simplicity of conversion to/from color representations in various
   24097                     # languages over compactness; for example, the fields of this representation
   24098                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   24099                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   24100                     # method in iOS; and, with just a little work, it can be easily formatted into
   24101                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   24102                     #
   24103                     # Example (Java):
   24104                     #
   24105                     #      import com.google.type.Color;
   24106                     #
   24107                     #      // ...
   24108                     #      public static java.awt.Color fromProto(Color protocolor) {
   24109                     #        float alpha = protocolor.hasAlpha()
   24110                     #            ? protocolor.getAlpha().getValue()
   24111                     #            : 1.0;
   24112                     #
   24113                     #        return new java.awt.Color(
   24114                     #            protocolor.getRed(),
   24115                     #            protocolor.getGreen(),
   24116                     #            protocolor.getBlue(),
   24117                     #            alpha);
   24118                     #      }
   24119                     #
   24120                     #      public static Color toProto(java.awt.Color color) {
   24121                     #        float red = (float) color.getRed();
   24122                     #        float green = (float) color.getGreen();
   24123                     #        float blue = (float) color.getBlue();
   24124                     #        float denominator = 255.0;
   24125                     #        Color.Builder resultBuilder =
   24126                     #            Color
   24127                     #                .newBuilder()
   24128                     #                .setRed(red / denominator)
   24129                     #                .setGreen(green / denominator)
   24130                     #                .setBlue(blue / denominator);
   24131                     #        int alpha = color.getAlpha();
   24132                     #        if (alpha != 255) {
   24133                     #          result.setAlpha(
   24134                     #              FloatValue
   24135                     #                  .newBuilder()
   24136                     #                  .setValue(((float) alpha) / denominator)
   24137                     #                  .build());
   24138                     #        }
   24139                     #        return resultBuilder.build();
   24140                     #      }
   24141                     #      // ...
   24142                     #
   24143                     # Example (iOS / Obj-C):
   24144                     #
   24145                     #      // ...
   24146                     #      static UIColor* fromProto(Color* protocolor) {
   24147                     #         float red = [protocolor red];
   24148                     #         float green = [protocolor green];
   24149                     #         float blue = [protocolor blue];
   24150                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   24151                     #         float alpha = 1.0;
   24152                     #         if (alpha_wrapper != nil) {
   24153                     #           alpha = [alpha_wrapper value];
   24154                     #         }
   24155                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   24156                     #      }
   24157                     #
   24158                     #      static Color* toProto(UIColor* color) {
   24159                     #          CGFloat red, green, blue, alpha;
   24160                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   24161                     #            return nil;
   24162                     #          }
   24163                     #          Color* result = [Color alloc] init];
   24164                     #          [result setRed:red];
   24165                     #          [result setGreen:green];
   24166                     #          [result setBlue:blue];
   24167                     #          if (alpha <= 0.9999) {
   24168                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   24169                     #          }
   24170                     #          [result autorelease];
   24171                     #          return result;
   24172                     #     }
   24173                     #     // ...
   24174                     #
   24175                     #  Example (JavaScript):
   24176                     #
   24177                     #     // ...
   24178                     #
   24179                     #     var protoToCssColor = function(rgb_color) {
   24180                     #        var redFrac = rgb_color.red || 0.0;
   24181                     #        var greenFrac = rgb_color.green || 0.0;
   24182                     #        var blueFrac = rgb_color.blue || 0.0;
   24183                     #        var red = Math.floor(redFrac * 255);
   24184                     #        var green = Math.floor(greenFrac * 255);
   24185                     #        var blue = Math.floor(blueFrac * 255);
   24186                     #
   24187                     #        if (!('alpha' in rgb_color)) {
   24188                     #           return rgbToCssColor_(red, green, blue);
   24189                     #        }
   24190                     #
   24191                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   24192                     #        var rgbParams = [red, green, blue].join(',');
   24193                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   24194                     #     };
   24195                     #
   24196                     #     var rgbToCssColor_ = function(red, green, blue) {
   24197                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   24198                     #       var hexString = rgbNumber.toString(16);
   24199                     #       var missingZeros = 6 - hexString.length;
   24200                     #       var resultBuilder = ['#'];
   24201                     #       for (var i = 0; i < missingZeros; i++) {
   24202                     #          resultBuilder.push('0');
   24203                     #       }
   24204                     #       resultBuilder.push(hexString);
   24205                     #       return resultBuilder.join('');
   24206                     #     };
   24207                     #
   24208                     #     // ...
   24209                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   24210                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   24211                       # the final pixel color is defined by the equation:
   24212                       #
   24213                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   24214                       #
   24215                       # This means that a value of 1.0 corresponds to a solid color, whereas
   24216                       # a value of 0.0 corresponds to a completely transparent color. This
   24217                       # uses a wrapper message rather than a simple float scalar so that it is
   24218                       # possible to distinguish between a default value and the value being unset.
   24219                       # If omitted, this color object is to be rendered as a solid color
   24220                       # (as if the alpha value had been explicitly given with a value of 1.0).
   24221                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   24222                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   24223                 },
   24224                 "type": "A String", # How the value should be interpreted.
   24225                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   24226                     # Unused if type is MIN or
   24227                     # MAX.
   24228               },
   24229               "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
   24230                   # These pin the gradient color scale according to the color,
   24231                   # type and value chosen.
   24232                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   24233                     # for simplicity of conversion to/from color representations in various
   24234                     # languages over compactness; for example, the fields of this representation
   24235                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   24236                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   24237                     # method in iOS; and, with just a little work, it can be easily formatted into
   24238                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   24239                     #
   24240                     # Example (Java):
   24241                     #
   24242                     #      import com.google.type.Color;
   24243                     #
   24244                     #      // ...
   24245                     #      public static java.awt.Color fromProto(Color protocolor) {
   24246                     #        float alpha = protocolor.hasAlpha()
   24247                     #            ? protocolor.getAlpha().getValue()
   24248                     #            : 1.0;
   24249                     #
   24250                     #        return new java.awt.Color(
   24251                     #            protocolor.getRed(),
   24252                     #            protocolor.getGreen(),
   24253                     #            protocolor.getBlue(),
   24254                     #            alpha);
   24255                     #      }
   24256                     #
   24257                     #      public static Color toProto(java.awt.Color color) {
   24258                     #        float red = (float) color.getRed();
   24259                     #        float green = (float) color.getGreen();
   24260                     #        float blue = (float) color.getBlue();
   24261                     #        float denominator = 255.0;
   24262                     #        Color.Builder resultBuilder =
   24263                     #            Color
   24264                     #                .newBuilder()
   24265                     #                .setRed(red / denominator)
   24266                     #                .setGreen(green / denominator)
   24267                     #                .setBlue(blue / denominator);
   24268                     #        int alpha = color.getAlpha();
   24269                     #        if (alpha != 255) {
   24270                     #          result.setAlpha(
   24271                     #              FloatValue
   24272                     #                  .newBuilder()
   24273                     #                  .setValue(((float) alpha) / denominator)
   24274                     #                  .build());
   24275                     #        }
   24276                     #        return resultBuilder.build();
   24277                     #      }
   24278                     #      // ...
   24279                     #
   24280                     # Example (iOS / Obj-C):
   24281                     #
   24282                     #      // ...
   24283                     #      static UIColor* fromProto(Color* protocolor) {
   24284                     #         float red = [protocolor red];
   24285                     #         float green = [protocolor green];
   24286                     #         float blue = [protocolor blue];
   24287                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   24288                     #         float alpha = 1.0;
   24289                     #         if (alpha_wrapper != nil) {
   24290                     #           alpha = [alpha_wrapper value];
   24291                     #         }
   24292                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   24293                     #      }
   24294                     #
   24295                     #      static Color* toProto(UIColor* color) {
   24296                     #          CGFloat red, green, blue, alpha;
   24297                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   24298                     #            return nil;
   24299                     #          }
   24300                     #          Color* result = [Color alloc] init];
   24301                     #          [result setRed:red];
   24302                     #          [result setGreen:green];
   24303                     #          [result setBlue:blue];
   24304                     #          if (alpha <= 0.9999) {
   24305                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   24306                     #          }
   24307                     #          [result autorelease];
   24308                     #          return result;
   24309                     #     }
   24310                     #     // ...
   24311                     #
   24312                     #  Example (JavaScript):
   24313                     #
   24314                     #     // ...
   24315                     #
   24316                     #     var protoToCssColor = function(rgb_color) {
   24317                     #        var redFrac = rgb_color.red || 0.0;
   24318                     #        var greenFrac = rgb_color.green || 0.0;
   24319                     #        var blueFrac = rgb_color.blue || 0.0;
   24320                     #        var red = Math.floor(redFrac * 255);
   24321                     #        var green = Math.floor(greenFrac * 255);
   24322                     #        var blue = Math.floor(blueFrac * 255);
   24323                     #
   24324                     #        if (!('alpha' in rgb_color)) {
   24325                     #           return rgbToCssColor_(red, green, blue);
   24326                     #        }
   24327                     #
   24328                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   24329                     #        var rgbParams = [red, green, blue].join(',');
   24330                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   24331                     #     };
   24332                     #
   24333                     #     var rgbToCssColor_ = function(red, green, blue) {
   24334                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   24335                     #       var hexString = rgbNumber.toString(16);
   24336                     #       var missingZeros = 6 - hexString.length;
   24337                     #       var resultBuilder = ['#'];
   24338                     #       for (var i = 0; i < missingZeros; i++) {
   24339                     #          resultBuilder.push('0');
   24340                     #       }
   24341                     #       resultBuilder.push(hexString);
   24342                     #       return resultBuilder.join('');
   24343                     #     };
   24344                     #
   24345                     #     // ...
   24346                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   24347                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   24348                       # the final pixel color is defined by the equation:
   24349                       #
   24350                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   24351                       #
   24352                       # This means that a value of 1.0 corresponds to a solid color, whereas
   24353                       # a value of 0.0 corresponds to a completely transparent color. This
   24354                       # uses a wrapper message rather than a simple float scalar so that it is
   24355                       # possible to distinguish between a default value and the value being unset.
   24356                       # If omitted, this color object is to be rendered as a solid color
   24357                       # (as if the alpha value had been explicitly given with a value of 1.0).
   24358                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   24359                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   24360                 },
   24361                 "type": "A String", # How the value should be interpreted.
   24362                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   24363                     # Unused if type is MIN or
   24364                     # MAX.
   24365               },
   24366               "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
   24367                   # These pin the gradient color scale according to the color,
   24368                   # type and value chosen.
   24369                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   24370                     # for simplicity of conversion to/from color representations in various
   24371                     # languages over compactness; for example, the fields of this representation
   24372                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   24373                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   24374                     # method in iOS; and, with just a little work, it can be easily formatted into
   24375                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   24376                     #
   24377                     # Example (Java):
   24378                     #
   24379                     #      import com.google.type.Color;
   24380                     #
   24381                     #      // ...
   24382                     #      public static java.awt.Color fromProto(Color protocolor) {
   24383                     #        float alpha = protocolor.hasAlpha()
   24384                     #            ? protocolor.getAlpha().getValue()
   24385                     #            : 1.0;
   24386                     #
   24387                     #        return new java.awt.Color(
   24388                     #            protocolor.getRed(),
   24389                     #            protocolor.getGreen(),
   24390                     #            protocolor.getBlue(),
   24391                     #            alpha);
   24392                     #      }
   24393                     #
   24394                     #      public static Color toProto(java.awt.Color color) {
   24395                     #        float red = (float) color.getRed();
   24396                     #        float green = (float) color.getGreen();
   24397                     #        float blue = (float) color.getBlue();
   24398                     #        float denominator = 255.0;
   24399                     #        Color.Builder resultBuilder =
   24400                     #            Color
   24401                     #                .newBuilder()
   24402                     #                .setRed(red / denominator)
   24403                     #                .setGreen(green / denominator)
   24404                     #                .setBlue(blue / denominator);
   24405                     #        int alpha = color.getAlpha();
   24406                     #        if (alpha != 255) {
   24407                     #          result.setAlpha(
   24408                     #              FloatValue
   24409                     #                  .newBuilder()
   24410                     #                  .setValue(((float) alpha) / denominator)
   24411                     #                  .build());
   24412                     #        }
   24413                     #        return resultBuilder.build();
   24414                     #      }
   24415                     #      // ...
   24416                     #
   24417                     # Example (iOS / Obj-C):
   24418                     #
   24419                     #      // ...
   24420                     #      static UIColor* fromProto(Color* protocolor) {
   24421                     #         float red = [protocolor red];
   24422                     #         float green = [protocolor green];
   24423                     #         float blue = [protocolor blue];
   24424                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   24425                     #         float alpha = 1.0;
   24426                     #         if (alpha_wrapper != nil) {
   24427                     #           alpha = [alpha_wrapper value];
   24428                     #         }
   24429                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   24430                     #      }
   24431                     #
   24432                     #      static Color* toProto(UIColor* color) {
   24433                     #          CGFloat red, green, blue, alpha;
   24434                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   24435                     #            return nil;
   24436                     #          }
   24437                     #          Color* result = [Color alloc] init];
   24438                     #          [result setRed:red];
   24439                     #          [result setGreen:green];
   24440                     #          [result setBlue:blue];
   24441                     #          if (alpha <= 0.9999) {
   24442                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   24443                     #          }
   24444                     #          [result autorelease];
   24445                     #          return result;
   24446                     #     }
   24447                     #     // ...
   24448                     #
   24449                     #  Example (JavaScript):
   24450                     #
   24451                     #     // ...
   24452                     #
   24453                     #     var protoToCssColor = function(rgb_color) {
   24454                     #        var redFrac = rgb_color.red || 0.0;
   24455                     #        var greenFrac = rgb_color.green || 0.0;
   24456                     #        var blueFrac = rgb_color.blue || 0.0;
   24457                     #        var red = Math.floor(redFrac * 255);
   24458                     #        var green = Math.floor(greenFrac * 255);
   24459                     #        var blue = Math.floor(blueFrac * 255);
   24460                     #
   24461                     #        if (!('alpha' in rgb_color)) {
   24462                     #           return rgbToCssColor_(red, green, blue);
   24463                     #        }
   24464                     #
   24465                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   24466                     #        var rgbParams = [red, green, blue].join(',');
   24467                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   24468                     #     };
   24469                     #
   24470                     #     var rgbToCssColor_ = function(red, green, blue) {
   24471                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   24472                     #       var hexString = rgbNumber.toString(16);
   24473                     #       var missingZeros = 6 - hexString.length;
   24474                     #       var resultBuilder = ['#'];
   24475                     #       for (var i = 0; i < missingZeros; i++) {
   24476                     #          resultBuilder.push('0');
   24477                     #       }
   24478                     #       resultBuilder.push(hexString);
   24479                     #       return resultBuilder.join('');
   24480                     #     };
   24481                     #
   24482                     #     // ...
   24483                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   24484                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   24485                       # the final pixel color is defined by the equation:
   24486                       #
   24487                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   24488                       #
   24489                       # This means that a value of 1.0 corresponds to a solid color, whereas
   24490                       # a value of 0.0 corresponds to a completely transparent color. This
   24491                       # uses a wrapper message rather than a simple float scalar so that it is
   24492                       # possible to distinguish between a default value and the value being unset.
   24493                       # If omitted, this color object is to be rendered as a solid color
   24494                       # (as if the alpha value had been explicitly given with a value of 1.0).
   24495                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   24496                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   24497                 },
   24498                 "type": "A String", # How the value should be interpreted.
   24499                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   24500                     # Unused if type is MIN or
   24501                     # MAX.
   24502               },
   24503             },
   24504           },
   24505           "newRule": { # A rule describing a conditional format. # The new rule that replaced the old rule (if replacing),
   24506               # or the rule that was moved (if moved)
   24507             "ranges": [ # The ranges that will be formatted if the condition is true.
   24508                 # All the ranges must be on the same grid.
   24509               { # A range on a sheet.
   24510                   # All indexes are zero-based.
   24511                   # Indexes are half open, e.g the start index is inclusive
   24512                   # and the end index is exclusive -- [start_index, end_index).
   24513                   # Missing indexes indicate the range is unbounded on that side.
   24514                   #
   24515                   # For example, if `"Sheet1"` is sheet ID 0, then:
   24516                   #
   24517                   #   `Sheet1!A1:A1 == sheet_id: 0,
   24518                   #                   start_row_index: 0, end_row_index: 1,
   24519                   #                   start_column_index: 0, end_column_index: 1`
   24520                   #
   24521                   #   `Sheet1!A3:B4 == sheet_id: 0,
   24522                   #                   start_row_index: 2, end_row_index: 4,
   24523                   #                   start_column_index: 0, end_column_index: 2`
   24524                   #
   24525                   #   `Sheet1!A:B == sheet_id: 0,
   24526                   #                 start_column_index: 0, end_column_index: 2`
   24527                   #
   24528                   #   `Sheet1!A5:B == sheet_id: 0,
   24529                   #                  start_row_index: 4,
   24530                   #                  start_column_index: 0, end_column_index: 2`
   24531                   #
   24532                   #   `Sheet1 == sheet_id:0`
   24533                   #
   24534                   # The start index must always be less than or equal to the end index.
   24535                   # If the start index equals the end index, then the range is empty.
   24536                   # Empty ranges are typically not meaningful and are usually rendered in the
   24537                   # UI as `#REF!`.
   24538                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   24539                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   24540                 "sheetId": 42, # The sheet this range is on.
   24541                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   24542                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   24543               },
   24544             ],
   24545             "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
   24546               "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
   24547                   # the format will be applied.
   24548                   # BooleanConditions are used by conditional formatting,
   24549                   # data validation, and the criteria in filters.
   24550                 "values": [ # The values of the condition. The number of supported values depends
   24551                     # on the condition type.  Some support zero values,
   24552                     # others one or two values,
   24553                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   24554                   { # The value of the condition.
   24555                     "relativeDate": "A String", # A relative date (based on the current date).
   24556                         # Valid only if the type is
   24557                         # DATE_BEFORE,
   24558                         # DATE_AFTER,
   24559                         # DATE_ON_OR_BEFORE or
   24560                         # DATE_ON_OR_AFTER.
   24561                         #
   24562                         # Relative dates are not supported in data validation.
   24563                         # They are supported only in conditional formatting and
   24564                         # conditional filters.
   24565                     "userEnteredValue": "A String", # A value the condition is based on.
   24566                         # The value will be parsed as if the user typed into a cell.
   24567                         # Formulas are supported (and must begin with an `=`).
   24568                   },
   24569                 ],
   24570                 "type": "A String", # The type of condition.
   24571               },
   24572               "format": { # The format of a cell. # The format to apply.
   24573                   # Conditional formatting can only apply a subset of formatting:
   24574                   # bold, italic,
   24575                   # strikethrough,
   24576                   # foreground color &
   24577                   # background color.
   24578                 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   24579                   "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   24580                       # the user's locale will be used if necessary for the given type.
   24581                       # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   24582                       # information about the supported patterns.
   24583                   "type": "A String", # The type of the number format.
   24584                       # When writing, this field must be set.
   24585                 },
   24586                 "textDirection": "A String", # The direction of the text in the cell.
   24587                 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   24588                     # When updating padding, every field must be specified.
   24589                   "top": 42, # The top padding of the cell.
   24590                   "right": 42, # The right padding of the cell.
   24591                   "bottom": 42, # The bottom padding of the cell.
   24592                   "left": 42, # The left padding of the cell.
   24593                 },
   24594                 "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   24595                 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   24596                     # for simplicity of conversion to/from color representations in various
   24597                     # languages over compactness; for example, the fields of this representation
   24598                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   24599                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   24600                     # method in iOS; and, with just a little work, it can be easily formatted into
   24601                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   24602                     #
   24603                     # Example (Java):
   24604                     #
   24605                     #      import com.google.type.Color;
   24606                     #
   24607                     #      // ...
   24608                     #      public static java.awt.Color fromProto(Color protocolor) {
   24609                     #        float alpha = protocolor.hasAlpha()
   24610                     #            ? protocolor.getAlpha().getValue()
   24611                     #            : 1.0;
   24612                     #
   24613                     #        return new java.awt.Color(
   24614                     #            protocolor.getRed(),
   24615                     #            protocolor.getGreen(),
   24616                     #            protocolor.getBlue(),
   24617                     #            alpha);
   24618                     #      }
   24619                     #
   24620                     #      public static Color toProto(java.awt.Color color) {
   24621                     #        float red = (float) color.getRed();
   24622                     #        float green = (float) color.getGreen();
   24623                     #        float blue = (float) color.getBlue();
   24624                     #        float denominator = 255.0;
   24625                     #        Color.Builder resultBuilder =
   24626                     #            Color
   24627                     #                .newBuilder()
   24628                     #                .setRed(red / denominator)
   24629                     #                .setGreen(green / denominator)
   24630                     #                .setBlue(blue / denominator);
   24631                     #        int alpha = color.getAlpha();
   24632                     #        if (alpha != 255) {
   24633                     #          result.setAlpha(
   24634                     #              FloatValue
   24635                     #                  .newBuilder()
   24636                     #                  .setValue(((float) alpha) / denominator)
   24637                     #                  .build());
   24638                     #        }
   24639                     #        return resultBuilder.build();
   24640                     #      }
   24641                     #      // ...
   24642                     #
   24643                     # Example (iOS / Obj-C):
   24644                     #
   24645                     #      // ...
   24646                     #      static UIColor* fromProto(Color* protocolor) {
   24647                     #         float red = [protocolor red];
   24648                     #         float green = [protocolor green];
   24649                     #         float blue = [protocolor blue];
   24650                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   24651                     #         float alpha = 1.0;
   24652                     #         if (alpha_wrapper != nil) {
   24653                     #           alpha = [alpha_wrapper value];
   24654                     #         }
   24655                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   24656                     #      }
   24657                     #
   24658                     #      static Color* toProto(UIColor* color) {
   24659                     #          CGFloat red, green, blue, alpha;
   24660                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   24661                     #            return nil;
   24662                     #          }
   24663                     #          Color* result = [Color alloc] init];
   24664                     #          [result setRed:red];
   24665                     #          [result setGreen:green];
   24666                     #          [result setBlue:blue];
   24667                     #          if (alpha <= 0.9999) {
   24668                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   24669                     #          }
   24670                     #          [result autorelease];
   24671                     #          return result;
   24672                     #     }
   24673                     #     // ...
   24674                     #
   24675                     #  Example (JavaScript):
   24676                     #
   24677                     #     // ...
   24678                     #
   24679                     #     var protoToCssColor = function(rgb_color) {
   24680                     #        var redFrac = rgb_color.red || 0.0;
   24681                     #        var greenFrac = rgb_color.green || 0.0;
   24682                     #        var blueFrac = rgb_color.blue || 0.0;
   24683                     #        var red = Math.floor(redFrac * 255);
   24684                     #        var green = Math.floor(greenFrac * 255);
   24685                     #        var blue = Math.floor(blueFrac * 255);
   24686                     #
   24687                     #        if (!('alpha' in rgb_color)) {
   24688                     #           return rgbToCssColor_(red, green, blue);
   24689                     #        }
   24690                     #
   24691                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   24692                     #        var rgbParams = [red, green, blue].join(',');
   24693                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   24694                     #     };
   24695                     #
   24696                     #     var rgbToCssColor_ = function(red, green, blue) {
   24697                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   24698                     #       var hexString = rgbNumber.toString(16);
   24699                     #       var missingZeros = 6 - hexString.length;
   24700                     #       var resultBuilder = ['#'];
   24701                     #       for (var i = 0; i < missingZeros; i++) {
   24702                     #          resultBuilder.push('0');
   24703                     #       }
   24704                     #       resultBuilder.push(hexString);
   24705                     #       return resultBuilder.join('');
   24706                     #     };
   24707                     #
   24708                     #     // ...
   24709                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   24710                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   24711                       # the final pixel color is defined by the equation:
   24712                       #
   24713                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   24714                       #
   24715                       # This means that a value of 1.0 corresponds to a solid color, whereas
   24716                       # a value of 0.0 corresponds to a completely transparent color. This
   24717                       # uses a wrapper message rather than a simple float scalar so that it is
   24718                       # possible to distinguish between a default value and the value being unset.
   24719                       # If omitted, this color object is to be rendered as a solid color
   24720                       # (as if the alpha value had been explicitly given with a value of 1.0).
   24721                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   24722                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   24723                 },
   24724                 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   24725                 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   24726                     # Absent values indicate that the field isn't specified.
   24727                   "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   24728                       # for simplicity of conversion to/from color representations in various
   24729                       # languages over compactness; for example, the fields of this representation
   24730                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   24731                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   24732                       # method in iOS; and, with just a little work, it can be easily formatted into
   24733                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   24734                       #
   24735                       # Example (Java):
   24736                       #
   24737                       #      import com.google.type.Color;
   24738                       #
   24739                       #      // ...
   24740                       #      public static java.awt.Color fromProto(Color protocolor) {
   24741                       #        float alpha = protocolor.hasAlpha()
   24742                       #            ? protocolor.getAlpha().getValue()
   24743                       #            : 1.0;
   24744                       #
   24745                       #        return new java.awt.Color(
   24746                       #            protocolor.getRed(),
   24747                       #            protocolor.getGreen(),
   24748                       #            protocolor.getBlue(),
   24749                       #            alpha);
   24750                       #      }
   24751                       #
   24752                       #      public static Color toProto(java.awt.Color color) {
   24753                       #        float red = (float) color.getRed();
   24754                       #        float green = (float) color.getGreen();
   24755                       #        float blue = (float) color.getBlue();
   24756                       #        float denominator = 255.0;
   24757                       #        Color.Builder resultBuilder =
   24758                       #            Color
   24759                       #                .newBuilder()
   24760                       #                .setRed(red / denominator)
   24761                       #                .setGreen(green / denominator)
   24762                       #                .setBlue(blue / denominator);
   24763                       #        int alpha = color.getAlpha();
   24764                       #        if (alpha != 255) {
   24765                       #          result.setAlpha(
   24766                       #              FloatValue
   24767                       #                  .newBuilder()
   24768                       #                  .setValue(((float) alpha) / denominator)
   24769                       #                  .build());
   24770                       #        }
   24771                       #        return resultBuilder.build();
   24772                       #      }
   24773                       #      // ...
   24774                       #
   24775                       # Example (iOS / Obj-C):
   24776                       #
   24777                       #      // ...
   24778                       #      static UIColor* fromProto(Color* protocolor) {
   24779                       #         float red = [protocolor red];
   24780                       #         float green = [protocolor green];
   24781                       #         float blue = [protocolor blue];
   24782                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   24783                       #         float alpha = 1.0;
   24784                       #         if (alpha_wrapper != nil) {
   24785                       #           alpha = [alpha_wrapper value];
   24786                       #         }
   24787                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   24788                       #      }
   24789                       #
   24790                       #      static Color* toProto(UIColor* color) {
   24791                       #          CGFloat red, green, blue, alpha;
   24792                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   24793                       #            return nil;
   24794                       #          }
   24795                       #          Color* result = [Color alloc] init];
   24796                       #          [result setRed:red];
   24797                       #          [result setGreen:green];
   24798                       #          [result setBlue:blue];
   24799                       #          if (alpha <= 0.9999) {
   24800                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   24801                       #          }
   24802                       #          [result autorelease];
   24803                       #          return result;
   24804                       #     }
   24805                       #     // ...
   24806                       #
   24807                       #  Example (JavaScript):
   24808                       #
   24809                       #     // ...
   24810                       #
   24811                       #     var protoToCssColor = function(rgb_color) {
   24812                       #        var redFrac = rgb_color.red || 0.0;
   24813                       #        var greenFrac = rgb_color.green || 0.0;
   24814                       #        var blueFrac = rgb_color.blue || 0.0;
   24815                       #        var red = Math.floor(redFrac * 255);
   24816                       #        var green = Math.floor(greenFrac * 255);
   24817                       #        var blue = Math.floor(blueFrac * 255);
   24818                       #
   24819                       #        if (!('alpha' in rgb_color)) {
   24820                       #           return rgbToCssColor_(red, green, blue);
   24821                       #        }
   24822                       #
   24823                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   24824                       #        var rgbParams = [red, green, blue].join(',');
   24825                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   24826                       #     };
   24827                       #
   24828                       #     var rgbToCssColor_ = function(red, green, blue) {
   24829                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   24830                       #       var hexString = rgbNumber.toString(16);
   24831                       #       var missingZeros = 6 - hexString.length;
   24832                       #       var resultBuilder = ['#'];
   24833                       #       for (var i = 0; i < missingZeros; i++) {
   24834                       #          resultBuilder.push('0');
   24835                       #       }
   24836                       #       resultBuilder.push(hexString);
   24837                       #       return resultBuilder.join('');
   24838                       #     };
   24839                       #
   24840                       #     // ...
   24841                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   24842                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   24843                         # the final pixel color is defined by the equation:
   24844                         #
   24845                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   24846                         #
   24847                         # This means that a value of 1.0 corresponds to a solid color, whereas
   24848                         # a value of 0.0 corresponds to a completely transparent color. This
   24849                         # uses a wrapper message rather than a simple float scalar so that it is
   24850                         # possible to distinguish between a default value and the value being unset.
   24851                         # If omitted, this color object is to be rendered as a solid color
   24852                         # (as if the alpha value had been explicitly given with a value of 1.0).
   24853                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   24854                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   24855                   },
   24856                   "bold": True or False, # True if the text is bold.
   24857                   "strikethrough": True or False, # True if the text has a strikethrough.
   24858                   "fontFamily": "A String", # The font family.
   24859                   "fontSize": 42, # The size of the font.
   24860                   "italic": True or False, # True if the text is italicized.
   24861                   "underline": True or False, # True if the text is underlined.
   24862                 },
   24863                 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   24864                   "angle": 42, # The angle between the standard orientation and the desired orientation.
   24865                       # Measured in degrees. Valid values are between -90 and 90. Positive
   24866                       # angles are angled upwards, negative are angled downwards.
   24867                       #
   24868                       # Note: For LTR text direction positive angles are in the counterclockwise
   24869                       # direction, whereas for RTL they are in the clockwise direction
   24870                   "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   24871                       # characters is unchanged.
   24872                       # For example:
   24873                       #
   24874                       #     | V |
   24875                       #     | e |
   24876                       #     | r |
   24877                       #     | t |
   24878                       #     | i |
   24879                       #     | c |
   24880                       #     | a |
   24881                       #     | l |
   24882                 },
   24883                 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   24884                 "borders": { # The borders of the cell. # The borders of the cell.
   24885                   "top": { # A border along a cell. # The top border of the cell.
   24886                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   24887                         # for simplicity of conversion to/from color representations in various
   24888                         # languages over compactness; for example, the fields of this representation
   24889                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   24890                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   24891                         # method in iOS; and, with just a little work, it can be easily formatted into
   24892                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   24893                         #
   24894                         # Example (Java):
   24895                         #
   24896                         #      import com.google.type.Color;
   24897                         #
   24898                         #      // ...
   24899                         #      public static java.awt.Color fromProto(Color protocolor) {
   24900                         #        float alpha = protocolor.hasAlpha()
   24901                         #            ? protocolor.getAlpha().getValue()
   24902                         #            : 1.0;
   24903                         #
   24904                         #        return new java.awt.Color(
   24905                         #            protocolor.getRed(),
   24906                         #            protocolor.getGreen(),
   24907                         #            protocolor.getBlue(),
   24908                         #            alpha);
   24909                         #      }
   24910                         #
   24911                         #      public static Color toProto(java.awt.Color color) {
   24912                         #        float red = (float) color.getRed();
   24913                         #        float green = (float) color.getGreen();
   24914                         #        float blue = (float) color.getBlue();
   24915                         #        float denominator = 255.0;
   24916                         #        Color.Builder resultBuilder =
   24917                         #            Color
   24918                         #                .newBuilder()
   24919                         #                .setRed(red / denominator)
   24920                         #                .setGreen(green / denominator)
   24921                         #                .setBlue(blue / denominator);
   24922                         #        int alpha = color.getAlpha();
   24923                         #        if (alpha != 255) {
   24924                         #          result.setAlpha(
   24925                         #              FloatValue
   24926                         #                  .newBuilder()
   24927                         #                  .setValue(((float) alpha) / denominator)
   24928                         #                  .build());
   24929                         #        }
   24930                         #        return resultBuilder.build();
   24931                         #      }
   24932                         #      // ...
   24933                         #
   24934                         # Example (iOS / Obj-C):
   24935                         #
   24936                         #      // ...
   24937                         #      static UIColor* fromProto(Color* protocolor) {
   24938                         #         float red = [protocolor red];
   24939                         #         float green = [protocolor green];
   24940                         #         float blue = [protocolor blue];
   24941                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   24942                         #         float alpha = 1.0;
   24943                         #         if (alpha_wrapper != nil) {
   24944                         #           alpha = [alpha_wrapper value];
   24945                         #         }
   24946                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   24947                         #      }
   24948                         #
   24949                         #      static Color* toProto(UIColor* color) {
   24950                         #          CGFloat red, green, blue, alpha;
   24951                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   24952                         #            return nil;
   24953                         #          }
   24954                         #          Color* result = [Color alloc] init];
   24955                         #          [result setRed:red];
   24956                         #          [result setGreen:green];
   24957                         #          [result setBlue:blue];
   24958                         #          if (alpha <= 0.9999) {
   24959                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   24960                         #          }
   24961                         #          [result autorelease];
   24962                         #          return result;
   24963                         #     }
   24964                         #     // ...
   24965                         #
   24966                         #  Example (JavaScript):
   24967                         #
   24968                         #     // ...
   24969                         #
   24970                         #     var protoToCssColor = function(rgb_color) {
   24971                         #        var redFrac = rgb_color.red || 0.0;
   24972                         #        var greenFrac = rgb_color.green || 0.0;
   24973                         #        var blueFrac = rgb_color.blue || 0.0;
   24974                         #        var red = Math.floor(redFrac * 255);
   24975                         #        var green = Math.floor(greenFrac * 255);
   24976                         #        var blue = Math.floor(blueFrac * 255);
   24977                         #
   24978                         #        if (!('alpha' in rgb_color)) {
   24979                         #           return rgbToCssColor_(red, green, blue);
   24980                         #        }
   24981                         #
   24982                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   24983                         #        var rgbParams = [red, green, blue].join(',');
   24984                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   24985                         #     };
   24986                         #
   24987                         #     var rgbToCssColor_ = function(red, green, blue) {
   24988                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   24989                         #       var hexString = rgbNumber.toString(16);
   24990                         #       var missingZeros = 6 - hexString.length;
   24991                         #       var resultBuilder = ['#'];
   24992                         #       for (var i = 0; i < missingZeros; i++) {
   24993                         #          resultBuilder.push('0');
   24994                         #       }
   24995                         #       resultBuilder.push(hexString);
   24996                         #       return resultBuilder.join('');
   24997                         #     };
   24998                         #
   24999                         #     // ...
   25000                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   25001                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   25002                           # the final pixel color is defined by the equation:
   25003                           #
   25004                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   25005                           #
   25006                           # This means that a value of 1.0 corresponds to a solid color, whereas
   25007                           # a value of 0.0 corresponds to a completely transparent color. This
   25008                           # uses a wrapper message rather than a simple float scalar so that it is
   25009                           # possible to distinguish between a default value and the value being unset.
   25010                           # If omitted, this color object is to be rendered as a solid color
   25011                           # (as if the alpha value had been explicitly given with a value of 1.0).
   25012                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   25013                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   25014                     },
   25015                     "width": 42, # The width of the border, in pixels.
   25016                         # Deprecated; the width is determined by the "style" field.
   25017                     "style": "A String", # The style of the border.
   25018                   },
   25019                   "right": { # A border along a cell. # The right border of the cell.
   25020                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   25021                         # for simplicity of conversion to/from color representations in various
   25022                         # languages over compactness; for example, the fields of this representation
   25023                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   25024                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   25025                         # method in iOS; and, with just a little work, it can be easily formatted into
   25026                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   25027                         #
   25028                         # Example (Java):
   25029                         #
   25030                         #      import com.google.type.Color;
   25031                         #
   25032                         #      // ...
   25033                         #      public static java.awt.Color fromProto(Color protocolor) {
   25034                         #        float alpha = protocolor.hasAlpha()
   25035                         #            ? protocolor.getAlpha().getValue()
   25036                         #            : 1.0;
   25037                         #
   25038                         #        return new java.awt.Color(
   25039                         #            protocolor.getRed(),
   25040                         #            protocolor.getGreen(),
   25041                         #            protocolor.getBlue(),
   25042                         #            alpha);
   25043                         #      }
   25044                         #
   25045                         #      public static Color toProto(java.awt.Color color) {
   25046                         #        float red = (float) color.getRed();
   25047                         #        float green = (float) color.getGreen();
   25048                         #        float blue = (float) color.getBlue();
   25049                         #        float denominator = 255.0;
   25050                         #        Color.Builder resultBuilder =
   25051                         #            Color
   25052                         #                .newBuilder()
   25053                         #                .setRed(red / denominator)
   25054                         #                .setGreen(green / denominator)
   25055                         #                .setBlue(blue / denominator);
   25056                         #        int alpha = color.getAlpha();
   25057                         #        if (alpha != 255) {
   25058                         #          result.setAlpha(
   25059                         #              FloatValue
   25060                         #                  .newBuilder()
   25061                         #                  .setValue(((float) alpha) / denominator)
   25062                         #                  .build());
   25063                         #        }
   25064                         #        return resultBuilder.build();
   25065                         #      }
   25066                         #      // ...
   25067                         #
   25068                         # Example (iOS / Obj-C):
   25069                         #
   25070                         #      // ...
   25071                         #      static UIColor* fromProto(Color* protocolor) {
   25072                         #         float red = [protocolor red];
   25073                         #         float green = [protocolor green];
   25074                         #         float blue = [protocolor blue];
   25075                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   25076                         #         float alpha = 1.0;
   25077                         #         if (alpha_wrapper != nil) {
   25078                         #           alpha = [alpha_wrapper value];
   25079                         #         }
   25080                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   25081                         #      }
   25082                         #
   25083                         #      static Color* toProto(UIColor* color) {
   25084                         #          CGFloat red, green, blue, alpha;
   25085                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   25086                         #            return nil;
   25087                         #          }
   25088                         #          Color* result = [Color alloc] init];
   25089                         #          [result setRed:red];
   25090                         #          [result setGreen:green];
   25091                         #          [result setBlue:blue];
   25092                         #          if (alpha <= 0.9999) {
   25093                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   25094                         #          }
   25095                         #          [result autorelease];
   25096                         #          return result;
   25097                         #     }
   25098                         #     // ...
   25099                         #
   25100                         #  Example (JavaScript):
   25101                         #
   25102                         #     // ...
   25103                         #
   25104                         #     var protoToCssColor = function(rgb_color) {
   25105                         #        var redFrac = rgb_color.red || 0.0;
   25106                         #        var greenFrac = rgb_color.green || 0.0;
   25107                         #        var blueFrac = rgb_color.blue || 0.0;
   25108                         #        var red = Math.floor(redFrac * 255);
   25109                         #        var green = Math.floor(greenFrac * 255);
   25110                         #        var blue = Math.floor(blueFrac * 255);
   25111                         #
   25112                         #        if (!('alpha' in rgb_color)) {
   25113                         #           return rgbToCssColor_(red, green, blue);
   25114                         #        }
   25115                         #
   25116                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   25117                         #        var rgbParams = [red, green, blue].join(',');
   25118                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   25119                         #     };
   25120                         #
   25121                         #     var rgbToCssColor_ = function(red, green, blue) {
   25122                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   25123                         #       var hexString = rgbNumber.toString(16);
   25124                         #       var missingZeros = 6 - hexString.length;
   25125                         #       var resultBuilder = ['#'];
   25126                         #       for (var i = 0; i < missingZeros; i++) {
   25127                         #          resultBuilder.push('0');
   25128                         #       }
   25129                         #       resultBuilder.push(hexString);
   25130                         #       return resultBuilder.join('');
   25131                         #     };
   25132                         #
   25133                         #     // ...
   25134                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   25135                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   25136                           # the final pixel color is defined by the equation:
   25137                           #
   25138                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   25139                           #
   25140                           # This means that a value of 1.0 corresponds to a solid color, whereas
   25141                           # a value of 0.0 corresponds to a completely transparent color. This
   25142                           # uses a wrapper message rather than a simple float scalar so that it is
   25143                           # possible to distinguish between a default value and the value being unset.
   25144                           # If omitted, this color object is to be rendered as a solid color
   25145                           # (as if the alpha value had been explicitly given with a value of 1.0).
   25146                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   25147                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   25148                     },
   25149                     "width": 42, # The width of the border, in pixels.
   25150                         # Deprecated; the width is determined by the "style" field.
   25151                     "style": "A String", # The style of the border.
   25152                   },
   25153                   "bottom": { # A border along a cell. # The bottom border of the cell.
   25154                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   25155                         # for simplicity of conversion to/from color representations in various
   25156                         # languages over compactness; for example, the fields of this representation
   25157                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   25158                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   25159                         # method in iOS; and, with just a little work, it can be easily formatted into
   25160                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   25161                         #
   25162                         # Example (Java):
   25163                         #
   25164                         #      import com.google.type.Color;
   25165                         #
   25166                         #      // ...
   25167                         #      public static java.awt.Color fromProto(Color protocolor) {
   25168                         #        float alpha = protocolor.hasAlpha()
   25169                         #            ? protocolor.getAlpha().getValue()
   25170                         #            : 1.0;
   25171                         #
   25172                         #        return new java.awt.Color(
   25173                         #            protocolor.getRed(),
   25174                         #            protocolor.getGreen(),
   25175                         #            protocolor.getBlue(),
   25176                         #            alpha);
   25177                         #      }
   25178                         #
   25179                         #      public static Color toProto(java.awt.Color color) {
   25180                         #        float red = (float) color.getRed();
   25181                         #        float green = (float) color.getGreen();
   25182                         #        float blue = (float) color.getBlue();
   25183                         #        float denominator = 255.0;
   25184                         #        Color.Builder resultBuilder =
   25185                         #            Color
   25186                         #                .newBuilder()
   25187                         #                .setRed(red / denominator)
   25188                         #                .setGreen(green / denominator)
   25189                         #                .setBlue(blue / denominator);
   25190                         #        int alpha = color.getAlpha();
   25191                         #        if (alpha != 255) {
   25192                         #          result.setAlpha(
   25193                         #              FloatValue
   25194                         #                  .newBuilder()
   25195                         #                  .setValue(((float) alpha) / denominator)
   25196                         #                  .build());
   25197                         #        }
   25198                         #        return resultBuilder.build();
   25199                         #      }
   25200                         #      // ...
   25201                         #
   25202                         # Example (iOS / Obj-C):
   25203                         #
   25204                         #      // ...
   25205                         #      static UIColor* fromProto(Color* protocolor) {
   25206                         #         float red = [protocolor red];
   25207                         #         float green = [protocolor green];
   25208                         #         float blue = [protocolor blue];
   25209                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   25210                         #         float alpha = 1.0;
   25211                         #         if (alpha_wrapper != nil) {
   25212                         #           alpha = [alpha_wrapper value];
   25213                         #         }
   25214                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   25215                         #      }
   25216                         #
   25217                         #      static Color* toProto(UIColor* color) {
   25218                         #          CGFloat red, green, blue, alpha;
   25219                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   25220                         #            return nil;
   25221                         #          }
   25222                         #          Color* result = [Color alloc] init];
   25223                         #          [result setRed:red];
   25224                         #          [result setGreen:green];
   25225                         #          [result setBlue:blue];
   25226                         #          if (alpha <= 0.9999) {
   25227                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   25228                         #          }
   25229                         #          [result autorelease];
   25230                         #          return result;
   25231                         #     }
   25232                         #     // ...
   25233                         #
   25234                         #  Example (JavaScript):
   25235                         #
   25236                         #     // ...
   25237                         #
   25238                         #     var protoToCssColor = function(rgb_color) {
   25239                         #        var redFrac = rgb_color.red || 0.0;
   25240                         #        var greenFrac = rgb_color.green || 0.0;
   25241                         #        var blueFrac = rgb_color.blue || 0.0;
   25242                         #        var red = Math.floor(redFrac * 255);
   25243                         #        var green = Math.floor(greenFrac * 255);
   25244                         #        var blue = Math.floor(blueFrac * 255);
   25245                         #
   25246                         #        if (!('alpha' in rgb_color)) {
   25247                         #           return rgbToCssColor_(red, green, blue);
   25248                         #        }
   25249                         #
   25250                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   25251                         #        var rgbParams = [red, green, blue].join(',');
   25252                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   25253                         #     };
   25254                         #
   25255                         #     var rgbToCssColor_ = function(red, green, blue) {
   25256                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   25257                         #       var hexString = rgbNumber.toString(16);
   25258                         #       var missingZeros = 6 - hexString.length;
   25259                         #       var resultBuilder = ['#'];
   25260                         #       for (var i = 0; i < missingZeros; i++) {
   25261                         #          resultBuilder.push('0');
   25262                         #       }
   25263                         #       resultBuilder.push(hexString);
   25264                         #       return resultBuilder.join('');
   25265                         #     };
   25266                         #
   25267                         #     // ...
   25268                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   25269                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   25270                           # the final pixel color is defined by the equation:
   25271                           #
   25272                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   25273                           #
   25274                           # This means that a value of 1.0 corresponds to a solid color, whereas
   25275                           # a value of 0.0 corresponds to a completely transparent color. This
   25276                           # uses a wrapper message rather than a simple float scalar so that it is
   25277                           # possible to distinguish between a default value and the value being unset.
   25278                           # If omitted, this color object is to be rendered as a solid color
   25279                           # (as if the alpha value had been explicitly given with a value of 1.0).
   25280                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   25281                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   25282                     },
   25283                     "width": 42, # The width of the border, in pixels.
   25284                         # Deprecated; the width is determined by the "style" field.
   25285                     "style": "A String", # The style of the border.
   25286                   },
   25287                   "left": { # A border along a cell. # The left border of the cell.
   25288                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   25289                         # for simplicity of conversion to/from color representations in various
   25290                         # languages over compactness; for example, the fields of this representation
   25291                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   25292                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   25293                         # method in iOS; and, with just a little work, it can be easily formatted into
   25294                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   25295                         #
   25296                         # Example (Java):
   25297                         #
   25298                         #      import com.google.type.Color;
   25299                         #
   25300                         #      // ...
   25301                         #      public static java.awt.Color fromProto(Color protocolor) {
   25302                         #        float alpha = protocolor.hasAlpha()
   25303                         #            ? protocolor.getAlpha().getValue()
   25304                         #            : 1.0;
   25305                         #
   25306                         #        return new java.awt.Color(
   25307                         #            protocolor.getRed(),
   25308                         #            protocolor.getGreen(),
   25309                         #            protocolor.getBlue(),
   25310                         #            alpha);
   25311                         #      }
   25312                         #
   25313                         #      public static Color toProto(java.awt.Color color) {
   25314                         #        float red = (float) color.getRed();
   25315                         #        float green = (float) color.getGreen();
   25316                         #        float blue = (float) color.getBlue();
   25317                         #        float denominator = 255.0;
   25318                         #        Color.Builder resultBuilder =
   25319                         #            Color
   25320                         #                .newBuilder()
   25321                         #                .setRed(red / denominator)
   25322                         #                .setGreen(green / denominator)
   25323                         #                .setBlue(blue / denominator);
   25324                         #        int alpha = color.getAlpha();
   25325                         #        if (alpha != 255) {
   25326                         #          result.setAlpha(
   25327                         #              FloatValue
   25328                         #                  .newBuilder()
   25329                         #                  .setValue(((float) alpha) / denominator)
   25330                         #                  .build());
   25331                         #        }
   25332                         #        return resultBuilder.build();
   25333                         #      }
   25334                         #      // ...
   25335                         #
   25336                         # Example (iOS / Obj-C):
   25337                         #
   25338                         #      // ...
   25339                         #      static UIColor* fromProto(Color* protocolor) {
   25340                         #         float red = [protocolor red];
   25341                         #         float green = [protocolor green];
   25342                         #         float blue = [protocolor blue];
   25343                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   25344                         #         float alpha = 1.0;
   25345                         #         if (alpha_wrapper != nil) {
   25346                         #           alpha = [alpha_wrapper value];
   25347                         #         }
   25348                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   25349                         #      }
   25350                         #
   25351                         #      static Color* toProto(UIColor* color) {
   25352                         #          CGFloat red, green, blue, alpha;
   25353                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   25354                         #            return nil;
   25355                         #          }
   25356                         #          Color* result = [Color alloc] init];
   25357                         #          [result setRed:red];
   25358                         #          [result setGreen:green];
   25359                         #          [result setBlue:blue];
   25360                         #          if (alpha <= 0.9999) {
   25361                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   25362                         #          }
   25363                         #          [result autorelease];
   25364                         #          return result;
   25365                         #     }
   25366                         #     // ...
   25367                         #
   25368                         #  Example (JavaScript):
   25369                         #
   25370                         #     // ...
   25371                         #
   25372                         #     var protoToCssColor = function(rgb_color) {
   25373                         #        var redFrac = rgb_color.red || 0.0;
   25374                         #        var greenFrac = rgb_color.green || 0.0;
   25375                         #        var blueFrac = rgb_color.blue || 0.0;
   25376                         #        var red = Math.floor(redFrac * 255);
   25377                         #        var green = Math.floor(greenFrac * 255);
   25378                         #        var blue = Math.floor(blueFrac * 255);
   25379                         #
   25380                         #        if (!('alpha' in rgb_color)) {
   25381                         #           return rgbToCssColor_(red, green, blue);
   25382                         #        }
   25383                         #
   25384                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   25385                         #        var rgbParams = [red, green, blue].join(',');
   25386                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   25387                         #     };
   25388                         #
   25389                         #     var rgbToCssColor_ = function(red, green, blue) {
   25390                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   25391                         #       var hexString = rgbNumber.toString(16);
   25392                         #       var missingZeros = 6 - hexString.length;
   25393                         #       var resultBuilder = ['#'];
   25394                         #       for (var i = 0; i < missingZeros; i++) {
   25395                         #          resultBuilder.push('0');
   25396                         #       }
   25397                         #       resultBuilder.push(hexString);
   25398                         #       return resultBuilder.join('');
   25399                         #     };
   25400                         #
   25401                         #     // ...
   25402                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   25403                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   25404                           # the final pixel color is defined by the equation:
   25405                           #
   25406                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   25407                           #
   25408                           # This means that a value of 1.0 corresponds to a solid color, whereas
   25409                           # a value of 0.0 corresponds to a completely transparent color. This
   25410                           # uses a wrapper message rather than a simple float scalar so that it is
   25411                           # possible to distinguish between a default value and the value being unset.
   25412                           # If omitted, this color object is to be rendered as a solid color
   25413                           # (as if the alpha value had been explicitly given with a value of 1.0).
   25414                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   25415                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   25416                     },
   25417                     "width": 42, # The width of the border, in pixels.
   25418                         # Deprecated; the width is determined by the "style" field.
   25419                     "style": "A String", # The style of the border.
   25420                   },
   25421                 },
   25422                 "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   25423               },
   25424             },
   25425             "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
   25426                 # the interpolation points listed. The format of a cell will vary
   25427                 # based on its contents as compared to the values of the interpolation
   25428                 # points.
   25429               "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
   25430                   # These pin the gradient color scale according to the color,
   25431                   # type and value chosen.
   25432                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   25433                     # for simplicity of conversion to/from color representations in various
   25434                     # languages over compactness; for example, the fields of this representation
   25435                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   25436                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   25437                     # method in iOS; and, with just a little work, it can be easily formatted into
   25438                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   25439                     #
   25440                     # Example (Java):
   25441                     #
   25442                     #      import com.google.type.Color;
   25443                     #
   25444                     #      // ...
   25445                     #      public static java.awt.Color fromProto(Color protocolor) {
   25446                     #        float alpha = protocolor.hasAlpha()
   25447                     #            ? protocolor.getAlpha().getValue()
   25448                     #            : 1.0;
   25449                     #
   25450                     #        return new java.awt.Color(
   25451                     #            protocolor.getRed(),
   25452                     #            protocolor.getGreen(),
   25453                     #            protocolor.getBlue(),
   25454                     #            alpha);
   25455                     #      }
   25456                     #
   25457                     #      public static Color toProto(java.awt.Color color) {
   25458                     #        float red = (float) color.getRed();
   25459                     #        float green = (float) color.getGreen();
   25460                     #        float blue = (float) color.getBlue();
   25461                     #        float denominator = 255.0;
   25462                     #        Color.Builder resultBuilder =
   25463                     #            Color
   25464                     #                .newBuilder()
   25465                     #                .setRed(red / denominator)
   25466                     #                .setGreen(green / denominator)
   25467                     #                .setBlue(blue / denominator);
   25468                     #        int alpha = color.getAlpha();
   25469                     #        if (alpha != 255) {
   25470                     #          result.setAlpha(
   25471                     #              FloatValue
   25472                     #                  .newBuilder()
   25473                     #                  .setValue(((float) alpha) / denominator)
   25474                     #                  .build());
   25475                     #        }
   25476                     #        return resultBuilder.build();
   25477                     #      }
   25478                     #      // ...
   25479                     #
   25480                     # Example (iOS / Obj-C):
   25481                     #
   25482                     #      // ...
   25483                     #      static UIColor* fromProto(Color* protocolor) {
   25484                     #         float red = [protocolor red];
   25485                     #         float green = [protocolor green];
   25486                     #         float blue = [protocolor blue];
   25487                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   25488                     #         float alpha = 1.0;
   25489                     #         if (alpha_wrapper != nil) {
   25490                     #           alpha = [alpha_wrapper value];
   25491                     #         }
   25492                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   25493                     #      }
   25494                     #
   25495                     #      static Color* toProto(UIColor* color) {
   25496                     #          CGFloat red, green, blue, alpha;
   25497                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   25498                     #            return nil;
   25499                     #          }
   25500                     #          Color* result = [Color alloc] init];
   25501                     #          [result setRed:red];
   25502                     #          [result setGreen:green];
   25503                     #          [result setBlue:blue];
   25504                     #          if (alpha <= 0.9999) {
   25505                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   25506                     #          }
   25507                     #          [result autorelease];
   25508                     #          return result;
   25509                     #     }
   25510                     #     // ...
   25511                     #
   25512                     #  Example (JavaScript):
   25513                     #
   25514                     #     // ...
   25515                     #
   25516                     #     var protoToCssColor = function(rgb_color) {
   25517                     #        var redFrac = rgb_color.red || 0.0;
   25518                     #        var greenFrac = rgb_color.green || 0.0;
   25519                     #        var blueFrac = rgb_color.blue || 0.0;
   25520                     #        var red = Math.floor(redFrac * 255);
   25521                     #        var green = Math.floor(greenFrac * 255);
   25522                     #        var blue = Math.floor(blueFrac * 255);
   25523                     #
   25524                     #        if (!('alpha' in rgb_color)) {
   25525                     #           return rgbToCssColor_(red, green, blue);
   25526                     #        }
   25527                     #
   25528                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   25529                     #        var rgbParams = [red, green, blue].join(',');
   25530                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   25531                     #     };
   25532                     #
   25533                     #     var rgbToCssColor_ = function(red, green, blue) {
   25534                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   25535                     #       var hexString = rgbNumber.toString(16);
   25536                     #       var missingZeros = 6 - hexString.length;
   25537                     #       var resultBuilder = ['#'];
   25538                     #       for (var i = 0; i < missingZeros; i++) {
   25539                     #          resultBuilder.push('0');
   25540                     #       }
   25541                     #       resultBuilder.push(hexString);
   25542                     #       return resultBuilder.join('');
   25543                     #     };
   25544                     #
   25545                     #     // ...
   25546                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   25547                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   25548                       # the final pixel color is defined by the equation:
   25549                       #
   25550                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   25551                       #
   25552                       # This means that a value of 1.0 corresponds to a solid color, whereas
   25553                       # a value of 0.0 corresponds to a completely transparent color. This
   25554                       # uses a wrapper message rather than a simple float scalar so that it is
   25555                       # possible to distinguish between a default value and the value being unset.
   25556                       # If omitted, this color object is to be rendered as a solid color
   25557                       # (as if the alpha value had been explicitly given with a value of 1.0).
   25558                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   25559                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   25560                 },
   25561                 "type": "A String", # How the value should be interpreted.
   25562                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   25563                     # Unused if type is MIN or
   25564                     # MAX.
   25565               },
   25566               "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
   25567                   # These pin the gradient color scale according to the color,
   25568                   # type and value chosen.
   25569                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   25570                     # for simplicity of conversion to/from color representations in various
   25571                     # languages over compactness; for example, the fields of this representation
   25572                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   25573                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   25574                     # method in iOS; and, with just a little work, it can be easily formatted into
   25575                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   25576                     #
   25577                     # Example (Java):
   25578                     #
   25579                     #      import com.google.type.Color;
   25580                     #
   25581                     #      // ...
   25582                     #      public static java.awt.Color fromProto(Color protocolor) {
   25583                     #        float alpha = protocolor.hasAlpha()
   25584                     #            ? protocolor.getAlpha().getValue()
   25585                     #            : 1.0;
   25586                     #
   25587                     #        return new java.awt.Color(
   25588                     #            protocolor.getRed(),
   25589                     #            protocolor.getGreen(),
   25590                     #            protocolor.getBlue(),
   25591                     #            alpha);
   25592                     #      }
   25593                     #
   25594                     #      public static Color toProto(java.awt.Color color) {
   25595                     #        float red = (float) color.getRed();
   25596                     #        float green = (float) color.getGreen();
   25597                     #        float blue = (float) color.getBlue();
   25598                     #        float denominator = 255.0;
   25599                     #        Color.Builder resultBuilder =
   25600                     #            Color
   25601                     #                .newBuilder()
   25602                     #                .setRed(red / denominator)
   25603                     #                .setGreen(green / denominator)
   25604                     #                .setBlue(blue / denominator);
   25605                     #        int alpha = color.getAlpha();
   25606                     #        if (alpha != 255) {
   25607                     #          result.setAlpha(
   25608                     #              FloatValue
   25609                     #                  .newBuilder()
   25610                     #                  .setValue(((float) alpha) / denominator)
   25611                     #                  .build());
   25612                     #        }
   25613                     #        return resultBuilder.build();
   25614                     #      }
   25615                     #      // ...
   25616                     #
   25617                     # Example (iOS / Obj-C):
   25618                     #
   25619                     #      // ...
   25620                     #      static UIColor* fromProto(Color* protocolor) {
   25621                     #         float red = [protocolor red];
   25622                     #         float green = [protocolor green];
   25623                     #         float blue = [protocolor blue];
   25624                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   25625                     #         float alpha = 1.0;
   25626                     #         if (alpha_wrapper != nil) {
   25627                     #           alpha = [alpha_wrapper value];
   25628                     #         }
   25629                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   25630                     #      }
   25631                     #
   25632                     #      static Color* toProto(UIColor* color) {
   25633                     #          CGFloat red, green, blue, alpha;
   25634                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   25635                     #            return nil;
   25636                     #          }
   25637                     #          Color* result = [Color alloc] init];
   25638                     #          [result setRed:red];
   25639                     #          [result setGreen:green];
   25640                     #          [result setBlue:blue];
   25641                     #          if (alpha <= 0.9999) {
   25642                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   25643                     #          }
   25644                     #          [result autorelease];
   25645                     #          return result;
   25646                     #     }
   25647                     #     // ...
   25648                     #
   25649                     #  Example (JavaScript):
   25650                     #
   25651                     #     // ...
   25652                     #
   25653                     #     var protoToCssColor = function(rgb_color) {
   25654                     #        var redFrac = rgb_color.red || 0.0;
   25655                     #        var greenFrac = rgb_color.green || 0.0;
   25656                     #        var blueFrac = rgb_color.blue || 0.0;
   25657                     #        var red = Math.floor(redFrac * 255);
   25658                     #        var green = Math.floor(greenFrac * 255);
   25659                     #        var blue = Math.floor(blueFrac * 255);
   25660                     #
   25661                     #        if (!('alpha' in rgb_color)) {
   25662                     #           return rgbToCssColor_(red, green, blue);
   25663                     #        }
   25664                     #
   25665                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   25666                     #        var rgbParams = [red, green, blue].join(',');
   25667                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   25668                     #     };
   25669                     #
   25670                     #     var rgbToCssColor_ = function(red, green, blue) {
   25671                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   25672                     #       var hexString = rgbNumber.toString(16);
   25673                     #       var missingZeros = 6 - hexString.length;
   25674                     #       var resultBuilder = ['#'];
   25675                     #       for (var i = 0; i < missingZeros; i++) {
   25676                     #          resultBuilder.push('0');
   25677                     #       }
   25678                     #       resultBuilder.push(hexString);
   25679                     #       return resultBuilder.join('');
   25680                     #     };
   25681                     #
   25682                     #     // ...
   25683                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   25684                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   25685                       # the final pixel color is defined by the equation:
   25686                       #
   25687                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   25688                       #
   25689                       # This means that a value of 1.0 corresponds to a solid color, whereas
   25690                       # a value of 0.0 corresponds to a completely transparent color. This
   25691                       # uses a wrapper message rather than a simple float scalar so that it is
   25692                       # possible to distinguish between a default value and the value being unset.
   25693                       # If omitted, this color object is to be rendered as a solid color
   25694                       # (as if the alpha value had been explicitly given with a value of 1.0).
   25695                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   25696                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   25697                 },
   25698                 "type": "A String", # How the value should be interpreted.
   25699                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   25700                     # Unused if type is MIN or
   25701                     # MAX.
   25702               },
   25703               "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
   25704                   # These pin the gradient color scale according to the color,
   25705                   # type and value chosen.
   25706                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   25707                     # for simplicity of conversion to/from color representations in various
   25708                     # languages over compactness; for example, the fields of this representation
   25709                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   25710                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   25711                     # method in iOS; and, with just a little work, it can be easily formatted into
   25712                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   25713                     #
   25714                     # Example (Java):
   25715                     #
   25716                     #      import com.google.type.Color;
   25717                     #
   25718                     #      // ...
   25719                     #      public static java.awt.Color fromProto(Color protocolor) {
   25720                     #        float alpha = protocolor.hasAlpha()
   25721                     #            ? protocolor.getAlpha().getValue()
   25722                     #            : 1.0;
   25723                     #
   25724                     #        return new java.awt.Color(
   25725                     #            protocolor.getRed(),
   25726                     #            protocolor.getGreen(),
   25727                     #            protocolor.getBlue(),
   25728                     #            alpha);
   25729                     #      }
   25730                     #
   25731                     #      public static Color toProto(java.awt.Color color) {
   25732                     #        float red = (float) color.getRed();
   25733                     #        float green = (float) color.getGreen();
   25734                     #        float blue = (float) color.getBlue();
   25735                     #        float denominator = 255.0;
   25736                     #        Color.Builder resultBuilder =
   25737                     #            Color
   25738                     #                .newBuilder()
   25739                     #                .setRed(red / denominator)
   25740                     #                .setGreen(green / denominator)
   25741                     #                .setBlue(blue / denominator);
   25742                     #        int alpha = color.getAlpha();
   25743                     #        if (alpha != 255) {
   25744                     #          result.setAlpha(
   25745                     #              FloatValue
   25746                     #                  .newBuilder()
   25747                     #                  .setValue(((float) alpha) / denominator)
   25748                     #                  .build());
   25749                     #        }
   25750                     #        return resultBuilder.build();
   25751                     #      }
   25752                     #      // ...
   25753                     #
   25754                     # Example (iOS / Obj-C):
   25755                     #
   25756                     #      // ...
   25757                     #      static UIColor* fromProto(Color* protocolor) {
   25758                     #         float red = [protocolor red];
   25759                     #         float green = [protocolor green];
   25760                     #         float blue = [protocolor blue];
   25761                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   25762                     #         float alpha = 1.0;
   25763                     #         if (alpha_wrapper != nil) {
   25764                     #           alpha = [alpha_wrapper value];
   25765                     #         }
   25766                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   25767                     #      }
   25768                     #
   25769                     #      static Color* toProto(UIColor* color) {
   25770                     #          CGFloat red, green, blue, alpha;
   25771                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   25772                     #            return nil;
   25773                     #          }
   25774                     #          Color* result = [Color alloc] init];
   25775                     #          [result setRed:red];
   25776                     #          [result setGreen:green];
   25777                     #          [result setBlue:blue];
   25778                     #          if (alpha <= 0.9999) {
   25779                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   25780                     #          }
   25781                     #          [result autorelease];
   25782                     #          return result;
   25783                     #     }
   25784                     #     // ...
   25785                     #
   25786                     #  Example (JavaScript):
   25787                     #
   25788                     #     // ...
   25789                     #
   25790                     #     var protoToCssColor = function(rgb_color) {
   25791                     #        var redFrac = rgb_color.red || 0.0;
   25792                     #        var greenFrac = rgb_color.green || 0.0;
   25793                     #        var blueFrac = rgb_color.blue || 0.0;
   25794                     #        var red = Math.floor(redFrac * 255);
   25795                     #        var green = Math.floor(greenFrac * 255);
   25796                     #        var blue = Math.floor(blueFrac * 255);
   25797                     #
   25798                     #        if (!('alpha' in rgb_color)) {
   25799                     #           return rgbToCssColor_(red, green, blue);
   25800                     #        }
   25801                     #
   25802                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   25803                     #        var rgbParams = [red, green, blue].join(',');
   25804                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   25805                     #     };
   25806                     #
   25807                     #     var rgbToCssColor_ = function(red, green, blue) {
   25808                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   25809                     #       var hexString = rgbNumber.toString(16);
   25810                     #       var missingZeros = 6 - hexString.length;
   25811                     #       var resultBuilder = ['#'];
   25812                     #       for (var i = 0; i < missingZeros; i++) {
   25813                     #          resultBuilder.push('0');
   25814                     #       }
   25815                     #       resultBuilder.push(hexString);
   25816                     #       return resultBuilder.join('');
   25817                     #     };
   25818                     #
   25819                     #     // ...
   25820                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   25821                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   25822                       # the final pixel color is defined by the equation:
   25823                       #
   25824                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   25825                       #
   25826                       # This means that a value of 1.0 corresponds to a solid color, whereas
   25827                       # a value of 0.0 corresponds to a completely transparent color. This
   25828                       # uses a wrapper message rather than a simple float scalar so that it is
   25829                       # possible to distinguish between a default value and the value being unset.
   25830                       # If omitted, this color object is to be rendered as a solid color
   25831                       # (as if the alpha value had been explicitly given with a value of 1.0).
   25832                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   25833                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   25834                 },
   25835                 "type": "A String", # How the value should be interpreted.
   25836                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   25837                     # Unused if type is MIN or
   25838                     # MAX.
   25839               },
   25840             },
   25841           },
   25842         },
   25843         "addSheet": { # The result of adding a sheet. # A reply from adding a sheet.
   25844           "properties": { # Properties of a sheet. # The properties of the newly added sheet.
   25845             "sheetType": "A String", # The type of sheet. Defaults to GRID.
   25846                 # This field cannot be changed once set.
   25847             "index": 42, # The index of the sheet within the spreadsheet.
   25848                 # When adding or updating sheet properties, if this field
   25849                 # is excluded then the sheet will be added or moved to the end
   25850                 # of the sheet list. When updating sheet indices or inserting
   25851                 # sheets, movement is considered in "before the move" indexes.
   25852                 # For example, if there were 3 sheets (S1, S2, S3) in order to
   25853                 # move S1 ahead of S2 the index would have to be set to 2. A sheet
   25854                 # index update request will be ignored if the requested index is
   25855                 # identical to the sheets current index or if the requested new
   25856                 # index is equal to the current sheet index + 1.
   25857             "title": "A String", # The name of the sheet.
   25858             "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
   25859                 # (If the sheet is an object sheet, containing a chart or image, then
   25860                 # this field will be absent.)
   25861                 # When writing it is an error to set any grid properties on non-grid sheets.
   25862               "columnCount": 42, # The number of columns in the grid.
   25863               "frozenRowCount": 42, # The number of rows that are frozen in the grid.
   25864               "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
   25865               "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
   25866               "rowCount": 42, # The number of rows in the grid.
   25867             },
   25868             "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
   25869             "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
   25870                 # for simplicity of conversion to/from color representations in various
   25871                 # languages over compactness; for example, the fields of this representation
   25872                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   25873                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   25874                 # method in iOS; and, with just a little work, it can be easily formatted into
   25875                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   25876                 #
   25877                 # Example (Java):
   25878                 #
   25879                 #      import com.google.type.Color;
   25880                 #
   25881                 #      // ...
   25882                 #      public static java.awt.Color fromProto(Color protocolor) {
   25883                 #        float alpha = protocolor.hasAlpha()
   25884                 #            ? protocolor.getAlpha().getValue()
   25885                 #            : 1.0;
   25886                 #
   25887                 #        return new java.awt.Color(
   25888                 #            protocolor.getRed(),
   25889                 #            protocolor.getGreen(),
   25890                 #            protocolor.getBlue(),
   25891                 #            alpha);
   25892                 #      }
   25893                 #
   25894                 #      public static Color toProto(java.awt.Color color) {
   25895                 #        float red = (float) color.getRed();
   25896                 #        float green = (float) color.getGreen();
   25897                 #        float blue = (float) color.getBlue();
   25898                 #        float denominator = 255.0;
   25899                 #        Color.Builder resultBuilder =
   25900                 #            Color
   25901                 #                .newBuilder()
   25902                 #                .setRed(red / denominator)
   25903                 #                .setGreen(green / denominator)
   25904                 #                .setBlue(blue / denominator);
   25905                 #        int alpha = color.getAlpha();
   25906                 #        if (alpha != 255) {
   25907                 #          result.setAlpha(
   25908                 #              FloatValue
   25909                 #                  .newBuilder()
   25910                 #                  .setValue(((float) alpha) / denominator)
   25911                 #                  .build());
   25912                 #        }
   25913                 #        return resultBuilder.build();
   25914                 #      }
   25915                 #      // ...
   25916                 #
   25917                 # Example (iOS / Obj-C):
   25918                 #
   25919                 #      // ...
   25920                 #      static UIColor* fromProto(Color* protocolor) {
   25921                 #         float red = [protocolor red];
   25922                 #         float green = [protocolor green];
   25923                 #         float blue = [protocolor blue];
   25924                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   25925                 #         float alpha = 1.0;
   25926                 #         if (alpha_wrapper != nil) {
   25927                 #           alpha = [alpha_wrapper value];
   25928                 #         }
   25929                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   25930                 #      }
   25931                 #
   25932                 #      static Color* toProto(UIColor* color) {
   25933                 #          CGFloat red, green, blue, alpha;
   25934                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   25935                 #            return nil;
   25936                 #          }
   25937                 #          Color* result = [Color alloc] init];
   25938                 #          [result setRed:red];
   25939                 #          [result setGreen:green];
   25940                 #          [result setBlue:blue];
   25941                 #          if (alpha <= 0.9999) {
   25942                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   25943                 #          }
   25944                 #          [result autorelease];
   25945                 #          return result;
   25946                 #     }
   25947                 #     // ...
   25948                 #
   25949                 #  Example (JavaScript):
   25950                 #
   25951                 #     // ...
   25952                 #
   25953                 #     var protoToCssColor = function(rgb_color) {
   25954                 #        var redFrac = rgb_color.red || 0.0;
   25955                 #        var greenFrac = rgb_color.green || 0.0;
   25956                 #        var blueFrac = rgb_color.blue || 0.0;
   25957                 #        var red = Math.floor(redFrac * 255);
   25958                 #        var green = Math.floor(greenFrac * 255);
   25959                 #        var blue = Math.floor(blueFrac * 255);
   25960                 #
   25961                 #        if (!('alpha' in rgb_color)) {
   25962                 #           return rgbToCssColor_(red, green, blue);
   25963                 #        }
   25964                 #
   25965                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   25966                 #        var rgbParams = [red, green, blue].join(',');
   25967                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   25968                 #     };
   25969                 #
   25970                 #     var rgbToCssColor_ = function(red, green, blue) {
   25971                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   25972                 #       var hexString = rgbNumber.toString(16);
   25973                 #       var missingZeros = 6 - hexString.length;
   25974                 #       var resultBuilder = ['#'];
   25975                 #       for (var i = 0; i < missingZeros; i++) {
   25976                 #          resultBuilder.push('0');
   25977                 #       }
   25978                 #       resultBuilder.push(hexString);
   25979                 #       return resultBuilder.join('');
   25980                 #     };
   25981                 #
   25982                 #     // ...
   25983               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   25984               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   25985                   # the final pixel color is defined by the equation:
   25986                   #
   25987                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   25988                   #
   25989                   # This means that a value of 1.0 corresponds to a solid color, whereas
   25990                   # a value of 0.0 corresponds to a completely transparent color. This
   25991                   # uses a wrapper message rather than a simple float scalar so that it is
   25992                   # possible to distinguish between a default value and the value being unset.
   25993                   # If omitted, this color object is to be rendered as a solid color
   25994                   # (as if the alpha value had been explicitly given with a value of 1.0).
   25995               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   25996               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   25997             },
   25998             "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
   25999             "sheetId": 42, # The ID of the sheet. Must be non-negative.
   26000                 # This field cannot be changed once set.
   26001           },
   26002         },
   26003         "findReplace": { # The result of the find/replace. # A reply from doing a find/replace.
   26004           "occurrencesChanged": 42, # The number of occurrences (possibly multiple within a cell) changed.
   26005               # For example, if replacing `"e"` with `"o"` in `"Google Sheets"`, this would
   26006               # be `"3"` because `"Google Sheets"` -> `"Googlo Shoots"`.
   26007           "sheetsChanged": 42, # The number of sheets changed.
   26008           "rowsChanged": 42, # The number of rows changed.
   26009           "valuesChanged": 42, # The number of non-formula cells changed.
   26010           "formulasChanged": 42, # The number of formula cells changed.
   26011         },
   26012         "addNamedRange": { # The result of adding a named range. # A reply from adding a named range.
   26013           "namedRange": { # A named range. # The named range to add.
   26014             "namedRangeId": "A String", # The ID of the named range.
   26015             "range": { # A range on a sheet. # The range this represents.
   26016                 # All indexes are zero-based.
   26017                 # Indexes are half open, e.g the start index is inclusive
   26018                 # and the end index is exclusive -- [start_index, end_index).
   26019                 # Missing indexes indicate the range is unbounded on that side.
   26020                 #
   26021                 # For example, if `"Sheet1"` is sheet ID 0, then:
   26022                 #
   26023                 #   `Sheet1!A1:A1 == sheet_id: 0,
   26024                 #                   start_row_index: 0, end_row_index: 1,
   26025                 #                   start_column_index: 0, end_column_index: 1`
   26026                 #
   26027                 #   `Sheet1!A3:B4 == sheet_id: 0,
   26028                 #                   start_row_index: 2, end_row_index: 4,
   26029                 #                   start_column_index: 0, end_column_index: 2`
   26030                 #
   26031                 #   `Sheet1!A:B == sheet_id: 0,
   26032                 #                 start_column_index: 0, end_column_index: 2`
   26033                 #
   26034                 #   `Sheet1!A5:B == sheet_id: 0,
   26035                 #                  start_row_index: 4,
   26036                 #                  start_column_index: 0, end_column_index: 2`
   26037                 #
   26038                 #   `Sheet1 == sheet_id:0`
   26039                 #
   26040                 # The start index must always be less than or equal to the end index.
   26041                 # If the start index equals the end index, then the range is empty.
   26042                 # Empty ranges are typically not meaningful and are usually rendered in the
   26043                 # UI as `#REF!`.
   26044               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   26045               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   26046               "sheetId": 42, # The sheet this range is on.
   26047               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   26048               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   26049             },
   26050             "name": "A String", # The name of the named range.
   26051           },
   26052         },
   26053         "addProtectedRange": { # The result of adding a new protected range. # A reply from adding a protected range.
   26054           "protectedRange": { # A protected range. # The newly added protected range.
   26055             "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
   26056                 # Unprotected ranges are only supported on protected sheets.
   26057               { # A range on a sheet.
   26058                   # All indexes are zero-based.
   26059                   # Indexes are half open, e.g the start index is inclusive
   26060                   # and the end index is exclusive -- [start_index, end_index).
   26061                   # Missing indexes indicate the range is unbounded on that side.
   26062                   #
   26063                   # For example, if `"Sheet1"` is sheet ID 0, then:
   26064                   #
   26065                   #   `Sheet1!A1:A1 == sheet_id: 0,
   26066                   #                   start_row_index: 0, end_row_index: 1,
   26067                   #                   start_column_index: 0, end_column_index: 1`
   26068                   #
   26069                   #   `Sheet1!A3:B4 == sheet_id: 0,
   26070                   #                   start_row_index: 2, end_row_index: 4,
   26071                   #                   start_column_index: 0, end_column_index: 2`
   26072                   #
   26073                   #   `Sheet1!A:B == sheet_id: 0,
   26074                   #                 start_column_index: 0, end_column_index: 2`
   26075                   #
   26076                   #   `Sheet1!A5:B == sheet_id: 0,
   26077                   #                  start_row_index: 4,
   26078                   #                  start_column_index: 0, end_column_index: 2`
   26079                   #
   26080                   #   `Sheet1 == sheet_id:0`
   26081                   #
   26082                   # The start index must always be less than or equal to the end index.
   26083                   # If the start index equals the end index, then the range is empty.
   26084                   # Empty ranges are typically not meaningful and are usually rendered in the
   26085                   # UI as `#REF!`.
   26086                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   26087                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   26088                 "sheetId": 42, # The sheet this range is on.
   26089                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   26090                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   26091               },
   26092             ],
   26093             "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
   26094                 # protected area.
   26095                 # This field is read-only.
   26096             "description": "A String", # The description of this protected range.
   26097             "namedRangeId": "A String", # The named range this protected range is backed by, if any.
   26098                 #
   26099                 # When writing, only one of range or named_range_id
   26100                 # may be set.
   26101             "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
   26102                 # This field is only visible to users with edit access to the protected
   26103                 # range and the document.
   26104                 # Editors are not supported with warning_only protection.
   26105               "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
   26106                   # range.  Domain protection is only supported on documents within a domain.
   26107               "users": [ # The email addresses of users with edit access to the protected range.
   26108                 "A String",
   26109               ],
   26110               "groups": [ # The email addresses of groups with edit access to the protected range.
   26111                 "A String",
   26112               ],
   26113             },
   26114             "protectedRangeId": 42, # The ID of the protected range.
   26115                 # This field is read-only.
   26116             "warningOnly": True or False, # True if this protected range will show a warning when editing.
   26117                 # Warning-based protection means that every user can edit data in the
   26118                 # protected range, except editing will prompt a warning asking the user
   26119                 # to confirm the edit.
   26120                 #
   26121                 # When writing: if this field is true, then editors is ignored.
   26122                 # Additionally, if this field is changed from true to false and the
   26123                 # `editors` field is not set (nor included in the field mask), then
   26124                 # the editors will be set to all the editors in the document.
   26125             "range": { # A range on a sheet. # The range that is being protected.
   26126                 # The range may be fully unbounded, in which case this is considered
   26127                 # a protected sheet.
   26128                 #
   26129                 # When writing, only one of range or named_range_id
   26130                 # may be set.
   26131                 # All indexes are zero-based.
   26132                 # Indexes are half open, e.g the start index is inclusive
   26133                 # and the end index is exclusive -- [start_index, end_index).
   26134                 # Missing indexes indicate the range is unbounded on that side.
   26135                 #
   26136                 # For example, if `"Sheet1"` is sheet ID 0, then:
   26137                 #
   26138                 #   `Sheet1!A1:A1 == sheet_id: 0,
   26139                 #                   start_row_index: 0, end_row_index: 1,
   26140                 #                   start_column_index: 0, end_column_index: 1`
   26141                 #
   26142                 #   `Sheet1!A3:B4 == sheet_id: 0,
   26143                 #                   start_row_index: 2, end_row_index: 4,
   26144                 #                   start_column_index: 0, end_column_index: 2`
   26145                 #
   26146                 #   `Sheet1!A:B == sheet_id: 0,
   26147                 #                 start_column_index: 0, end_column_index: 2`
   26148                 #
   26149                 #   `Sheet1!A5:B == sheet_id: 0,
   26150                 #                  start_row_index: 4,
   26151                 #                  start_column_index: 0, end_column_index: 2`
   26152                 #
   26153                 #   `Sheet1 == sheet_id:0`
   26154                 #
   26155                 # The start index must always be less than or equal to the end index.
   26156                 # If the start index equals the end index, then the range is empty.
   26157                 # Empty ranges are typically not meaningful and are usually rendered in the
   26158                 # UI as `#REF!`.
   26159               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   26160               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   26161               "sheetId": 42, # The sheet this range is on.
   26162               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   26163               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   26164             },
   26165           },
   26166         },
   26167         "deleteConditionalFormatRule": { # The result of deleting a conditional format rule. # A reply from deleting a conditional format rule.
   26168           "rule": { # A rule describing a conditional format. # The rule that was deleted.
   26169             "ranges": [ # The ranges that will be formatted if the condition is true.
   26170                 # All the ranges must be on the same grid.
   26171               { # A range on a sheet.
   26172                   # All indexes are zero-based.
   26173                   # Indexes are half open, e.g the start index is inclusive
   26174                   # and the end index is exclusive -- [start_index, end_index).
   26175                   # Missing indexes indicate the range is unbounded on that side.
   26176                   #
   26177                   # For example, if `"Sheet1"` is sheet ID 0, then:
   26178                   #
   26179                   #   `Sheet1!A1:A1 == sheet_id: 0,
   26180                   #                   start_row_index: 0, end_row_index: 1,
   26181                   #                   start_column_index: 0, end_column_index: 1`
   26182                   #
   26183                   #   `Sheet1!A3:B4 == sheet_id: 0,
   26184                   #                   start_row_index: 2, end_row_index: 4,
   26185                   #                   start_column_index: 0, end_column_index: 2`
   26186                   #
   26187                   #   `Sheet1!A:B == sheet_id: 0,
   26188                   #                 start_column_index: 0, end_column_index: 2`
   26189                   #
   26190                   #   `Sheet1!A5:B == sheet_id: 0,
   26191                   #                  start_row_index: 4,
   26192                   #                  start_column_index: 0, end_column_index: 2`
   26193                   #
   26194                   #   `Sheet1 == sheet_id:0`
   26195                   #
   26196                   # The start index must always be less than or equal to the end index.
   26197                   # If the start index equals the end index, then the range is empty.
   26198                   # Empty ranges are typically not meaningful and are usually rendered in the
   26199                   # UI as `#REF!`.
   26200                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   26201                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   26202                 "sheetId": 42, # The sheet this range is on.
   26203                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   26204                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   26205               },
   26206             ],
   26207             "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
   26208               "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
   26209                   # the format will be applied.
   26210                   # BooleanConditions are used by conditional formatting,
   26211                   # data validation, and the criteria in filters.
   26212                 "values": [ # The values of the condition. The number of supported values depends
   26213                     # on the condition type.  Some support zero values,
   26214                     # others one or two values,
   26215                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   26216                   { # The value of the condition.
   26217                     "relativeDate": "A String", # A relative date (based on the current date).
   26218                         # Valid only if the type is
   26219                         # DATE_BEFORE,
   26220                         # DATE_AFTER,
   26221                         # DATE_ON_OR_BEFORE or
   26222                         # DATE_ON_OR_AFTER.
   26223                         #
   26224                         # Relative dates are not supported in data validation.
   26225                         # They are supported only in conditional formatting and
   26226                         # conditional filters.
   26227                     "userEnteredValue": "A String", # A value the condition is based on.
   26228                         # The value will be parsed as if the user typed into a cell.
   26229                         # Formulas are supported (and must begin with an `=`).
   26230                   },
   26231                 ],
   26232                 "type": "A String", # The type of condition.
   26233               },
   26234               "format": { # The format of a cell. # The format to apply.
   26235                   # Conditional formatting can only apply a subset of formatting:
   26236                   # bold, italic,
   26237                   # strikethrough,
   26238                   # foreground color &
   26239                   # background color.
   26240                 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   26241                   "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   26242                       # the user's locale will be used if necessary for the given type.
   26243                       # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   26244                       # information about the supported patterns.
   26245                   "type": "A String", # The type of the number format.
   26246                       # When writing, this field must be set.
   26247                 },
   26248                 "textDirection": "A String", # The direction of the text in the cell.
   26249                 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   26250                     # When updating padding, every field must be specified.
   26251                   "top": 42, # The top padding of the cell.
   26252                   "right": 42, # The right padding of the cell.
   26253                   "bottom": 42, # The bottom padding of the cell.
   26254                   "left": 42, # The left padding of the cell.
   26255                 },
   26256                 "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   26257                 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   26258                     # for simplicity of conversion to/from color representations in various
   26259                     # languages over compactness; for example, the fields of this representation
   26260                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   26261                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   26262                     # method in iOS; and, with just a little work, it can be easily formatted into
   26263                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   26264                     #
   26265                     # Example (Java):
   26266                     #
   26267                     #      import com.google.type.Color;
   26268                     #
   26269                     #      // ...
   26270                     #      public static java.awt.Color fromProto(Color protocolor) {
   26271                     #        float alpha = protocolor.hasAlpha()
   26272                     #            ? protocolor.getAlpha().getValue()
   26273                     #            : 1.0;
   26274                     #
   26275                     #        return new java.awt.Color(
   26276                     #            protocolor.getRed(),
   26277                     #            protocolor.getGreen(),
   26278                     #            protocolor.getBlue(),
   26279                     #            alpha);
   26280                     #      }
   26281                     #
   26282                     #      public static Color toProto(java.awt.Color color) {
   26283                     #        float red = (float) color.getRed();
   26284                     #        float green = (float) color.getGreen();
   26285                     #        float blue = (float) color.getBlue();
   26286                     #        float denominator = 255.0;
   26287                     #        Color.Builder resultBuilder =
   26288                     #            Color
   26289                     #                .newBuilder()
   26290                     #                .setRed(red / denominator)
   26291                     #                .setGreen(green / denominator)
   26292                     #                .setBlue(blue / denominator);
   26293                     #        int alpha = color.getAlpha();
   26294                     #        if (alpha != 255) {
   26295                     #          result.setAlpha(
   26296                     #              FloatValue
   26297                     #                  .newBuilder()
   26298                     #                  .setValue(((float) alpha) / denominator)
   26299                     #                  .build());
   26300                     #        }
   26301                     #        return resultBuilder.build();
   26302                     #      }
   26303                     #      // ...
   26304                     #
   26305                     # Example (iOS / Obj-C):
   26306                     #
   26307                     #      // ...
   26308                     #      static UIColor* fromProto(Color* protocolor) {
   26309                     #         float red = [protocolor red];
   26310                     #         float green = [protocolor green];
   26311                     #         float blue = [protocolor blue];
   26312                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   26313                     #         float alpha = 1.0;
   26314                     #         if (alpha_wrapper != nil) {
   26315                     #           alpha = [alpha_wrapper value];
   26316                     #         }
   26317                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   26318                     #      }
   26319                     #
   26320                     #      static Color* toProto(UIColor* color) {
   26321                     #          CGFloat red, green, blue, alpha;
   26322                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   26323                     #            return nil;
   26324                     #          }
   26325                     #          Color* result = [Color alloc] init];
   26326                     #          [result setRed:red];
   26327                     #          [result setGreen:green];
   26328                     #          [result setBlue:blue];
   26329                     #          if (alpha <= 0.9999) {
   26330                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   26331                     #          }
   26332                     #          [result autorelease];
   26333                     #          return result;
   26334                     #     }
   26335                     #     // ...
   26336                     #
   26337                     #  Example (JavaScript):
   26338                     #
   26339                     #     // ...
   26340                     #
   26341                     #     var protoToCssColor = function(rgb_color) {
   26342                     #        var redFrac = rgb_color.red || 0.0;
   26343                     #        var greenFrac = rgb_color.green || 0.0;
   26344                     #        var blueFrac = rgb_color.blue || 0.0;
   26345                     #        var red = Math.floor(redFrac * 255);
   26346                     #        var green = Math.floor(greenFrac * 255);
   26347                     #        var blue = Math.floor(blueFrac * 255);
   26348                     #
   26349                     #        if (!('alpha' in rgb_color)) {
   26350                     #           return rgbToCssColor_(red, green, blue);
   26351                     #        }
   26352                     #
   26353                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   26354                     #        var rgbParams = [red, green, blue].join(',');
   26355                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   26356                     #     };
   26357                     #
   26358                     #     var rgbToCssColor_ = function(red, green, blue) {
   26359                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   26360                     #       var hexString = rgbNumber.toString(16);
   26361                     #       var missingZeros = 6 - hexString.length;
   26362                     #       var resultBuilder = ['#'];
   26363                     #       for (var i = 0; i < missingZeros; i++) {
   26364                     #          resultBuilder.push('0');
   26365                     #       }
   26366                     #       resultBuilder.push(hexString);
   26367                     #       return resultBuilder.join('');
   26368                     #     };
   26369                     #
   26370                     #     // ...
   26371                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   26372                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   26373                       # the final pixel color is defined by the equation:
   26374                       #
   26375                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   26376                       #
   26377                       # This means that a value of 1.0 corresponds to a solid color, whereas
   26378                       # a value of 0.0 corresponds to a completely transparent color. This
   26379                       # uses a wrapper message rather than a simple float scalar so that it is
   26380                       # possible to distinguish between a default value and the value being unset.
   26381                       # If omitted, this color object is to be rendered as a solid color
   26382                       # (as if the alpha value had been explicitly given with a value of 1.0).
   26383                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   26384                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   26385                 },
   26386                 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   26387                 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   26388                     # Absent values indicate that the field isn't specified.
   26389                   "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   26390                       # for simplicity of conversion to/from color representations in various
   26391                       # languages over compactness; for example, the fields of this representation
   26392                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   26393                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   26394                       # method in iOS; and, with just a little work, it can be easily formatted into
   26395                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   26396                       #
   26397                       # Example (Java):
   26398                       #
   26399                       #      import com.google.type.Color;
   26400                       #
   26401                       #      // ...
   26402                       #      public static java.awt.Color fromProto(Color protocolor) {
   26403                       #        float alpha = protocolor.hasAlpha()
   26404                       #            ? protocolor.getAlpha().getValue()
   26405                       #            : 1.0;
   26406                       #
   26407                       #        return new java.awt.Color(
   26408                       #            protocolor.getRed(),
   26409                       #            protocolor.getGreen(),
   26410                       #            protocolor.getBlue(),
   26411                       #            alpha);
   26412                       #      }
   26413                       #
   26414                       #      public static Color toProto(java.awt.Color color) {
   26415                       #        float red = (float) color.getRed();
   26416                       #        float green = (float) color.getGreen();
   26417                       #        float blue = (float) color.getBlue();
   26418                       #        float denominator = 255.0;
   26419                       #        Color.Builder resultBuilder =
   26420                       #            Color
   26421                       #                .newBuilder()
   26422                       #                .setRed(red / denominator)
   26423                       #                .setGreen(green / denominator)
   26424                       #                .setBlue(blue / denominator);
   26425                       #        int alpha = color.getAlpha();
   26426                       #        if (alpha != 255) {
   26427                       #          result.setAlpha(
   26428                       #              FloatValue
   26429                       #                  .newBuilder()
   26430                       #                  .setValue(((float) alpha) / denominator)
   26431                       #                  .build());
   26432                       #        }
   26433                       #        return resultBuilder.build();
   26434                       #      }
   26435                       #      // ...
   26436                       #
   26437                       # Example (iOS / Obj-C):
   26438                       #
   26439                       #      // ...
   26440                       #      static UIColor* fromProto(Color* protocolor) {
   26441                       #         float red = [protocolor red];
   26442                       #         float green = [protocolor green];
   26443                       #         float blue = [protocolor blue];
   26444                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   26445                       #         float alpha = 1.0;
   26446                       #         if (alpha_wrapper != nil) {
   26447                       #           alpha = [alpha_wrapper value];
   26448                       #         }
   26449                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   26450                       #      }
   26451                       #
   26452                       #      static Color* toProto(UIColor* color) {
   26453                       #          CGFloat red, green, blue, alpha;
   26454                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   26455                       #            return nil;
   26456                       #          }
   26457                       #          Color* result = [Color alloc] init];
   26458                       #          [result setRed:red];
   26459                       #          [result setGreen:green];
   26460                       #          [result setBlue:blue];
   26461                       #          if (alpha <= 0.9999) {
   26462                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   26463                       #          }
   26464                       #          [result autorelease];
   26465                       #          return result;
   26466                       #     }
   26467                       #     // ...
   26468                       #
   26469                       #  Example (JavaScript):
   26470                       #
   26471                       #     // ...
   26472                       #
   26473                       #     var protoToCssColor = function(rgb_color) {
   26474                       #        var redFrac = rgb_color.red || 0.0;
   26475                       #        var greenFrac = rgb_color.green || 0.0;
   26476                       #        var blueFrac = rgb_color.blue || 0.0;
   26477                       #        var red = Math.floor(redFrac * 255);
   26478                       #        var green = Math.floor(greenFrac * 255);
   26479                       #        var blue = Math.floor(blueFrac * 255);
   26480                       #
   26481                       #        if (!('alpha' in rgb_color)) {
   26482                       #           return rgbToCssColor_(red, green, blue);
   26483                       #        }
   26484                       #
   26485                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   26486                       #        var rgbParams = [red, green, blue].join(',');
   26487                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   26488                       #     };
   26489                       #
   26490                       #     var rgbToCssColor_ = function(red, green, blue) {
   26491                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   26492                       #       var hexString = rgbNumber.toString(16);
   26493                       #       var missingZeros = 6 - hexString.length;
   26494                       #       var resultBuilder = ['#'];
   26495                       #       for (var i = 0; i < missingZeros; i++) {
   26496                       #          resultBuilder.push('0');
   26497                       #       }
   26498                       #       resultBuilder.push(hexString);
   26499                       #       return resultBuilder.join('');
   26500                       #     };
   26501                       #
   26502                       #     // ...
   26503                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   26504                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   26505                         # the final pixel color is defined by the equation:
   26506                         #
   26507                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   26508                         #
   26509                         # This means that a value of 1.0 corresponds to a solid color, whereas
   26510                         # a value of 0.0 corresponds to a completely transparent color. This
   26511                         # uses a wrapper message rather than a simple float scalar so that it is
   26512                         # possible to distinguish between a default value and the value being unset.
   26513                         # If omitted, this color object is to be rendered as a solid color
   26514                         # (as if the alpha value had been explicitly given with a value of 1.0).
   26515                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   26516                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   26517                   },
   26518                   "bold": True or False, # True if the text is bold.
   26519                   "strikethrough": True or False, # True if the text has a strikethrough.
   26520                   "fontFamily": "A String", # The font family.
   26521                   "fontSize": 42, # The size of the font.
   26522                   "italic": True or False, # True if the text is italicized.
   26523                   "underline": True or False, # True if the text is underlined.
   26524                 },
   26525                 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   26526                   "angle": 42, # The angle between the standard orientation and the desired orientation.
   26527                       # Measured in degrees. Valid values are between -90 and 90. Positive
   26528                       # angles are angled upwards, negative are angled downwards.
   26529                       #
   26530                       # Note: For LTR text direction positive angles are in the counterclockwise
   26531                       # direction, whereas for RTL they are in the clockwise direction
   26532                   "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   26533                       # characters is unchanged.
   26534                       # For example:
   26535                       #
   26536                       #     | V |
   26537                       #     | e |
   26538                       #     | r |
   26539                       #     | t |
   26540                       #     | i |
   26541                       #     | c |
   26542                       #     | a |
   26543                       #     | l |
   26544                 },
   26545                 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   26546                 "borders": { # The borders of the cell. # The borders of the cell.
   26547                   "top": { # A border along a cell. # The top border of the cell.
   26548                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   26549                         # for simplicity of conversion to/from color representations in various
   26550                         # languages over compactness; for example, the fields of this representation
   26551                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   26552                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   26553                         # method in iOS; and, with just a little work, it can be easily formatted into
   26554                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   26555                         #
   26556                         # Example (Java):
   26557                         #
   26558                         #      import com.google.type.Color;
   26559                         #
   26560                         #      // ...
   26561                         #      public static java.awt.Color fromProto(Color protocolor) {
   26562                         #        float alpha = protocolor.hasAlpha()
   26563                         #            ? protocolor.getAlpha().getValue()
   26564                         #            : 1.0;
   26565                         #
   26566                         #        return new java.awt.Color(
   26567                         #            protocolor.getRed(),
   26568                         #            protocolor.getGreen(),
   26569                         #            protocolor.getBlue(),
   26570                         #            alpha);
   26571                         #      }
   26572                         #
   26573                         #      public static Color toProto(java.awt.Color color) {
   26574                         #        float red = (float) color.getRed();
   26575                         #        float green = (float) color.getGreen();
   26576                         #        float blue = (float) color.getBlue();
   26577                         #        float denominator = 255.0;
   26578                         #        Color.Builder resultBuilder =
   26579                         #            Color
   26580                         #                .newBuilder()
   26581                         #                .setRed(red / denominator)
   26582                         #                .setGreen(green / denominator)
   26583                         #                .setBlue(blue / denominator);
   26584                         #        int alpha = color.getAlpha();
   26585                         #        if (alpha != 255) {
   26586                         #          result.setAlpha(
   26587                         #              FloatValue
   26588                         #                  .newBuilder()
   26589                         #                  .setValue(((float) alpha) / denominator)
   26590                         #                  .build());
   26591                         #        }
   26592                         #        return resultBuilder.build();
   26593                         #      }
   26594                         #      // ...
   26595                         #
   26596                         # Example (iOS / Obj-C):
   26597                         #
   26598                         #      // ...
   26599                         #      static UIColor* fromProto(Color* protocolor) {
   26600                         #         float red = [protocolor red];
   26601                         #         float green = [protocolor green];
   26602                         #         float blue = [protocolor blue];
   26603                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   26604                         #         float alpha = 1.0;
   26605                         #         if (alpha_wrapper != nil) {
   26606                         #           alpha = [alpha_wrapper value];
   26607                         #         }
   26608                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   26609                         #      }
   26610                         #
   26611                         #      static Color* toProto(UIColor* color) {
   26612                         #          CGFloat red, green, blue, alpha;
   26613                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   26614                         #            return nil;
   26615                         #          }
   26616                         #          Color* result = [Color alloc] init];
   26617                         #          [result setRed:red];
   26618                         #          [result setGreen:green];
   26619                         #          [result setBlue:blue];
   26620                         #          if (alpha <= 0.9999) {
   26621                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   26622                         #          }
   26623                         #          [result autorelease];
   26624                         #          return result;
   26625                         #     }
   26626                         #     // ...
   26627                         #
   26628                         #  Example (JavaScript):
   26629                         #
   26630                         #     // ...
   26631                         #
   26632                         #     var protoToCssColor = function(rgb_color) {
   26633                         #        var redFrac = rgb_color.red || 0.0;
   26634                         #        var greenFrac = rgb_color.green || 0.0;
   26635                         #        var blueFrac = rgb_color.blue || 0.0;
   26636                         #        var red = Math.floor(redFrac * 255);
   26637                         #        var green = Math.floor(greenFrac * 255);
   26638                         #        var blue = Math.floor(blueFrac * 255);
   26639                         #
   26640                         #        if (!('alpha' in rgb_color)) {
   26641                         #           return rgbToCssColor_(red, green, blue);
   26642                         #        }
   26643                         #
   26644                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   26645                         #        var rgbParams = [red, green, blue].join(',');
   26646                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   26647                         #     };
   26648                         #
   26649                         #     var rgbToCssColor_ = function(red, green, blue) {
   26650                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   26651                         #       var hexString = rgbNumber.toString(16);
   26652                         #       var missingZeros = 6 - hexString.length;
   26653                         #       var resultBuilder = ['#'];
   26654                         #       for (var i = 0; i < missingZeros; i++) {
   26655                         #          resultBuilder.push('0');
   26656                         #       }
   26657                         #       resultBuilder.push(hexString);
   26658                         #       return resultBuilder.join('');
   26659                         #     };
   26660                         #
   26661                         #     // ...
   26662                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   26663                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   26664                           # the final pixel color is defined by the equation:
   26665                           #
   26666                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   26667                           #
   26668                           # This means that a value of 1.0 corresponds to a solid color, whereas
   26669                           # a value of 0.0 corresponds to a completely transparent color. This
   26670                           # uses a wrapper message rather than a simple float scalar so that it is
   26671                           # possible to distinguish between a default value and the value being unset.
   26672                           # If omitted, this color object is to be rendered as a solid color
   26673                           # (as if the alpha value had been explicitly given with a value of 1.0).
   26674                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   26675                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   26676                     },
   26677                     "width": 42, # The width of the border, in pixels.
   26678                         # Deprecated; the width is determined by the "style" field.
   26679                     "style": "A String", # The style of the border.
   26680                   },
   26681                   "right": { # A border along a cell. # The right border of the cell.
   26682                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   26683                         # for simplicity of conversion to/from color representations in various
   26684                         # languages over compactness; for example, the fields of this representation
   26685                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   26686                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   26687                         # method in iOS; and, with just a little work, it can be easily formatted into
   26688                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   26689                         #
   26690                         # Example (Java):
   26691                         #
   26692                         #      import com.google.type.Color;
   26693                         #
   26694                         #      // ...
   26695                         #      public static java.awt.Color fromProto(Color protocolor) {
   26696                         #        float alpha = protocolor.hasAlpha()
   26697                         #            ? protocolor.getAlpha().getValue()
   26698                         #            : 1.0;
   26699                         #
   26700                         #        return new java.awt.Color(
   26701                         #            protocolor.getRed(),
   26702                         #            protocolor.getGreen(),
   26703                         #            protocolor.getBlue(),
   26704                         #            alpha);
   26705                         #      }
   26706                         #
   26707                         #      public static Color toProto(java.awt.Color color) {
   26708                         #        float red = (float) color.getRed();
   26709                         #        float green = (float) color.getGreen();
   26710                         #        float blue = (float) color.getBlue();
   26711                         #        float denominator = 255.0;
   26712                         #        Color.Builder resultBuilder =
   26713                         #            Color
   26714                         #                .newBuilder()
   26715                         #                .setRed(red / denominator)
   26716                         #                .setGreen(green / denominator)
   26717                         #                .setBlue(blue / denominator);
   26718                         #        int alpha = color.getAlpha();
   26719                         #        if (alpha != 255) {
   26720                         #          result.setAlpha(
   26721                         #              FloatValue
   26722                         #                  .newBuilder()
   26723                         #                  .setValue(((float) alpha) / denominator)
   26724                         #                  .build());
   26725                         #        }
   26726                         #        return resultBuilder.build();
   26727                         #      }
   26728                         #      // ...
   26729                         #
   26730                         # Example (iOS / Obj-C):
   26731                         #
   26732                         #      // ...
   26733                         #      static UIColor* fromProto(Color* protocolor) {
   26734                         #         float red = [protocolor red];
   26735                         #         float green = [protocolor green];
   26736                         #         float blue = [protocolor blue];
   26737                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   26738                         #         float alpha = 1.0;
   26739                         #         if (alpha_wrapper != nil) {
   26740                         #           alpha = [alpha_wrapper value];
   26741                         #         }
   26742                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   26743                         #      }
   26744                         #
   26745                         #      static Color* toProto(UIColor* color) {
   26746                         #          CGFloat red, green, blue, alpha;
   26747                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   26748                         #            return nil;
   26749                         #          }
   26750                         #          Color* result = [Color alloc] init];
   26751                         #          [result setRed:red];
   26752                         #          [result setGreen:green];
   26753                         #          [result setBlue:blue];
   26754                         #          if (alpha <= 0.9999) {
   26755                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   26756                         #          }
   26757                         #          [result autorelease];
   26758                         #          return result;
   26759                         #     }
   26760                         #     // ...
   26761                         #
   26762                         #  Example (JavaScript):
   26763                         #
   26764                         #     // ...
   26765                         #
   26766                         #     var protoToCssColor = function(rgb_color) {
   26767                         #        var redFrac = rgb_color.red || 0.0;
   26768                         #        var greenFrac = rgb_color.green || 0.0;
   26769                         #        var blueFrac = rgb_color.blue || 0.0;
   26770                         #        var red = Math.floor(redFrac * 255);
   26771                         #        var green = Math.floor(greenFrac * 255);
   26772                         #        var blue = Math.floor(blueFrac * 255);
   26773                         #
   26774                         #        if (!('alpha' in rgb_color)) {
   26775                         #           return rgbToCssColor_(red, green, blue);
   26776                         #        }
   26777                         #
   26778                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   26779                         #        var rgbParams = [red, green, blue].join(',');
   26780                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   26781                         #     };
   26782                         #
   26783                         #     var rgbToCssColor_ = function(red, green, blue) {
   26784                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   26785                         #       var hexString = rgbNumber.toString(16);
   26786                         #       var missingZeros = 6 - hexString.length;
   26787                         #       var resultBuilder = ['#'];
   26788                         #       for (var i = 0; i < missingZeros; i++) {
   26789                         #          resultBuilder.push('0');
   26790                         #       }
   26791                         #       resultBuilder.push(hexString);
   26792                         #       return resultBuilder.join('');
   26793                         #     };
   26794                         #
   26795                         #     // ...
   26796                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   26797                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   26798                           # the final pixel color is defined by the equation:
   26799                           #
   26800                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   26801                           #
   26802                           # This means that a value of 1.0 corresponds to a solid color, whereas
   26803                           # a value of 0.0 corresponds to a completely transparent color. This
   26804                           # uses a wrapper message rather than a simple float scalar so that it is
   26805                           # possible to distinguish between a default value and the value being unset.
   26806                           # If omitted, this color object is to be rendered as a solid color
   26807                           # (as if the alpha value had been explicitly given with a value of 1.0).
   26808                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   26809                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   26810                     },
   26811                     "width": 42, # The width of the border, in pixels.
   26812                         # Deprecated; the width is determined by the "style" field.
   26813                     "style": "A String", # The style of the border.
   26814                   },
   26815                   "bottom": { # A border along a cell. # The bottom border of the cell.
   26816                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   26817                         # for simplicity of conversion to/from color representations in various
   26818                         # languages over compactness; for example, the fields of this representation
   26819                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   26820                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   26821                         # method in iOS; and, with just a little work, it can be easily formatted into
   26822                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   26823                         #
   26824                         # Example (Java):
   26825                         #
   26826                         #      import com.google.type.Color;
   26827                         #
   26828                         #      // ...
   26829                         #      public static java.awt.Color fromProto(Color protocolor) {
   26830                         #        float alpha = protocolor.hasAlpha()
   26831                         #            ? protocolor.getAlpha().getValue()
   26832                         #            : 1.0;
   26833                         #
   26834                         #        return new java.awt.Color(
   26835                         #            protocolor.getRed(),
   26836                         #            protocolor.getGreen(),
   26837                         #            protocolor.getBlue(),
   26838                         #            alpha);
   26839                         #      }
   26840                         #
   26841                         #      public static Color toProto(java.awt.Color color) {
   26842                         #        float red = (float) color.getRed();
   26843                         #        float green = (float) color.getGreen();
   26844                         #        float blue = (float) color.getBlue();
   26845                         #        float denominator = 255.0;
   26846                         #        Color.Builder resultBuilder =
   26847                         #            Color
   26848                         #                .newBuilder()
   26849                         #                .setRed(red / denominator)
   26850                         #                .setGreen(green / denominator)
   26851                         #                .setBlue(blue / denominator);
   26852                         #        int alpha = color.getAlpha();
   26853                         #        if (alpha != 255) {
   26854                         #          result.setAlpha(
   26855                         #              FloatValue
   26856                         #                  .newBuilder()
   26857                         #                  .setValue(((float) alpha) / denominator)
   26858                         #                  .build());
   26859                         #        }
   26860                         #        return resultBuilder.build();
   26861                         #      }
   26862                         #      // ...
   26863                         #
   26864                         # Example (iOS / Obj-C):
   26865                         #
   26866                         #      // ...
   26867                         #      static UIColor* fromProto(Color* protocolor) {
   26868                         #         float red = [protocolor red];
   26869                         #         float green = [protocolor green];
   26870                         #         float blue = [protocolor blue];
   26871                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   26872                         #         float alpha = 1.0;
   26873                         #         if (alpha_wrapper != nil) {
   26874                         #           alpha = [alpha_wrapper value];
   26875                         #         }
   26876                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   26877                         #      }
   26878                         #
   26879                         #      static Color* toProto(UIColor* color) {
   26880                         #          CGFloat red, green, blue, alpha;
   26881                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   26882                         #            return nil;
   26883                         #          }
   26884                         #          Color* result = [Color alloc] init];
   26885                         #          [result setRed:red];
   26886                         #          [result setGreen:green];
   26887                         #          [result setBlue:blue];
   26888                         #          if (alpha <= 0.9999) {
   26889                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   26890                         #          }
   26891                         #          [result autorelease];
   26892                         #          return result;
   26893                         #     }
   26894                         #     // ...
   26895                         #
   26896                         #  Example (JavaScript):
   26897                         #
   26898                         #     // ...
   26899                         #
   26900                         #     var protoToCssColor = function(rgb_color) {
   26901                         #        var redFrac = rgb_color.red || 0.0;
   26902                         #        var greenFrac = rgb_color.green || 0.0;
   26903                         #        var blueFrac = rgb_color.blue || 0.0;
   26904                         #        var red = Math.floor(redFrac * 255);
   26905                         #        var green = Math.floor(greenFrac * 255);
   26906                         #        var blue = Math.floor(blueFrac * 255);
   26907                         #
   26908                         #        if (!('alpha' in rgb_color)) {
   26909                         #           return rgbToCssColor_(red, green, blue);
   26910                         #        }
   26911                         #
   26912                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   26913                         #        var rgbParams = [red, green, blue].join(',');
   26914                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   26915                         #     };
   26916                         #
   26917                         #     var rgbToCssColor_ = function(red, green, blue) {
   26918                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   26919                         #       var hexString = rgbNumber.toString(16);
   26920                         #       var missingZeros = 6 - hexString.length;
   26921                         #       var resultBuilder = ['#'];
   26922                         #       for (var i = 0; i < missingZeros; i++) {
   26923                         #          resultBuilder.push('0');
   26924                         #       }
   26925                         #       resultBuilder.push(hexString);
   26926                         #       return resultBuilder.join('');
   26927                         #     };
   26928                         #
   26929                         #     // ...
   26930                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   26931                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   26932                           # the final pixel color is defined by the equation:
   26933                           #
   26934                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   26935                           #
   26936                           # This means that a value of 1.0 corresponds to a solid color, whereas
   26937                           # a value of 0.0 corresponds to a completely transparent color. This
   26938                           # uses a wrapper message rather than a simple float scalar so that it is
   26939                           # possible to distinguish between a default value and the value being unset.
   26940                           # If omitted, this color object is to be rendered as a solid color
   26941                           # (as if the alpha value had been explicitly given with a value of 1.0).
   26942                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   26943                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   26944                     },
   26945                     "width": 42, # The width of the border, in pixels.
   26946                         # Deprecated; the width is determined by the "style" field.
   26947                     "style": "A String", # The style of the border.
   26948                   },
   26949                   "left": { # A border along a cell. # The left border of the cell.
   26950                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   26951                         # for simplicity of conversion to/from color representations in various
   26952                         # languages over compactness; for example, the fields of this representation
   26953                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   26954                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   26955                         # method in iOS; and, with just a little work, it can be easily formatted into
   26956                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   26957                         #
   26958                         # Example (Java):
   26959                         #
   26960                         #      import com.google.type.Color;
   26961                         #
   26962                         #      // ...
   26963                         #      public static java.awt.Color fromProto(Color protocolor) {
   26964                         #        float alpha = protocolor.hasAlpha()
   26965                         #            ? protocolor.getAlpha().getValue()
   26966                         #            : 1.0;
   26967                         #
   26968                         #        return new java.awt.Color(
   26969                         #            protocolor.getRed(),
   26970                         #            protocolor.getGreen(),
   26971                         #            protocolor.getBlue(),
   26972                         #            alpha);
   26973                         #      }
   26974                         #
   26975                         #      public static Color toProto(java.awt.Color color) {
   26976                         #        float red = (float) color.getRed();
   26977                         #        float green = (float) color.getGreen();
   26978                         #        float blue = (float) color.getBlue();
   26979                         #        float denominator = 255.0;
   26980                         #        Color.Builder resultBuilder =
   26981                         #            Color
   26982                         #                .newBuilder()
   26983                         #                .setRed(red / denominator)
   26984                         #                .setGreen(green / denominator)
   26985                         #                .setBlue(blue / denominator);
   26986                         #        int alpha = color.getAlpha();
   26987                         #        if (alpha != 255) {
   26988                         #          result.setAlpha(
   26989                         #              FloatValue
   26990                         #                  .newBuilder()
   26991                         #                  .setValue(((float) alpha) / denominator)
   26992                         #                  .build());
   26993                         #        }
   26994                         #        return resultBuilder.build();
   26995                         #      }
   26996                         #      // ...
   26997                         #
   26998                         # Example (iOS / Obj-C):
   26999                         #
   27000                         #      // ...
   27001                         #      static UIColor* fromProto(Color* protocolor) {
   27002                         #         float red = [protocolor red];
   27003                         #         float green = [protocolor green];
   27004                         #         float blue = [protocolor blue];
   27005                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   27006                         #         float alpha = 1.0;
   27007                         #         if (alpha_wrapper != nil) {
   27008                         #           alpha = [alpha_wrapper value];
   27009                         #         }
   27010                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   27011                         #      }
   27012                         #
   27013                         #      static Color* toProto(UIColor* color) {
   27014                         #          CGFloat red, green, blue, alpha;
   27015                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   27016                         #            return nil;
   27017                         #          }
   27018                         #          Color* result = [Color alloc] init];
   27019                         #          [result setRed:red];
   27020                         #          [result setGreen:green];
   27021                         #          [result setBlue:blue];
   27022                         #          if (alpha <= 0.9999) {
   27023                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   27024                         #          }
   27025                         #          [result autorelease];
   27026                         #          return result;
   27027                         #     }
   27028                         #     // ...
   27029                         #
   27030                         #  Example (JavaScript):
   27031                         #
   27032                         #     // ...
   27033                         #
   27034                         #     var protoToCssColor = function(rgb_color) {
   27035                         #        var redFrac = rgb_color.red || 0.0;
   27036                         #        var greenFrac = rgb_color.green || 0.0;
   27037                         #        var blueFrac = rgb_color.blue || 0.0;
   27038                         #        var red = Math.floor(redFrac * 255);
   27039                         #        var green = Math.floor(greenFrac * 255);
   27040                         #        var blue = Math.floor(blueFrac * 255);
   27041                         #
   27042                         #        if (!('alpha' in rgb_color)) {
   27043                         #           return rgbToCssColor_(red, green, blue);
   27044                         #        }
   27045                         #
   27046                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   27047                         #        var rgbParams = [red, green, blue].join(',');
   27048                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   27049                         #     };
   27050                         #
   27051                         #     var rgbToCssColor_ = function(red, green, blue) {
   27052                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   27053                         #       var hexString = rgbNumber.toString(16);
   27054                         #       var missingZeros = 6 - hexString.length;
   27055                         #       var resultBuilder = ['#'];
   27056                         #       for (var i = 0; i < missingZeros; i++) {
   27057                         #          resultBuilder.push('0');
   27058                         #       }
   27059                         #       resultBuilder.push(hexString);
   27060                         #       return resultBuilder.join('');
   27061                         #     };
   27062                         #
   27063                         #     // ...
   27064                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   27065                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   27066                           # the final pixel color is defined by the equation:
   27067                           #
   27068                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   27069                           #
   27070                           # This means that a value of 1.0 corresponds to a solid color, whereas
   27071                           # a value of 0.0 corresponds to a completely transparent color. This
   27072                           # uses a wrapper message rather than a simple float scalar so that it is
   27073                           # possible to distinguish between a default value and the value being unset.
   27074                           # If omitted, this color object is to be rendered as a solid color
   27075                           # (as if the alpha value had been explicitly given with a value of 1.0).
   27076                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   27077                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   27078                     },
   27079                     "width": 42, # The width of the border, in pixels.
   27080                         # Deprecated; the width is determined by the "style" field.
   27081                     "style": "A String", # The style of the border.
   27082                   },
   27083                 },
   27084                 "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   27085               },
   27086             },
   27087             "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
   27088                 # the interpolation points listed. The format of a cell will vary
   27089                 # based on its contents as compared to the values of the interpolation
   27090                 # points.
   27091               "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
   27092                   # These pin the gradient color scale according to the color,
   27093                   # type and value chosen.
   27094                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   27095                     # for simplicity of conversion to/from color representations in various
   27096                     # languages over compactness; for example, the fields of this representation
   27097                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   27098                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   27099                     # method in iOS; and, with just a little work, it can be easily formatted into
   27100                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   27101                     #
   27102                     # Example (Java):
   27103                     #
   27104                     #      import com.google.type.Color;
   27105                     #
   27106                     #      // ...
   27107                     #      public static java.awt.Color fromProto(Color protocolor) {
   27108                     #        float alpha = protocolor.hasAlpha()
   27109                     #            ? protocolor.getAlpha().getValue()
   27110                     #            : 1.0;
   27111                     #
   27112                     #        return new java.awt.Color(
   27113                     #            protocolor.getRed(),
   27114                     #            protocolor.getGreen(),
   27115                     #            protocolor.getBlue(),
   27116                     #            alpha);
   27117                     #      }
   27118                     #
   27119                     #      public static Color toProto(java.awt.Color color) {
   27120                     #        float red = (float) color.getRed();
   27121                     #        float green = (float) color.getGreen();
   27122                     #        float blue = (float) color.getBlue();
   27123                     #        float denominator = 255.0;
   27124                     #        Color.Builder resultBuilder =
   27125                     #            Color
   27126                     #                .newBuilder()
   27127                     #                .setRed(red / denominator)
   27128                     #                .setGreen(green / denominator)
   27129                     #                .setBlue(blue / denominator);
   27130                     #        int alpha = color.getAlpha();
   27131                     #        if (alpha != 255) {
   27132                     #          result.setAlpha(
   27133                     #              FloatValue
   27134                     #                  .newBuilder()
   27135                     #                  .setValue(((float) alpha) / denominator)
   27136                     #                  .build());
   27137                     #        }
   27138                     #        return resultBuilder.build();
   27139                     #      }
   27140                     #      // ...
   27141                     #
   27142                     # Example (iOS / Obj-C):
   27143                     #
   27144                     #      // ...
   27145                     #      static UIColor* fromProto(Color* protocolor) {
   27146                     #         float red = [protocolor red];
   27147                     #         float green = [protocolor green];
   27148                     #         float blue = [protocolor blue];
   27149                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   27150                     #         float alpha = 1.0;
   27151                     #         if (alpha_wrapper != nil) {
   27152                     #           alpha = [alpha_wrapper value];
   27153                     #         }
   27154                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   27155                     #      }
   27156                     #
   27157                     #      static Color* toProto(UIColor* color) {
   27158                     #          CGFloat red, green, blue, alpha;
   27159                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   27160                     #            return nil;
   27161                     #          }
   27162                     #          Color* result = [Color alloc] init];
   27163                     #          [result setRed:red];
   27164                     #          [result setGreen:green];
   27165                     #          [result setBlue:blue];
   27166                     #          if (alpha <= 0.9999) {
   27167                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   27168                     #          }
   27169                     #          [result autorelease];
   27170                     #          return result;
   27171                     #     }
   27172                     #     // ...
   27173                     #
   27174                     #  Example (JavaScript):
   27175                     #
   27176                     #     // ...
   27177                     #
   27178                     #     var protoToCssColor = function(rgb_color) {
   27179                     #        var redFrac = rgb_color.red || 0.0;
   27180                     #        var greenFrac = rgb_color.green || 0.0;
   27181                     #        var blueFrac = rgb_color.blue || 0.0;
   27182                     #        var red = Math.floor(redFrac * 255);
   27183                     #        var green = Math.floor(greenFrac * 255);
   27184                     #        var blue = Math.floor(blueFrac * 255);
   27185                     #
   27186                     #        if (!('alpha' in rgb_color)) {
   27187                     #           return rgbToCssColor_(red, green, blue);
   27188                     #        }
   27189                     #
   27190                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   27191                     #        var rgbParams = [red, green, blue].join(',');
   27192                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   27193                     #     };
   27194                     #
   27195                     #     var rgbToCssColor_ = function(red, green, blue) {
   27196                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   27197                     #       var hexString = rgbNumber.toString(16);
   27198                     #       var missingZeros = 6 - hexString.length;
   27199                     #       var resultBuilder = ['#'];
   27200                     #       for (var i = 0; i < missingZeros; i++) {
   27201                     #          resultBuilder.push('0');
   27202                     #       }
   27203                     #       resultBuilder.push(hexString);
   27204                     #       return resultBuilder.join('');
   27205                     #     };
   27206                     #
   27207                     #     // ...
   27208                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   27209                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   27210                       # the final pixel color is defined by the equation:
   27211                       #
   27212                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   27213                       #
   27214                       # This means that a value of 1.0 corresponds to a solid color, whereas
   27215                       # a value of 0.0 corresponds to a completely transparent color. This
   27216                       # uses a wrapper message rather than a simple float scalar so that it is
   27217                       # possible to distinguish between a default value and the value being unset.
   27218                       # If omitted, this color object is to be rendered as a solid color
   27219                       # (as if the alpha value had been explicitly given with a value of 1.0).
   27220                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   27221                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   27222                 },
   27223                 "type": "A String", # How the value should be interpreted.
   27224                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   27225                     # Unused if type is MIN or
   27226                     # MAX.
   27227               },
   27228               "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
   27229                   # These pin the gradient color scale according to the color,
   27230                   # type and value chosen.
   27231                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   27232                     # for simplicity of conversion to/from color representations in various
   27233                     # languages over compactness; for example, the fields of this representation
   27234                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   27235                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   27236                     # method in iOS; and, with just a little work, it can be easily formatted into
   27237                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   27238                     #
   27239                     # Example (Java):
   27240                     #
   27241                     #      import com.google.type.Color;
   27242                     #
   27243                     #      // ...
   27244                     #      public static java.awt.Color fromProto(Color protocolor) {
   27245                     #        float alpha = protocolor.hasAlpha()
   27246                     #            ? protocolor.getAlpha().getValue()
   27247                     #            : 1.0;
   27248                     #
   27249                     #        return new java.awt.Color(
   27250                     #            protocolor.getRed(),
   27251                     #            protocolor.getGreen(),
   27252                     #            protocolor.getBlue(),
   27253                     #            alpha);
   27254                     #      }
   27255                     #
   27256                     #      public static Color toProto(java.awt.Color color) {
   27257                     #        float red = (float) color.getRed();
   27258                     #        float green = (float) color.getGreen();
   27259                     #        float blue = (float) color.getBlue();
   27260                     #        float denominator = 255.0;
   27261                     #        Color.Builder resultBuilder =
   27262                     #            Color
   27263                     #                .newBuilder()
   27264                     #                .setRed(red / denominator)
   27265                     #                .setGreen(green / denominator)
   27266                     #                .setBlue(blue / denominator);
   27267                     #        int alpha = color.getAlpha();
   27268                     #        if (alpha != 255) {
   27269                     #          result.setAlpha(
   27270                     #              FloatValue
   27271                     #                  .newBuilder()
   27272                     #                  .setValue(((float) alpha) / denominator)
   27273                     #                  .build());
   27274                     #        }
   27275                     #        return resultBuilder.build();
   27276                     #      }
   27277                     #      // ...
   27278                     #
   27279                     # Example (iOS / Obj-C):
   27280                     #
   27281                     #      // ...
   27282                     #      static UIColor* fromProto(Color* protocolor) {
   27283                     #         float red = [protocolor red];
   27284                     #         float green = [protocolor green];
   27285                     #         float blue = [protocolor blue];
   27286                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   27287                     #         float alpha = 1.0;
   27288                     #         if (alpha_wrapper != nil) {
   27289                     #           alpha = [alpha_wrapper value];
   27290                     #         }
   27291                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   27292                     #      }
   27293                     #
   27294                     #      static Color* toProto(UIColor* color) {
   27295                     #          CGFloat red, green, blue, alpha;
   27296                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   27297                     #            return nil;
   27298                     #          }
   27299                     #          Color* result = [Color alloc] init];
   27300                     #          [result setRed:red];
   27301                     #          [result setGreen:green];
   27302                     #          [result setBlue:blue];
   27303                     #          if (alpha <= 0.9999) {
   27304                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   27305                     #          }
   27306                     #          [result autorelease];
   27307                     #          return result;
   27308                     #     }
   27309                     #     // ...
   27310                     #
   27311                     #  Example (JavaScript):
   27312                     #
   27313                     #     // ...
   27314                     #
   27315                     #     var protoToCssColor = function(rgb_color) {
   27316                     #        var redFrac = rgb_color.red || 0.0;
   27317                     #        var greenFrac = rgb_color.green || 0.0;
   27318                     #        var blueFrac = rgb_color.blue || 0.0;
   27319                     #        var red = Math.floor(redFrac * 255);
   27320                     #        var green = Math.floor(greenFrac * 255);
   27321                     #        var blue = Math.floor(blueFrac * 255);
   27322                     #
   27323                     #        if (!('alpha' in rgb_color)) {
   27324                     #           return rgbToCssColor_(red, green, blue);
   27325                     #        }
   27326                     #
   27327                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   27328                     #        var rgbParams = [red, green, blue].join(',');
   27329                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   27330                     #     };
   27331                     #
   27332                     #     var rgbToCssColor_ = function(red, green, blue) {
   27333                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   27334                     #       var hexString = rgbNumber.toString(16);
   27335                     #       var missingZeros = 6 - hexString.length;
   27336                     #       var resultBuilder = ['#'];
   27337                     #       for (var i = 0; i < missingZeros; i++) {
   27338                     #          resultBuilder.push('0');
   27339                     #       }
   27340                     #       resultBuilder.push(hexString);
   27341                     #       return resultBuilder.join('');
   27342                     #     };
   27343                     #
   27344                     #     // ...
   27345                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   27346                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   27347                       # the final pixel color is defined by the equation:
   27348                       #
   27349                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   27350                       #
   27351                       # This means that a value of 1.0 corresponds to a solid color, whereas
   27352                       # a value of 0.0 corresponds to a completely transparent color. This
   27353                       # uses a wrapper message rather than a simple float scalar so that it is
   27354                       # possible to distinguish between a default value and the value being unset.
   27355                       # If omitted, this color object is to be rendered as a solid color
   27356                       # (as if the alpha value had been explicitly given with a value of 1.0).
   27357                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   27358                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   27359                 },
   27360                 "type": "A String", # How the value should be interpreted.
   27361                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   27362                     # Unused if type is MIN or
   27363                     # MAX.
   27364               },
   27365               "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
   27366                   # These pin the gradient color scale according to the color,
   27367                   # type and value chosen.
   27368                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   27369                     # for simplicity of conversion to/from color representations in various
   27370                     # languages over compactness; for example, the fields of this representation
   27371                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   27372                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   27373                     # method in iOS; and, with just a little work, it can be easily formatted into
   27374                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   27375                     #
   27376                     # Example (Java):
   27377                     #
   27378                     #      import com.google.type.Color;
   27379                     #
   27380                     #      // ...
   27381                     #      public static java.awt.Color fromProto(Color protocolor) {
   27382                     #        float alpha = protocolor.hasAlpha()
   27383                     #            ? protocolor.getAlpha().getValue()
   27384                     #            : 1.0;
   27385                     #
   27386                     #        return new java.awt.Color(
   27387                     #            protocolor.getRed(),
   27388                     #            protocolor.getGreen(),
   27389                     #            protocolor.getBlue(),
   27390                     #            alpha);
   27391                     #      }
   27392                     #
   27393                     #      public static Color toProto(java.awt.Color color) {
   27394                     #        float red = (float) color.getRed();
   27395                     #        float green = (float) color.getGreen();
   27396                     #        float blue = (float) color.getBlue();
   27397                     #        float denominator = 255.0;
   27398                     #        Color.Builder resultBuilder =
   27399                     #            Color
   27400                     #                .newBuilder()
   27401                     #                .setRed(red / denominator)
   27402                     #                .setGreen(green / denominator)
   27403                     #                .setBlue(blue / denominator);
   27404                     #        int alpha = color.getAlpha();
   27405                     #        if (alpha != 255) {
   27406                     #          result.setAlpha(
   27407                     #              FloatValue
   27408                     #                  .newBuilder()
   27409                     #                  .setValue(((float) alpha) / denominator)
   27410                     #                  .build());
   27411                     #        }
   27412                     #        return resultBuilder.build();
   27413                     #      }
   27414                     #      // ...
   27415                     #
   27416                     # Example (iOS / Obj-C):
   27417                     #
   27418                     #      // ...
   27419                     #      static UIColor* fromProto(Color* protocolor) {
   27420                     #         float red = [protocolor red];
   27421                     #         float green = [protocolor green];
   27422                     #         float blue = [protocolor blue];
   27423                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   27424                     #         float alpha = 1.0;
   27425                     #         if (alpha_wrapper != nil) {
   27426                     #           alpha = [alpha_wrapper value];
   27427                     #         }
   27428                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   27429                     #      }
   27430                     #
   27431                     #      static Color* toProto(UIColor* color) {
   27432                     #          CGFloat red, green, blue, alpha;
   27433                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   27434                     #            return nil;
   27435                     #          }
   27436                     #          Color* result = [Color alloc] init];
   27437                     #          [result setRed:red];
   27438                     #          [result setGreen:green];
   27439                     #          [result setBlue:blue];
   27440                     #          if (alpha <= 0.9999) {
   27441                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   27442                     #          }
   27443                     #          [result autorelease];
   27444                     #          return result;
   27445                     #     }
   27446                     #     // ...
   27447                     #
   27448                     #  Example (JavaScript):
   27449                     #
   27450                     #     // ...
   27451                     #
   27452                     #     var protoToCssColor = function(rgb_color) {
   27453                     #        var redFrac = rgb_color.red || 0.0;
   27454                     #        var greenFrac = rgb_color.green || 0.0;
   27455                     #        var blueFrac = rgb_color.blue || 0.0;
   27456                     #        var red = Math.floor(redFrac * 255);
   27457                     #        var green = Math.floor(greenFrac * 255);
   27458                     #        var blue = Math.floor(blueFrac * 255);
   27459                     #
   27460                     #        if (!('alpha' in rgb_color)) {
   27461                     #           return rgbToCssColor_(red, green, blue);
   27462                     #        }
   27463                     #
   27464                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   27465                     #        var rgbParams = [red, green, blue].join(',');
   27466                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   27467                     #     };
   27468                     #
   27469                     #     var rgbToCssColor_ = function(red, green, blue) {
   27470                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   27471                     #       var hexString = rgbNumber.toString(16);
   27472                     #       var missingZeros = 6 - hexString.length;
   27473                     #       var resultBuilder = ['#'];
   27474                     #       for (var i = 0; i < missingZeros; i++) {
   27475                     #          resultBuilder.push('0');
   27476                     #       }
   27477                     #       resultBuilder.push(hexString);
   27478                     #       return resultBuilder.join('');
   27479                     #     };
   27480                     #
   27481                     #     // ...
   27482                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   27483                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   27484                       # the final pixel color is defined by the equation:
   27485                       #
   27486                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   27487                       #
   27488                       # This means that a value of 1.0 corresponds to a solid color, whereas
   27489                       # a value of 0.0 corresponds to a completely transparent color. This
   27490                       # uses a wrapper message rather than a simple float scalar so that it is
   27491                       # possible to distinguish between a default value and the value being unset.
   27492                       # If omitted, this color object is to be rendered as a solid color
   27493                       # (as if the alpha value had been explicitly given with a value of 1.0).
   27494                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   27495                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   27496                 },
   27497                 "type": "A String", # How the value should be interpreted.
   27498                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   27499                     # Unused if type is MIN or
   27500                     # MAX.
   27501               },
   27502             },
   27503           },
   27504         },
   27505         "addBanding": { # The result of adding a banded range. # A reply from adding a banded range.
   27506           "bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range that was added.
   27507             "range": { # A range on a sheet. # The range over which these properties are applied.
   27508                 # All indexes are zero-based.
   27509                 # Indexes are half open, e.g the start index is inclusive
   27510                 # and the end index is exclusive -- [start_index, end_index).
   27511                 # Missing indexes indicate the range is unbounded on that side.
   27512                 #
   27513                 # For example, if `"Sheet1"` is sheet ID 0, then:
   27514                 #
   27515                 #   `Sheet1!A1:A1 == sheet_id: 0,
   27516                 #                   start_row_index: 0, end_row_index: 1,
   27517                 #                   start_column_index: 0, end_column_index: 1`
   27518                 #
   27519                 #   `Sheet1!A3:B4 == sheet_id: 0,
   27520                 #                   start_row_index: 2, end_row_index: 4,
   27521                 #                   start_column_index: 0, end_column_index: 2`
   27522                 #
   27523                 #   `Sheet1!A:B == sheet_id: 0,
   27524                 #                 start_column_index: 0, end_column_index: 2`
   27525                 #
   27526                 #   `Sheet1!A5:B == sheet_id: 0,
   27527                 #                  start_row_index: 4,
   27528                 #                  start_column_index: 0, end_column_index: 2`
   27529                 #
   27530                 #   `Sheet1 == sheet_id:0`
   27531                 #
   27532                 # The start index must always be less than or equal to the end index.
   27533                 # If the start index equals the end index, then the range is empty.
   27534                 # Empty ranges are typically not meaningful and are usually rendered in the
   27535                 # UI as `#REF!`.
   27536               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   27537               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   27538               "sheetId": 42, # The sheet this range is on.
   27539               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   27540               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   27541             },
   27542             "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
   27543                 # by-column basis throughout all the columns in the range. At least one of
   27544                 # row_properties or column_properties must be specified.
   27545                 # BandedRange.row_properties and BandedRange.column_properties are
   27546                 # set, the fill colors are applied to cells according to the following rules:
   27547                 #
   27548                 # * header_color and footer_color take priority over band colors.
   27549                 # * first_band_color takes priority over second_band_color.
   27550                 # * row_properties takes priority over column_properties.
   27551                 #
   27552                 # For example, the first row color takes priority over the first column
   27553                 # color, but the first column color takes priority over the second row color.
   27554                 # Similarly, the row header takes priority over the column header in the
   27555                 # top left cell, but the column header takes priority over the first row
   27556                 # color if the row header is not set.
   27557               "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   27558                   # for simplicity of conversion to/from color representations in various
   27559                   # languages over compactness; for example, the fields of this representation
   27560                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   27561                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   27562                   # method in iOS; and, with just a little work, it can be easily formatted into
   27563                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   27564                   #
   27565                   # Example (Java):
   27566                   #
   27567                   #      import com.google.type.Color;
   27568                   #
   27569                   #      // ...
   27570                   #      public static java.awt.Color fromProto(Color protocolor) {
   27571                   #        float alpha = protocolor.hasAlpha()
   27572                   #            ? protocolor.getAlpha().getValue()
   27573                   #            : 1.0;
   27574                   #
   27575                   #        return new java.awt.Color(
   27576                   #            protocolor.getRed(),
   27577                   #            protocolor.getGreen(),
   27578                   #            protocolor.getBlue(),
   27579                   #            alpha);
   27580                   #      }
   27581                   #
   27582                   #      public static Color toProto(java.awt.Color color) {
   27583                   #        float red = (float) color.getRed();
   27584                   #        float green = (float) color.getGreen();
   27585                   #        float blue = (float) color.getBlue();
   27586                   #        float denominator = 255.0;
   27587                   #        Color.Builder resultBuilder =
   27588                   #            Color
   27589                   #                .newBuilder()
   27590                   #                .setRed(red / denominator)
   27591                   #                .setGreen(green / denominator)
   27592                   #                .setBlue(blue / denominator);
   27593                   #        int alpha = color.getAlpha();
   27594                   #        if (alpha != 255) {
   27595                   #          result.setAlpha(
   27596                   #              FloatValue
   27597                   #                  .newBuilder()
   27598                   #                  .setValue(((float) alpha) / denominator)
   27599                   #                  .build());
   27600                   #        }
   27601                   #        return resultBuilder.build();
   27602                   #      }
   27603                   #      // ...
   27604                   #
   27605                   # Example (iOS / Obj-C):
   27606                   #
   27607                   #      // ...
   27608                   #      static UIColor* fromProto(Color* protocolor) {
   27609                   #         float red = [protocolor red];
   27610                   #         float green = [protocolor green];
   27611                   #         float blue = [protocolor blue];
   27612                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   27613                   #         float alpha = 1.0;
   27614                   #         if (alpha_wrapper != nil) {
   27615                   #           alpha = [alpha_wrapper value];
   27616                   #         }
   27617                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   27618                   #      }
   27619                   #
   27620                   #      static Color* toProto(UIColor* color) {
   27621                   #          CGFloat red, green, blue, alpha;
   27622                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   27623                   #            return nil;
   27624                   #          }
   27625                   #          Color* result = [Color alloc] init];
   27626                   #          [result setRed:red];
   27627                   #          [result setGreen:green];
   27628                   #          [result setBlue:blue];
   27629                   #          if (alpha <= 0.9999) {
   27630                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   27631                   #          }
   27632                   #          [result autorelease];
   27633                   #          return result;
   27634                   #     }
   27635                   #     // ...
   27636                   #
   27637                   #  Example (JavaScript):
   27638                   #
   27639                   #     // ...
   27640                   #
   27641                   #     var protoToCssColor = function(rgb_color) {
   27642                   #        var redFrac = rgb_color.red || 0.0;
   27643                   #        var greenFrac = rgb_color.green || 0.0;
   27644                   #        var blueFrac = rgb_color.blue || 0.0;
   27645                   #        var red = Math.floor(redFrac * 255);
   27646                   #        var green = Math.floor(greenFrac * 255);
   27647                   #        var blue = Math.floor(blueFrac * 255);
   27648                   #
   27649                   #        if (!('alpha' in rgb_color)) {
   27650                   #           return rgbToCssColor_(red, green, blue);
   27651                   #        }
   27652                   #
   27653                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   27654                   #        var rgbParams = [red, green, blue].join(',');
   27655                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   27656                   #     };
   27657                   #
   27658                   #     var rgbToCssColor_ = function(red, green, blue) {
   27659                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   27660                   #       var hexString = rgbNumber.toString(16);
   27661                   #       var missingZeros = 6 - hexString.length;
   27662                   #       var resultBuilder = ['#'];
   27663                   #       for (var i = 0; i < missingZeros; i++) {
   27664                   #          resultBuilder.push('0');
   27665                   #       }
   27666                   #       resultBuilder.push(hexString);
   27667                   #       return resultBuilder.join('');
   27668                   #     };
   27669                   #
   27670                   #     // ...
   27671                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   27672                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   27673                     # the final pixel color is defined by the equation:
   27674                     #
   27675                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   27676                     #
   27677                     # This means that a value of 1.0 corresponds to a solid color, whereas
   27678                     # a value of 0.0 corresponds to a completely transparent color. This
   27679                     # uses a wrapper message rather than a simple float scalar so that it is
   27680                     # possible to distinguish between a default value and the value being unset.
   27681                     # If omitted, this color object is to be rendered as a solid color
   27682                     # (as if the alpha value had been explicitly given with a value of 1.0).
   27683                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   27684                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   27685               },
   27686               "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   27687                   # row or column will be filled with this color and the colors will
   27688                   # alternate between first_band_color and second_band_color starting
   27689                   # from the second row or column. Otherwise, the first row or column will be
   27690                   # filled with first_band_color and the colors will proceed to alternate
   27691                   # as they normally would.
   27692                   # for simplicity of conversion to/from color representations in various
   27693                   # languages over compactness; for example, the fields of this representation
   27694                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   27695                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   27696                   # method in iOS; and, with just a little work, it can be easily formatted into
   27697                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   27698                   #
   27699                   # Example (Java):
   27700                   #
   27701                   #      import com.google.type.Color;
   27702                   #
   27703                   #      // ...
   27704                   #      public static java.awt.Color fromProto(Color protocolor) {
   27705                   #        float alpha = protocolor.hasAlpha()
   27706                   #            ? protocolor.getAlpha().getValue()
   27707                   #            : 1.0;
   27708                   #
   27709                   #        return new java.awt.Color(
   27710                   #            protocolor.getRed(),
   27711                   #            protocolor.getGreen(),
   27712                   #            protocolor.getBlue(),
   27713                   #            alpha);
   27714                   #      }
   27715                   #
   27716                   #      public static Color toProto(java.awt.Color color) {
   27717                   #        float red = (float) color.getRed();
   27718                   #        float green = (float) color.getGreen();
   27719                   #        float blue = (float) color.getBlue();
   27720                   #        float denominator = 255.0;
   27721                   #        Color.Builder resultBuilder =
   27722                   #            Color
   27723                   #                .newBuilder()
   27724                   #                .setRed(red / denominator)
   27725                   #                .setGreen(green / denominator)
   27726                   #                .setBlue(blue / denominator);
   27727                   #        int alpha = color.getAlpha();
   27728                   #        if (alpha != 255) {
   27729                   #          result.setAlpha(
   27730                   #              FloatValue
   27731                   #                  .newBuilder()
   27732                   #                  .setValue(((float) alpha) / denominator)
   27733                   #                  .build());
   27734                   #        }
   27735                   #        return resultBuilder.build();
   27736                   #      }
   27737                   #      // ...
   27738                   #
   27739                   # Example (iOS / Obj-C):
   27740                   #
   27741                   #      // ...
   27742                   #      static UIColor* fromProto(Color* protocolor) {
   27743                   #         float red = [protocolor red];
   27744                   #         float green = [protocolor green];
   27745                   #         float blue = [protocolor blue];
   27746                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   27747                   #         float alpha = 1.0;
   27748                   #         if (alpha_wrapper != nil) {
   27749                   #           alpha = [alpha_wrapper value];
   27750                   #         }
   27751                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   27752                   #      }
   27753                   #
   27754                   #      static Color* toProto(UIColor* color) {
   27755                   #          CGFloat red, green, blue, alpha;
   27756                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   27757                   #            return nil;
   27758                   #          }
   27759                   #          Color* result = [Color alloc] init];
   27760                   #          [result setRed:red];
   27761                   #          [result setGreen:green];
   27762                   #          [result setBlue:blue];
   27763                   #          if (alpha <= 0.9999) {
   27764                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   27765                   #          }
   27766                   #          [result autorelease];
   27767                   #          return result;
   27768                   #     }
   27769                   #     // ...
   27770                   #
   27771                   #  Example (JavaScript):
   27772                   #
   27773                   #     // ...
   27774                   #
   27775                   #     var protoToCssColor = function(rgb_color) {
   27776                   #        var redFrac = rgb_color.red || 0.0;
   27777                   #        var greenFrac = rgb_color.green || 0.0;
   27778                   #        var blueFrac = rgb_color.blue || 0.0;
   27779                   #        var red = Math.floor(redFrac * 255);
   27780                   #        var green = Math.floor(greenFrac * 255);
   27781                   #        var blue = Math.floor(blueFrac * 255);
   27782                   #
   27783                   #        if (!('alpha' in rgb_color)) {
   27784                   #           return rgbToCssColor_(red, green, blue);
   27785                   #        }
   27786                   #
   27787                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   27788                   #        var rgbParams = [red, green, blue].join(',');
   27789                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   27790                   #     };
   27791                   #
   27792                   #     var rgbToCssColor_ = function(red, green, blue) {
   27793                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   27794                   #       var hexString = rgbNumber.toString(16);
   27795                   #       var missingZeros = 6 - hexString.length;
   27796                   #       var resultBuilder = ['#'];
   27797                   #       for (var i = 0; i < missingZeros; i++) {
   27798                   #          resultBuilder.push('0');
   27799                   #       }
   27800                   #       resultBuilder.push(hexString);
   27801                   #       return resultBuilder.join('');
   27802                   #     };
   27803                   #
   27804                   #     // ...
   27805                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   27806                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   27807                     # the final pixel color is defined by the equation:
   27808                     #
   27809                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   27810                     #
   27811                     # This means that a value of 1.0 corresponds to a solid color, whereas
   27812                     # a value of 0.0 corresponds to a completely transparent color. This
   27813                     # uses a wrapper message rather than a simple float scalar so that it is
   27814                     # possible to distinguish between a default value and the value being unset.
   27815                     # If omitted, this color object is to be rendered as a solid color
   27816                     # (as if the alpha value had been explicitly given with a value of 1.0).
   27817                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   27818                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   27819               },
   27820               "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   27821                   # row or column will be filled with either first_band_color or
   27822                   # second_band_color, depending on the color of the previous row or
   27823                   # column.
   27824                   # for simplicity of conversion to/from color representations in various
   27825                   # languages over compactness; for example, the fields of this representation
   27826                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   27827                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   27828                   # method in iOS; and, with just a little work, it can be easily formatted into
   27829                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   27830                   #
   27831                   # Example (Java):
   27832                   #
   27833                   #      import com.google.type.Color;
   27834                   #
   27835                   #      // ...
   27836                   #      public static java.awt.Color fromProto(Color protocolor) {
   27837                   #        float alpha = protocolor.hasAlpha()
   27838                   #            ? protocolor.getAlpha().getValue()
   27839                   #            : 1.0;
   27840                   #
   27841                   #        return new java.awt.Color(
   27842                   #            protocolor.getRed(),
   27843                   #            protocolor.getGreen(),
   27844                   #            protocolor.getBlue(),
   27845                   #            alpha);
   27846                   #      }
   27847                   #
   27848                   #      public static Color toProto(java.awt.Color color) {
   27849                   #        float red = (float) color.getRed();
   27850                   #        float green = (float) color.getGreen();
   27851                   #        float blue = (float) color.getBlue();
   27852                   #        float denominator = 255.0;
   27853                   #        Color.Builder resultBuilder =
   27854                   #            Color
   27855                   #                .newBuilder()
   27856                   #                .setRed(red / denominator)
   27857                   #                .setGreen(green / denominator)
   27858                   #                .setBlue(blue / denominator);
   27859                   #        int alpha = color.getAlpha();
   27860                   #        if (alpha != 255) {
   27861                   #          result.setAlpha(
   27862                   #              FloatValue
   27863                   #                  .newBuilder()
   27864                   #                  .setValue(((float) alpha) / denominator)
   27865                   #                  .build());
   27866                   #        }
   27867                   #        return resultBuilder.build();
   27868                   #      }
   27869                   #      // ...
   27870                   #
   27871                   # Example (iOS / Obj-C):
   27872                   #
   27873                   #      // ...
   27874                   #      static UIColor* fromProto(Color* protocolor) {
   27875                   #         float red = [protocolor red];
   27876                   #         float green = [protocolor green];
   27877                   #         float blue = [protocolor blue];
   27878                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   27879                   #         float alpha = 1.0;
   27880                   #         if (alpha_wrapper != nil) {
   27881                   #           alpha = [alpha_wrapper value];
   27882                   #         }
   27883                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   27884                   #      }
   27885                   #
   27886                   #      static Color* toProto(UIColor* color) {
   27887                   #          CGFloat red, green, blue, alpha;
   27888                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   27889                   #            return nil;
   27890                   #          }
   27891                   #          Color* result = [Color alloc] init];
   27892                   #          [result setRed:red];
   27893                   #          [result setGreen:green];
   27894                   #          [result setBlue:blue];
   27895                   #          if (alpha <= 0.9999) {
   27896                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   27897                   #          }
   27898                   #          [result autorelease];
   27899                   #          return result;
   27900                   #     }
   27901                   #     // ...
   27902                   #
   27903                   #  Example (JavaScript):
   27904                   #
   27905                   #     // ...
   27906                   #
   27907                   #     var protoToCssColor = function(rgb_color) {
   27908                   #        var redFrac = rgb_color.red || 0.0;
   27909                   #        var greenFrac = rgb_color.green || 0.0;
   27910                   #        var blueFrac = rgb_color.blue || 0.0;
   27911                   #        var red = Math.floor(redFrac * 255);
   27912                   #        var green = Math.floor(greenFrac * 255);
   27913                   #        var blue = Math.floor(blueFrac * 255);
   27914                   #
   27915                   #        if (!('alpha' in rgb_color)) {
   27916                   #           return rgbToCssColor_(red, green, blue);
   27917                   #        }
   27918                   #
   27919                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   27920                   #        var rgbParams = [red, green, blue].join(',');
   27921                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   27922                   #     };
   27923                   #
   27924                   #     var rgbToCssColor_ = function(red, green, blue) {
   27925                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   27926                   #       var hexString = rgbNumber.toString(16);
   27927                   #       var missingZeros = 6 - hexString.length;
   27928                   #       var resultBuilder = ['#'];
   27929                   #       for (var i = 0; i < missingZeros; i++) {
   27930                   #          resultBuilder.push('0');
   27931                   #       }
   27932                   #       resultBuilder.push(hexString);
   27933                   #       return resultBuilder.join('');
   27934                   #     };
   27935                   #
   27936                   #     // ...
   27937                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   27938                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   27939                     # the final pixel color is defined by the equation:
   27940                     #
   27941                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   27942                     #
   27943                     # This means that a value of 1.0 corresponds to a solid color, whereas
   27944                     # a value of 0.0 corresponds to a completely transparent color. This
   27945                     # uses a wrapper message rather than a simple float scalar so that it is
   27946                     # possible to distinguish between a default value and the value being unset.
   27947                     # If omitted, this color object is to be rendered as a solid color
   27948                     # (as if the alpha value had been explicitly given with a value of 1.0).
   27949                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   27950                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   27951               },
   27952               "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   27953                   # for simplicity of conversion to/from color representations in various
   27954                   # languages over compactness; for example, the fields of this representation
   27955                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   27956                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   27957                   # method in iOS; and, with just a little work, it can be easily formatted into
   27958                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   27959                   #
   27960                   # Example (Java):
   27961                   #
   27962                   #      import com.google.type.Color;
   27963                   #
   27964                   #      // ...
   27965                   #      public static java.awt.Color fromProto(Color protocolor) {
   27966                   #        float alpha = protocolor.hasAlpha()
   27967                   #            ? protocolor.getAlpha().getValue()
   27968                   #            : 1.0;
   27969                   #
   27970                   #        return new java.awt.Color(
   27971                   #            protocolor.getRed(),
   27972                   #            protocolor.getGreen(),
   27973                   #            protocolor.getBlue(),
   27974                   #            alpha);
   27975                   #      }
   27976                   #
   27977                   #      public static Color toProto(java.awt.Color color) {
   27978                   #        float red = (float) color.getRed();
   27979                   #        float green = (float) color.getGreen();
   27980                   #        float blue = (float) color.getBlue();
   27981                   #        float denominator = 255.0;
   27982                   #        Color.Builder resultBuilder =
   27983                   #            Color
   27984                   #                .newBuilder()
   27985                   #                .setRed(red / denominator)
   27986                   #                .setGreen(green / denominator)
   27987                   #                .setBlue(blue / denominator);
   27988                   #        int alpha = color.getAlpha();
   27989                   #        if (alpha != 255) {
   27990                   #          result.setAlpha(
   27991                   #              FloatValue
   27992                   #                  .newBuilder()
   27993                   #                  .setValue(((float) alpha) / denominator)
   27994                   #                  .build());
   27995                   #        }
   27996                   #        return resultBuilder.build();
   27997                   #      }
   27998                   #      // ...
   27999                   #
   28000                   # Example (iOS / Obj-C):
   28001                   #
   28002                   #      // ...
   28003                   #      static UIColor* fromProto(Color* protocolor) {
   28004                   #         float red = [protocolor red];
   28005                   #         float green = [protocolor green];
   28006                   #         float blue = [protocolor blue];
   28007                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   28008                   #         float alpha = 1.0;
   28009                   #         if (alpha_wrapper != nil) {
   28010                   #           alpha = [alpha_wrapper value];
   28011                   #         }
   28012                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   28013                   #      }
   28014                   #
   28015                   #      static Color* toProto(UIColor* color) {
   28016                   #          CGFloat red, green, blue, alpha;
   28017                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   28018                   #            return nil;
   28019                   #          }
   28020                   #          Color* result = [Color alloc] init];
   28021                   #          [result setRed:red];
   28022                   #          [result setGreen:green];
   28023                   #          [result setBlue:blue];
   28024                   #          if (alpha <= 0.9999) {
   28025                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   28026                   #          }
   28027                   #          [result autorelease];
   28028                   #          return result;
   28029                   #     }
   28030                   #     // ...
   28031                   #
   28032                   #  Example (JavaScript):
   28033                   #
   28034                   #     // ...
   28035                   #
   28036                   #     var protoToCssColor = function(rgb_color) {
   28037                   #        var redFrac = rgb_color.red || 0.0;
   28038                   #        var greenFrac = rgb_color.green || 0.0;
   28039                   #        var blueFrac = rgb_color.blue || 0.0;
   28040                   #        var red = Math.floor(redFrac * 255);
   28041                   #        var green = Math.floor(greenFrac * 255);
   28042                   #        var blue = Math.floor(blueFrac * 255);
   28043                   #
   28044                   #        if (!('alpha' in rgb_color)) {
   28045                   #           return rgbToCssColor_(red, green, blue);
   28046                   #        }
   28047                   #
   28048                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   28049                   #        var rgbParams = [red, green, blue].join(',');
   28050                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   28051                   #     };
   28052                   #
   28053                   #     var rgbToCssColor_ = function(red, green, blue) {
   28054                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   28055                   #       var hexString = rgbNumber.toString(16);
   28056                   #       var missingZeros = 6 - hexString.length;
   28057                   #       var resultBuilder = ['#'];
   28058                   #       for (var i = 0; i < missingZeros; i++) {
   28059                   #          resultBuilder.push('0');
   28060                   #       }
   28061                   #       resultBuilder.push(hexString);
   28062                   #       return resultBuilder.join('');
   28063                   #     };
   28064                   #
   28065                   #     // ...
   28066                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   28067                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   28068                     # the final pixel color is defined by the equation:
   28069                     #
   28070                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   28071                     #
   28072                     # This means that a value of 1.0 corresponds to a solid color, whereas
   28073                     # a value of 0.0 corresponds to a completely transparent color. This
   28074                     # uses a wrapper message rather than a simple float scalar so that it is
   28075                     # possible to distinguish between a default value and the value being unset.
   28076                     # If omitted, this color object is to be rendered as a solid color
   28077                     # (as if the alpha value had been explicitly given with a value of 1.0).
   28078                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   28079                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   28080               },
   28081             },
   28082             "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
   28083                 # basis throughout all the rows in the range. At least one of
   28084                 # row_properties or column_properties must be specified.
   28085                 # BandedRange.row_properties and BandedRange.column_properties are
   28086                 # set, the fill colors are applied to cells according to the following rules:
   28087                 #
   28088                 # * header_color and footer_color take priority over band colors.
   28089                 # * first_band_color takes priority over second_band_color.
   28090                 # * row_properties takes priority over column_properties.
   28091                 #
   28092                 # For example, the first row color takes priority over the first column
   28093                 # color, but the first column color takes priority over the second row color.
   28094                 # Similarly, the row header takes priority over the column header in the
   28095                 # top left cell, but the column header takes priority over the first row
   28096                 # color if the row header is not set.
   28097               "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   28098                   # for simplicity of conversion to/from color representations in various
   28099                   # languages over compactness; for example, the fields of this representation
   28100                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   28101                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   28102                   # method in iOS; and, with just a little work, it can be easily formatted into
   28103                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   28104                   #
   28105                   # Example (Java):
   28106                   #
   28107                   #      import com.google.type.Color;
   28108                   #
   28109                   #      // ...
   28110                   #      public static java.awt.Color fromProto(Color protocolor) {
   28111                   #        float alpha = protocolor.hasAlpha()
   28112                   #            ? protocolor.getAlpha().getValue()
   28113                   #            : 1.0;
   28114                   #
   28115                   #        return new java.awt.Color(
   28116                   #            protocolor.getRed(),
   28117                   #            protocolor.getGreen(),
   28118                   #            protocolor.getBlue(),
   28119                   #            alpha);
   28120                   #      }
   28121                   #
   28122                   #      public static Color toProto(java.awt.Color color) {
   28123                   #        float red = (float) color.getRed();
   28124                   #        float green = (float) color.getGreen();
   28125                   #        float blue = (float) color.getBlue();
   28126                   #        float denominator = 255.0;
   28127                   #        Color.Builder resultBuilder =
   28128                   #            Color
   28129                   #                .newBuilder()
   28130                   #                .setRed(red / denominator)
   28131                   #                .setGreen(green / denominator)
   28132                   #                .setBlue(blue / denominator);
   28133                   #        int alpha = color.getAlpha();
   28134                   #        if (alpha != 255) {
   28135                   #          result.setAlpha(
   28136                   #              FloatValue
   28137                   #                  .newBuilder()
   28138                   #                  .setValue(((float) alpha) / denominator)
   28139                   #                  .build());
   28140                   #        }
   28141                   #        return resultBuilder.build();
   28142                   #      }
   28143                   #      // ...
   28144                   #
   28145                   # Example (iOS / Obj-C):
   28146                   #
   28147                   #      // ...
   28148                   #      static UIColor* fromProto(Color* protocolor) {
   28149                   #         float red = [protocolor red];
   28150                   #         float green = [protocolor green];
   28151                   #         float blue = [protocolor blue];
   28152                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   28153                   #         float alpha = 1.0;
   28154                   #         if (alpha_wrapper != nil) {
   28155                   #           alpha = [alpha_wrapper value];
   28156                   #         }
   28157                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   28158                   #      }
   28159                   #
   28160                   #      static Color* toProto(UIColor* color) {
   28161                   #          CGFloat red, green, blue, alpha;
   28162                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   28163                   #            return nil;
   28164                   #          }
   28165                   #          Color* result = [Color alloc] init];
   28166                   #          [result setRed:red];
   28167                   #          [result setGreen:green];
   28168                   #          [result setBlue:blue];
   28169                   #          if (alpha <= 0.9999) {
   28170                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   28171                   #          }
   28172                   #          [result autorelease];
   28173                   #          return result;
   28174                   #     }
   28175                   #     // ...
   28176                   #
   28177                   #  Example (JavaScript):
   28178                   #
   28179                   #     // ...
   28180                   #
   28181                   #     var protoToCssColor = function(rgb_color) {
   28182                   #        var redFrac = rgb_color.red || 0.0;
   28183                   #        var greenFrac = rgb_color.green || 0.0;
   28184                   #        var blueFrac = rgb_color.blue || 0.0;
   28185                   #        var red = Math.floor(redFrac * 255);
   28186                   #        var green = Math.floor(greenFrac * 255);
   28187                   #        var blue = Math.floor(blueFrac * 255);
   28188                   #
   28189                   #        if (!('alpha' in rgb_color)) {
   28190                   #           return rgbToCssColor_(red, green, blue);
   28191                   #        }
   28192                   #
   28193                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   28194                   #        var rgbParams = [red, green, blue].join(',');
   28195                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   28196                   #     };
   28197                   #
   28198                   #     var rgbToCssColor_ = function(red, green, blue) {
   28199                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   28200                   #       var hexString = rgbNumber.toString(16);
   28201                   #       var missingZeros = 6 - hexString.length;
   28202                   #       var resultBuilder = ['#'];
   28203                   #       for (var i = 0; i < missingZeros; i++) {
   28204                   #          resultBuilder.push('0');
   28205                   #       }
   28206                   #       resultBuilder.push(hexString);
   28207                   #       return resultBuilder.join('');
   28208                   #     };
   28209                   #
   28210                   #     // ...
   28211                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   28212                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   28213                     # the final pixel color is defined by the equation:
   28214                     #
   28215                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   28216                     #
   28217                     # This means that a value of 1.0 corresponds to a solid color, whereas
   28218                     # a value of 0.0 corresponds to a completely transparent color. This
   28219                     # uses a wrapper message rather than a simple float scalar so that it is
   28220                     # possible to distinguish between a default value and the value being unset.
   28221                     # If omitted, this color object is to be rendered as a solid color
   28222                     # (as if the alpha value had been explicitly given with a value of 1.0).
   28223                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   28224                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   28225               },
   28226               "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   28227                   # row or column will be filled with this color and the colors will
   28228                   # alternate between first_band_color and second_band_color starting
   28229                   # from the second row or column. Otherwise, the first row or column will be
   28230                   # filled with first_band_color and the colors will proceed to alternate
   28231                   # as they normally would.
   28232                   # for simplicity of conversion to/from color representations in various
   28233                   # languages over compactness; for example, the fields of this representation
   28234                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   28235                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   28236                   # method in iOS; and, with just a little work, it can be easily formatted into
   28237                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   28238                   #
   28239                   # Example (Java):
   28240                   #
   28241                   #      import com.google.type.Color;
   28242                   #
   28243                   #      // ...
   28244                   #      public static java.awt.Color fromProto(Color protocolor) {
   28245                   #        float alpha = protocolor.hasAlpha()
   28246                   #            ? protocolor.getAlpha().getValue()
   28247                   #            : 1.0;
   28248                   #
   28249                   #        return new java.awt.Color(
   28250                   #            protocolor.getRed(),
   28251                   #            protocolor.getGreen(),
   28252                   #            protocolor.getBlue(),
   28253                   #            alpha);
   28254                   #      }
   28255                   #
   28256                   #      public static Color toProto(java.awt.Color color) {
   28257                   #        float red = (float) color.getRed();
   28258                   #        float green = (float) color.getGreen();
   28259                   #        float blue = (float) color.getBlue();
   28260                   #        float denominator = 255.0;
   28261                   #        Color.Builder resultBuilder =
   28262                   #            Color
   28263                   #                .newBuilder()
   28264                   #                .setRed(red / denominator)
   28265                   #                .setGreen(green / denominator)
   28266                   #                .setBlue(blue / denominator);
   28267                   #        int alpha = color.getAlpha();
   28268                   #        if (alpha != 255) {
   28269                   #          result.setAlpha(
   28270                   #              FloatValue
   28271                   #                  .newBuilder()
   28272                   #                  .setValue(((float) alpha) / denominator)
   28273                   #                  .build());
   28274                   #        }
   28275                   #        return resultBuilder.build();
   28276                   #      }
   28277                   #      // ...
   28278                   #
   28279                   # Example (iOS / Obj-C):
   28280                   #
   28281                   #      // ...
   28282                   #      static UIColor* fromProto(Color* protocolor) {
   28283                   #         float red = [protocolor red];
   28284                   #         float green = [protocolor green];
   28285                   #         float blue = [protocolor blue];
   28286                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   28287                   #         float alpha = 1.0;
   28288                   #         if (alpha_wrapper != nil) {
   28289                   #           alpha = [alpha_wrapper value];
   28290                   #         }
   28291                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   28292                   #      }
   28293                   #
   28294                   #      static Color* toProto(UIColor* color) {
   28295                   #          CGFloat red, green, blue, alpha;
   28296                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   28297                   #            return nil;
   28298                   #          }
   28299                   #          Color* result = [Color alloc] init];
   28300                   #          [result setRed:red];
   28301                   #          [result setGreen:green];
   28302                   #          [result setBlue:blue];
   28303                   #          if (alpha <= 0.9999) {
   28304                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   28305                   #          }
   28306                   #          [result autorelease];
   28307                   #          return result;
   28308                   #     }
   28309                   #     // ...
   28310                   #
   28311                   #  Example (JavaScript):
   28312                   #
   28313                   #     // ...
   28314                   #
   28315                   #     var protoToCssColor = function(rgb_color) {
   28316                   #        var redFrac = rgb_color.red || 0.0;
   28317                   #        var greenFrac = rgb_color.green || 0.0;
   28318                   #        var blueFrac = rgb_color.blue || 0.0;
   28319                   #        var red = Math.floor(redFrac * 255);
   28320                   #        var green = Math.floor(greenFrac * 255);
   28321                   #        var blue = Math.floor(blueFrac * 255);
   28322                   #
   28323                   #        if (!('alpha' in rgb_color)) {
   28324                   #           return rgbToCssColor_(red, green, blue);
   28325                   #        }
   28326                   #
   28327                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   28328                   #        var rgbParams = [red, green, blue].join(',');
   28329                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   28330                   #     };
   28331                   #
   28332                   #     var rgbToCssColor_ = function(red, green, blue) {
   28333                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   28334                   #       var hexString = rgbNumber.toString(16);
   28335                   #       var missingZeros = 6 - hexString.length;
   28336                   #       var resultBuilder = ['#'];
   28337                   #       for (var i = 0; i < missingZeros; i++) {
   28338                   #          resultBuilder.push('0');
   28339                   #       }
   28340                   #       resultBuilder.push(hexString);
   28341                   #       return resultBuilder.join('');
   28342                   #     };
   28343                   #
   28344                   #     // ...
   28345                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   28346                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   28347                     # the final pixel color is defined by the equation:
   28348                     #
   28349                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   28350                     #
   28351                     # This means that a value of 1.0 corresponds to a solid color, whereas
   28352                     # a value of 0.0 corresponds to a completely transparent color. This
   28353                     # uses a wrapper message rather than a simple float scalar so that it is
   28354                     # possible to distinguish between a default value and the value being unset.
   28355                     # If omitted, this color object is to be rendered as a solid color
   28356                     # (as if the alpha value had been explicitly given with a value of 1.0).
   28357                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   28358                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   28359               },
   28360               "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   28361                   # row or column will be filled with either first_band_color or
   28362                   # second_band_color, depending on the color of the previous row or
   28363                   # column.
   28364                   # for simplicity of conversion to/from color representations in various
   28365                   # languages over compactness; for example, the fields of this representation
   28366                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   28367                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   28368                   # method in iOS; and, with just a little work, it can be easily formatted into
   28369                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   28370                   #
   28371                   # Example (Java):
   28372                   #
   28373                   #      import com.google.type.Color;
   28374                   #
   28375                   #      // ...
   28376                   #      public static java.awt.Color fromProto(Color protocolor) {
   28377                   #        float alpha = protocolor.hasAlpha()
   28378                   #            ? protocolor.getAlpha().getValue()
   28379                   #            : 1.0;
   28380                   #
   28381                   #        return new java.awt.Color(
   28382                   #            protocolor.getRed(),
   28383                   #            protocolor.getGreen(),
   28384                   #            protocolor.getBlue(),
   28385                   #            alpha);
   28386                   #      }
   28387                   #
   28388                   #      public static Color toProto(java.awt.Color color) {
   28389                   #        float red = (float) color.getRed();
   28390                   #        float green = (float) color.getGreen();
   28391                   #        float blue = (float) color.getBlue();
   28392                   #        float denominator = 255.0;
   28393                   #        Color.Builder resultBuilder =
   28394                   #            Color
   28395                   #                .newBuilder()
   28396                   #                .setRed(red / denominator)
   28397                   #                .setGreen(green / denominator)
   28398                   #                .setBlue(blue / denominator);
   28399                   #        int alpha = color.getAlpha();
   28400                   #        if (alpha != 255) {
   28401                   #          result.setAlpha(
   28402                   #              FloatValue
   28403                   #                  .newBuilder()
   28404                   #                  .setValue(((float) alpha) / denominator)
   28405                   #                  .build());
   28406                   #        }
   28407                   #        return resultBuilder.build();
   28408                   #      }
   28409                   #      // ...
   28410                   #
   28411                   # Example (iOS / Obj-C):
   28412                   #
   28413                   #      // ...
   28414                   #      static UIColor* fromProto(Color* protocolor) {
   28415                   #         float red = [protocolor red];
   28416                   #         float green = [protocolor green];
   28417                   #         float blue = [protocolor blue];
   28418                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   28419                   #         float alpha = 1.0;
   28420                   #         if (alpha_wrapper != nil) {
   28421                   #           alpha = [alpha_wrapper value];
   28422                   #         }
   28423                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   28424                   #      }
   28425                   #
   28426                   #      static Color* toProto(UIColor* color) {
   28427                   #          CGFloat red, green, blue, alpha;
   28428                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   28429                   #            return nil;
   28430                   #          }
   28431                   #          Color* result = [Color alloc] init];
   28432                   #          [result setRed:red];
   28433                   #          [result setGreen:green];
   28434                   #          [result setBlue:blue];
   28435                   #          if (alpha <= 0.9999) {
   28436                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   28437                   #          }
   28438                   #          [result autorelease];
   28439                   #          return result;
   28440                   #     }
   28441                   #     // ...
   28442                   #
   28443                   #  Example (JavaScript):
   28444                   #
   28445                   #     // ...
   28446                   #
   28447                   #     var protoToCssColor = function(rgb_color) {
   28448                   #        var redFrac = rgb_color.red || 0.0;
   28449                   #        var greenFrac = rgb_color.green || 0.0;
   28450                   #        var blueFrac = rgb_color.blue || 0.0;
   28451                   #        var red = Math.floor(redFrac * 255);
   28452                   #        var green = Math.floor(greenFrac * 255);
   28453                   #        var blue = Math.floor(blueFrac * 255);
   28454                   #
   28455                   #        if (!('alpha' in rgb_color)) {
   28456                   #           return rgbToCssColor_(red, green, blue);
   28457                   #        }
   28458                   #
   28459                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   28460                   #        var rgbParams = [red, green, blue].join(',');
   28461                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   28462                   #     };
   28463                   #
   28464                   #     var rgbToCssColor_ = function(red, green, blue) {
   28465                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   28466                   #       var hexString = rgbNumber.toString(16);
   28467                   #       var missingZeros = 6 - hexString.length;
   28468                   #       var resultBuilder = ['#'];
   28469                   #       for (var i = 0; i < missingZeros; i++) {
   28470                   #          resultBuilder.push('0');
   28471                   #       }
   28472                   #       resultBuilder.push(hexString);
   28473                   #       return resultBuilder.join('');
   28474                   #     };
   28475                   #
   28476                   #     // ...
   28477                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   28478                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   28479                     # the final pixel color is defined by the equation:
   28480                     #
   28481                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   28482                     #
   28483                     # This means that a value of 1.0 corresponds to a solid color, whereas
   28484                     # a value of 0.0 corresponds to a completely transparent color. This
   28485                     # uses a wrapper message rather than a simple float scalar so that it is
   28486                     # possible to distinguish between a default value and the value being unset.
   28487                     # If omitted, this color object is to be rendered as a solid color
   28488                     # (as if the alpha value had been explicitly given with a value of 1.0).
   28489                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   28490                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   28491               },
   28492               "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   28493                   # for simplicity of conversion to/from color representations in various
   28494                   # languages over compactness; for example, the fields of this representation
   28495                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   28496                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   28497                   # method in iOS; and, with just a little work, it can be easily formatted into
   28498                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   28499                   #
   28500                   # Example (Java):
   28501                   #
   28502                   #      import com.google.type.Color;
   28503                   #
   28504                   #      // ...
   28505                   #      public static java.awt.Color fromProto(Color protocolor) {
   28506                   #        float alpha = protocolor.hasAlpha()
   28507                   #            ? protocolor.getAlpha().getValue()
   28508                   #            : 1.0;
   28509                   #
   28510                   #        return new java.awt.Color(
   28511                   #            protocolor.getRed(),
   28512                   #            protocolor.getGreen(),
   28513                   #            protocolor.getBlue(),
   28514                   #            alpha);
   28515                   #      }
   28516                   #
   28517                   #      public static Color toProto(java.awt.Color color) {
   28518                   #        float red = (float) color.getRed();
   28519                   #        float green = (float) color.getGreen();
   28520                   #        float blue = (float) color.getBlue();
   28521                   #        float denominator = 255.0;
   28522                   #        Color.Builder resultBuilder =
   28523                   #            Color
   28524                   #                .newBuilder()
   28525                   #                .setRed(red / denominator)
   28526                   #                .setGreen(green / denominator)
   28527                   #                .setBlue(blue / denominator);
   28528                   #        int alpha = color.getAlpha();
   28529                   #        if (alpha != 255) {
   28530                   #          result.setAlpha(
   28531                   #              FloatValue
   28532                   #                  .newBuilder()
   28533                   #                  .setValue(((float) alpha) / denominator)
   28534                   #                  .build());
   28535                   #        }
   28536                   #        return resultBuilder.build();
   28537                   #      }
   28538                   #      // ...
   28539                   #
   28540                   # Example (iOS / Obj-C):
   28541                   #
   28542                   #      // ...
   28543                   #      static UIColor* fromProto(Color* protocolor) {
   28544                   #         float red = [protocolor red];
   28545                   #         float green = [protocolor green];
   28546                   #         float blue = [protocolor blue];
   28547                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   28548                   #         float alpha = 1.0;
   28549                   #         if (alpha_wrapper != nil) {
   28550                   #           alpha = [alpha_wrapper value];
   28551                   #         }
   28552                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   28553                   #      }
   28554                   #
   28555                   #      static Color* toProto(UIColor* color) {
   28556                   #          CGFloat red, green, blue, alpha;
   28557                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   28558                   #            return nil;
   28559                   #          }
   28560                   #          Color* result = [Color alloc] init];
   28561                   #          [result setRed:red];
   28562                   #          [result setGreen:green];
   28563                   #          [result setBlue:blue];
   28564                   #          if (alpha <= 0.9999) {
   28565                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   28566                   #          }
   28567                   #          [result autorelease];
   28568                   #          return result;
   28569                   #     }
   28570                   #     // ...
   28571                   #
   28572                   #  Example (JavaScript):
   28573                   #
   28574                   #     // ...
   28575                   #
   28576                   #     var protoToCssColor = function(rgb_color) {
   28577                   #        var redFrac = rgb_color.red || 0.0;
   28578                   #        var greenFrac = rgb_color.green || 0.0;
   28579                   #        var blueFrac = rgb_color.blue || 0.0;
   28580                   #        var red = Math.floor(redFrac * 255);
   28581                   #        var green = Math.floor(greenFrac * 255);
   28582                   #        var blue = Math.floor(blueFrac * 255);
   28583                   #
   28584                   #        if (!('alpha' in rgb_color)) {
   28585                   #           return rgbToCssColor_(red, green, blue);
   28586                   #        }
   28587                   #
   28588                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   28589                   #        var rgbParams = [red, green, blue].join(',');
   28590                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   28591                   #     };
   28592                   #
   28593                   #     var rgbToCssColor_ = function(red, green, blue) {
   28594                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   28595                   #       var hexString = rgbNumber.toString(16);
   28596                   #       var missingZeros = 6 - hexString.length;
   28597                   #       var resultBuilder = ['#'];
   28598                   #       for (var i = 0; i < missingZeros; i++) {
   28599                   #          resultBuilder.push('0');
   28600                   #       }
   28601                   #       resultBuilder.push(hexString);
   28602                   #       return resultBuilder.join('');
   28603                   #     };
   28604                   #
   28605                   #     // ...
   28606                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   28607                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   28608                     # the final pixel color is defined by the equation:
   28609                     #
   28610                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   28611                     #
   28612                     # This means that a value of 1.0 corresponds to a solid color, whereas
   28613                     # a value of 0.0 corresponds to a completely transparent color. This
   28614                     # uses a wrapper message rather than a simple float scalar so that it is
   28615                     # possible to distinguish between a default value and the value being unset.
   28616                     # If omitted, this color object is to be rendered as a solid color
   28617                     # (as if the alpha value had been explicitly given with a value of 1.0).
   28618                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   28619                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   28620               },
   28621             },
   28622             "bandedRangeId": 42, # The id of the banded range.
   28623           },
   28624         },
   28625         "addFilterView": { # The result of adding a filter view. # A reply from adding a filter view.
   28626           "filter": { # A filter view. # The newly added filter view.
   28627             "title": "A String", # The name of the filter view.
   28628             "namedRangeId": "A String", # The named range this filter view is backed by, if any.
   28629                 #
   28630                 # When writing, only one of range or named_range_id
   28631                 # may be set.
   28632             "filterViewId": 42, # The ID of the filter view.
   28633             "range": { # A range on a sheet. # The range this filter view covers.
   28634                 #
   28635                 # When writing, only one of range or named_range_id
   28636                 # may be set.
   28637                 # All indexes are zero-based.
   28638                 # Indexes are half open, e.g the start index is inclusive
   28639                 # and the end index is exclusive -- [start_index, end_index).
   28640                 # Missing indexes indicate the range is unbounded on that side.
   28641                 #
   28642                 # For example, if `"Sheet1"` is sheet ID 0, then:
   28643                 #
   28644                 #   `Sheet1!A1:A1 == sheet_id: 0,
   28645                 #                   start_row_index: 0, end_row_index: 1,
   28646                 #                   start_column_index: 0, end_column_index: 1`
   28647                 #
   28648                 #   `Sheet1!A3:B4 == sheet_id: 0,
   28649                 #                   start_row_index: 2, end_row_index: 4,
   28650                 #                   start_column_index: 0, end_column_index: 2`
   28651                 #
   28652                 #   `Sheet1!A:B == sheet_id: 0,
   28653                 #                 start_column_index: 0, end_column_index: 2`
   28654                 #
   28655                 #   `Sheet1!A5:B == sheet_id: 0,
   28656                 #                  start_row_index: 4,
   28657                 #                  start_column_index: 0, end_column_index: 2`
   28658                 #
   28659                 #   `Sheet1 == sheet_id:0`
   28660                 #
   28661                 # The start index must always be less than or equal to the end index.
   28662                 # If the start index equals the end index, then the range is empty.
   28663                 # Empty ranges are typically not meaningful and are usually rendered in the
   28664                 # UI as `#REF!`.
   28665               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   28666               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   28667               "sheetId": 42, # The sheet this range is on.
   28668               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   28669               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   28670             },
   28671             "sortSpecs": [ # The sort order per column. Later specifications are used when values
   28672                 # are equal in the earlier specifications.
   28673               { # A sort order associated with a specific column or row.
   28674                 "sortOrder": "A String", # The order data should be sorted.
   28675                 "dimensionIndex": 42, # The dimension the sort should be applied to.
   28676               },
   28677             ],
   28678             "criteria": { # The criteria for showing/hiding values per column.
   28679                 # The map's key is the column index, and the value is the criteria for
   28680                 # that column.
   28681               "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   28682                 "hiddenValues": [ # Values that should be hidden.
   28683                   "A String",
   28684                 ],
   28685                 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   28686                     # (This does not override hiddenValues -- if a value is listed there,
   28687                     #  it will still be hidden.)
   28688                     # BooleanConditions are used by conditional formatting,
   28689                     # data validation, and the criteria in filters.
   28690                   "values": [ # The values of the condition. The number of supported values depends
   28691                       # on the condition type.  Some support zero values,
   28692                       # others one or two values,
   28693                       # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   28694                     { # The value of the condition.
   28695                       "relativeDate": "A String", # A relative date (based on the current date).
   28696                           # Valid only if the type is
   28697                           # DATE_BEFORE,
   28698                           # DATE_AFTER,
   28699                           # DATE_ON_OR_BEFORE or
   28700                           # DATE_ON_OR_AFTER.
   28701                           #
   28702                           # Relative dates are not supported in data validation.
   28703                           # They are supported only in conditional formatting and
   28704                           # conditional filters.
   28705                       "userEnteredValue": "A String", # A value the condition is based on.
   28706                           # The value will be parsed as if the user typed into a cell.
   28707                           # Formulas are supported (and must begin with an `=`).
   28708                     },
   28709                   ],
   28710                   "type": "A String", # The type of condition.
   28711                 },
   28712               },
   28713             },
   28714           },
   28715         },
   28716       },
   28717     ],
   28718   }</pre>
   28719 </div>
   28720 
   28721 <div class="method">
   28722     <code class="details" id="create">create(body, x__xgafv=None)</code>
   28723   <pre>Creates a spreadsheet, returning the newly created spreadsheet.
   28724 
   28725 Args:
   28726   body: object, The request body. (required)
   28727     The object takes the form of:
   28728 
   28729 { # Resource that represents a spreadsheet.
   28730   "spreadsheetId": "A String", # The ID of the spreadsheet.
   28731       # This field is read-only.
   28732   "namedRanges": [ # The named ranges defined in a spreadsheet.
   28733     { # A named range.
   28734       "namedRangeId": "A String", # The ID of the named range.
   28735       "range": { # A range on a sheet. # The range this represents.
   28736           # All indexes are zero-based.
   28737           # Indexes are half open, e.g the start index is inclusive
   28738           # and the end index is exclusive -- [start_index, end_index).
   28739           # Missing indexes indicate the range is unbounded on that side.
   28740           #
   28741           # For example, if `"Sheet1"` is sheet ID 0, then:
   28742           #
   28743           #   `Sheet1!A1:A1 == sheet_id: 0,
   28744           #                   start_row_index: 0, end_row_index: 1,
   28745           #                   start_column_index: 0, end_column_index: 1`
   28746           #
   28747           #   `Sheet1!A3:B4 == sheet_id: 0,
   28748           #                   start_row_index: 2, end_row_index: 4,
   28749           #                   start_column_index: 0, end_column_index: 2`
   28750           #
   28751           #   `Sheet1!A:B == sheet_id: 0,
   28752           #                 start_column_index: 0, end_column_index: 2`
   28753           #
   28754           #   `Sheet1!A5:B == sheet_id: 0,
   28755           #                  start_row_index: 4,
   28756           #                  start_column_index: 0, end_column_index: 2`
   28757           #
   28758           #   `Sheet1 == sheet_id:0`
   28759           #
   28760           # The start index must always be less than or equal to the end index.
   28761           # If the start index equals the end index, then the range is empty.
   28762           # Empty ranges are typically not meaningful and are usually rendered in the
   28763           # UI as `#REF!`.
   28764         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   28765         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   28766         "sheetId": 42, # The sheet this range is on.
   28767         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   28768         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   28769       },
   28770       "name": "A String", # The name of the named range.
   28771     },
   28772   ],
   28773   "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
   28774     "title": "A String", # The title of the spreadsheet.
   28775     "locale": "A String", # The locale of the spreadsheet in one of the following formats:
   28776         #
   28777         # * an ISO 639-1 language code such as `en`
   28778         #
   28779         # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
   28780         #
   28781         # * a combination of the ISO language code and country code, such as `en_US`
   28782         #
   28783         # Note: when updating this field, not all locales/languages are supported.
   28784     "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
   28785         # CellData.effectiveFormat will not be set if the
   28786         # cell's format is equal to this default format.
   28787         # This field is read-only.
   28788       "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   28789         "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   28790             # the user's locale will be used if necessary for the given type.
   28791             # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   28792             # information about the supported patterns.
   28793         "type": "A String", # The type of the number format.
   28794             # When writing, this field must be set.
   28795       },
   28796       "textDirection": "A String", # The direction of the text in the cell.
   28797       "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   28798           # When updating padding, every field must be specified.
   28799         "top": 42, # The top padding of the cell.
   28800         "right": 42, # The right padding of the cell.
   28801         "bottom": 42, # The bottom padding of the cell.
   28802         "left": 42, # The left padding of the cell.
   28803       },
   28804       "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   28805       "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   28806           # for simplicity of conversion to/from color representations in various
   28807           # languages over compactness; for example, the fields of this representation
   28808           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   28809           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   28810           # method in iOS; and, with just a little work, it can be easily formatted into
   28811           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   28812           #
   28813           # Example (Java):
   28814           #
   28815           #      import com.google.type.Color;
   28816           #
   28817           #      // ...
   28818           #      public static java.awt.Color fromProto(Color protocolor) {
   28819           #        float alpha = protocolor.hasAlpha()
   28820           #            ? protocolor.getAlpha().getValue()
   28821           #            : 1.0;
   28822           #
   28823           #        return new java.awt.Color(
   28824           #            protocolor.getRed(),
   28825           #            protocolor.getGreen(),
   28826           #            protocolor.getBlue(),
   28827           #            alpha);
   28828           #      }
   28829           #
   28830           #      public static Color toProto(java.awt.Color color) {
   28831           #        float red = (float) color.getRed();
   28832           #        float green = (float) color.getGreen();
   28833           #        float blue = (float) color.getBlue();
   28834           #        float denominator = 255.0;
   28835           #        Color.Builder resultBuilder =
   28836           #            Color
   28837           #                .newBuilder()
   28838           #                .setRed(red / denominator)
   28839           #                .setGreen(green / denominator)
   28840           #                .setBlue(blue / denominator);
   28841           #        int alpha = color.getAlpha();
   28842           #        if (alpha != 255) {
   28843           #          result.setAlpha(
   28844           #              FloatValue
   28845           #                  .newBuilder()
   28846           #                  .setValue(((float) alpha) / denominator)
   28847           #                  .build());
   28848           #        }
   28849           #        return resultBuilder.build();
   28850           #      }
   28851           #      // ...
   28852           #
   28853           # Example (iOS / Obj-C):
   28854           #
   28855           #      // ...
   28856           #      static UIColor* fromProto(Color* protocolor) {
   28857           #         float red = [protocolor red];
   28858           #         float green = [protocolor green];
   28859           #         float blue = [protocolor blue];
   28860           #         FloatValue* alpha_wrapper = [protocolor alpha];
   28861           #         float alpha = 1.0;
   28862           #         if (alpha_wrapper != nil) {
   28863           #           alpha = [alpha_wrapper value];
   28864           #         }
   28865           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   28866           #      }
   28867           #
   28868           #      static Color* toProto(UIColor* color) {
   28869           #          CGFloat red, green, blue, alpha;
   28870           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   28871           #            return nil;
   28872           #          }
   28873           #          Color* result = [Color alloc] init];
   28874           #          [result setRed:red];
   28875           #          [result setGreen:green];
   28876           #          [result setBlue:blue];
   28877           #          if (alpha <= 0.9999) {
   28878           #            [result setAlpha:floatWrapperWithValue(alpha)];
   28879           #          }
   28880           #          [result autorelease];
   28881           #          return result;
   28882           #     }
   28883           #     // ...
   28884           #
   28885           #  Example (JavaScript):
   28886           #
   28887           #     // ...
   28888           #
   28889           #     var protoToCssColor = function(rgb_color) {
   28890           #        var redFrac = rgb_color.red || 0.0;
   28891           #        var greenFrac = rgb_color.green || 0.0;
   28892           #        var blueFrac = rgb_color.blue || 0.0;
   28893           #        var red = Math.floor(redFrac * 255);
   28894           #        var green = Math.floor(greenFrac * 255);
   28895           #        var blue = Math.floor(blueFrac * 255);
   28896           #
   28897           #        if (!('alpha' in rgb_color)) {
   28898           #           return rgbToCssColor_(red, green, blue);
   28899           #        }
   28900           #
   28901           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   28902           #        var rgbParams = [red, green, blue].join(',');
   28903           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   28904           #     };
   28905           #
   28906           #     var rgbToCssColor_ = function(red, green, blue) {
   28907           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   28908           #       var hexString = rgbNumber.toString(16);
   28909           #       var missingZeros = 6 - hexString.length;
   28910           #       var resultBuilder = ['#'];
   28911           #       for (var i = 0; i < missingZeros; i++) {
   28912           #          resultBuilder.push('0');
   28913           #       }
   28914           #       resultBuilder.push(hexString);
   28915           #       return resultBuilder.join('');
   28916           #     };
   28917           #
   28918           #     // ...
   28919         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   28920         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   28921             # the final pixel color is defined by the equation:
   28922             #
   28923             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   28924             #
   28925             # This means that a value of 1.0 corresponds to a solid color, whereas
   28926             # a value of 0.0 corresponds to a completely transparent color. This
   28927             # uses a wrapper message rather than a simple float scalar so that it is
   28928             # possible to distinguish between a default value and the value being unset.
   28929             # If omitted, this color object is to be rendered as a solid color
   28930             # (as if the alpha value had been explicitly given with a value of 1.0).
   28931         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   28932         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   28933       },
   28934       "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   28935       "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   28936           # Absent values indicate that the field isn't specified.
   28937         "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   28938             # for simplicity of conversion to/from color representations in various
   28939             # languages over compactness; for example, the fields of this representation
   28940             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   28941             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   28942             # method in iOS; and, with just a little work, it can be easily formatted into
   28943             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   28944             #
   28945             # Example (Java):
   28946             #
   28947             #      import com.google.type.Color;
   28948             #
   28949             #      // ...
   28950             #      public static java.awt.Color fromProto(Color protocolor) {
   28951             #        float alpha = protocolor.hasAlpha()
   28952             #            ? protocolor.getAlpha().getValue()
   28953             #            : 1.0;
   28954             #
   28955             #        return new java.awt.Color(
   28956             #            protocolor.getRed(),
   28957             #            protocolor.getGreen(),
   28958             #            protocolor.getBlue(),
   28959             #            alpha);
   28960             #      }
   28961             #
   28962             #      public static Color toProto(java.awt.Color color) {
   28963             #        float red = (float) color.getRed();
   28964             #        float green = (float) color.getGreen();
   28965             #        float blue = (float) color.getBlue();
   28966             #        float denominator = 255.0;
   28967             #        Color.Builder resultBuilder =
   28968             #            Color
   28969             #                .newBuilder()
   28970             #                .setRed(red / denominator)
   28971             #                .setGreen(green / denominator)
   28972             #                .setBlue(blue / denominator);
   28973             #        int alpha = color.getAlpha();
   28974             #        if (alpha != 255) {
   28975             #          result.setAlpha(
   28976             #              FloatValue
   28977             #                  .newBuilder()
   28978             #                  .setValue(((float) alpha) / denominator)
   28979             #                  .build());
   28980             #        }
   28981             #        return resultBuilder.build();
   28982             #      }
   28983             #      // ...
   28984             #
   28985             # Example (iOS / Obj-C):
   28986             #
   28987             #      // ...
   28988             #      static UIColor* fromProto(Color* protocolor) {
   28989             #         float red = [protocolor red];
   28990             #         float green = [protocolor green];
   28991             #         float blue = [protocolor blue];
   28992             #         FloatValue* alpha_wrapper = [protocolor alpha];
   28993             #         float alpha = 1.0;
   28994             #         if (alpha_wrapper != nil) {
   28995             #           alpha = [alpha_wrapper value];
   28996             #         }
   28997             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   28998             #      }
   28999             #
   29000             #      static Color* toProto(UIColor* color) {
   29001             #          CGFloat red, green, blue, alpha;
   29002             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   29003             #            return nil;
   29004             #          }
   29005             #          Color* result = [Color alloc] init];
   29006             #          [result setRed:red];
   29007             #          [result setGreen:green];
   29008             #          [result setBlue:blue];
   29009             #          if (alpha <= 0.9999) {
   29010             #            [result setAlpha:floatWrapperWithValue(alpha)];
   29011             #          }
   29012             #          [result autorelease];
   29013             #          return result;
   29014             #     }
   29015             #     // ...
   29016             #
   29017             #  Example (JavaScript):
   29018             #
   29019             #     // ...
   29020             #
   29021             #     var protoToCssColor = function(rgb_color) {
   29022             #        var redFrac = rgb_color.red || 0.0;
   29023             #        var greenFrac = rgb_color.green || 0.0;
   29024             #        var blueFrac = rgb_color.blue || 0.0;
   29025             #        var red = Math.floor(redFrac * 255);
   29026             #        var green = Math.floor(greenFrac * 255);
   29027             #        var blue = Math.floor(blueFrac * 255);
   29028             #
   29029             #        if (!('alpha' in rgb_color)) {
   29030             #           return rgbToCssColor_(red, green, blue);
   29031             #        }
   29032             #
   29033             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   29034             #        var rgbParams = [red, green, blue].join(',');
   29035             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   29036             #     };
   29037             #
   29038             #     var rgbToCssColor_ = function(red, green, blue) {
   29039             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   29040             #       var hexString = rgbNumber.toString(16);
   29041             #       var missingZeros = 6 - hexString.length;
   29042             #       var resultBuilder = ['#'];
   29043             #       for (var i = 0; i < missingZeros; i++) {
   29044             #          resultBuilder.push('0');
   29045             #       }
   29046             #       resultBuilder.push(hexString);
   29047             #       return resultBuilder.join('');
   29048             #     };
   29049             #
   29050             #     // ...
   29051           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   29052           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   29053               # the final pixel color is defined by the equation:
   29054               #
   29055               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   29056               #
   29057               # This means that a value of 1.0 corresponds to a solid color, whereas
   29058               # a value of 0.0 corresponds to a completely transparent color. This
   29059               # uses a wrapper message rather than a simple float scalar so that it is
   29060               # possible to distinguish between a default value and the value being unset.
   29061               # If omitted, this color object is to be rendered as a solid color
   29062               # (as if the alpha value had been explicitly given with a value of 1.0).
   29063           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   29064           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   29065         },
   29066         "bold": True or False, # True if the text is bold.
   29067         "strikethrough": True or False, # True if the text has a strikethrough.
   29068         "fontFamily": "A String", # The font family.
   29069         "fontSize": 42, # The size of the font.
   29070         "italic": True or False, # True if the text is italicized.
   29071         "underline": True or False, # True if the text is underlined.
   29072       },
   29073       "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   29074         "angle": 42, # The angle between the standard orientation and the desired orientation.
   29075             # Measured in degrees. Valid values are between -90 and 90. Positive
   29076             # angles are angled upwards, negative are angled downwards.
   29077             #
   29078             # Note: For LTR text direction positive angles are in the counterclockwise
   29079             # direction, whereas for RTL they are in the clockwise direction
   29080         "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   29081             # characters is unchanged.
   29082             # For example:
   29083             #
   29084             #     | V |
   29085             #     | e |
   29086             #     | r |
   29087             #     | t |
   29088             #     | i |
   29089             #     | c |
   29090             #     | a |
   29091             #     | l |
   29092       },
   29093       "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   29094       "borders": { # The borders of the cell. # The borders of the cell.
   29095         "top": { # A border along a cell. # The top border of the cell.
   29096           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   29097               # for simplicity of conversion to/from color representations in various
   29098               # languages over compactness; for example, the fields of this representation
   29099               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   29100               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   29101               # method in iOS; and, with just a little work, it can be easily formatted into
   29102               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   29103               #
   29104               # Example (Java):
   29105               #
   29106               #      import com.google.type.Color;
   29107               #
   29108               #      // ...
   29109               #      public static java.awt.Color fromProto(Color protocolor) {
   29110               #        float alpha = protocolor.hasAlpha()
   29111               #            ? protocolor.getAlpha().getValue()
   29112               #            : 1.0;
   29113               #
   29114               #        return new java.awt.Color(
   29115               #            protocolor.getRed(),
   29116               #            protocolor.getGreen(),
   29117               #            protocolor.getBlue(),
   29118               #            alpha);
   29119               #      }
   29120               #
   29121               #      public static Color toProto(java.awt.Color color) {
   29122               #        float red = (float) color.getRed();
   29123               #        float green = (float) color.getGreen();
   29124               #        float blue = (float) color.getBlue();
   29125               #        float denominator = 255.0;
   29126               #        Color.Builder resultBuilder =
   29127               #            Color
   29128               #                .newBuilder()
   29129               #                .setRed(red / denominator)
   29130               #                .setGreen(green / denominator)
   29131               #                .setBlue(blue / denominator);
   29132               #        int alpha = color.getAlpha();
   29133               #        if (alpha != 255) {
   29134               #          result.setAlpha(
   29135               #              FloatValue
   29136               #                  .newBuilder()
   29137               #                  .setValue(((float) alpha) / denominator)
   29138               #                  .build());
   29139               #        }
   29140               #        return resultBuilder.build();
   29141               #      }
   29142               #      // ...
   29143               #
   29144               # Example (iOS / Obj-C):
   29145               #
   29146               #      // ...
   29147               #      static UIColor* fromProto(Color* protocolor) {
   29148               #         float red = [protocolor red];
   29149               #         float green = [protocolor green];
   29150               #         float blue = [protocolor blue];
   29151               #         FloatValue* alpha_wrapper = [protocolor alpha];
   29152               #         float alpha = 1.0;
   29153               #         if (alpha_wrapper != nil) {
   29154               #           alpha = [alpha_wrapper value];
   29155               #         }
   29156               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   29157               #      }
   29158               #
   29159               #      static Color* toProto(UIColor* color) {
   29160               #          CGFloat red, green, blue, alpha;
   29161               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   29162               #            return nil;
   29163               #          }
   29164               #          Color* result = [Color alloc] init];
   29165               #          [result setRed:red];
   29166               #          [result setGreen:green];
   29167               #          [result setBlue:blue];
   29168               #          if (alpha <= 0.9999) {
   29169               #            [result setAlpha:floatWrapperWithValue(alpha)];
   29170               #          }
   29171               #          [result autorelease];
   29172               #          return result;
   29173               #     }
   29174               #     // ...
   29175               #
   29176               #  Example (JavaScript):
   29177               #
   29178               #     // ...
   29179               #
   29180               #     var protoToCssColor = function(rgb_color) {
   29181               #        var redFrac = rgb_color.red || 0.0;
   29182               #        var greenFrac = rgb_color.green || 0.0;
   29183               #        var blueFrac = rgb_color.blue || 0.0;
   29184               #        var red = Math.floor(redFrac * 255);
   29185               #        var green = Math.floor(greenFrac * 255);
   29186               #        var blue = Math.floor(blueFrac * 255);
   29187               #
   29188               #        if (!('alpha' in rgb_color)) {
   29189               #           return rgbToCssColor_(red, green, blue);
   29190               #        }
   29191               #
   29192               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   29193               #        var rgbParams = [red, green, blue].join(',');
   29194               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   29195               #     };
   29196               #
   29197               #     var rgbToCssColor_ = function(red, green, blue) {
   29198               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   29199               #       var hexString = rgbNumber.toString(16);
   29200               #       var missingZeros = 6 - hexString.length;
   29201               #       var resultBuilder = ['#'];
   29202               #       for (var i = 0; i < missingZeros; i++) {
   29203               #          resultBuilder.push('0');
   29204               #       }
   29205               #       resultBuilder.push(hexString);
   29206               #       return resultBuilder.join('');
   29207               #     };
   29208               #
   29209               #     // ...
   29210             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   29211             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   29212                 # the final pixel color is defined by the equation:
   29213                 #
   29214                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   29215                 #
   29216                 # This means that a value of 1.0 corresponds to a solid color, whereas
   29217                 # a value of 0.0 corresponds to a completely transparent color. This
   29218                 # uses a wrapper message rather than a simple float scalar so that it is
   29219                 # possible to distinguish between a default value and the value being unset.
   29220                 # If omitted, this color object is to be rendered as a solid color
   29221                 # (as if the alpha value had been explicitly given with a value of 1.0).
   29222             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   29223             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   29224           },
   29225           "width": 42, # The width of the border, in pixels.
   29226               # Deprecated; the width is determined by the "style" field.
   29227           "style": "A String", # The style of the border.
   29228         },
   29229         "right": { # A border along a cell. # The right border of the cell.
   29230           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   29231               # for simplicity of conversion to/from color representations in various
   29232               # languages over compactness; for example, the fields of this representation
   29233               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   29234               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   29235               # method in iOS; and, with just a little work, it can be easily formatted into
   29236               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   29237               #
   29238               # Example (Java):
   29239               #
   29240               #      import com.google.type.Color;
   29241               #
   29242               #      // ...
   29243               #      public static java.awt.Color fromProto(Color protocolor) {
   29244               #        float alpha = protocolor.hasAlpha()
   29245               #            ? protocolor.getAlpha().getValue()
   29246               #            : 1.0;
   29247               #
   29248               #        return new java.awt.Color(
   29249               #            protocolor.getRed(),
   29250               #            protocolor.getGreen(),
   29251               #            protocolor.getBlue(),
   29252               #            alpha);
   29253               #      }
   29254               #
   29255               #      public static Color toProto(java.awt.Color color) {
   29256               #        float red = (float) color.getRed();
   29257               #        float green = (float) color.getGreen();
   29258               #        float blue = (float) color.getBlue();
   29259               #        float denominator = 255.0;
   29260               #        Color.Builder resultBuilder =
   29261               #            Color
   29262               #                .newBuilder()
   29263               #                .setRed(red / denominator)
   29264               #                .setGreen(green / denominator)
   29265               #                .setBlue(blue / denominator);
   29266               #        int alpha = color.getAlpha();
   29267               #        if (alpha != 255) {
   29268               #          result.setAlpha(
   29269               #              FloatValue
   29270               #                  .newBuilder()
   29271               #                  .setValue(((float) alpha) / denominator)
   29272               #                  .build());
   29273               #        }
   29274               #        return resultBuilder.build();
   29275               #      }
   29276               #      // ...
   29277               #
   29278               # Example (iOS / Obj-C):
   29279               #
   29280               #      // ...
   29281               #      static UIColor* fromProto(Color* protocolor) {
   29282               #         float red = [protocolor red];
   29283               #         float green = [protocolor green];
   29284               #         float blue = [protocolor blue];
   29285               #         FloatValue* alpha_wrapper = [protocolor alpha];
   29286               #         float alpha = 1.0;
   29287               #         if (alpha_wrapper != nil) {
   29288               #           alpha = [alpha_wrapper value];
   29289               #         }
   29290               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   29291               #      }
   29292               #
   29293               #      static Color* toProto(UIColor* color) {
   29294               #          CGFloat red, green, blue, alpha;
   29295               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   29296               #            return nil;
   29297               #          }
   29298               #          Color* result = [Color alloc] init];
   29299               #          [result setRed:red];
   29300               #          [result setGreen:green];
   29301               #          [result setBlue:blue];
   29302               #          if (alpha <= 0.9999) {
   29303               #            [result setAlpha:floatWrapperWithValue(alpha)];
   29304               #          }
   29305               #          [result autorelease];
   29306               #          return result;
   29307               #     }
   29308               #     // ...
   29309               #
   29310               #  Example (JavaScript):
   29311               #
   29312               #     // ...
   29313               #
   29314               #     var protoToCssColor = function(rgb_color) {
   29315               #        var redFrac = rgb_color.red || 0.0;
   29316               #        var greenFrac = rgb_color.green || 0.0;
   29317               #        var blueFrac = rgb_color.blue || 0.0;
   29318               #        var red = Math.floor(redFrac * 255);
   29319               #        var green = Math.floor(greenFrac * 255);
   29320               #        var blue = Math.floor(blueFrac * 255);
   29321               #
   29322               #        if (!('alpha' in rgb_color)) {
   29323               #           return rgbToCssColor_(red, green, blue);
   29324               #        }
   29325               #
   29326               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   29327               #        var rgbParams = [red, green, blue].join(',');
   29328               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   29329               #     };
   29330               #
   29331               #     var rgbToCssColor_ = function(red, green, blue) {
   29332               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   29333               #       var hexString = rgbNumber.toString(16);
   29334               #       var missingZeros = 6 - hexString.length;
   29335               #       var resultBuilder = ['#'];
   29336               #       for (var i = 0; i < missingZeros; i++) {
   29337               #          resultBuilder.push('0');
   29338               #       }
   29339               #       resultBuilder.push(hexString);
   29340               #       return resultBuilder.join('');
   29341               #     };
   29342               #
   29343               #     // ...
   29344             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   29345             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   29346                 # the final pixel color is defined by the equation:
   29347                 #
   29348                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   29349                 #
   29350                 # This means that a value of 1.0 corresponds to a solid color, whereas
   29351                 # a value of 0.0 corresponds to a completely transparent color. This
   29352                 # uses a wrapper message rather than a simple float scalar so that it is
   29353                 # possible to distinguish between a default value and the value being unset.
   29354                 # If omitted, this color object is to be rendered as a solid color
   29355                 # (as if the alpha value had been explicitly given with a value of 1.0).
   29356             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   29357             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   29358           },
   29359           "width": 42, # The width of the border, in pixels.
   29360               # Deprecated; the width is determined by the "style" field.
   29361           "style": "A String", # The style of the border.
   29362         },
   29363         "bottom": { # A border along a cell. # The bottom border of the cell.
   29364           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   29365               # for simplicity of conversion to/from color representations in various
   29366               # languages over compactness; for example, the fields of this representation
   29367               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   29368               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   29369               # method in iOS; and, with just a little work, it can be easily formatted into
   29370               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   29371               #
   29372               # Example (Java):
   29373               #
   29374               #      import com.google.type.Color;
   29375               #
   29376               #      // ...
   29377               #      public static java.awt.Color fromProto(Color protocolor) {
   29378               #        float alpha = protocolor.hasAlpha()
   29379               #            ? protocolor.getAlpha().getValue()
   29380               #            : 1.0;
   29381               #
   29382               #        return new java.awt.Color(
   29383               #            protocolor.getRed(),
   29384               #            protocolor.getGreen(),
   29385               #            protocolor.getBlue(),
   29386               #            alpha);
   29387               #      }
   29388               #
   29389               #      public static Color toProto(java.awt.Color color) {
   29390               #        float red = (float) color.getRed();
   29391               #        float green = (float) color.getGreen();
   29392               #        float blue = (float) color.getBlue();
   29393               #        float denominator = 255.0;
   29394               #        Color.Builder resultBuilder =
   29395               #            Color
   29396               #                .newBuilder()
   29397               #                .setRed(red / denominator)
   29398               #                .setGreen(green / denominator)
   29399               #                .setBlue(blue / denominator);
   29400               #        int alpha = color.getAlpha();
   29401               #        if (alpha != 255) {
   29402               #          result.setAlpha(
   29403               #              FloatValue
   29404               #                  .newBuilder()
   29405               #                  .setValue(((float) alpha) / denominator)
   29406               #                  .build());
   29407               #        }
   29408               #        return resultBuilder.build();
   29409               #      }
   29410               #      // ...
   29411               #
   29412               # Example (iOS / Obj-C):
   29413               #
   29414               #      // ...
   29415               #      static UIColor* fromProto(Color* protocolor) {
   29416               #         float red = [protocolor red];
   29417               #         float green = [protocolor green];
   29418               #         float blue = [protocolor blue];
   29419               #         FloatValue* alpha_wrapper = [protocolor alpha];
   29420               #         float alpha = 1.0;
   29421               #         if (alpha_wrapper != nil) {
   29422               #           alpha = [alpha_wrapper value];
   29423               #         }
   29424               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   29425               #      }
   29426               #
   29427               #      static Color* toProto(UIColor* color) {
   29428               #          CGFloat red, green, blue, alpha;
   29429               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   29430               #            return nil;
   29431               #          }
   29432               #          Color* result = [Color alloc] init];
   29433               #          [result setRed:red];
   29434               #          [result setGreen:green];
   29435               #          [result setBlue:blue];
   29436               #          if (alpha <= 0.9999) {
   29437               #            [result setAlpha:floatWrapperWithValue(alpha)];
   29438               #          }
   29439               #          [result autorelease];
   29440               #          return result;
   29441               #     }
   29442               #     // ...
   29443               #
   29444               #  Example (JavaScript):
   29445               #
   29446               #     // ...
   29447               #
   29448               #     var protoToCssColor = function(rgb_color) {
   29449               #        var redFrac = rgb_color.red || 0.0;
   29450               #        var greenFrac = rgb_color.green || 0.0;
   29451               #        var blueFrac = rgb_color.blue || 0.0;
   29452               #        var red = Math.floor(redFrac * 255);
   29453               #        var green = Math.floor(greenFrac * 255);
   29454               #        var blue = Math.floor(blueFrac * 255);
   29455               #
   29456               #        if (!('alpha' in rgb_color)) {
   29457               #           return rgbToCssColor_(red, green, blue);
   29458               #        }
   29459               #
   29460               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   29461               #        var rgbParams = [red, green, blue].join(',');
   29462               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   29463               #     };
   29464               #
   29465               #     var rgbToCssColor_ = function(red, green, blue) {
   29466               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   29467               #       var hexString = rgbNumber.toString(16);
   29468               #       var missingZeros = 6 - hexString.length;
   29469               #       var resultBuilder = ['#'];
   29470               #       for (var i = 0; i < missingZeros; i++) {
   29471               #          resultBuilder.push('0');
   29472               #       }
   29473               #       resultBuilder.push(hexString);
   29474               #       return resultBuilder.join('');
   29475               #     };
   29476               #
   29477               #     // ...
   29478             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   29479             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   29480                 # the final pixel color is defined by the equation:
   29481                 #
   29482                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   29483                 #
   29484                 # This means that a value of 1.0 corresponds to a solid color, whereas
   29485                 # a value of 0.0 corresponds to a completely transparent color. This
   29486                 # uses a wrapper message rather than a simple float scalar so that it is
   29487                 # possible to distinguish between a default value and the value being unset.
   29488                 # If omitted, this color object is to be rendered as a solid color
   29489                 # (as if the alpha value had been explicitly given with a value of 1.0).
   29490             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   29491             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   29492           },
   29493           "width": 42, # The width of the border, in pixels.
   29494               # Deprecated; the width is determined by the "style" field.
   29495           "style": "A String", # The style of the border.
   29496         },
   29497         "left": { # A border along a cell. # The left border of the cell.
   29498           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   29499               # for simplicity of conversion to/from color representations in various
   29500               # languages over compactness; for example, the fields of this representation
   29501               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   29502               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   29503               # method in iOS; and, with just a little work, it can be easily formatted into
   29504               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   29505               #
   29506               # Example (Java):
   29507               #
   29508               #      import com.google.type.Color;
   29509               #
   29510               #      // ...
   29511               #      public static java.awt.Color fromProto(Color protocolor) {
   29512               #        float alpha = protocolor.hasAlpha()
   29513               #            ? protocolor.getAlpha().getValue()
   29514               #            : 1.0;
   29515               #
   29516               #        return new java.awt.Color(
   29517               #            protocolor.getRed(),
   29518               #            protocolor.getGreen(),
   29519               #            protocolor.getBlue(),
   29520               #            alpha);
   29521               #      }
   29522               #
   29523               #      public static Color toProto(java.awt.Color color) {
   29524               #        float red = (float) color.getRed();
   29525               #        float green = (float) color.getGreen();
   29526               #        float blue = (float) color.getBlue();
   29527               #        float denominator = 255.0;
   29528               #        Color.Builder resultBuilder =
   29529               #            Color
   29530               #                .newBuilder()
   29531               #                .setRed(red / denominator)
   29532               #                .setGreen(green / denominator)
   29533               #                .setBlue(blue / denominator);
   29534               #        int alpha = color.getAlpha();
   29535               #        if (alpha != 255) {
   29536               #          result.setAlpha(
   29537               #              FloatValue
   29538               #                  .newBuilder()
   29539               #                  .setValue(((float) alpha) / denominator)
   29540               #                  .build());
   29541               #        }
   29542               #        return resultBuilder.build();
   29543               #      }
   29544               #      // ...
   29545               #
   29546               # Example (iOS / Obj-C):
   29547               #
   29548               #      // ...
   29549               #      static UIColor* fromProto(Color* protocolor) {
   29550               #         float red = [protocolor red];
   29551               #         float green = [protocolor green];
   29552               #         float blue = [protocolor blue];
   29553               #         FloatValue* alpha_wrapper = [protocolor alpha];
   29554               #         float alpha = 1.0;
   29555               #         if (alpha_wrapper != nil) {
   29556               #           alpha = [alpha_wrapper value];
   29557               #         }
   29558               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   29559               #      }
   29560               #
   29561               #      static Color* toProto(UIColor* color) {
   29562               #          CGFloat red, green, blue, alpha;
   29563               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   29564               #            return nil;
   29565               #          }
   29566               #          Color* result = [Color alloc] init];
   29567               #          [result setRed:red];
   29568               #          [result setGreen:green];
   29569               #          [result setBlue:blue];
   29570               #          if (alpha <= 0.9999) {
   29571               #            [result setAlpha:floatWrapperWithValue(alpha)];
   29572               #          }
   29573               #          [result autorelease];
   29574               #          return result;
   29575               #     }
   29576               #     // ...
   29577               #
   29578               #  Example (JavaScript):
   29579               #
   29580               #     // ...
   29581               #
   29582               #     var protoToCssColor = function(rgb_color) {
   29583               #        var redFrac = rgb_color.red || 0.0;
   29584               #        var greenFrac = rgb_color.green || 0.0;
   29585               #        var blueFrac = rgb_color.blue || 0.0;
   29586               #        var red = Math.floor(redFrac * 255);
   29587               #        var green = Math.floor(greenFrac * 255);
   29588               #        var blue = Math.floor(blueFrac * 255);
   29589               #
   29590               #        if (!('alpha' in rgb_color)) {
   29591               #           return rgbToCssColor_(red, green, blue);
   29592               #        }
   29593               #
   29594               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   29595               #        var rgbParams = [red, green, blue].join(',');
   29596               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   29597               #     };
   29598               #
   29599               #     var rgbToCssColor_ = function(red, green, blue) {
   29600               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   29601               #       var hexString = rgbNumber.toString(16);
   29602               #       var missingZeros = 6 - hexString.length;
   29603               #       var resultBuilder = ['#'];
   29604               #       for (var i = 0; i < missingZeros; i++) {
   29605               #          resultBuilder.push('0');
   29606               #       }
   29607               #       resultBuilder.push(hexString);
   29608               #       return resultBuilder.join('');
   29609               #     };
   29610               #
   29611               #     // ...
   29612             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   29613             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   29614                 # the final pixel color is defined by the equation:
   29615                 #
   29616                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   29617                 #
   29618                 # This means that a value of 1.0 corresponds to a solid color, whereas
   29619                 # a value of 0.0 corresponds to a completely transparent color. This
   29620                 # uses a wrapper message rather than a simple float scalar so that it is
   29621                 # possible to distinguish between a default value and the value being unset.
   29622                 # If omitted, this color object is to be rendered as a solid color
   29623                 # (as if the alpha value had been explicitly given with a value of 1.0).
   29624             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   29625             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   29626           },
   29627           "width": 42, # The width of the border, in pixels.
   29628               # Deprecated; the width is determined by the "style" field.
   29629           "style": "A String", # The style of the border.
   29630         },
   29631       },
   29632       "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   29633     },
   29634     "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
   29635     "iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
   29636         # calculation.  Absence of this field means that circular references will
   29637         # result in calculation errors.
   29638         # calculation.
   29639       "convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
   29640           # less than this threshold value, the calculation rounds stop.
   29641       "maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
   29642           # rounds to perform.
   29643     },
   29644     "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
   29645         # `America/New_York`. If the time zone isn't recognized, this may
   29646         # be a custom time zone such as `GMT-07:00`.
   29647   },
   29648   "sheets": [ # The sheets that are part of a spreadsheet.
   29649     { # A sheet in a spreadsheet.
   29650       "conditionalFormats": [ # The conditional format rules in this sheet.
   29651         { # A rule describing a conditional format.
   29652           "ranges": [ # The ranges that will be formatted if the condition is true.
   29653               # All the ranges must be on the same grid.
   29654             { # A range on a sheet.
   29655                 # All indexes are zero-based.
   29656                 # Indexes are half open, e.g the start index is inclusive
   29657                 # and the end index is exclusive -- [start_index, end_index).
   29658                 # Missing indexes indicate the range is unbounded on that side.
   29659                 #
   29660                 # For example, if `"Sheet1"` is sheet ID 0, then:
   29661                 #
   29662                 #   `Sheet1!A1:A1 == sheet_id: 0,
   29663                 #                   start_row_index: 0, end_row_index: 1,
   29664                 #                   start_column_index: 0, end_column_index: 1`
   29665                 #
   29666                 #   `Sheet1!A3:B4 == sheet_id: 0,
   29667                 #                   start_row_index: 2, end_row_index: 4,
   29668                 #                   start_column_index: 0, end_column_index: 2`
   29669                 #
   29670                 #   `Sheet1!A:B == sheet_id: 0,
   29671                 #                 start_column_index: 0, end_column_index: 2`
   29672                 #
   29673                 #   `Sheet1!A5:B == sheet_id: 0,
   29674                 #                  start_row_index: 4,
   29675                 #                  start_column_index: 0, end_column_index: 2`
   29676                 #
   29677                 #   `Sheet1 == sheet_id:0`
   29678                 #
   29679                 # The start index must always be less than or equal to the end index.
   29680                 # If the start index equals the end index, then the range is empty.
   29681                 # Empty ranges are typically not meaningful and are usually rendered in the
   29682                 # UI as `#REF!`.
   29683               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   29684               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   29685               "sheetId": 42, # The sheet this range is on.
   29686               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   29687               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   29688             },
   29689           ],
   29690           "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
   29691             "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
   29692                 # the format will be applied.
   29693                 # BooleanConditions are used by conditional formatting,
   29694                 # data validation, and the criteria in filters.
   29695               "values": [ # The values of the condition. The number of supported values depends
   29696                   # on the condition type.  Some support zero values,
   29697                   # others one or two values,
   29698                   # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   29699                 { # The value of the condition.
   29700                   "relativeDate": "A String", # A relative date (based on the current date).
   29701                       # Valid only if the type is
   29702                       # DATE_BEFORE,
   29703                       # DATE_AFTER,
   29704                       # DATE_ON_OR_BEFORE or
   29705                       # DATE_ON_OR_AFTER.
   29706                       #
   29707                       # Relative dates are not supported in data validation.
   29708                       # They are supported only in conditional formatting and
   29709                       # conditional filters.
   29710                   "userEnteredValue": "A String", # A value the condition is based on.
   29711                       # The value will be parsed as if the user typed into a cell.
   29712                       # Formulas are supported (and must begin with an `=`).
   29713                 },
   29714               ],
   29715               "type": "A String", # The type of condition.
   29716             },
   29717             "format": { # The format of a cell. # The format to apply.
   29718                 # Conditional formatting can only apply a subset of formatting:
   29719                 # bold, italic,
   29720                 # strikethrough,
   29721                 # foreground color &
   29722                 # background color.
   29723               "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   29724                 "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   29725                     # the user's locale will be used if necessary for the given type.
   29726                     # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   29727                     # information about the supported patterns.
   29728                 "type": "A String", # The type of the number format.
   29729                     # When writing, this field must be set.
   29730               },
   29731               "textDirection": "A String", # The direction of the text in the cell.
   29732               "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   29733                   # When updating padding, every field must be specified.
   29734                 "top": 42, # The top padding of the cell.
   29735                 "right": 42, # The right padding of the cell.
   29736                 "bottom": 42, # The bottom padding of the cell.
   29737                 "left": 42, # The left padding of the cell.
   29738               },
   29739               "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   29740               "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   29741                   # for simplicity of conversion to/from color representations in various
   29742                   # languages over compactness; for example, the fields of this representation
   29743                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   29744                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   29745                   # method in iOS; and, with just a little work, it can be easily formatted into
   29746                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   29747                   #
   29748                   # Example (Java):
   29749                   #
   29750                   #      import com.google.type.Color;
   29751                   #
   29752                   #      // ...
   29753                   #      public static java.awt.Color fromProto(Color protocolor) {
   29754                   #        float alpha = protocolor.hasAlpha()
   29755                   #            ? protocolor.getAlpha().getValue()
   29756                   #            : 1.0;
   29757                   #
   29758                   #        return new java.awt.Color(
   29759                   #            protocolor.getRed(),
   29760                   #            protocolor.getGreen(),
   29761                   #            protocolor.getBlue(),
   29762                   #            alpha);
   29763                   #      }
   29764                   #
   29765                   #      public static Color toProto(java.awt.Color color) {
   29766                   #        float red = (float) color.getRed();
   29767                   #        float green = (float) color.getGreen();
   29768                   #        float blue = (float) color.getBlue();
   29769                   #        float denominator = 255.0;
   29770                   #        Color.Builder resultBuilder =
   29771                   #            Color
   29772                   #                .newBuilder()
   29773                   #                .setRed(red / denominator)
   29774                   #                .setGreen(green / denominator)
   29775                   #                .setBlue(blue / denominator);
   29776                   #        int alpha = color.getAlpha();
   29777                   #        if (alpha != 255) {
   29778                   #          result.setAlpha(
   29779                   #              FloatValue
   29780                   #                  .newBuilder()
   29781                   #                  .setValue(((float) alpha) / denominator)
   29782                   #                  .build());
   29783                   #        }
   29784                   #        return resultBuilder.build();
   29785                   #      }
   29786                   #      // ...
   29787                   #
   29788                   # Example (iOS / Obj-C):
   29789                   #
   29790                   #      // ...
   29791                   #      static UIColor* fromProto(Color* protocolor) {
   29792                   #         float red = [protocolor red];
   29793                   #         float green = [protocolor green];
   29794                   #         float blue = [protocolor blue];
   29795                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   29796                   #         float alpha = 1.0;
   29797                   #         if (alpha_wrapper != nil) {
   29798                   #           alpha = [alpha_wrapper value];
   29799                   #         }
   29800                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   29801                   #      }
   29802                   #
   29803                   #      static Color* toProto(UIColor* color) {
   29804                   #          CGFloat red, green, blue, alpha;
   29805                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   29806                   #            return nil;
   29807                   #          }
   29808                   #          Color* result = [Color alloc] init];
   29809                   #          [result setRed:red];
   29810                   #          [result setGreen:green];
   29811                   #          [result setBlue:blue];
   29812                   #          if (alpha <= 0.9999) {
   29813                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   29814                   #          }
   29815                   #          [result autorelease];
   29816                   #          return result;
   29817                   #     }
   29818                   #     // ...
   29819                   #
   29820                   #  Example (JavaScript):
   29821                   #
   29822                   #     // ...
   29823                   #
   29824                   #     var protoToCssColor = function(rgb_color) {
   29825                   #        var redFrac = rgb_color.red || 0.0;
   29826                   #        var greenFrac = rgb_color.green || 0.0;
   29827                   #        var blueFrac = rgb_color.blue || 0.0;
   29828                   #        var red = Math.floor(redFrac * 255);
   29829                   #        var green = Math.floor(greenFrac * 255);
   29830                   #        var blue = Math.floor(blueFrac * 255);
   29831                   #
   29832                   #        if (!('alpha' in rgb_color)) {
   29833                   #           return rgbToCssColor_(red, green, blue);
   29834                   #        }
   29835                   #
   29836                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   29837                   #        var rgbParams = [red, green, blue].join(',');
   29838                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   29839                   #     };
   29840                   #
   29841                   #     var rgbToCssColor_ = function(red, green, blue) {
   29842                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   29843                   #       var hexString = rgbNumber.toString(16);
   29844                   #       var missingZeros = 6 - hexString.length;
   29845                   #       var resultBuilder = ['#'];
   29846                   #       for (var i = 0; i < missingZeros; i++) {
   29847                   #          resultBuilder.push('0');
   29848                   #       }
   29849                   #       resultBuilder.push(hexString);
   29850                   #       return resultBuilder.join('');
   29851                   #     };
   29852                   #
   29853                   #     // ...
   29854                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   29855                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   29856                     # the final pixel color is defined by the equation:
   29857                     #
   29858                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   29859                     #
   29860                     # This means that a value of 1.0 corresponds to a solid color, whereas
   29861                     # a value of 0.0 corresponds to a completely transparent color. This
   29862                     # uses a wrapper message rather than a simple float scalar so that it is
   29863                     # possible to distinguish between a default value and the value being unset.
   29864                     # If omitted, this color object is to be rendered as a solid color
   29865                     # (as if the alpha value had been explicitly given with a value of 1.0).
   29866                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   29867                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   29868               },
   29869               "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   29870               "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   29871                   # Absent values indicate that the field isn't specified.
   29872                 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   29873                     # for simplicity of conversion to/from color representations in various
   29874                     # languages over compactness; for example, the fields of this representation
   29875                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   29876                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   29877                     # method in iOS; and, with just a little work, it can be easily formatted into
   29878                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   29879                     #
   29880                     # Example (Java):
   29881                     #
   29882                     #      import com.google.type.Color;
   29883                     #
   29884                     #      // ...
   29885                     #      public static java.awt.Color fromProto(Color protocolor) {
   29886                     #        float alpha = protocolor.hasAlpha()
   29887                     #            ? protocolor.getAlpha().getValue()
   29888                     #            : 1.0;
   29889                     #
   29890                     #        return new java.awt.Color(
   29891                     #            protocolor.getRed(),
   29892                     #            protocolor.getGreen(),
   29893                     #            protocolor.getBlue(),
   29894                     #            alpha);
   29895                     #      }
   29896                     #
   29897                     #      public static Color toProto(java.awt.Color color) {
   29898                     #        float red = (float) color.getRed();
   29899                     #        float green = (float) color.getGreen();
   29900                     #        float blue = (float) color.getBlue();
   29901                     #        float denominator = 255.0;
   29902                     #        Color.Builder resultBuilder =
   29903                     #            Color
   29904                     #                .newBuilder()
   29905                     #                .setRed(red / denominator)
   29906                     #                .setGreen(green / denominator)
   29907                     #                .setBlue(blue / denominator);
   29908                     #        int alpha = color.getAlpha();
   29909                     #        if (alpha != 255) {
   29910                     #          result.setAlpha(
   29911                     #              FloatValue
   29912                     #                  .newBuilder()
   29913                     #                  .setValue(((float) alpha) / denominator)
   29914                     #                  .build());
   29915                     #        }
   29916                     #        return resultBuilder.build();
   29917                     #      }
   29918                     #      // ...
   29919                     #
   29920                     # Example (iOS / Obj-C):
   29921                     #
   29922                     #      // ...
   29923                     #      static UIColor* fromProto(Color* protocolor) {
   29924                     #         float red = [protocolor red];
   29925                     #         float green = [protocolor green];
   29926                     #         float blue = [protocolor blue];
   29927                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   29928                     #         float alpha = 1.0;
   29929                     #         if (alpha_wrapper != nil) {
   29930                     #           alpha = [alpha_wrapper value];
   29931                     #         }
   29932                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   29933                     #      }
   29934                     #
   29935                     #      static Color* toProto(UIColor* color) {
   29936                     #          CGFloat red, green, blue, alpha;
   29937                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   29938                     #            return nil;
   29939                     #          }
   29940                     #          Color* result = [Color alloc] init];
   29941                     #          [result setRed:red];
   29942                     #          [result setGreen:green];
   29943                     #          [result setBlue:blue];
   29944                     #          if (alpha <= 0.9999) {
   29945                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   29946                     #          }
   29947                     #          [result autorelease];
   29948                     #          return result;
   29949                     #     }
   29950                     #     // ...
   29951                     #
   29952                     #  Example (JavaScript):
   29953                     #
   29954                     #     // ...
   29955                     #
   29956                     #     var protoToCssColor = function(rgb_color) {
   29957                     #        var redFrac = rgb_color.red || 0.0;
   29958                     #        var greenFrac = rgb_color.green || 0.0;
   29959                     #        var blueFrac = rgb_color.blue || 0.0;
   29960                     #        var red = Math.floor(redFrac * 255);
   29961                     #        var green = Math.floor(greenFrac * 255);
   29962                     #        var blue = Math.floor(blueFrac * 255);
   29963                     #
   29964                     #        if (!('alpha' in rgb_color)) {
   29965                     #           return rgbToCssColor_(red, green, blue);
   29966                     #        }
   29967                     #
   29968                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   29969                     #        var rgbParams = [red, green, blue].join(',');
   29970                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   29971                     #     };
   29972                     #
   29973                     #     var rgbToCssColor_ = function(red, green, blue) {
   29974                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   29975                     #       var hexString = rgbNumber.toString(16);
   29976                     #       var missingZeros = 6 - hexString.length;
   29977                     #       var resultBuilder = ['#'];
   29978                     #       for (var i = 0; i < missingZeros; i++) {
   29979                     #          resultBuilder.push('0');
   29980                     #       }
   29981                     #       resultBuilder.push(hexString);
   29982                     #       return resultBuilder.join('');
   29983                     #     };
   29984                     #
   29985                     #     // ...
   29986                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   29987                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   29988                       # the final pixel color is defined by the equation:
   29989                       #
   29990                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   29991                       #
   29992                       # This means that a value of 1.0 corresponds to a solid color, whereas
   29993                       # a value of 0.0 corresponds to a completely transparent color. This
   29994                       # uses a wrapper message rather than a simple float scalar so that it is
   29995                       # possible to distinguish between a default value and the value being unset.
   29996                       # If omitted, this color object is to be rendered as a solid color
   29997                       # (as if the alpha value had been explicitly given with a value of 1.0).
   29998                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   29999                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   30000                 },
   30001                 "bold": True or False, # True if the text is bold.
   30002                 "strikethrough": True or False, # True if the text has a strikethrough.
   30003                 "fontFamily": "A String", # The font family.
   30004                 "fontSize": 42, # The size of the font.
   30005                 "italic": True or False, # True if the text is italicized.
   30006                 "underline": True or False, # True if the text is underlined.
   30007               },
   30008               "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   30009                 "angle": 42, # The angle between the standard orientation and the desired orientation.
   30010                     # Measured in degrees. Valid values are between -90 and 90. Positive
   30011                     # angles are angled upwards, negative are angled downwards.
   30012                     #
   30013                     # Note: For LTR text direction positive angles are in the counterclockwise
   30014                     # direction, whereas for RTL they are in the clockwise direction
   30015                 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   30016                     # characters is unchanged.
   30017                     # For example:
   30018                     #
   30019                     #     | V |
   30020                     #     | e |
   30021                     #     | r |
   30022                     #     | t |
   30023                     #     | i |
   30024                     #     | c |
   30025                     #     | a |
   30026                     #     | l |
   30027               },
   30028               "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   30029               "borders": { # The borders of the cell. # The borders of the cell.
   30030                 "top": { # A border along a cell. # The top border of the cell.
   30031                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   30032                       # for simplicity of conversion to/from color representations in various
   30033                       # languages over compactness; for example, the fields of this representation
   30034                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   30035                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   30036                       # method in iOS; and, with just a little work, it can be easily formatted into
   30037                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   30038                       #
   30039                       # Example (Java):
   30040                       #
   30041                       #      import com.google.type.Color;
   30042                       #
   30043                       #      // ...
   30044                       #      public static java.awt.Color fromProto(Color protocolor) {
   30045                       #        float alpha = protocolor.hasAlpha()
   30046                       #            ? protocolor.getAlpha().getValue()
   30047                       #            : 1.0;
   30048                       #
   30049                       #        return new java.awt.Color(
   30050                       #            protocolor.getRed(),
   30051                       #            protocolor.getGreen(),
   30052                       #            protocolor.getBlue(),
   30053                       #            alpha);
   30054                       #      }
   30055                       #
   30056                       #      public static Color toProto(java.awt.Color color) {
   30057                       #        float red = (float) color.getRed();
   30058                       #        float green = (float) color.getGreen();
   30059                       #        float blue = (float) color.getBlue();
   30060                       #        float denominator = 255.0;
   30061                       #        Color.Builder resultBuilder =
   30062                       #            Color
   30063                       #                .newBuilder()
   30064                       #                .setRed(red / denominator)
   30065                       #                .setGreen(green / denominator)
   30066                       #                .setBlue(blue / denominator);
   30067                       #        int alpha = color.getAlpha();
   30068                       #        if (alpha != 255) {
   30069                       #          result.setAlpha(
   30070                       #              FloatValue
   30071                       #                  .newBuilder()
   30072                       #                  .setValue(((float) alpha) / denominator)
   30073                       #                  .build());
   30074                       #        }
   30075                       #        return resultBuilder.build();
   30076                       #      }
   30077                       #      // ...
   30078                       #
   30079                       # Example (iOS / Obj-C):
   30080                       #
   30081                       #      // ...
   30082                       #      static UIColor* fromProto(Color* protocolor) {
   30083                       #         float red = [protocolor red];
   30084                       #         float green = [protocolor green];
   30085                       #         float blue = [protocolor blue];
   30086                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   30087                       #         float alpha = 1.0;
   30088                       #         if (alpha_wrapper != nil) {
   30089                       #           alpha = [alpha_wrapper value];
   30090                       #         }
   30091                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   30092                       #      }
   30093                       #
   30094                       #      static Color* toProto(UIColor* color) {
   30095                       #          CGFloat red, green, blue, alpha;
   30096                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   30097                       #            return nil;
   30098                       #          }
   30099                       #          Color* result = [Color alloc] init];
   30100                       #          [result setRed:red];
   30101                       #          [result setGreen:green];
   30102                       #          [result setBlue:blue];
   30103                       #          if (alpha <= 0.9999) {
   30104                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   30105                       #          }
   30106                       #          [result autorelease];
   30107                       #          return result;
   30108                       #     }
   30109                       #     // ...
   30110                       #
   30111                       #  Example (JavaScript):
   30112                       #
   30113                       #     // ...
   30114                       #
   30115                       #     var protoToCssColor = function(rgb_color) {
   30116                       #        var redFrac = rgb_color.red || 0.0;
   30117                       #        var greenFrac = rgb_color.green || 0.0;
   30118                       #        var blueFrac = rgb_color.blue || 0.0;
   30119                       #        var red = Math.floor(redFrac * 255);
   30120                       #        var green = Math.floor(greenFrac * 255);
   30121                       #        var blue = Math.floor(blueFrac * 255);
   30122                       #
   30123                       #        if (!('alpha' in rgb_color)) {
   30124                       #           return rgbToCssColor_(red, green, blue);
   30125                       #        }
   30126                       #
   30127                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   30128                       #        var rgbParams = [red, green, blue].join(',');
   30129                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   30130                       #     };
   30131                       #
   30132                       #     var rgbToCssColor_ = function(red, green, blue) {
   30133                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   30134                       #       var hexString = rgbNumber.toString(16);
   30135                       #       var missingZeros = 6 - hexString.length;
   30136                       #       var resultBuilder = ['#'];
   30137                       #       for (var i = 0; i < missingZeros; i++) {
   30138                       #          resultBuilder.push('0');
   30139                       #       }
   30140                       #       resultBuilder.push(hexString);
   30141                       #       return resultBuilder.join('');
   30142                       #     };
   30143                       #
   30144                       #     // ...
   30145                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   30146                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   30147                         # the final pixel color is defined by the equation:
   30148                         #
   30149                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   30150                         #
   30151                         # This means that a value of 1.0 corresponds to a solid color, whereas
   30152                         # a value of 0.0 corresponds to a completely transparent color. This
   30153                         # uses a wrapper message rather than a simple float scalar so that it is
   30154                         # possible to distinguish between a default value and the value being unset.
   30155                         # If omitted, this color object is to be rendered as a solid color
   30156                         # (as if the alpha value had been explicitly given with a value of 1.0).
   30157                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   30158                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   30159                   },
   30160                   "width": 42, # The width of the border, in pixels.
   30161                       # Deprecated; the width is determined by the "style" field.
   30162                   "style": "A String", # The style of the border.
   30163                 },
   30164                 "right": { # A border along a cell. # The right border of the cell.
   30165                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   30166                       # for simplicity of conversion to/from color representations in various
   30167                       # languages over compactness; for example, the fields of this representation
   30168                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   30169                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   30170                       # method in iOS; and, with just a little work, it can be easily formatted into
   30171                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   30172                       #
   30173                       # Example (Java):
   30174                       #
   30175                       #      import com.google.type.Color;
   30176                       #
   30177                       #      // ...
   30178                       #      public static java.awt.Color fromProto(Color protocolor) {
   30179                       #        float alpha = protocolor.hasAlpha()
   30180                       #            ? protocolor.getAlpha().getValue()
   30181                       #            : 1.0;
   30182                       #
   30183                       #        return new java.awt.Color(
   30184                       #            protocolor.getRed(),
   30185                       #            protocolor.getGreen(),
   30186                       #            protocolor.getBlue(),
   30187                       #            alpha);
   30188                       #      }
   30189                       #
   30190                       #      public static Color toProto(java.awt.Color color) {
   30191                       #        float red = (float) color.getRed();
   30192                       #        float green = (float) color.getGreen();
   30193                       #        float blue = (float) color.getBlue();
   30194                       #        float denominator = 255.0;
   30195                       #        Color.Builder resultBuilder =
   30196                       #            Color
   30197                       #                .newBuilder()
   30198                       #                .setRed(red / denominator)
   30199                       #                .setGreen(green / denominator)
   30200                       #                .setBlue(blue / denominator);
   30201                       #        int alpha = color.getAlpha();
   30202                       #        if (alpha != 255) {
   30203                       #          result.setAlpha(
   30204                       #              FloatValue
   30205                       #                  .newBuilder()
   30206                       #                  .setValue(((float) alpha) / denominator)
   30207                       #                  .build());
   30208                       #        }
   30209                       #        return resultBuilder.build();
   30210                       #      }
   30211                       #      // ...
   30212                       #
   30213                       # Example (iOS / Obj-C):
   30214                       #
   30215                       #      // ...
   30216                       #      static UIColor* fromProto(Color* protocolor) {
   30217                       #         float red = [protocolor red];
   30218                       #         float green = [protocolor green];
   30219                       #         float blue = [protocolor blue];
   30220                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   30221                       #         float alpha = 1.0;
   30222                       #         if (alpha_wrapper != nil) {
   30223                       #           alpha = [alpha_wrapper value];
   30224                       #         }
   30225                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   30226                       #      }
   30227                       #
   30228                       #      static Color* toProto(UIColor* color) {
   30229                       #          CGFloat red, green, blue, alpha;
   30230                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   30231                       #            return nil;
   30232                       #          }
   30233                       #          Color* result = [Color alloc] init];
   30234                       #          [result setRed:red];
   30235                       #          [result setGreen:green];
   30236                       #          [result setBlue:blue];
   30237                       #          if (alpha <= 0.9999) {
   30238                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   30239                       #          }
   30240                       #          [result autorelease];
   30241                       #          return result;
   30242                       #     }
   30243                       #     // ...
   30244                       #
   30245                       #  Example (JavaScript):
   30246                       #
   30247                       #     // ...
   30248                       #
   30249                       #     var protoToCssColor = function(rgb_color) {
   30250                       #        var redFrac = rgb_color.red || 0.0;
   30251                       #        var greenFrac = rgb_color.green || 0.0;
   30252                       #        var blueFrac = rgb_color.blue || 0.0;
   30253                       #        var red = Math.floor(redFrac * 255);
   30254                       #        var green = Math.floor(greenFrac * 255);
   30255                       #        var blue = Math.floor(blueFrac * 255);
   30256                       #
   30257                       #        if (!('alpha' in rgb_color)) {
   30258                       #           return rgbToCssColor_(red, green, blue);
   30259                       #        }
   30260                       #
   30261                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   30262                       #        var rgbParams = [red, green, blue].join(',');
   30263                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   30264                       #     };
   30265                       #
   30266                       #     var rgbToCssColor_ = function(red, green, blue) {
   30267                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   30268                       #       var hexString = rgbNumber.toString(16);
   30269                       #       var missingZeros = 6 - hexString.length;
   30270                       #       var resultBuilder = ['#'];
   30271                       #       for (var i = 0; i < missingZeros; i++) {
   30272                       #          resultBuilder.push('0');
   30273                       #       }
   30274                       #       resultBuilder.push(hexString);
   30275                       #       return resultBuilder.join('');
   30276                       #     };
   30277                       #
   30278                       #     // ...
   30279                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   30280                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   30281                         # the final pixel color is defined by the equation:
   30282                         #
   30283                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   30284                         #
   30285                         # This means that a value of 1.0 corresponds to a solid color, whereas
   30286                         # a value of 0.0 corresponds to a completely transparent color. This
   30287                         # uses a wrapper message rather than a simple float scalar so that it is
   30288                         # possible to distinguish between a default value and the value being unset.
   30289                         # If omitted, this color object is to be rendered as a solid color
   30290                         # (as if the alpha value had been explicitly given with a value of 1.0).
   30291                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   30292                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   30293                   },
   30294                   "width": 42, # The width of the border, in pixels.
   30295                       # Deprecated; the width is determined by the "style" field.
   30296                   "style": "A String", # The style of the border.
   30297                 },
   30298                 "bottom": { # A border along a cell. # The bottom border of the cell.
   30299                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   30300                       # for simplicity of conversion to/from color representations in various
   30301                       # languages over compactness; for example, the fields of this representation
   30302                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   30303                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   30304                       # method in iOS; and, with just a little work, it can be easily formatted into
   30305                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   30306                       #
   30307                       # Example (Java):
   30308                       #
   30309                       #      import com.google.type.Color;
   30310                       #
   30311                       #      // ...
   30312                       #      public static java.awt.Color fromProto(Color protocolor) {
   30313                       #        float alpha = protocolor.hasAlpha()
   30314                       #            ? protocolor.getAlpha().getValue()
   30315                       #            : 1.0;
   30316                       #
   30317                       #        return new java.awt.Color(
   30318                       #            protocolor.getRed(),
   30319                       #            protocolor.getGreen(),
   30320                       #            protocolor.getBlue(),
   30321                       #            alpha);
   30322                       #      }
   30323                       #
   30324                       #      public static Color toProto(java.awt.Color color) {
   30325                       #        float red = (float) color.getRed();
   30326                       #        float green = (float) color.getGreen();
   30327                       #        float blue = (float) color.getBlue();
   30328                       #        float denominator = 255.0;
   30329                       #        Color.Builder resultBuilder =
   30330                       #            Color
   30331                       #                .newBuilder()
   30332                       #                .setRed(red / denominator)
   30333                       #                .setGreen(green / denominator)
   30334                       #                .setBlue(blue / denominator);
   30335                       #        int alpha = color.getAlpha();
   30336                       #        if (alpha != 255) {
   30337                       #          result.setAlpha(
   30338                       #              FloatValue
   30339                       #                  .newBuilder()
   30340                       #                  .setValue(((float) alpha) / denominator)
   30341                       #                  .build());
   30342                       #        }
   30343                       #        return resultBuilder.build();
   30344                       #      }
   30345                       #      // ...
   30346                       #
   30347                       # Example (iOS / Obj-C):
   30348                       #
   30349                       #      // ...
   30350                       #      static UIColor* fromProto(Color* protocolor) {
   30351                       #         float red = [protocolor red];
   30352                       #         float green = [protocolor green];
   30353                       #         float blue = [protocolor blue];
   30354                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   30355                       #         float alpha = 1.0;
   30356                       #         if (alpha_wrapper != nil) {
   30357                       #           alpha = [alpha_wrapper value];
   30358                       #         }
   30359                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   30360                       #      }
   30361                       #
   30362                       #      static Color* toProto(UIColor* color) {
   30363                       #          CGFloat red, green, blue, alpha;
   30364                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   30365                       #            return nil;
   30366                       #          }
   30367                       #          Color* result = [Color alloc] init];
   30368                       #          [result setRed:red];
   30369                       #          [result setGreen:green];
   30370                       #          [result setBlue:blue];
   30371                       #          if (alpha <= 0.9999) {
   30372                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   30373                       #          }
   30374                       #          [result autorelease];
   30375                       #          return result;
   30376                       #     }
   30377                       #     // ...
   30378                       #
   30379                       #  Example (JavaScript):
   30380                       #
   30381                       #     // ...
   30382                       #
   30383                       #     var protoToCssColor = function(rgb_color) {
   30384                       #        var redFrac = rgb_color.red || 0.0;
   30385                       #        var greenFrac = rgb_color.green || 0.0;
   30386                       #        var blueFrac = rgb_color.blue || 0.0;
   30387                       #        var red = Math.floor(redFrac * 255);
   30388                       #        var green = Math.floor(greenFrac * 255);
   30389                       #        var blue = Math.floor(blueFrac * 255);
   30390                       #
   30391                       #        if (!('alpha' in rgb_color)) {
   30392                       #           return rgbToCssColor_(red, green, blue);
   30393                       #        }
   30394                       #
   30395                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   30396                       #        var rgbParams = [red, green, blue].join(',');
   30397                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   30398                       #     };
   30399                       #
   30400                       #     var rgbToCssColor_ = function(red, green, blue) {
   30401                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   30402                       #       var hexString = rgbNumber.toString(16);
   30403                       #       var missingZeros = 6 - hexString.length;
   30404                       #       var resultBuilder = ['#'];
   30405                       #       for (var i = 0; i < missingZeros; i++) {
   30406                       #          resultBuilder.push('0');
   30407                       #       }
   30408                       #       resultBuilder.push(hexString);
   30409                       #       return resultBuilder.join('');
   30410                       #     };
   30411                       #
   30412                       #     // ...
   30413                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   30414                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   30415                         # the final pixel color is defined by the equation:
   30416                         #
   30417                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   30418                         #
   30419                         # This means that a value of 1.0 corresponds to a solid color, whereas
   30420                         # a value of 0.0 corresponds to a completely transparent color. This
   30421                         # uses a wrapper message rather than a simple float scalar so that it is
   30422                         # possible to distinguish between a default value and the value being unset.
   30423                         # If omitted, this color object is to be rendered as a solid color
   30424                         # (as if the alpha value had been explicitly given with a value of 1.0).
   30425                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   30426                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   30427                   },
   30428                   "width": 42, # The width of the border, in pixels.
   30429                       # Deprecated; the width is determined by the "style" field.
   30430                   "style": "A String", # The style of the border.
   30431                 },
   30432                 "left": { # A border along a cell. # The left border of the cell.
   30433                   "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   30434                       # for simplicity of conversion to/from color representations in various
   30435                       # languages over compactness; for example, the fields of this representation
   30436                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   30437                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   30438                       # method in iOS; and, with just a little work, it can be easily formatted into
   30439                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   30440                       #
   30441                       # Example (Java):
   30442                       #
   30443                       #      import com.google.type.Color;
   30444                       #
   30445                       #      // ...
   30446                       #      public static java.awt.Color fromProto(Color protocolor) {
   30447                       #        float alpha = protocolor.hasAlpha()
   30448                       #            ? protocolor.getAlpha().getValue()
   30449                       #            : 1.0;
   30450                       #
   30451                       #        return new java.awt.Color(
   30452                       #            protocolor.getRed(),
   30453                       #            protocolor.getGreen(),
   30454                       #            protocolor.getBlue(),
   30455                       #            alpha);
   30456                       #      }
   30457                       #
   30458                       #      public static Color toProto(java.awt.Color color) {
   30459                       #        float red = (float) color.getRed();
   30460                       #        float green = (float) color.getGreen();
   30461                       #        float blue = (float) color.getBlue();
   30462                       #        float denominator = 255.0;
   30463                       #        Color.Builder resultBuilder =
   30464                       #            Color
   30465                       #                .newBuilder()
   30466                       #                .setRed(red / denominator)
   30467                       #                .setGreen(green / denominator)
   30468                       #                .setBlue(blue / denominator);
   30469                       #        int alpha = color.getAlpha();
   30470                       #        if (alpha != 255) {
   30471                       #          result.setAlpha(
   30472                       #              FloatValue
   30473                       #                  .newBuilder()
   30474                       #                  .setValue(((float) alpha) / denominator)
   30475                       #                  .build());
   30476                       #        }
   30477                       #        return resultBuilder.build();
   30478                       #      }
   30479                       #      // ...
   30480                       #
   30481                       # Example (iOS / Obj-C):
   30482                       #
   30483                       #      // ...
   30484                       #      static UIColor* fromProto(Color* protocolor) {
   30485                       #         float red = [protocolor red];
   30486                       #         float green = [protocolor green];
   30487                       #         float blue = [protocolor blue];
   30488                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   30489                       #         float alpha = 1.0;
   30490                       #         if (alpha_wrapper != nil) {
   30491                       #           alpha = [alpha_wrapper value];
   30492                       #         }
   30493                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   30494                       #      }
   30495                       #
   30496                       #      static Color* toProto(UIColor* color) {
   30497                       #          CGFloat red, green, blue, alpha;
   30498                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   30499                       #            return nil;
   30500                       #          }
   30501                       #          Color* result = [Color alloc] init];
   30502                       #          [result setRed:red];
   30503                       #          [result setGreen:green];
   30504                       #          [result setBlue:blue];
   30505                       #          if (alpha <= 0.9999) {
   30506                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   30507                       #          }
   30508                       #          [result autorelease];
   30509                       #          return result;
   30510                       #     }
   30511                       #     // ...
   30512                       #
   30513                       #  Example (JavaScript):
   30514                       #
   30515                       #     // ...
   30516                       #
   30517                       #     var protoToCssColor = function(rgb_color) {
   30518                       #        var redFrac = rgb_color.red || 0.0;
   30519                       #        var greenFrac = rgb_color.green || 0.0;
   30520                       #        var blueFrac = rgb_color.blue || 0.0;
   30521                       #        var red = Math.floor(redFrac * 255);
   30522                       #        var green = Math.floor(greenFrac * 255);
   30523                       #        var blue = Math.floor(blueFrac * 255);
   30524                       #
   30525                       #        if (!('alpha' in rgb_color)) {
   30526                       #           return rgbToCssColor_(red, green, blue);
   30527                       #        }
   30528                       #
   30529                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   30530                       #        var rgbParams = [red, green, blue].join(',');
   30531                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   30532                       #     };
   30533                       #
   30534                       #     var rgbToCssColor_ = function(red, green, blue) {
   30535                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   30536                       #       var hexString = rgbNumber.toString(16);
   30537                       #       var missingZeros = 6 - hexString.length;
   30538                       #       var resultBuilder = ['#'];
   30539                       #       for (var i = 0; i < missingZeros; i++) {
   30540                       #          resultBuilder.push('0');
   30541                       #       }
   30542                       #       resultBuilder.push(hexString);
   30543                       #       return resultBuilder.join('');
   30544                       #     };
   30545                       #
   30546                       #     // ...
   30547                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   30548                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   30549                         # the final pixel color is defined by the equation:
   30550                         #
   30551                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   30552                         #
   30553                         # This means that a value of 1.0 corresponds to a solid color, whereas
   30554                         # a value of 0.0 corresponds to a completely transparent color. This
   30555                         # uses a wrapper message rather than a simple float scalar so that it is
   30556                         # possible to distinguish between a default value and the value being unset.
   30557                         # If omitted, this color object is to be rendered as a solid color
   30558                         # (as if the alpha value had been explicitly given with a value of 1.0).
   30559                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   30560                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   30561                   },
   30562                   "width": 42, # The width of the border, in pixels.
   30563                       # Deprecated; the width is determined by the "style" field.
   30564                   "style": "A String", # The style of the border.
   30565                 },
   30566               },
   30567               "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   30568             },
   30569           },
   30570           "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
   30571               # the interpolation points listed. The format of a cell will vary
   30572               # based on its contents as compared to the values of the interpolation
   30573               # points.
   30574             "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
   30575                 # These pin the gradient color scale according to the color,
   30576                 # type and value chosen.
   30577               "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   30578                   # for simplicity of conversion to/from color representations in various
   30579                   # languages over compactness; for example, the fields of this representation
   30580                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   30581                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   30582                   # method in iOS; and, with just a little work, it can be easily formatted into
   30583                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   30584                   #
   30585                   # Example (Java):
   30586                   #
   30587                   #      import com.google.type.Color;
   30588                   #
   30589                   #      // ...
   30590                   #      public static java.awt.Color fromProto(Color protocolor) {
   30591                   #        float alpha = protocolor.hasAlpha()
   30592                   #            ? protocolor.getAlpha().getValue()
   30593                   #            : 1.0;
   30594                   #
   30595                   #        return new java.awt.Color(
   30596                   #            protocolor.getRed(),
   30597                   #            protocolor.getGreen(),
   30598                   #            protocolor.getBlue(),
   30599                   #            alpha);
   30600                   #      }
   30601                   #
   30602                   #      public static Color toProto(java.awt.Color color) {
   30603                   #        float red = (float) color.getRed();
   30604                   #        float green = (float) color.getGreen();
   30605                   #        float blue = (float) color.getBlue();
   30606                   #        float denominator = 255.0;
   30607                   #        Color.Builder resultBuilder =
   30608                   #            Color
   30609                   #                .newBuilder()
   30610                   #                .setRed(red / denominator)
   30611                   #                .setGreen(green / denominator)
   30612                   #                .setBlue(blue / denominator);
   30613                   #        int alpha = color.getAlpha();
   30614                   #        if (alpha != 255) {
   30615                   #          result.setAlpha(
   30616                   #              FloatValue
   30617                   #                  .newBuilder()
   30618                   #                  .setValue(((float) alpha) / denominator)
   30619                   #                  .build());
   30620                   #        }
   30621                   #        return resultBuilder.build();
   30622                   #      }
   30623                   #      // ...
   30624                   #
   30625                   # Example (iOS / Obj-C):
   30626                   #
   30627                   #      // ...
   30628                   #      static UIColor* fromProto(Color* protocolor) {
   30629                   #         float red = [protocolor red];
   30630                   #         float green = [protocolor green];
   30631                   #         float blue = [protocolor blue];
   30632                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   30633                   #         float alpha = 1.0;
   30634                   #         if (alpha_wrapper != nil) {
   30635                   #           alpha = [alpha_wrapper value];
   30636                   #         }
   30637                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   30638                   #      }
   30639                   #
   30640                   #      static Color* toProto(UIColor* color) {
   30641                   #          CGFloat red, green, blue, alpha;
   30642                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   30643                   #            return nil;
   30644                   #          }
   30645                   #          Color* result = [Color alloc] init];
   30646                   #          [result setRed:red];
   30647                   #          [result setGreen:green];
   30648                   #          [result setBlue:blue];
   30649                   #          if (alpha <= 0.9999) {
   30650                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   30651                   #          }
   30652                   #          [result autorelease];
   30653                   #          return result;
   30654                   #     }
   30655                   #     // ...
   30656                   #
   30657                   #  Example (JavaScript):
   30658                   #
   30659                   #     // ...
   30660                   #
   30661                   #     var protoToCssColor = function(rgb_color) {
   30662                   #        var redFrac = rgb_color.red || 0.0;
   30663                   #        var greenFrac = rgb_color.green || 0.0;
   30664                   #        var blueFrac = rgb_color.blue || 0.0;
   30665                   #        var red = Math.floor(redFrac * 255);
   30666                   #        var green = Math.floor(greenFrac * 255);
   30667                   #        var blue = Math.floor(blueFrac * 255);
   30668                   #
   30669                   #        if (!('alpha' in rgb_color)) {
   30670                   #           return rgbToCssColor_(red, green, blue);
   30671                   #        }
   30672                   #
   30673                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   30674                   #        var rgbParams = [red, green, blue].join(',');
   30675                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   30676                   #     };
   30677                   #
   30678                   #     var rgbToCssColor_ = function(red, green, blue) {
   30679                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   30680                   #       var hexString = rgbNumber.toString(16);
   30681                   #       var missingZeros = 6 - hexString.length;
   30682                   #       var resultBuilder = ['#'];
   30683                   #       for (var i = 0; i < missingZeros; i++) {
   30684                   #          resultBuilder.push('0');
   30685                   #       }
   30686                   #       resultBuilder.push(hexString);
   30687                   #       return resultBuilder.join('');
   30688                   #     };
   30689                   #
   30690                   #     // ...
   30691                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   30692                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   30693                     # the final pixel color is defined by the equation:
   30694                     #
   30695                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   30696                     #
   30697                     # This means that a value of 1.0 corresponds to a solid color, whereas
   30698                     # a value of 0.0 corresponds to a completely transparent color. This
   30699                     # uses a wrapper message rather than a simple float scalar so that it is
   30700                     # possible to distinguish between a default value and the value being unset.
   30701                     # If omitted, this color object is to be rendered as a solid color
   30702                     # (as if the alpha value had been explicitly given with a value of 1.0).
   30703                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   30704                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   30705               },
   30706               "type": "A String", # How the value should be interpreted.
   30707               "value": "A String", # The value this interpolation point uses.  May be a formula.
   30708                   # Unused if type is MIN or
   30709                   # MAX.
   30710             },
   30711             "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
   30712                 # These pin the gradient color scale according to the color,
   30713                 # type and value chosen.
   30714               "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   30715                   # for simplicity of conversion to/from color representations in various
   30716                   # languages over compactness; for example, the fields of this representation
   30717                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   30718                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   30719                   # method in iOS; and, with just a little work, it can be easily formatted into
   30720                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   30721                   #
   30722                   # Example (Java):
   30723                   #
   30724                   #      import com.google.type.Color;
   30725                   #
   30726                   #      // ...
   30727                   #      public static java.awt.Color fromProto(Color protocolor) {
   30728                   #        float alpha = protocolor.hasAlpha()
   30729                   #            ? protocolor.getAlpha().getValue()
   30730                   #            : 1.0;
   30731                   #
   30732                   #        return new java.awt.Color(
   30733                   #            protocolor.getRed(),
   30734                   #            protocolor.getGreen(),
   30735                   #            protocolor.getBlue(),
   30736                   #            alpha);
   30737                   #      }
   30738                   #
   30739                   #      public static Color toProto(java.awt.Color color) {
   30740                   #        float red = (float) color.getRed();
   30741                   #        float green = (float) color.getGreen();
   30742                   #        float blue = (float) color.getBlue();
   30743                   #        float denominator = 255.0;
   30744                   #        Color.Builder resultBuilder =
   30745                   #            Color
   30746                   #                .newBuilder()
   30747                   #                .setRed(red / denominator)
   30748                   #                .setGreen(green / denominator)
   30749                   #                .setBlue(blue / denominator);
   30750                   #        int alpha = color.getAlpha();
   30751                   #        if (alpha != 255) {
   30752                   #          result.setAlpha(
   30753                   #              FloatValue
   30754                   #                  .newBuilder()
   30755                   #                  .setValue(((float) alpha) / denominator)
   30756                   #                  .build());
   30757                   #        }
   30758                   #        return resultBuilder.build();
   30759                   #      }
   30760                   #      // ...
   30761                   #
   30762                   # Example (iOS / Obj-C):
   30763                   #
   30764                   #      // ...
   30765                   #      static UIColor* fromProto(Color* protocolor) {
   30766                   #         float red = [protocolor red];
   30767                   #         float green = [protocolor green];
   30768                   #         float blue = [protocolor blue];
   30769                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   30770                   #         float alpha = 1.0;
   30771                   #         if (alpha_wrapper != nil) {
   30772                   #           alpha = [alpha_wrapper value];
   30773                   #         }
   30774                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   30775                   #      }
   30776                   #
   30777                   #      static Color* toProto(UIColor* color) {
   30778                   #          CGFloat red, green, blue, alpha;
   30779                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   30780                   #            return nil;
   30781                   #          }
   30782                   #          Color* result = [Color alloc] init];
   30783                   #          [result setRed:red];
   30784                   #          [result setGreen:green];
   30785                   #          [result setBlue:blue];
   30786                   #          if (alpha <= 0.9999) {
   30787                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   30788                   #          }
   30789                   #          [result autorelease];
   30790                   #          return result;
   30791                   #     }
   30792                   #     // ...
   30793                   #
   30794                   #  Example (JavaScript):
   30795                   #
   30796                   #     // ...
   30797                   #
   30798                   #     var protoToCssColor = function(rgb_color) {
   30799                   #        var redFrac = rgb_color.red || 0.0;
   30800                   #        var greenFrac = rgb_color.green || 0.0;
   30801                   #        var blueFrac = rgb_color.blue || 0.0;
   30802                   #        var red = Math.floor(redFrac * 255);
   30803                   #        var green = Math.floor(greenFrac * 255);
   30804                   #        var blue = Math.floor(blueFrac * 255);
   30805                   #
   30806                   #        if (!('alpha' in rgb_color)) {
   30807                   #           return rgbToCssColor_(red, green, blue);
   30808                   #        }
   30809                   #
   30810                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   30811                   #        var rgbParams = [red, green, blue].join(',');
   30812                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   30813                   #     };
   30814                   #
   30815                   #     var rgbToCssColor_ = function(red, green, blue) {
   30816                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   30817                   #       var hexString = rgbNumber.toString(16);
   30818                   #       var missingZeros = 6 - hexString.length;
   30819                   #       var resultBuilder = ['#'];
   30820                   #       for (var i = 0; i < missingZeros; i++) {
   30821                   #          resultBuilder.push('0');
   30822                   #       }
   30823                   #       resultBuilder.push(hexString);
   30824                   #       return resultBuilder.join('');
   30825                   #     };
   30826                   #
   30827                   #     // ...
   30828                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   30829                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   30830                     # the final pixel color is defined by the equation:
   30831                     #
   30832                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   30833                     #
   30834                     # This means that a value of 1.0 corresponds to a solid color, whereas
   30835                     # a value of 0.0 corresponds to a completely transparent color. This
   30836                     # uses a wrapper message rather than a simple float scalar so that it is
   30837                     # possible to distinguish between a default value and the value being unset.
   30838                     # If omitted, this color object is to be rendered as a solid color
   30839                     # (as if the alpha value had been explicitly given with a value of 1.0).
   30840                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   30841                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   30842               },
   30843               "type": "A String", # How the value should be interpreted.
   30844               "value": "A String", # The value this interpolation point uses.  May be a formula.
   30845                   # Unused if type is MIN or
   30846                   # MAX.
   30847             },
   30848             "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
   30849                 # These pin the gradient color scale according to the color,
   30850                 # type and value chosen.
   30851               "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   30852                   # for simplicity of conversion to/from color representations in various
   30853                   # languages over compactness; for example, the fields of this representation
   30854                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   30855                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   30856                   # method in iOS; and, with just a little work, it can be easily formatted into
   30857                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   30858                   #
   30859                   # Example (Java):
   30860                   #
   30861                   #      import com.google.type.Color;
   30862                   #
   30863                   #      // ...
   30864                   #      public static java.awt.Color fromProto(Color protocolor) {
   30865                   #        float alpha = protocolor.hasAlpha()
   30866                   #            ? protocolor.getAlpha().getValue()
   30867                   #            : 1.0;
   30868                   #
   30869                   #        return new java.awt.Color(
   30870                   #            protocolor.getRed(),
   30871                   #            protocolor.getGreen(),
   30872                   #            protocolor.getBlue(),
   30873                   #            alpha);
   30874                   #      }
   30875                   #
   30876                   #      public static Color toProto(java.awt.Color color) {
   30877                   #        float red = (float) color.getRed();
   30878                   #        float green = (float) color.getGreen();
   30879                   #        float blue = (float) color.getBlue();
   30880                   #        float denominator = 255.0;
   30881                   #        Color.Builder resultBuilder =
   30882                   #            Color
   30883                   #                .newBuilder()
   30884                   #                .setRed(red / denominator)
   30885                   #                .setGreen(green / denominator)
   30886                   #                .setBlue(blue / denominator);
   30887                   #        int alpha = color.getAlpha();
   30888                   #        if (alpha != 255) {
   30889                   #          result.setAlpha(
   30890                   #              FloatValue
   30891                   #                  .newBuilder()
   30892                   #                  .setValue(((float) alpha) / denominator)
   30893                   #                  .build());
   30894                   #        }
   30895                   #        return resultBuilder.build();
   30896                   #      }
   30897                   #      // ...
   30898                   #
   30899                   # Example (iOS / Obj-C):
   30900                   #
   30901                   #      // ...
   30902                   #      static UIColor* fromProto(Color* protocolor) {
   30903                   #         float red = [protocolor red];
   30904                   #         float green = [protocolor green];
   30905                   #         float blue = [protocolor blue];
   30906                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   30907                   #         float alpha = 1.0;
   30908                   #         if (alpha_wrapper != nil) {
   30909                   #           alpha = [alpha_wrapper value];
   30910                   #         }
   30911                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   30912                   #      }
   30913                   #
   30914                   #      static Color* toProto(UIColor* color) {
   30915                   #          CGFloat red, green, blue, alpha;
   30916                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   30917                   #            return nil;
   30918                   #          }
   30919                   #          Color* result = [Color alloc] init];
   30920                   #          [result setRed:red];
   30921                   #          [result setGreen:green];
   30922                   #          [result setBlue:blue];
   30923                   #          if (alpha <= 0.9999) {
   30924                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   30925                   #          }
   30926                   #          [result autorelease];
   30927                   #          return result;
   30928                   #     }
   30929                   #     // ...
   30930                   #
   30931                   #  Example (JavaScript):
   30932                   #
   30933                   #     // ...
   30934                   #
   30935                   #     var protoToCssColor = function(rgb_color) {
   30936                   #        var redFrac = rgb_color.red || 0.0;
   30937                   #        var greenFrac = rgb_color.green || 0.0;
   30938                   #        var blueFrac = rgb_color.blue || 0.0;
   30939                   #        var red = Math.floor(redFrac * 255);
   30940                   #        var green = Math.floor(greenFrac * 255);
   30941                   #        var blue = Math.floor(blueFrac * 255);
   30942                   #
   30943                   #        if (!('alpha' in rgb_color)) {
   30944                   #           return rgbToCssColor_(red, green, blue);
   30945                   #        }
   30946                   #
   30947                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   30948                   #        var rgbParams = [red, green, blue].join(',');
   30949                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   30950                   #     };
   30951                   #
   30952                   #     var rgbToCssColor_ = function(red, green, blue) {
   30953                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   30954                   #       var hexString = rgbNumber.toString(16);
   30955                   #       var missingZeros = 6 - hexString.length;
   30956                   #       var resultBuilder = ['#'];
   30957                   #       for (var i = 0; i < missingZeros; i++) {
   30958                   #          resultBuilder.push('0');
   30959                   #       }
   30960                   #       resultBuilder.push(hexString);
   30961                   #       return resultBuilder.join('');
   30962                   #     };
   30963                   #
   30964                   #     // ...
   30965                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   30966                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   30967                     # the final pixel color is defined by the equation:
   30968                     #
   30969                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   30970                     #
   30971                     # This means that a value of 1.0 corresponds to a solid color, whereas
   30972                     # a value of 0.0 corresponds to a completely transparent color. This
   30973                     # uses a wrapper message rather than a simple float scalar so that it is
   30974                     # possible to distinguish between a default value and the value being unset.
   30975                     # If omitted, this color object is to be rendered as a solid color
   30976                     # (as if the alpha value had been explicitly given with a value of 1.0).
   30977                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   30978                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   30979               },
   30980               "type": "A String", # How the value should be interpreted.
   30981               "value": "A String", # The value this interpolation point uses.  May be a formula.
   30982                   # Unused if type is MIN or
   30983                   # MAX.
   30984             },
   30985           },
   30986         },
   30987       ],
   30988       "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet.
   30989         { # A banded (alternating colors) range in a sheet.
   30990           "range": { # A range on a sheet. # The range over which these properties are applied.
   30991               # All indexes are zero-based.
   30992               # Indexes are half open, e.g the start index is inclusive
   30993               # and the end index is exclusive -- [start_index, end_index).
   30994               # Missing indexes indicate the range is unbounded on that side.
   30995               #
   30996               # For example, if `"Sheet1"` is sheet ID 0, then:
   30997               #
   30998               #   `Sheet1!A1:A1 == sheet_id: 0,
   30999               #                   start_row_index: 0, end_row_index: 1,
   31000               #                   start_column_index: 0, end_column_index: 1`
   31001               #
   31002               #   `Sheet1!A3:B4 == sheet_id: 0,
   31003               #                   start_row_index: 2, end_row_index: 4,
   31004               #                   start_column_index: 0, end_column_index: 2`
   31005               #
   31006               #   `Sheet1!A:B == sheet_id: 0,
   31007               #                 start_column_index: 0, end_column_index: 2`
   31008               #
   31009               #   `Sheet1!A5:B == sheet_id: 0,
   31010               #                  start_row_index: 4,
   31011               #                  start_column_index: 0, end_column_index: 2`
   31012               #
   31013               #   `Sheet1 == sheet_id:0`
   31014               #
   31015               # The start index must always be less than or equal to the end index.
   31016               # If the start index equals the end index, then the range is empty.
   31017               # Empty ranges are typically not meaningful and are usually rendered in the
   31018               # UI as `#REF!`.
   31019             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   31020             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   31021             "sheetId": 42, # The sheet this range is on.
   31022             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   31023             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   31024           },
   31025           "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
   31026               # by-column basis throughout all the columns in the range. At least one of
   31027               # row_properties or column_properties must be specified.
   31028               # BandedRange.row_properties and BandedRange.column_properties are
   31029               # set, the fill colors are applied to cells according to the following rules:
   31030               #
   31031               # * header_color and footer_color take priority over band colors.
   31032               # * first_band_color takes priority over second_band_color.
   31033               # * row_properties takes priority over column_properties.
   31034               #
   31035               # For example, the first row color takes priority over the first column
   31036               # color, but the first column color takes priority over the second row color.
   31037               # Similarly, the row header takes priority over the column header in the
   31038               # top left cell, but the column header takes priority over the first row
   31039               # color if the row header is not set.
   31040             "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   31041                 # for simplicity of conversion to/from color representations in various
   31042                 # languages over compactness; for example, the fields of this representation
   31043                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   31044                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   31045                 # method in iOS; and, with just a little work, it can be easily formatted into
   31046                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   31047                 #
   31048                 # Example (Java):
   31049                 #
   31050                 #      import com.google.type.Color;
   31051                 #
   31052                 #      // ...
   31053                 #      public static java.awt.Color fromProto(Color protocolor) {
   31054                 #        float alpha = protocolor.hasAlpha()
   31055                 #            ? protocolor.getAlpha().getValue()
   31056                 #            : 1.0;
   31057                 #
   31058                 #        return new java.awt.Color(
   31059                 #            protocolor.getRed(),
   31060                 #            protocolor.getGreen(),
   31061                 #            protocolor.getBlue(),
   31062                 #            alpha);
   31063                 #      }
   31064                 #
   31065                 #      public static Color toProto(java.awt.Color color) {
   31066                 #        float red = (float) color.getRed();
   31067                 #        float green = (float) color.getGreen();
   31068                 #        float blue = (float) color.getBlue();
   31069                 #        float denominator = 255.0;
   31070                 #        Color.Builder resultBuilder =
   31071                 #            Color
   31072                 #                .newBuilder()
   31073                 #                .setRed(red / denominator)
   31074                 #                .setGreen(green / denominator)
   31075                 #                .setBlue(blue / denominator);
   31076                 #        int alpha = color.getAlpha();
   31077                 #        if (alpha != 255) {
   31078                 #          result.setAlpha(
   31079                 #              FloatValue
   31080                 #                  .newBuilder()
   31081                 #                  .setValue(((float) alpha) / denominator)
   31082                 #                  .build());
   31083                 #        }
   31084                 #        return resultBuilder.build();
   31085                 #      }
   31086                 #      // ...
   31087                 #
   31088                 # Example (iOS / Obj-C):
   31089                 #
   31090                 #      // ...
   31091                 #      static UIColor* fromProto(Color* protocolor) {
   31092                 #         float red = [protocolor red];
   31093                 #         float green = [protocolor green];
   31094                 #         float blue = [protocolor blue];
   31095                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   31096                 #         float alpha = 1.0;
   31097                 #         if (alpha_wrapper != nil) {
   31098                 #           alpha = [alpha_wrapper value];
   31099                 #         }
   31100                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   31101                 #      }
   31102                 #
   31103                 #      static Color* toProto(UIColor* color) {
   31104                 #          CGFloat red, green, blue, alpha;
   31105                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   31106                 #            return nil;
   31107                 #          }
   31108                 #          Color* result = [Color alloc] init];
   31109                 #          [result setRed:red];
   31110                 #          [result setGreen:green];
   31111                 #          [result setBlue:blue];
   31112                 #          if (alpha <= 0.9999) {
   31113                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   31114                 #          }
   31115                 #          [result autorelease];
   31116                 #          return result;
   31117                 #     }
   31118                 #     // ...
   31119                 #
   31120                 #  Example (JavaScript):
   31121                 #
   31122                 #     // ...
   31123                 #
   31124                 #     var protoToCssColor = function(rgb_color) {
   31125                 #        var redFrac = rgb_color.red || 0.0;
   31126                 #        var greenFrac = rgb_color.green || 0.0;
   31127                 #        var blueFrac = rgb_color.blue || 0.0;
   31128                 #        var red = Math.floor(redFrac * 255);
   31129                 #        var green = Math.floor(greenFrac * 255);
   31130                 #        var blue = Math.floor(blueFrac * 255);
   31131                 #
   31132                 #        if (!('alpha' in rgb_color)) {
   31133                 #           return rgbToCssColor_(red, green, blue);
   31134                 #        }
   31135                 #
   31136                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   31137                 #        var rgbParams = [red, green, blue].join(',');
   31138                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   31139                 #     };
   31140                 #
   31141                 #     var rgbToCssColor_ = function(red, green, blue) {
   31142                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   31143                 #       var hexString = rgbNumber.toString(16);
   31144                 #       var missingZeros = 6 - hexString.length;
   31145                 #       var resultBuilder = ['#'];
   31146                 #       for (var i = 0; i < missingZeros; i++) {
   31147                 #          resultBuilder.push('0');
   31148                 #       }
   31149                 #       resultBuilder.push(hexString);
   31150                 #       return resultBuilder.join('');
   31151                 #     };
   31152                 #
   31153                 #     // ...
   31154               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   31155               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   31156                   # the final pixel color is defined by the equation:
   31157                   #
   31158                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   31159                   #
   31160                   # This means that a value of 1.0 corresponds to a solid color, whereas
   31161                   # a value of 0.0 corresponds to a completely transparent color. This
   31162                   # uses a wrapper message rather than a simple float scalar so that it is
   31163                   # possible to distinguish between a default value and the value being unset.
   31164                   # If omitted, this color object is to be rendered as a solid color
   31165                   # (as if the alpha value had been explicitly given with a value of 1.0).
   31166               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   31167               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   31168             },
   31169             "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   31170                 # row or column will be filled with this color and the colors will
   31171                 # alternate between first_band_color and second_band_color starting
   31172                 # from the second row or column. Otherwise, the first row or column will be
   31173                 # filled with first_band_color and the colors will proceed to alternate
   31174                 # as they normally would.
   31175                 # for simplicity of conversion to/from color representations in various
   31176                 # languages over compactness; for example, the fields of this representation
   31177                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   31178                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   31179                 # method in iOS; and, with just a little work, it can be easily formatted into
   31180                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   31181                 #
   31182                 # Example (Java):
   31183                 #
   31184                 #      import com.google.type.Color;
   31185                 #
   31186                 #      // ...
   31187                 #      public static java.awt.Color fromProto(Color protocolor) {
   31188                 #        float alpha = protocolor.hasAlpha()
   31189                 #            ? protocolor.getAlpha().getValue()
   31190                 #            : 1.0;
   31191                 #
   31192                 #        return new java.awt.Color(
   31193                 #            protocolor.getRed(),
   31194                 #            protocolor.getGreen(),
   31195                 #            protocolor.getBlue(),
   31196                 #            alpha);
   31197                 #      }
   31198                 #
   31199                 #      public static Color toProto(java.awt.Color color) {
   31200                 #        float red = (float) color.getRed();
   31201                 #        float green = (float) color.getGreen();
   31202                 #        float blue = (float) color.getBlue();
   31203                 #        float denominator = 255.0;
   31204                 #        Color.Builder resultBuilder =
   31205                 #            Color
   31206                 #                .newBuilder()
   31207                 #                .setRed(red / denominator)
   31208                 #                .setGreen(green / denominator)
   31209                 #                .setBlue(blue / denominator);
   31210                 #        int alpha = color.getAlpha();
   31211                 #        if (alpha != 255) {
   31212                 #          result.setAlpha(
   31213                 #              FloatValue
   31214                 #                  .newBuilder()
   31215                 #                  .setValue(((float) alpha) / denominator)
   31216                 #                  .build());
   31217                 #        }
   31218                 #        return resultBuilder.build();
   31219                 #      }
   31220                 #      // ...
   31221                 #
   31222                 # Example (iOS / Obj-C):
   31223                 #
   31224                 #      // ...
   31225                 #      static UIColor* fromProto(Color* protocolor) {
   31226                 #         float red = [protocolor red];
   31227                 #         float green = [protocolor green];
   31228                 #         float blue = [protocolor blue];
   31229                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   31230                 #         float alpha = 1.0;
   31231                 #         if (alpha_wrapper != nil) {
   31232                 #           alpha = [alpha_wrapper value];
   31233                 #         }
   31234                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   31235                 #      }
   31236                 #
   31237                 #      static Color* toProto(UIColor* color) {
   31238                 #          CGFloat red, green, blue, alpha;
   31239                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   31240                 #            return nil;
   31241                 #          }
   31242                 #          Color* result = [Color alloc] init];
   31243                 #          [result setRed:red];
   31244                 #          [result setGreen:green];
   31245                 #          [result setBlue:blue];
   31246                 #          if (alpha <= 0.9999) {
   31247                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   31248                 #          }
   31249                 #          [result autorelease];
   31250                 #          return result;
   31251                 #     }
   31252                 #     // ...
   31253                 #
   31254                 #  Example (JavaScript):
   31255                 #
   31256                 #     // ...
   31257                 #
   31258                 #     var protoToCssColor = function(rgb_color) {
   31259                 #        var redFrac = rgb_color.red || 0.0;
   31260                 #        var greenFrac = rgb_color.green || 0.0;
   31261                 #        var blueFrac = rgb_color.blue || 0.0;
   31262                 #        var red = Math.floor(redFrac * 255);
   31263                 #        var green = Math.floor(greenFrac * 255);
   31264                 #        var blue = Math.floor(blueFrac * 255);
   31265                 #
   31266                 #        if (!('alpha' in rgb_color)) {
   31267                 #           return rgbToCssColor_(red, green, blue);
   31268                 #        }
   31269                 #
   31270                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   31271                 #        var rgbParams = [red, green, blue].join(',');
   31272                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   31273                 #     };
   31274                 #
   31275                 #     var rgbToCssColor_ = function(red, green, blue) {
   31276                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   31277                 #       var hexString = rgbNumber.toString(16);
   31278                 #       var missingZeros = 6 - hexString.length;
   31279                 #       var resultBuilder = ['#'];
   31280                 #       for (var i = 0; i < missingZeros; i++) {
   31281                 #          resultBuilder.push('0');
   31282                 #       }
   31283                 #       resultBuilder.push(hexString);
   31284                 #       return resultBuilder.join('');
   31285                 #     };
   31286                 #
   31287                 #     // ...
   31288               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   31289               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   31290                   # the final pixel color is defined by the equation:
   31291                   #
   31292                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   31293                   #
   31294                   # This means that a value of 1.0 corresponds to a solid color, whereas
   31295                   # a value of 0.0 corresponds to a completely transparent color. This
   31296                   # uses a wrapper message rather than a simple float scalar so that it is
   31297                   # possible to distinguish between a default value and the value being unset.
   31298                   # If omitted, this color object is to be rendered as a solid color
   31299                   # (as if the alpha value had been explicitly given with a value of 1.0).
   31300               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   31301               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   31302             },
   31303             "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   31304                 # row or column will be filled with either first_band_color or
   31305                 # second_band_color, depending on the color of the previous row or
   31306                 # column.
   31307                 # for simplicity of conversion to/from color representations in various
   31308                 # languages over compactness; for example, the fields of this representation
   31309                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   31310                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   31311                 # method in iOS; and, with just a little work, it can be easily formatted into
   31312                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   31313                 #
   31314                 # Example (Java):
   31315                 #
   31316                 #      import com.google.type.Color;
   31317                 #
   31318                 #      // ...
   31319                 #      public static java.awt.Color fromProto(Color protocolor) {
   31320                 #        float alpha = protocolor.hasAlpha()
   31321                 #            ? protocolor.getAlpha().getValue()
   31322                 #            : 1.0;
   31323                 #
   31324                 #        return new java.awt.Color(
   31325                 #            protocolor.getRed(),
   31326                 #            protocolor.getGreen(),
   31327                 #            protocolor.getBlue(),
   31328                 #            alpha);
   31329                 #      }
   31330                 #
   31331                 #      public static Color toProto(java.awt.Color color) {
   31332                 #        float red = (float) color.getRed();
   31333                 #        float green = (float) color.getGreen();
   31334                 #        float blue = (float) color.getBlue();
   31335                 #        float denominator = 255.0;
   31336                 #        Color.Builder resultBuilder =
   31337                 #            Color
   31338                 #                .newBuilder()
   31339                 #                .setRed(red / denominator)
   31340                 #                .setGreen(green / denominator)
   31341                 #                .setBlue(blue / denominator);
   31342                 #        int alpha = color.getAlpha();
   31343                 #        if (alpha != 255) {
   31344                 #          result.setAlpha(
   31345                 #              FloatValue
   31346                 #                  .newBuilder()
   31347                 #                  .setValue(((float) alpha) / denominator)
   31348                 #                  .build());
   31349                 #        }
   31350                 #        return resultBuilder.build();
   31351                 #      }
   31352                 #      // ...
   31353                 #
   31354                 # Example (iOS / Obj-C):
   31355                 #
   31356                 #      // ...
   31357                 #      static UIColor* fromProto(Color* protocolor) {
   31358                 #         float red = [protocolor red];
   31359                 #         float green = [protocolor green];
   31360                 #         float blue = [protocolor blue];
   31361                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   31362                 #         float alpha = 1.0;
   31363                 #         if (alpha_wrapper != nil) {
   31364                 #           alpha = [alpha_wrapper value];
   31365                 #         }
   31366                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   31367                 #      }
   31368                 #
   31369                 #      static Color* toProto(UIColor* color) {
   31370                 #          CGFloat red, green, blue, alpha;
   31371                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   31372                 #            return nil;
   31373                 #          }
   31374                 #          Color* result = [Color alloc] init];
   31375                 #          [result setRed:red];
   31376                 #          [result setGreen:green];
   31377                 #          [result setBlue:blue];
   31378                 #          if (alpha <= 0.9999) {
   31379                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   31380                 #          }
   31381                 #          [result autorelease];
   31382                 #          return result;
   31383                 #     }
   31384                 #     // ...
   31385                 #
   31386                 #  Example (JavaScript):
   31387                 #
   31388                 #     // ...
   31389                 #
   31390                 #     var protoToCssColor = function(rgb_color) {
   31391                 #        var redFrac = rgb_color.red || 0.0;
   31392                 #        var greenFrac = rgb_color.green || 0.0;
   31393                 #        var blueFrac = rgb_color.blue || 0.0;
   31394                 #        var red = Math.floor(redFrac * 255);
   31395                 #        var green = Math.floor(greenFrac * 255);
   31396                 #        var blue = Math.floor(blueFrac * 255);
   31397                 #
   31398                 #        if (!('alpha' in rgb_color)) {
   31399                 #           return rgbToCssColor_(red, green, blue);
   31400                 #        }
   31401                 #
   31402                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   31403                 #        var rgbParams = [red, green, blue].join(',');
   31404                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   31405                 #     };
   31406                 #
   31407                 #     var rgbToCssColor_ = function(red, green, blue) {
   31408                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   31409                 #       var hexString = rgbNumber.toString(16);
   31410                 #       var missingZeros = 6 - hexString.length;
   31411                 #       var resultBuilder = ['#'];
   31412                 #       for (var i = 0; i < missingZeros; i++) {
   31413                 #          resultBuilder.push('0');
   31414                 #       }
   31415                 #       resultBuilder.push(hexString);
   31416                 #       return resultBuilder.join('');
   31417                 #     };
   31418                 #
   31419                 #     // ...
   31420               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   31421               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   31422                   # the final pixel color is defined by the equation:
   31423                   #
   31424                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   31425                   #
   31426                   # This means that a value of 1.0 corresponds to a solid color, whereas
   31427                   # a value of 0.0 corresponds to a completely transparent color. This
   31428                   # uses a wrapper message rather than a simple float scalar so that it is
   31429                   # possible to distinguish between a default value and the value being unset.
   31430                   # If omitted, this color object is to be rendered as a solid color
   31431                   # (as if the alpha value had been explicitly given with a value of 1.0).
   31432               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   31433               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   31434             },
   31435             "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   31436                 # for simplicity of conversion to/from color representations in various
   31437                 # languages over compactness; for example, the fields of this representation
   31438                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   31439                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   31440                 # method in iOS; and, with just a little work, it can be easily formatted into
   31441                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   31442                 #
   31443                 # Example (Java):
   31444                 #
   31445                 #      import com.google.type.Color;
   31446                 #
   31447                 #      // ...
   31448                 #      public static java.awt.Color fromProto(Color protocolor) {
   31449                 #        float alpha = protocolor.hasAlpha()
   31450                 #            ? protocolor.getAlpha().getValue()
   31451                 #            : 1.0;
   31452                 #
   31453                 #        return new java.awt.Color(
   31454                 #            protocolor.getRed(),
   31455                 #            protocolor.getGreen(),
   31456                 #            protocolor.getBlue(),
   31457                 #            alpha);
   31458                 #      }
   31459                 #
   31460                 #      public static Color toProto(java.awt.Color color) {
   31461                 #        float red = (float) color.getRed();
   31462                 #        float green = (float) color.getGreen();
   31463                 #        float blue = (float) color.getBlue();
   31464                 #        float denominator = 255.0;
   31465                 #        Color.Builder resultBuilder =
   31466                 #            Color
   31467                 #                .newBuilder()
   31468                 #                .setRed(red / denominator)
   31469                 #                .setGreen(green / denominator)
   31470                 #                .setBlue(blue / denominator);
   31471                 #        int alpha = color.getAlpha();
   31472                 #        if (alpha != 255) {
   31473                 #          result.setAlpha(
   31474                 #              FloatValue
   31475                 #                  .newBuilder()
   31476                 #                  .setValue(((float) alpha) / denominator)
   31477                 #                  .build());
   31478                 #        }
   31479                 #        return resultBuilder.build();
   31480                 #      }
   31481                 #      // ...
   31482                 #
   31483                 # Example (iOS / Obj-C):
   31484                 #
   31485                 #      // ...
   31486                 #      static UIColor* fromProto(Color* protocolor) {
   31487                 #         float red = [protocolor red];
   31488                 #         float green = [protocolor green];
   31489                 #         float blue = [protocolor blue];
   31490                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   31491                 #         float alpha = 1.0;
   31492                 #         if (alpha_wrapper != nil) {
   31493                 #           alpha = [alpha_wrapper value];
   31494                 #         }
   31495                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   31496                 #      }
   31497                 #
   31498                 #      static Color* toProto(UIColor* color) {
   31499                 #          CGFloat red, green, blue, alpha;
   31500                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   31501                 #            return nil;
   31502                 #          }
   31503                 #          Color* result = [Color alloc] init];
   31504                 #          [result setRed:red];
   31505                 #          [result setGreen:green];
   31506                 #          [result setBlue:blue];
   31507                 #          if (alpha <= 0.9999) {
   31508                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   31509                 #          }
   31510                 #          [result autorelease];
   31511                 #          return result;
   31512                 #     }
   31513                 #     // ...
   31514                 #
   31515                 #  Example (JavaScript):
   31516                 #
   31517                 #     // ...
   31518                 #
   31519                 #     var protoToCssColor = function(rgb_color) {
   31520                 #        var redFrac = rgb_color.red || 0.0;
   31521                 #        var greenFrac = rgb_color.green || 0.0;
   31522                 #        var blueFrac = rgb_color.blue || 0.0;
   31523                 #        var red = Math.floor(redFrac * 255);
   31524                 #        var green = Math.floor(greenFrac * 255);
   31525                 #        var blue = Math.floor(blueFrac * 255);
   31526                 #
   31527                 #        if (!('alpha' in rgb_color)) {
   31528                 #           return rgbToCssColor_(red, green, blue);
   31529                 #        }
   31530                 #
   31531                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   31532                 #        var rgbParams = [red, green, blue].join(',');
   31533                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   31534                 #     };
   31535                 #
   31536                 #     var rgbToCssColor_ = function(red, green, blue) {
   31537                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   31538                 #       var hexString = rgbNumber.toString(16);
   31539                 #       var missingZeros = 6 - hexString.length;
   31540                 #       var resultBuilder = ['#'];
   31541                 #       for (var i = 0; i < missingZeros; i++) {
   31542                 #          resultBuilder.push('0');
   31543                 #       }
   31544                 #       resultBuilder.push(hexString);
   31545                 #       return resultBuilder.join('');
   31546                 #     };
   31547                 #
   31548                 #     // ...
   31549               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   31550               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   31551                   # the final pixel color is defined by the equation:
   31552                   #
   31553                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   31554                   #
   31555                   # This means that a value of 1.0 corresponds to a solid color, whereas
   31556                   # a value of 0.0 corresponds to a completely transparent color. This
   31557                   # uses a wrapper message rather than a simple float scalar so that it is
   31558                   # possible to distinguish between a default value and the value being unset.
   31559                   # If omitted, this color object is to be rendered as a solid color
   31560                   # (as if the alpha value had been explicitly given with a value of 1.0).
   31561               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   31562               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   31563             },
   31564           },
   31565           "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
   31566               # basis throughout all the rows in the range. At least one of
   31567               # row_properties or column_properties must be specified.
   31568               # BandedRange.row_properties and BandedRange.column_properties are
   31569               # set, the fill colors are applied to cells according to the following rules:
   31570               #
   31571               # * header_color and footer_color take priority over band colors.
   31572               # * first_band_color takes priority over second_band_color.
   31573               # * row_properties takes priority over column_properties.
   31574               #
   31575               # For example, the first row color takes priority over the first column
   31576               # color, but the first column color takes priority over the second row color.
   31577               # Similarly, the row header takes priority over the column header in the
   31578               # top left cell, but the column header takes priority over the first row
   31579               # color if the row header is not set.
   31580             "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   31581                 # for simplicity of conversion to/from color representations in various
   31582                 # languages over compactness; for example, the fields of this representation
   31583                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   31584                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   31585                 # method in iOS; and, with just a little work, it can be easily formatted into
   31586                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   31587                 #
   31588                 # Example (Java):
   31589                 #
   31590                 #      import com.google.type.Color;
   31591                 #
   31592                 #      // ...
   31593                 #      public static java.awt.Color fromProto(Color protocolor) {
   31594                 #        float alpha = protocolor.hasAlpha()
   31595                 #            ? protocolor.getAlpha().getValue()
   31596                 #            : 1.0;
   31597                 #
   31598                 #        return new java.awt.Color(
   31599                 #            protocolor.getRed(),
   31600                 #            protocolor.getGreen(),
   31601                 #            protocolor.getBlue(),
   31602                 #            alpha);
   31603                 #      }
   31604                 #
   31605                 #      public static Color toProto(java.awt.Color color) {
   31606                 #        float red = (float) color.getRed();
   31607                 #        float green = (float) color.getGreen();
   31608                 #        float blue = (float) color.getBlue();
   31609                 #        float denominator = 255.0;
   31610                 #        Color.Builder resultBuilder =
   31611                 #            Color
   31612                 #                .newBuilder()
   31613                 #                .setRed(red / denominator)
   31614                 #                .setGreen(green / denominator)
   31615                 #                .setBlue(blue / denominator);
   31616                 #        int alpha = color.getAlpha();
   31617                 #        if (alpha != 255) {
   31618                 #          result.setAlpha(
   31619                 #              FloatValue
   31620                 #                  .newBuilder()
   31621                 #                  .setValue(((float) alpha) / denominator)
   31622                 #                  .build());
   31623                 #        }
   31624                 #        return resultBuilder.build();
   31625                 #      }
   31626                 #      // ...
   31627                 #
   31628                 # Example (iOS / Obj-C):
   31629                 #
   31630                 #      // ...
   31631                 #      static UIColor* fromProto(Color* protocolor) {
   31632                 #         float red = [protocolor red];
   31633                 #         float green = [protocolor green];
   31634                 #         float blue = [protocolor blue];
   31635                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   31636                 #         float alpha = 1.0;
   31637                 #         if (alpha_wrapper != nil) {
   31638                 #           alpha = [alpha_wrapper value];
   31639                 #         }
   31640                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   31641                 #      }
   31642                 #
   31643                 #      static Color* toProto(UIColor* color) {
   31644                 #          CGFloat red, green, blue, alpha;
   31645                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   31646                 #            return nil;
   31647                 #          }
   31648                 #          Color* result = [Color alloc] init];
   31649                 #          [result setRed:red];
   31650                 #          [result setGreen:green];
   31651                 #          [result setBlue:blue];
   31652                 #          if (alpha <= 0.9999) {
   31653                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   31654                 #          }
   31655                 #          [result autorelease];
   31656                 #          return result;
   31657                 #     }
   31658                 #     // ...
   31659                 #
   31660                 #  Example (JavaScript):
   31661                 #
   31662                 #     // ...
   31663                 #
   31664                 #     var protoToCssColor = function(rgb_color) {
   31665                 #        var redFrac = rgb_color.red || 0.0;
   31666                 #        var greenFrac = rgb_color.green || 0.0;
   31667                 #        var blueFrac = rgb_color.blue || 0.0;
   31668                 #        var red = Math.floor(redFrac * 255);
   31669                 #        var green = Math.floor(greenFrac * 255);
   31670                 #        var blue = Math.floor(blueFrac * 255);
   31671                 #
   31672                 #        if (!('alpha' in rgb_color)) {
   31673                 #           return rgbToCssColor_(red, green, blue);
   31674                 #        }
   31675                 #
   31676                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   31677                 #        var rgbParams = [red, green, blue].join(',');
   31678                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   31679                 #     };
   31680                 #
   31681                 #     var rgbToCssColor_ = function(red, green, blue) {
   31682                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   31683                 #       var hexString = rgbNumber.toString(16);
   31684                 #       var missingZeros = 6 - hexString.length;
   31685                 #       var resultBuilder = ['#'];
   31686                 #       for (var i = 0; i < missingZeros; i++) {
   31687                 #          resultBuilder.push('0');
   31688                 #       }
   31689                 #       resultBuilder.push(hexString);
   31690                 #       return resultBuilder.join('');
   31691                 #     };
   31692                 #
   31693                 #     // ...
   31694               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   31695               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   31696                   # the final pixel color is defined by the equation:
   31697                   #
   31698                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   31699                   #
   31700                   # This means that a value of 1.0 corresponds to a solid color, whereas
   31701                   # a value of 0.0 corresponds to a completely transparent color. This
   31702                   # uses a wrapper message rather than a simple float scalar so that it is
   31703                   # possible to distinguish between a default value and the value being unset.
   31704                   # If omitted, this color object is to be rendered as a solid color
   31705                   # (as if the alpha value had been explicitly given with a value of 1.0).
   31706               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   31707               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   31708             },
   31709             "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   31710                 # row or column will be filled with this color and the colors will
   31711                 # alternate between first_band_color and second_band_color starting
   31712                 # from the second row or column. Otherwise, the first row or column will be
   31713                 # filled with first_band_color and the colors will proceed to alternate
   31714                 # as they normally would.
   31715                 # for simplicity of conversion to/from color representations in various
   31716                 # languages over compactness; for example, the fields of this representation
   31717                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   31718                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   31719                 # method in iOS; and, with just a little work, it can be easily formatted into
   31720                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   31721                 #
   31722                 # Example (Java):
   31723                 #
   31724                 #      import com.google.type.Color;
   31725                 #
   31726                 #      // ...
   31727                 #      public static java.awt.Color fromProto(Color protocolor) {
   31728                 #        float alpha = protocolor.hasAlpha()
   31729                 #            ? protocolor.getAlpha().getValue()
   31730                 #            : 1.0;
   31731                 #
   31732                 #        return new java.awt.Color(
   31733                 #            protocolor.getRed(),
   31734                 #            protocolor.getGreen(),
   31735                 #            protocolor.getBlue(),
   31736                 #            alpha);
   31737                 #      }
   31738                 #
   31739                 #      public static Color toProto(java.awt.Color color) {
   31740                 #        float red = (float) color.getRed();
   31741                 #        float green = (float) color.getGreen();
   31742                 #        float blue = (float) color.getBlue();
   31743                 #        float denominator = 255.0;
   31744                 #        Color.Builder resultBuilder =
   31745                 #            Color
   31746                 #                .newBuilder()
   31747                 #                .setRed(red / denominator)
   31748                 #                .setGreen(green / denominator)
   31749                 #                .setBlue(blue / denominator);
   31750                 #        int alpha = color.getAlpha();
   31751                 #        if (alpha != 255) {
   31752                 #          result.setAlpha(
   31753                 #              FloatValue
   31754                 #                  .newBuilder()
   31755                 #                  .setValue(((float) alpha) / denominator)
   31756                 #                  .build());
   31757                 #        }
   31758                 #        return resultBuilder.build();
   31759                 #      }
   31760                 #      // ...
   31761                 #
   31762                 # Example (iOS / Obj-C):
   31763                 #
   31764                 #      // ...
   31765                 #      static UIColor* fromProto(Color* protocolor) {
   31766                 #         float red = [protocolor red];
   31767                 #         float green = [protocolor green];
   31768                 #         float blue = [protocolor blue];
   31769                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   31770                 #         float alpha = 1.0;
   31771                 #         if (alpha_wrapper != nil) {
   31772                 #           alpha = [alpha_wrapper value];
   31773                 #         }
   31774                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   31775                 #      }
   31776                 #
   31777                 #      static Color* toProto(UIColor* color) {
   31778                 #          CGFloat red, green, blue, alpha;
   31779                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   31780                 #            return nil;
   31781                 #          }
   31782                 #          Color* result = [Color alloc] init];
   31783                 #          [result setRed:red];
   31784                 #          [result setGreen:green];
   31785                 #          [result setBlue:blue];
   31786                 #          if (alpha <= 0.9999) {
   31787                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   31788                 #          }
   31789                 #          [result autorelease];
   31790                 #          return result;
   31791                 #     }
   31792                 #     // ...
   31793                 #
   31794                 #  Example (JavaScript):
   31795                 #
   31796                 #     // ...
   31797                 #
   31798                 #     var protoToCssColor = function(rgb_color) {
   31799                 #        var redFrac = rgb_color.red || 0.0;
   31800                 #        var greenFrac = rgb_color.green || 0.0;
   31801                 #        var blueFrac = rgb_color.blue || 0.0;
   31802                 #        var red = Math.floor(redFrac * 255);
   31803                 #        var green = Math.floor(greenFrac * 255);
   31804                 #        var blue = Math.floor(blueFrac * 255);
   31805                 #
   31806                 #        if (!('alpha' in rgb_color)) {
   31807                 #           return rgbToCssColor_(red, green, blue);
   31808                 #        }
   31809                 #
   31810                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   31811                 #        var rgbParams = [red, green, blue].join(',');
   31812                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   31813                 #     };
   31814                 #
   31815                 #     var rgbToCssColor_ = function(red, green, blue) {
   31816                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   31817                 #       var hexString = rgbNumber.toString(16);
   31818                 #       var missingZeros = 6 - hexString.length;
   31819                 #       var resultBuilder = ['#'];
   31820                 #       for (var i = 0; i < missingZeros; i++) {
   31821                 #          resultBuilder.push('0');
   31822                 #       }
   31823                 #       resultBuilder.push(hexString);
   31824                 #       return resultBuilder.join('');
   31825                 #     };
   31826                 #
   31827                 #     // ...
   31828               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   31829               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   31830                   # the final pixel color is defined by the equation:
   31831                   #
   31832                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   31833                   #
   31834                   # This means that a value of 1.0 corresponds to a solid color, whereas
   31835                   # a value of 0.0 corresponds to a completely transparent color. This
   31836                   # uses a wrapper message rather than a simple float scalar so that it is
   31837                   # possible to distinguish between a default value and the value being unset.
   31838                   # If omitted, this color object is to be rendered as a solid color
   31839                   # (as if the alpha value had been explicitly given with a value of 1.0).
   31840               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   31841               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   31842             },
   31843             "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   31844                 # row or column will be filled with either first_band_color or
   31845                 # second_band_color, depending on the color of the previous row or
   31846                 # column.
   31847                 # for simplicity of conversion to/from color representations in various
   31848                 # languages over compactness; for example, the fields of this representation
   31849                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   31850                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   31851                 # method in iOS; and, with just a little work, it can be easily formatted into
   31852                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   31853                 #
   31854                 # Example (Java):
   31855                 #
   31856                 #      import com.google.type.Color;
   31857                 #
   31858                 #      // ...
   31859                 #      public static java.awt.Color fromProto(Color protocolor) {
   31860                 #        float alpha = protocolor.hasAlpha()
   31861                 #            ? protocolor.getAlpha().getValue()
   31862                 #            : 1.0;
   31863                 #
   31864                 #        return new java.awt.Color(
   31865                 #            protocolor.getRed(),
   31866                 #            protocolor.getGreen(),
   31867                 #            protocolor.getBlue(),
   31868                 #            alpha);
   31869                 #      }
   31870                 #
   31871                 #      public static Color toProto(java.awt.Color color) {
   31872                 #        float red = (float) color.getRed();
   31873                 #        float green = (float) color.getGreen();
   31874                 #        float blue = (float) color.getBlue();
   31875                 #        float denominator = 255.0;
   31876                 #        Color.Builder resultBuilder =
   31877                 #            Color
   31878                 #                .newBuilder()
   31879                 #                .setRed(red / denominator)
   31880                 #                .setGreen(green / denominator)
   31881                 #                .setBlue(blue / denominator);
   31882                 #        int alpha = color.getAlpha();
   31883                 #        if (alpha != 255) {
   31884                 #          result.setAlpha(
   31885                 #              FloatValue
   31886                 #                  .newBuilder()
   31887                 #                  .setValue(((float) alpha) / denominator)
   31888                 #                  .build());
   31889                 #        }
   31890                 #        return resultBuilder.build();
   31891                 #      }
   31892                 #      // ...
   31893                 #
   31894                 # Example (iOS / Obj-C):
   31895                 #
   31896                 #      // ...
   31897                 #      static UIColor* fromProto(Color* protocolor) {
   31898                 #         float red = [protocolor red];
   31899                 #         float green = [protocolor green];
   31900                 #         float blue = [protocolor blue];
   31901                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   31902                 #         float alpha = 1.0;
   31903                 #         if (alpha_wrapper != nil) {
   31904                 #           alpha = [alpha_wrapper value];
   31905                 #         }
   31906                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   31907                 #      }
   31908                 #
   31909                 #      static Color* toProto(UIColor* color) {
   31910                 #          CGFloat red, green, blue, alpha;
   31911                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   31912                 #            return nil;
   31913                 #          }
   31914                 #          Color* result = [Color alloc] init];
   31915                 #          [result setRed:red];
   31916                 #          [result setGreen:green];
   31917                 #          [result setBlue:blue];
   31918                 #          if (alpha <= 0.9999) {
   31919                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   31920                 #          }
   31921                 #          [result autorelease];
   31922                 #          return result;
   31923                 #     }
   31924                 #     // ...
   31925                 #
   31926                 #  Example (JavaScript):
   31927                 #
   31928                 #     // ...
   31929                 #
   31930                 #     var protoToCssColor = function(rgb_color) {
   31931                 #        var redFrac = rgb_color.red || 0.0;
   31932                 #        var greenFrac = rgb_color.green || 0.0;
   31933                 #        var blueFrac = rgb_color.blue || 0.0;
   31934                 #        var red = Math.floor(redFrac * 255);
   31935                 #        var green = Math.floor(greenFrac * 255);
   31936                 #        var blue = Math.floor(blueFrac * 255);
   31937                 #
   31938                 #        if (!('alpha' in rgb_color)) {
   31939                 #           return rgbToCssColor_(red, green, blue);
   31940                 #        }
   31941                 #
   31942                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   31943                 #        var rgbParams = [red, green, blue].join(',');
   31944                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   31945                 #     };
   31946                 #
   31947                 #     var rgbToCssColor_ = function(red, green, blue) {
   31948                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   31949                 #       var hexString = rgbNumber.toString(16);
   31950                 #       var missingZeros = 6 - hexString.length;
   31951                 #       var resultBuilder = ['#'];
   31952                 #       for (var i = 0; i < missingZeros; i++) {
   31953                 #          resultBuilder.push('0');
   31954                 #       }
   31955                 #       resultBuilder.push(hexString);
   31956                 #       return resultBuilder.join('');
   31957                 #     };
   31958                 #
   31959                 #     // ...
   31960               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   31961               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   31962                   # the final pixel color is defined by the equation:
   31963                   #
   31964                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   31965                   #
   31966                   # This means that a value of 1.0 corresponds to a solid color, whereas
   31967                   # a value of 0.0 corresponds to a completely transparent color. This
   31968                   # uses a wrapper message rather than a simple float scalar so that it is
   31969                   # possible to distinguish between a default value and the value being unset.
   31970                   # If omitted, this color object is to be rendered as a solid color
   31971                   # (as if the alpha value had been explicitly given with a value of 1.0).
   31972               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   31973               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   31974             },
   31975             "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   31976                 # for simplicity of conversion to/from color representations in various
   31977                 # languages over compactness; for example, the fields of this representation
   31978                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   31979                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   31980                 # method in iOS; and, with just a little work, it can be easily formatted into
   31981                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   31982                 #
   31983                 # Example (Java):
   31984                 #
   31985                 #      import com.google.type.Color;
   31986                 #
   31987                 #      // ...
   31988                 #      public static java.awt.Color fromProto(Color protocolor) {
   31989                 #        float alpha = protocolor.hasAlpha()
   31990                 #            ? protocolor.getAlpha().getValue()
   31991                 #            : 1.0;
   31992                 #
   31993                 #        return new java.awt.Color(
   31994                 #            protocolor.getRed(),
   31995                 #            protocolor.getGreen(),
   31996                 #            protocolor.getBlue(),
   31997                 #            alpha);
   31998                 #      }
   31999                 #
   32000                 #      public static Color toProto(java.awt.Color color) {
   32001                 #        float red = (float) color.getRed();
   32002                 #        float green = (float) color.getGreen();
   32003                 #        float blue = (float) color.getBlue();
   32004                 #        float denominator = 255.0;
   32005                 #        Color.Builder resultBuilder =
   32006                 #            Color
   32007                 #                .newBuilder()
   32008                 #                .setRed(red / denominator)
   32009                 #                .setGreen(green / denominator)
   32010                 #                .setBlue(blue / denominator);
   32011                 #        int alpha = color.getAlpha();
   32012                 #        if (alpha != 255) {
   32013                 #          result.setAlpha(
   32014                 #              FloatValue
   32015                 #                  .newBuilder()
   32016                 #                  .setValue(((float) alpha) / denominator)
   32017                 #                  .build());
   32018                 #        }
   32019                 #        return resultBuilder.build();
   32020                 #      }
   32021                 #      // ...
   32022                 #
   32023                 # Example (iOS / Obj-C):
   32024                 #
   32025                 #      // ...
   32026                 #      static UIColor* fromProto(Color* protocolor) {
   32027                 #         float red = [protocolor red];
   32028                 #         float green = [protocolor green];
   32029                 #         float blue = [protocolor blue];
   32030                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   32031                 #         float alpha = 1.0;
   32032                 #         if (alpha_wrapper != nil) {
   32033                 #           alpha = [alpha_wrapper value];
   32034                 #         }
   32035                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   32036                 #      }
   32037                 #
   32038                 #      static Color* toProto(UIColor* color) {
   32039                 #          CGFloat red, green, blue, alpha;
   32040                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   32041                 #            return nil;
   32042                 #          }
   32043                 #          Color* result = [Color alloc] init];
   32044                 #          [result setRed:red];
   32045                 #          [result setGreen:green];
   32046                 #          [result setBlue:blue];
   32047                 #          if (alpha <= 0.9999) {
   32048                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   32049                 #          }
   32050                 #          [result autorelease];
   32051                 #          return result;
   32052                 #     }
   32053                 #     // ...
   32054                 #
   32055                 #  Example (JavaScript):
   32056                 #
   32057                 #     // ...
   32058                 #
   32059                 #     var protoToCssColor = function(rgb_color) {
   32060                 #        var redFrac = rgb_color.red || 0.0;
   32061                 #        var greenFrac = rgb_color.green || 0.0;
   32062                 #        var blueFrac = rgb_color.blue || 0.0;
   32063                 #        var red = Math.floor(redFrac * 255);
   32064                 #        var green = Math.floor(greenFrac * 255);
   32065                 #        var blue = Math.floor(blueFrac * 255);
   32066                 #
   32067                 #        if (!('alpha' in rgb_color)) {
   32068                 #           return rgbToCssColor_(red, green, blue);
   32069                 #        }
   32070                 #
   32071                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   32072                 #        var rgbParams = [red, green, blue].join(',');
   32073                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   32074                 #     };
   32075                 #
   32076                 #     var rgbToCssColor_ = function(red, green, blue) {
   32077                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   32078                 #       var hexString = rgbNumber.toString(16);
   32079                 #       var missingZeros = 6 - hexString.length;
   32080                 #       var resultBuilder = ['#'];
   32081                 #       for (var i = 0; i < missingZeros; i++) {
   32082                 #          resultBuilder.push('0');
   32083                 #       }
   32084                 #       resultBuilder.push(hexString);
   32085                 #       return resultBuilder.join('');
   32086                 #     };
   32087                 #
   32088                 #     // ...
   32089               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   32090               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   32091                   # the final pixel color is defined by the equation:
   32092                   #
   32093                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   32094                   #
   32095                   # This means that a value of 1.0 corresponds to a solid color, whereas
   32096                   # a value of 0.0 corresponds to a completely transparent color. This
   32097                   # uses a wrapper message rather than a simple float scalar so that it is
   32098                   # possible to distinguish between a default value and the value being unset.
   32099                   # If omitted, this color object is to be rendered as a solid color
   32100                   # (as if the alpha value had been explicitly given with a value of 1.0).
   32101               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   32102               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   32103             },
   32104           },
   32105           "bandedRangeId": 42, # The id of the banded range.
   32106         },
   32107       ],
   32108       "merges": [ # The ranges that are merged together.
   32109         { # A range on a sheet.
   32110             # All indexes are zero-based.
   32111             # Indexes are half open, e.g the start index is inclusive
   32112             # and the end index is exclusive -- [start_index, end_index).
   32113             # Missing indexes indicate the range is unbounded on that side.
   32114             #
   32115             # For example, if `"Sheet1"` is sheet ID 0, then:
   32116             #
   32117             #   `Sheet1!A1:A1 == sheet_id: 0,
   32118             #                   start_row_index: 0, end_row_index: 1,
   32119             #                   start_column_index: 0, end_column_index: 1`
   32120             #
   32121             #   `Sheet1!A3:B4 == sheet_id: 0,
   32122             #                   start_row_index: 2, end_row_index: 4,
   32123             #                   start_column_index: 0, end_column_index: 2`
   32124             #
   32125             #   `Sheet1!A:B == sheet_id: 0,
   32126             #                 start_column_index: 0, end_column_index: 2`
   32127             #
   32128             #   `Sheet1!A5:B == sheet_id: 0,
   32129             #                  start_row_index: 4,
   32130             #                  start_column_index: 0, end_column_index: 2`
   32131             #
   32132             #   `Sheet1 == sheet_id:0`
   32133             #
   32134             # The start index must always be less than or equal to the end index.
   32135             # If the start index equals the end index, then the range is empty.
   32136             # Empty ranges are typically not meaningful and are usually rendered in the
   32137             # UI as `#REF!`.
   32138           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   32139           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   32140           "sheetId": 42, # The sheet this range is on.
   32141           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   32142           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   32143         },
   32144       ],
   32145       "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
   32146         "range": { # A range on a sheet. # The range the filter covers.
   32147             # All indexes are zero-based.
   32148             # Indexes are half open, e.g the start index is inclusive
   32149             # and the end index is exclusive -- [start_index, end_index).
   32150             # Missing indexes indicate the range is unbounded on that side.
   32151             #
   32152             # For example, if `"Sheet1"` is sheet ID 0, then:
   32153             #
   32154             #   `Sheet1!A1:A1 == sheet_id: 0,
   32155             #                   start_row_index: 0, end_row_index: 1,
   32156             #                   start_column_index: 0, end_column_index: 1`
   32157             #
   32158             #   `Sheet1!A3:B4 == sheet_id: 0,
   32159             #                   start_row_index: 2, end_row_index: 4,
   32160             #                   start_column_index: 0, end_column_index: 2`
   32161             #
   32162             #   `Sheet1!A:B == sheet_id: 0,
   32163             #                 start_column_index: 0, end_column_index: 2`
   32164             #
   32165             #   `Sheet1!A5:B == sheet_id: 0,
   32166             #                  start_row_index: 4,
   32167             #                  start_column_index: 0, end_column_index: 2`
   32168             #
   32169             #   `Sheet1 == sheet_id:0`
   32170             #
   32171             # The start index must always be less than or equal to the end index.
   32172             # If the start index equals the end index, then the range is empty.
   32173             # Empty ranges are typically not meaningful and are usually rendered in the
   32174             # UI as `#REF!`.
   32175           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   32176           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   32177           "sheetId": 42, # The sheet this range is on.
   32178           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   32179           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   32180         },
   32181         "sortSpecs": [ # The sort order per column. Later specifications are used when values
   32182             # are equal in the earlier specifications.
   32183           { # A sort order associated with a specific column or row.
   32184             "sortOrder": "A String", # The order data should be sorted.
   32185             "dimensionIndex": 42, # The dimension the sort should be applied to.
   32186           },
   32187         ],
   32188         "criteria": { # The criteria for showing/hiding values per column.
   32189             # The map's key is the column index, and the value is the criteria for
   32190             # that column.
   32191           "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   32192             "hiddenValues": [ # Values that should be hidden.
   32193               "A String",
   32194             ],
   32195             "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   32196                 # (This does not override hiddenValues -- if a value is listed there,
   32197                 #  it will still be hidden.)
   32198                 # BooleanConditions are used by conditional formatting,
   32199                 # data validation, and the criteria in filters.
   32200               "values": [ # The values of the condition. The number of supported values depends
   32201                   # on the condition type.  Some support zero values,
   32202                   # others one or two values,
   32203                   # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   32204                 { # The value of the condition.
   32205                   "relativeDate": "A String", # A relative date (based on the current date).
   32206                       # Valid only if the type is
   32207                       # DATE_BEFORE,
   32208                       # DATE_AFTER,
   32209                       # DATE_ON_OR_BEFORE or
   32210                       # DATE_ON_OR_AFTER.
   32211                       #
   32212                       # Relative dates are not supported in data validation.
   32213                       # They are supported only in conditional formatting and
   32214                       # conditional filters.
   32215                   "userEnteredValue": "A String", # A value the condition is based on.
   32216                       # The value will be parsed as if the user typed into a cell.
   32217                       # Formulas are supported (and must begin with an `=`).
   32218                 },
   32219               ],
   32220               "type": "A String", # The type of condition.
   32221             },
   32222           },
   32223         },
   32224       },
   32225       "charts": [ # The specifications of every chart on this sheet.
   32226         { # A chart embedded in a sheet.
   32227           "chartId": 42, # The ID of the chart.
   32228           "position": { # The position of an embedded object such as a chart. # The position of the chart.
   32229             "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
   32230                 # is chosen for you. Used only when writing.
   32231             "sheetId": 42, # The sheet this is on. Set only if the embedded object
   32232                 # is on its own sheet. Must be non-negative.
   32233             "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
   32234               "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
   32235                   # All indexes are zero-based.
   32236                 "rowIndex": 42, # The row index of the coordinate.
   32237                 "columnIndex": 42, # The column index of the coordinate.
   32238                 "sheetId": 42, # The sheet this coordinate is on.
   32239               },
   32240               "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
   32241                   # from the anchor cell.
   32242               "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
   32243               "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
   32244                   # from the anchor cell.
   32245               "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
   32246             },
   32247           },
   32248           "spec": { # The specifications of a chart. # The specification of the chart.
   32249             "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
   32250             "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
   32251               "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
   32252                 "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   32253                   "sources": [ # The ranges of data for a series or domain.
   32254                       # Exactly one dimension must have a length of 1,
   32255                       # and all sources in the list must have the same dimension
   32256                       # with length 1.
   32257                       # The domain (if it exists) & all series must have the same number
   32258                       # of source ranges. If using more than one source range, then the source
   32259                       # range at a given offset must be contiguous across the domain and series.
   32260                       #
   32261                       # For example, these are valid configurations:
   32262                       #
   32263                       #     domain sources: A1:A5
   32264                       #     series1 sources: B1:B5
   32265                       #     series2 sources: D6:D10
   32266                       #
   32267                       #     domain sources: A1:A5, C10:C12
   32268                       #     series1 sources: B1:B5, D10:D12
   32269                       #     series2 sources: C1:C5, E10:E12
   32270                     { # A range on a sheet.
   32271                         # All indexes are zero-based.
   32272                         # Indexes are half open, e.g the start index is inclusive
   32273                         # and the end index is exclusive -- [start_index, end_index).
   32274                         # Missing indexes indicate the range is unbounded on that side.
   32275                         #
   32276                         # For example, if `"Sheet1"` is sheet ID 0, then:
   32277                         #
   32278                         #   `Sheet1!A1:A1 == sheet_id: 0,
   32279                         #                   start_row_index: 0, end_row_index: 1,
   32280                         #                   start_column_index: 0, end_column_index: 1`
   32281                         #
   32282                         #   `Sheet1!A3:B4 == sheet_id: 0,
   32283                         #                   start_row_index: 2, end_row_index: 4,
   32284                         #                   start_column_index: 0, end_column_index: 2`
   32285                         #
   32286                         #   `Sheet1!A:B == sheet_id: 0,
   32287                         #                 start_column_index: 0, end_column_index: 2`
   32288                         #
   32289                         #   `Sheet1!A5:B == sheet_id: 0,
   32290                         #                  start_row_index: 4,
   32291                         #                  start_column_index: 0, end_column_index: 2`
   32292                         #
   32293                         #   `Sheet1 == sheet_id:0`
   32294                         #
   32295                         # The start index must always be less than or equal to the end index.
   32296                         # If the start index equals the end index, then the range is empty.
   32297                         # Empty ranges are typically not meaningful and are usually rendered in the
   32298                         # UI as `#REF!`.
   32299                       "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   32300                       "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   32301                       "sheetId": 42, # The sheet this range is on.
   32302                       "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   32303                       "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   32304                     },
   32305                   ],
   32306                 },
   32307               },
   32308               "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
   32309                 "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   32310                   "sources": [ # The ranges of data for a series or domain.
   32311                       # Exactly one dimension must have a length of 1,
   32312                       # and all sources in the list must have the same dimension
   32313                       # with length 1.
   32314                       # The domain (if it exists) & all series must have the same number
   32315                       # of source ranges. If using more than one source range, then the source
   32316                       # range at a given offset must be contiguous across the domain and series.
   32317                       #
   32318                       # For example, these are valid configurations:
   32319                       #
   32320                       #     domain sources: A1:A5
   32321                       #     series1 sources: B1:B5
   32322                       #     series2 sources: D6:D10
   32323                       #
   32324                       #     domain sources: A1:A5, C10:C12
   32325                       #     series1 sources: B1:B5, D10:D12
   32326                       #     series2 sources: C1:C5, E10:E12
   32327                     { # A range on a sheet.
   32328                         # All indexes are zero-based.
   32329                         # Indexes are half open, e.g the start index is inclusive
   32330                         # and the end index is exclusive -- [start_index, end_index).
   32331                         # Missing indexes indicate the range is unbounded on that side.
   32332                         #
   32333                         # For example, if `"Sheet1"` is sheet ID 0, then:
   32334                         #
   32335                         #   `Sheet1!A1:A1 == sheet_id: 0,
   32336                         #                   start_row_index: 0, end_row_index: 1,
   32337                         #                   start_column_index: 0, end_column_index: 1`
   32338                         #
   32339                         #   `Sheet1!A3:B4 == sheet_id: 0,
   32340                         #                   start_row_index: 2, end_row_index: 4,
   32341                         #                   start_column_index: 0, end_column_index: 2`
   32342                         #
   32343                         #   `Sheet1!A:B == sheet_id: 0,
   32344                         #                 start_column_index: 0, end_column_index: 2`
   32345                         #
   32346                         #   `Sheet1!A5:B == sheet_id: 0,
   32347                         #                  start_row_index: 4,
   32348                         #                  start_column_index: 0, end_column_index: 2`
   32349                         #
   32350                         #   `Sheet1 == sheet_id:0`
   32351                         #
   32352                         # The start index must always be less than or equal to the end index.
   32353                         # If the start index equals the end index, then the range is empty.
   32354                         # Empty ranges are typically not meaningful and are usually rendered in the
   32355                         # UI as `#REF!`.
   32356                       "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   32357                       "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   32358                       "sheetId": 42, # The sheet this range is on.
   32359                       "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   32360                       "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   32361                     },
   32362                   ],
   32363                 },
   32364               },
   32365               "threeDimensional": True or False, # True if the pie is three dimensional.
   32366               "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
   32367               "pieHole": 3.14, # The size of the hole in the pie chart.
   32368             },
   32369             "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
   32370                 # See BasicChartType for the list of all
   32371                 # charts this supports.
   32372                 # of charts this supports.
   32373               "headerCount": 42, # The number of rows or columns in the data that are "headers".
   32374                   # If not set, Google Sheets will guess how many rows are headers based
   32375                   # on the data.
   32376                   #
   32377                   # (Note that BasicChartAxis.title may override the axis title
   32378                   #  inferred from the header values.)
   32379               "series": [ # The data this chart is visualizing.
   32380                 { # A single series of data in a chart.
   32381                     # For example, if charting stock prices over time, multiple series may exist,
   32382                     # one for the "Open Price", "High Price", "Low Price" and "Close Price".
   32383                   "series": { # The data included in a domain or series. # The data being visualized in this chart series.
   32384                     "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   32385                       "sources": [ # The ranges of data for a series or domain.
   32386                           # Exactly one dimension must have a length of 1,
   32387                           # and all sources in the list must have the same dimension
   32388                           # with length 1.
   32389                           # The domain (if it exists) & all series must have the same number
   32390                           # of source ranges. If using more than one source range, then the source
   32391                           # range at a given offset must be contiguous across the domain and series.
   32392                           #
   32393                           # For example, these are valid configurations:
   32394                           #
   32395                           #     domain sources: A1:A5
   32396                           #     series1 sources: B1:B5
   32397                           #     series2 sources: D6:D10
   32398                           #
   32399                           #     domain sources: A1:A5, C10:C12
   32400                           #     series1 sources: B1:B5, D10:D12
   32401                           #     series2 sources: C1:C5, E10:E12
   32402                         { # A range on a sheet.
   32403                             # All indexes are zero-based.
   32404                             # Indexes are half open, e.g the start index is inclusive
   32405                             # and the end index is exclusive -- [start_index, end_index).
   32406                             # Missing indexes indicate the range is unbounded on that side.
   32407                             #
   32408                             # For example, if `"Sheet1"` is sheet ID 0, then:
   32409                             #
   32410                             #   `Sheet1!A1:A1 == sheet_id: 0,
   32411                             #                   start_row_index: 0, end_row_index: 1,
   32412                             #                   start_column_index: 0, end_column_index: 1`
   32413                             #
   32414                             #   `Sheet1!A3:B4 == sheet_id: 0,
   32415                             #                   start_row_index: 2, end_row_index: 4,
   32416                             #                   start_column_index: 0, end_column_index: 2`
   32417                             #
   32418                             #   `Sheet1!A:B == sheet_id: 0,
   32419                             #                 start_column_index: 0, end_column_index: 2`
   32420                             #
   32421                             #   `Sheet1!A5:B == sheet_id: 0,
   32422                             #                  start_row_index: 4,
   32423                             #                  start_column_index: 0, end_column_index: 2`
   32424                             #
   32425                             #   `Sheet1 == sheet_id:0`
   32426                             #
   32427                             # The start index must always be less than or equal to the end index.
   32428                             # If the start index equals the end index, then the range is empty.
   32429                             # Empty ranges are typically not meaningful and are usually rendered in the
   32430                             # UI as `#REF!`.
   32431                           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   32432                           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   32433                           "sheetId": 42, # The sheet this range is on.
   32434                           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   32435                           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   32436                         },
   32437                       ],
   32438                     },
   32439                   },
   32440                   "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
   32441                       # For example, if charting stocks over time, the "Volume" series
   32442                       # may want to be pinned to the right with the prices pinned to the left,
   32443                       # because the scale of trading volume is different than the scale of
   32444                       # prices.
   32445                       # It is an error to specify an axis that isn't a valid minor axis
   32446                       # for the chart's type.
   32447                   "type": "A String", # The type of this series. Valid only if the
   32448                       # chartType is
   32449                       # COMBO.
   32450                       # Different types will change the way the series is visualized.
   32451                       # Only LINE, AREA,
   32452                       # and COLUMN are supported.
   32453                 },
   32454               ],
   32455               "legendPosition": "A String", # The position of the chart legend.
   32456               "domains": [ # The domain of data this is charting.
   32457                   # Only a single domain is supported.
   32458                 { # The domain of a chart.
   32459                     # For example, if charting stock prices over time, this would be the date.
   32460                   "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
   32461                       # this is the data representing the dates.
   32462                     "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   32463                       "sources": [ # The ranges of data for a series or domain.
   32464                           # Exactly one dimension must have a length of 1,
   32465                           # and all sources in the list must have the same dimension
   32466                           # with length 1.
   32467                           # The domain (if it exists) & all series must have the same number
   32468                           # of source ranges. If using more than one source range, then the source
   32469                           # range at a given offset must be contiguous across the domain and series.
   32470                           #
   32471                           # For example, these are valid configurations:
   32472                           #
   32473                           #     domain sources: A1:A5
   32474                           #     series1 sources: B1:B5
   32475                           #     series2 sources: D6:D10
   32476                           #
   32477                           #     domain sources: A1:A5, C10:C12
   32478                           #     series1 sources: B1:B5, D10:D12
   32479                           #     series2 sources: C1:C5, E10:E12
   32480                         { # A range on a sheet.
   32481                             # All indexes are zero-based.
   32482                             # Indexes are half open, e.g the start index is inclusive
   32483                             # and the end index is exclusive -- [start_index, end_index).
   32484                             # Missing indexes indicate the range is unbounded on that side.
   32485                             #
   32486                             # For example, if `"Sheet1"` is sheet ID 0, then:
   32487                             #
   32488                             #   `Sheet1!A1:A1 == sheet_id: 0,
   32489                             #                   start_row_index: 0, end_row_index: 1,
   32490                             #                   start_column_index: 0, end_column_index: 1`
   32491                             #
   32492                             #   `Sheet1!A3:B4 == sheet_id: 0,
   32493                             #                   start_row_index: 2, end_row_index: 4,
   32494                             #                   start_column_index: 0, end_column_index: 2`
   32495                             #
   32496                             #   `Sheet1!A:B == sheet_id: 0,
   32497                             #                 start_column_index: 0, end_column_index: 2`
   32498                             #
   32499                             #   `Sheet1!A5:B == sheet_id: 0,
   32500                             #                  start_row_index: 4,
   32501                             #                  start_column_index: 0, end_column_index: 2`
   32502                             #
   32503                             #   `Sheet1 == sheet_id:0`
   32504                             #
   32505                             # The start index must always be less than or equal to the end index.
   32506                             # If the start index equals the end index, then the range is empty.
   32507                             # Empty ranges are typically not meaningful and are usually rendered in the
   32508                             # UI as `#REF!`.
   32509                           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   32510                           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   32511                           "sheetId": 42, # The sheet this range is on.
   32512                           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   32513                           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   32514                         },
   32515                       ],
   32516                     },
   32517                   },
   32518                 },
   32519               ],
   32520               "chartType": "A String", # The type of the chart.
   32521               "axis": [ # The axis on the chart.
   32522                 { # An axis of the chart.
   32523                     # A chart may not have more than one axis per
   32524                     # axis position.
   32525                   "position": "A String", # The position of this axis.
   32526                   "format": { # The format of a run of text in a cell. # The format of the title.
   32527                       # Only valid if the axis is not associated with the domain.
   32528                       # Absent values indicate that the field isn't specified.
   32529                     "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   32530                         # for simplicity of conversion to/from color representations in various
   32531                         # languages over compactness; for example, the fields of this representation
   32532                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   32533                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   32534                         # method in iOS; and, with just a little work, it can be easily formatted into
   32535                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   32536                         #
   32537                         # Example (Java):
   32538                         #
   32539                         #      import com.google.type.Color;
   32540                         #
   32541                         #      // ...
   32542                         #      public static java.awt.Color fromProto(Color protocolor) {
   32543                         #        float alpha = protocolor.hasAlpha()
   32544                         #            ? protocolor.getAlpha().getValue()
   32545                         #            : 1.0;
   32546                         #
   32547                         #        return new java.awt.Color(
   32548                         #            protocolor.getRed(),
   32549                         #            protocolor.getGreen(),
   32550                         #            protocolor.getBlue(),
   32551                         #            alpha);
   32552                         #      }
   32553                         #
   32554                         #      public static Color toProto(java.awt.Color color) {
   32555                         #        float red = (float) color.getRed();
   32556                         #        float green = (float) color.getGreen();
   32557                         #        float blue = (float) color.getBlue();
   32558                         #        float denominator = 255.0;
   32559                         #        Color.Builder resultBuilder =
   32560                         #            Color
   32561                         #                .newBuilder()
   32562                         #                .setRed(red / denominator)
   32563                         #                .setGreen(green / denominator)
   32564                         #                .setBlue(blue / denominator);
   32565                         #        int alpha = color.getAlpha();
   32566                         #        if (alpha != 255) {
   32567                         #          result.setAlpha(
   32568                         #              FloatValue
   32569                         #                  .newBuilder()
   32570                         #                  .setValue(((float) alpha) / denominator)
   32571                         #                  .build());
   32572                         #        }
   32573                         #        return resultBuilder.build();
   32574                         #      }
   32575                         #      // ...
   32576                         #
   32577                         # Example (iOS / Obj-C):
   32578                         #
   32579                         #      // ...
   32580                         #      static UIColor* fromProto(Color* protocolor) {
   32581                         #         float red = [protocolor red];
   32582                         #         float green = [protocolor green];
   32583                         #         float blue = [protocolor blue];
   32584                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   32585                         #         float alpha = 1.0;
   32586                         #         if (alpha_wrapper != nil) {
   32587                         #           alpha = [alpha_wrapper value];
   32588                         #         }
   32589                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   32590                         #      }
   32591                         #
   32592                         #      static Color* toProto(UIColor* color) {
   32593                         #          CGFloat red, green, blue, alpha;
   32594                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   32595                         #            return nil;
   32596                         #          }
   32597                         #          Color* result = [Color alloc] init];
   32598                         #          [result setRed:red];
   32599                         #          [result setGreen:green];
   32600                         #          [result setBlue:blue];
   32601                         #          if (alpha <= 0.9999) {
   32602                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   32603                         #          }
   32604                         #          [result autorelease];
   32605                         #          return result;
   32606                         #     }
   32607                         #     // ...
   32608                         #
   32609                         #  Example (JavaScript):
   32610                         #
   32611                         #     // ...
   32612                         #
   32613                         #     var protoToCssColor = function(rgb_color) {
   32614                         #        var redFrac = rgb_color.red || 0.0;
   32615                         #        var greenFrac = rgb_color.green || 0.0;
   32616                         #        var blueFrac = rgb_color.blue || 0.0;
   32617                         #        var red = Math.floor(redFrac * 255);
   32618                         #        var green = Math.floor(greenFrac * 255);
   32619                         #        var blue = Math.floor(blueFrac * 255);
   32620                         #
   32621                         #        if (!('alpha' in rgb_color)) {
   32622                         #           return rgbToCssColor_(red, green, blue);
   32623                         #        }
   32624                         #
   32625                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   32626                         #        var rgbParams = [red, green, blue].join(',');
   32627                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   32628                         #     };
   32629                         #
   32630                         #     var rgbToCssColor_ = function(red, green, blue) {
   32631                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   32632                         #       var hexString = rgbNumber.toString(16);
   32633                         #       var missingZeros = 6 - hexString.length;
   32634                         #       var resultBuilder = ['#'];
   32635                         #       for (var i = 0; i < missingZeros; i++) {
   32636                         #          resultBuilder.push('0');
   32637                         #       }
   32638                         #       resultBuilder.push(hexString);
   32639                         #       return resultBuilder.join('');
   32640                         #     };
   32641                         #
   32642                         #     // ...
   32643                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   32644                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   32645                           # the final pixel color is defined by the equation:
   32646                           #
   32647                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   32648                           #
   32649                           # This means that a value of 1.0 corresponds to a solid color, whereas
   32650                           # a value of 0.0 corresponds to a completely transparent color. This
   32651                           # uses a wrapper message rather than a simple float scalar so that it is
   32652                           # possible to distinguish between a default value and the value being unset.
   32653                           # If omitted, this color object is to be rendered as a solid color
   32654                           # (as if the alpha value had been explicitly given with a value of 1.0).
   32655                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   32656                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   32657                     },
   32658                     "bold": True or False, # True if the text is bold.
   32659                     "strikethrough": True or False, # True if the text has a strikethrough.
   32660                     "fontFamily": "A String", # The font family.
   32661                     "fontSize": 42, # The size of the font.
   32662                     "italic": True or False, # True if the text is italicized.
   32663                     "underline": True or False, # True if the text is underlined.
   32664                   },
   32665                   "title": "A String", # The title of this axis. If set, this overrides any title inferred
   32666                       # from headers of the data.
   32667                 },
   32668               ],
   32669             },
   32670             "title": "A String", # The title of the chart.
   32671           },
   32672         },
   32673       ],
   32674       "filterViews": [ # The filter views in this sheet.
   32675         { # A filter view.
   32676           "title": "A String", # The name of the filter view.
   32677           "namedRangeId": "A String", # The named range this filter view is backed by, if any.
   32678               #
   32679               # When writing, only one of range or named_range_id
   32680               # may be set.
   32681           "filterViewId": 42, # The ID of the filter view.
   32682           "range": { # A range on a sheet. # The range this filter view covers.
   32683               #
   32684               # When writing, only one of range or named_range_id
   32685               # may be set.
   32686               # All indexes are zero-based.
   32687               # Indexes are half open, e.g the start index is inclusive
   32688               # and the end index is exclusive -- [start_index, end_index).
   32689               # Missing indexes indicate the range is unbounded on that side.
   32690               #
   32691               # For example, if `"Sheet1"` is sheet ID 0, then:
   32692               #
   32693               #   `Sheet1!A1:A1 == sheet_id: 0,
   32694               #                   start_row_index: 0, end_row_index: 1,
   32695               #                   start_column_index: 0, end_column_index: 1`
   32696               #
   32697               #   `Sheet1!A3:B4 == sheet_id: 0,
   32698               #                   start_row_index: 2, end_row_index: 4,
   32699               #                   start_column_index: 0, end_column_index: 2`
   32700               #
   32701               #   `Sheet1!A:B == sheet_id: 0,
   32702               #                 start_column_index: 0, end_column_index: 2`
   32703               #
   32704               #   `Sheet1!A5:B == sheet_id: 0,
   32705               #                  start_row_index: 4,
   32706               #                  start_column_index: 0, end_column_index: 2`
   32707               #
   32708               #   `Sheet1 == sheet_id:0`
   32709               #
   32710               # The start index must always be less than or equal to the end index.
   32711               # If the start index equals the end index, then the range is empty.
   32712               # Empty ranges are typically not meaningful and are usually rendered in the
   32713               # UI as `#REF!`.
   32714             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   32715             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   32716             "sheetId": 42, # The sheet this range is on.
   32717             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   32718             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   32719           },
   32720           "sortSpecs": [ # The sort order per column. Later specifications are used when values
   32721               # are equal in the earlier specifications.
   32722             { # A sort order associated with a specific column or row.
   32723               "sortOrder": "A String", # The order data should be sorted.
   32724               "dimensionIndex": 42, # The dimension the sort should be applied to.
   32725             },
   32726           ],
   32727           "criteria": { # The criteria for showing/hiding values per column.
   32728               # The map's key is the column index, and the value is the criteria for
   32729               # that column.
   32730             "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   32731               "hiddenValues": [ # Values that should be hidden.
   32732                 "A String",
   32733               ],
   32734               "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   32735                   # (This does not override hiddenValues -- if a value is listed there,
   32736                   #  it will still be hidden.)
   32737                   # BooleanConditions are used by conditional formatting,
   32738                   # data validation, and the criteria in filters.
   32739                 "values": [ # The values of the condition. The number of supported values depends
   32740                     # on the condition type.  Some support zero values,
   32741                     # others one or two values,
   32742                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   32743                   { # The value of the condition.
   32744                     "relativeDate": "A String", # A relative date (based on the current date).
   32745                         # Valid only if the type is
   32746                         # DATE_BEFORE,
   32747                         # DATE_AFTER,
   32748                         # DATE_ON_OR_BEFORE or
   32749                         # DATE_ON_OR_AFTER.
   32750                         #
   32751                         # Relative dates are not supported in data validation.
   32752                         # They are supported only in conditional formatting and
   32753                         # conditional filters.
   32754                     "userEnteredValue": "A String", # A value the condition is based on.
   32755                         # The value will be parsed as if the user typed into a cell.
   32756                         # Formulas are supported (and must begin with an `=`).
   32757                   },
   32758                 ],
   32759                 "type": "A String", # The type of condition.
   32760               },
   32761             },
   32762           },
   32763         },
   32764       ],
   32765       "protectedRanges": [ # The protected ranges in this sheet.
   32766         { # A protected range.
   32767           "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
   32768               # Unprotected ranges are only supported on protected sheets.
   32769             { # A range on a sheet.
   32770                 # All indexes are zero-based.
   32771                 # Indexes are half open, e.g the start index is inclusive
   32772                 # and the end index is exclusive -- [start_index, end_index).
   32773                 # Missing indexes indicate the range is unbounded on that side.
   32774                 #
   32775                 # For example, if `"Sheet1"` is sheet ID 0, then:
   32776                 #
   32777                 #   `Sheet1!A1:A1 == sheet_id: 0,
   32778                 #                   start_row_index: 0, end_row_index: 1,
   32779                 #                   start_column_index: 0, end_column_index: 1`
   32780                 #
   32781                 #   `Sheet1!A3:B4 == sheet_id: 0,
   32782                 #                   start_row_index: 2, end_row_index: 4,
   32783                 #                   start_column_index: 0, end_column_index: 2`
   32784                 #
   32785                 #   `Sheet1!A:B == sheet_id: 0,
   32786                 #                 start_column_index: 0, end_column_index: 2`
   32787                 #
   32788                 #   `Sheet1!A5:B == sheet_id: 0,
   32789                 #                  start_row_index: 4,
   32790                 #                  start_column_index: 0, end_column_index: 2`
   32791                 #
   32792                 #   `Sheet1 == sheet_id:0`
   32793                 #
   32794                 # The start index must always be less than or equal to the end index.
   32795                 # If the start index equals the end index, then the range is empty.
   32796                 # Empty ranges are typically not meaningful and are usually rendered in the
   32797                 # UI as `#REF!`.
   32798               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   32799               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   32800               "sheetId": 42, # The sheet this range is on.
   32801               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   32802               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   32803             },
   32804           ],
   32805           "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
   32806               # protected area.
   32807               # This field is read-only.
   32808           "description": "A String", # The description of this protected range.
   32809           "namedRangeId": "A String", # The named range this protected range is backed by, if any.
   32810               #
   32811               # When writing, only one of range or named_range_id
   32812               # may be set.
   32813           "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
   32814               # This field is only visible to users with edit access to the protected
   32815               # range and the document.
   32816               # Editors are not supported with warning_only protection.
   32817             "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
   32818                 # range.  Domain protection is only supported on documents within a domain.
   32819             "users": [ # The email addresses of users with edit access to the protected range.
   32820               "A String",
   32821             ],
   32822             "groups": [ # The email addresses of groups with edit access to the protected range.
   32823               "A String",
   32824             ],
   32825           },
   32826           "protectedRangeId": 42, # The ID of the protected range.
   32827               # This field is read-only.
   32828           "warningOnly": True or False, # True if this protected range will show a warning when editing.
   32829               # Warning-based protection means that every user can edit data in the
   32830               # protected range, except editing will prompt a warning asking the user
   32831               # to confirm the edit.
   32832               #
   32833               # When writing: if this field is true, then editors is ignored.
   32834               # Additionally, if this field is changed from true to false and the
   32835               # `editors` field is not set (nor included in the field mask), then
   32836               # the editors will be set to all the editors in the document.
   32837           "range": { # A range on a sheet. # The range that is being protected.
   32838               # The range may be fully unbounded, in which case this is considered
   32839               # a protected sheet.
   32840               #
   32841               # When writing, only one of range or named_range_id
   32842               # may be set.
   32843               # All indexes are zero-based.
   32844               # Indexes are half open, e.g the start index is inclusive
   32845               # and the end index is exclusive -- [start_index, end_index).
   32846               # Missing indexes indicate the range is unbounded on that side.
   32847               #
   32848               # For example, if `"Sheet1"` is sheet ID 0, then:
   32849               #
   32850               #   `Sheet1!A1:A1 == sheet_id: 0,
   32851               #                   start_row_index: 0, end_row_index: 1,
   32852               #                   start_column_index: 0, end_column_index: 1`
   32853               #
   32854               #   `Sheet1!A3:B4 == sheet_id: 0,
   32855               #                   start_row_index: 2, end_row_index: 4,
   32856               #                   start_column_index: 0, end_column_index: 2`
   32857               #
   32858               #   `Sheet1!A:B == sheet_id: 0,
   32859               #                 start_column_index: 0, end_column_index: 2`
   32860               #
   32861               #   `Sheet1!A5:B == sheet_id: 0,
   32862               #                  start_row_index: 4,
   32863               #                  start_column_index: 0, end_column_index: 2`
   32864               #
   32865               #   `Sheet1 == sheet_id:0`
   32866               #
   32867               # The start index must always be less than or equal to the end index.
   32868               # If the start index equals the end index, then the range is empty.
   32869               # Empty ranges are typically not meaningful and are usually rendered in the
   32870               # UI as `#REF!`.
   32871             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   32872             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   32873             "sheetId": 42, # The sheet this range is on.
   32874             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   32875             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   32876           },
   32877         },
   32878       ],
   32879       "data": [ # Data in the grid, if this is a grid sheet.
   32880           # The number of GridData objects returned is dependent on the number of
   32881           # ranges requested on this sheet. For example, if this is representing
   32882           # `Sheet1`, and the spreadsheet was requested with ranges
   32883           # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
   32884           # startRow/startColumn of `0`,
   32885           # while the second one will have `startRow 14` (zero-based row 15),
   32886           # and `startColumn 3` (zero-based column D).
   32887         { # Data in the grid, as well as metadata about the dimensions.
   32888           "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
   32889               # in start_row.
   32890             { # Properties about a dimension.
   32891               "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
   32892               "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
   32893               "hiddenByFilter": True or False, # True if this dimension is being filtered.
   32894                   # This field is read-only.
   32895             },
   32896           ],
   32897           "startColumn": 42, # The first column this GridData refers to, zero-based.
   32898           "rowData": [ # The data in the grid, one entry per row,
   32899               # starting with the row in startRow.
   32900               # The values in RowData will correspond to columns starting
   32901               # at start_column.
   32902             { # Data about each cell in a row.
   32903               "values": [ # The values in the row, one per column.
   32904                 { # Data about a specific cell.
   32905                   "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
   32906                       # is computed dynamically based on its data, grouping, filters, values,
   32907                       # etc. Only the top-left cell of the pivot table contains the pivot table
   32908                       # definition. The other cells will contain the calculated values of the
   32909                       # results of the pivot in their effective_value fields.
   32910                     "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
   32911                         # or vertically (as rows).
   32912                     "rows": [ # Each row grouping in the pivot table.
   32913                       { # A single grouping (either row or column) in a pivot table.
   32914                         "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   32915                         "valueMetadata": [ # Metadata about values in the grouping.
   32916                           { # Metadata about a value in a pivot grouping.
   32917                             "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   32918                             "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   32919                                 # (Note that formulaValue is not valid,
   32920                                 #  because the values will be calculated.)
   32921                               "stringValue": "A String", # Represents a string value.
   32922                                   # Leading single quotes are not included. For example, if the user typed
   32923                                   # `'123` into the UI, this would be represented as a `stringValue` of
   32924                                   # `"123"`.
   32925                               "boolValue": True or False, # Represents a boolean value.
   32926                               "errorValue": { # An error in a cell. # Represents an error.
   32927                                   # This field is read-only.
   32928                                 "message": "A String", # A message with more information about the error
   32929                                     # (in the spreadsheet's locale).
   32930                                 "type": "A String", # The type of error.
   32931                               },
   32932                               "formulaValue": "A String", # Represents a formula.
   32933                               "numberValue": 3.14, # Represents a double value.
   32934                                   # Note: Dates, Times and DateTimes are represented as doubles in
   32935                                   # "serial number" format.
   32936                             },
   32937                           },
   32938                         ],
   32939                         "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   32940                             # If not specified, sorting is alphabetical by this group's values.
   32941                           "buckets": [ # Determines the bucket from which values are chosen to sort.
   32942                               #
   32943                               # For example, in a pivot table with one row group & two column groups,
   32944                               # the row group can list up to two values. The first value corresponds
   32945                               # to a value within the first column group, and the second value
   32946                               # corresponds to a value in the second column group.  If no values
   32947                               # are listed, this would indicate that the row should be sorted according
   32948                               # to the "Grand Total" over the column groups. If a single value is listed,
   32949                               # this would correspond to using the "Total" of that bucket.
   32950                             { # The kinds of value that a cell in a spreadsheet can have.
   32951                               "stringValue": "A String", # Represents a string value.
   32952                                   # Leading single quotes are not included. For example, if the user typed
   32953                                   # `'123` into the UI, this would be represented as a `stringValue` of
   32954                                   # `"123"`.
   32955                               "boolValue": True or False, # Represents a boolean value.
   32956                               "errorValue": { # An error in a cell. # Represents an error.
   32957                                   # This field is read-only.
   32958                                 "message": "A String", # A message with more information about the error
   32959                                     # (in the spreadsheet's locale).
   32960                                 "type": "A String", # The type of error.
   32961                               },
   32962                               "formulaValue": "A String", # Represents a formula.
   32963                               "numberValue": 3.14, # Represents a double value.
   32964                                   # Note: Dates, Times and DateTimes are represented as doubles in
   32965                                   # "serial number" format.
   32966                             },
   32967                           ],
   32968                           "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   32969                               # grouping should be sorted by.
   32970                         },
   32971                         "sortOrder": "A String", # The order the values in this group should be sorted.
   32972                         "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   32973                             #
   32974                             # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   32975                             # means this group refers to column `C`, whereas the offset `1` would refer
   32976                             # to column `D`.
   32977                       },
   32978                     ],
   32979                     "source": { # A range on a sheet. # The range the pivot table is reading data from.
   32980                         # All indexes are zero-based.
   32981                         # Indexes are half open, e.g the start index is inclusive
   32982                         # and the end index is exclusive -- [start_index, end_index).
   32983                         # Missing indexes indicate the range is unbounded on that side.
   32984                         #
   32985                         # For example, if `"Sheet1"` is sheet ID 0, then:
   32986                         #
   32987                         #   `Sheet1!A1:A1 == sheet_id: 0,
   32988                         #                   start_row_index: 0, end_row_index: 1,
   32989                         #                   start_column_index: 0, end_column_index: 1`
   32990                         #
   32991                         #   `Sheet1!A3:B4 == sheet_id: 0,
   32992                         #                   start_row_index: 2, end_row_index: 4,
   32993                         #                   start_column_index: 0, end_column_index: 2`
   32994                         #
   32995                         #   `Sheet1!A:B == sheet_id: 0,
   32996                         #                 start_column_index: 0, end_column_index: 2`
   32997                         #
   32998                         #   `Sheet1!A5:B == sheet_id: 0,
   32999                         #                  start_row_index: 4,
   33000                         #                  start_column_index: 0, end_column_index: 2`
   33001                         #
   33002                         #   `Sheet1 == sheet_id:0`
   33003                         #
   33004                         # The start index must always be less than or equal to the end index.
   33005                         # If the start index equals the end index, then the range is empty.
   33006                         # Empty ranges are typically not meaningful and are usually rendered in the
   33007                         # UI as `#REF!`.
   33008                       "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   33009                       "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   33010                       "sheetId": 42, # The sheet this range is on.
   33011                       "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   33012                       "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   33013                     },
   33014                     "values": [ # A list of values to include in the pivot table.
   33015                       { # The definition of how a value in a pivot table should be calculated.
   33016                         "formula": "A String", # A custom formula to calculate the value.  The formula must start
   33017                             # with an `=` character.
   33018                         "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
   33019                             #
   33020                             # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   33021                             # means this value refers to column `C`, whereas the offset `1` would
   33022                             # refer to column `D`.
   33023                         "summarizeFunction": "A String", # A function to summarize the value.
   33024                             # If formula is set, the only supported values are
   33025                             # SUM and
   33026                             # CUSTOM.
   33027                             # If sourceColumnOffset is set, then `CUSTOM`
   33028                             # is not supported.
   33029                         "name": "A String", # A name to use for the value. This is only used if formula was set.
   33030                             # Otherwise, the column name is used.
   33031                       },
   33032                     ],
   33033                     "criteria": { # An optional mapping of filters per source column offset.
   33034                         #
   33035                         # The filters will be applied before aggregating data into the pivot table.
   33036                         # The map's key is the column offset of the source range that you want to
   33037                         # filter, and the value is the criteria for that column.
   33038                         #
   33039                         # For example, if the source was `C10:E15`, a key of `0` will have the filter
   33040                         # for column `C`, whereas the key `1` is for column `D`.
   33041                       "a_key": { # Criteria for showing/hiding rows in a pivot table.
   33042                         "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
   33043                           "A String",
   33044                         ],
   33045                       },
   33046                     },
   33047                     "columns": [ # Each column grouping in the pivot table.
   33048                       { # A single grouping (either row or column) in a pivot table.
   33049                         "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   33050                         "valueMetadata": [ # Metadata about values in the grouping.
   33051                           { # Metadata about a value in a pivot grouping.
   33052                             "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   33053                             "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   33054                                 # (Note that formulaValue is not valid,
   33055                                 #  because the values will be calculated.)
   33056                               "stringValue": "A String", # Represents a string value.
   33057                                   # Leading single quotes are not included. For example, if the user typed
   33058                                   # `'123` into the UI, this would be represented as a `stringValue` of
   33059                                   # `"123"`.
   33060                               "boolValue": True or False, # Represents a boolean value.
   33061                               "errorValue": { # An error in a cell. # Represents an error.
   33062                                   # This field is read-only.
   33063                                 "message": "A String", # A message with more information about the error
   33064                                     # (in the spreadsheet's locale).
   33065                                 "type": "A String", # The type of error.
   33066                               },
   33067                               "formulaValue": "A String", # Represents a formula.
   33068                               "numberValue": 3.14, # Represents a double value.
   33069                                   # Note: Dates, Times and DateTimes are represented as doubles in
   33070                                   # "serial number" format.
   33071                             },
   33072                           },
   33073                         ],
   33074                         "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   33075                             # If not specified, sorting is alphabetical by this group's values.
   33076                           "buckets": [ # Determines the bucket from which values are chosen to sort.
   33077                               #
   33078                               # For example, in a pivot table with one row group & two column groups,
   33079                               # the row group can list up to two values. The first value corresponds
   33080                               # to a value within the first column group, and the second value
   33081                               # corresponds to a value in the second column group.  If no values
   33082                               # are listed, this would indicate that the row should be sorted according
   33083                               # to the "Grand Total" over the column groups. If a single value is listed,
   33084                               # this would correspond to using the "Total" of that bucket.
   33085                             { # The kinds of value that a cell in a spreadsheet can have.
   33086                               "stringValue": "A String", # Represents a string value.
   33087                                   # Leading single quotes are not included. For example, if the user typed
   33088                                   # `'123` into the UI, this would be represented as a `stringValue` of
   33089                                   # `"123"`.
   33090                               "boolValue": True or False, # Represents a boolean value.
   33091                               "errorValue": { # An error in a cell. # Represents an error.
   33092                                   # This field is read-only.
   33093                                 "message": "A String", # A message with more information about the error
   33094                                     # (in the spreadsheet's locale).
   33095                                 "type": "A String", # The type of error.
   33096                               },
   33097                               "formulaValue": "A String", # Represents a formula.
   33098                               "numberValue": 3.14, # Represents a double value.
   33099                                   # Note: Dates, Times and DateTimes are represented as doubles in
   33100                                   # "serial number" format.
   33101                             },
   33102                           ],
   33103                           "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   33104                               # grouping should be sorted by.
   33105                         },
   33106                         "sortOrder": "A String", # The order the values in this group should be sorted.
   33107                         "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   33108                             #
   33109                             # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   33110                             # means this group refers to column `C`, whereas the offset `1` would refer
   33111                             # to column `D`.
   33112                       },
   33113                     ],
   33114                   },
   33115                   "hyperlink": "A String", # A hyperlink this cell points to, if any.
   33116                       # This field is read-only.  (To set it, use a `=HYPERLINK` formula
   33117                       # in the userEnteredValue.formulaValue
   33118                       # field.)
   33119                   "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
   33120                       # the calculated value.  For cells with literals, this will be
   33121                       # the same as the user_entered_value.
   33122                       # This field is read-only.
   33123                     "stringValue": "A String", # Represents a string value.
   33124                         # Leading single quotes are not included. For example, if the user typed
   33125                         # `'123` into the UI, this would be represented as a `stringValue` of
   33126                         # `"123"`.
   33127                     "boolValue": True or False, # Represents a boolean value.
   33128                     "errorValue": { # An error in a cell. # Represents an error.
   33129                         # This field is read-only.
   33130                       "message": "A String", # A message with more information about the error
   33131                           # (in the spreadsheet's locale).
   33132                       "type": "A String", # The type of error.
   33133                     },
   33134                     "formulaValue": "A String", # Represents a formula.
   33135                     "numberValue": 3.14, # Represents a double value.
   33136                         # Note: Dates, Times and DateTimes are represented as doubles in
   33137                         # "serial number" format.
   33138                   },
   33139                   "formattedValue": "A String", # The formatted value of the cell.
   33140                       # This is the value as it's shown to the user.
   33141                       # This field is read-only.
   33142                   "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
   33143                       # Note: Dates, Times and DateTimes are represented as doubles in
   33144                       # serial number format.
   33145                     "stringValue": "A String", # Represents a string value.
   33146                         # Leading single quotes are not included. For example, if the user typed
   33147                         # `'123` into the UI, this would be represented as a `stringValue` of
   33148                         # `"123"`.
   33149                     "boolValue": True or False, # Represents a boolean value.
   33150                     "errorValue": { # An error in a cell. # Represents an error.
   33151                         # This field is read-only.
   33152                       "message": "A String", # A message with more information about the error
   33153                           # (in the spreadsheet's locale).
   33154                       "type": "A String", # The type of error.
   33155                     },
   33156                     "formulaValue": "A String", # Represents a formula.
   33157                     "numberValue": 3.14, # Represents a double value.
   33158                         # Note: Dates, Times and DateTimes are represented as doubles in
   33159                         # "serial number" format.
   33160                   },
   33161                   "note": "A String", # Any note on the cell.
   33162                   "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
   33163                       # This includes the results of applying any conditional formatting and,
   33164                       # if the cell contains a formula, the computed number format.
   33165                       # If the effective format is the default format, effective format will
   33166                       # not be written.
   33167                       # This field is read-only.
   33168                     "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   33169                       "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   33170                           # the user's locale will be used if necessary for the given type.
   33171                           # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   33172                           # information about the supported patterns.
   33173                       "type": "A String", # The type of the number format.
   33174                           # When writing, this field must be set.
   33175                     },
   33176                     "textDirection": "A String", # The direction of the text in the cell.
   33177                     "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   33178                         # When updating padding, every field must be specified.
   33179                       "top": 42, # The top padding of the cell.
   33180                       "right": 42, # The right padding of the cell.
   33181                       "bottom": 42, # The bottom padding of the cell.
   33182                       "left": 42, # The left padding of the cell.
   33183                     },
   33184                     "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   33185                     "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   33186                         # for simplicity of conversion to/from color representations in various
   33187                         # languages over compactness; for example, the fields of this representation
   33188                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   33189                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   33190                         # method in iOS; and, with just a little work, it can be easily formatted into
   33191                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   33192                         #
   33193                         # Example (Java):
   33194                         #
   33195                         #      import com.google.type.Color;
   33196                         #
   33197                         #      // ...
   33198                         #      public static java.awt.Color fromProto(Color protocolor) {
   33199                         #        float alpha = protocolor.hasAlpha()
   33200                         #            ? protocolor.getAlpha().getValue()
   33201                         #            : 1.0;
   33202                         #
   33203                         #        return new java.awt.Color(
   33204                         #            protocolor.getRed(),
   33205                         #            protocolor.getGreen(),
   33206                         #            protocolor.getBlue(),
   33207                         #            alpha);
   33208                         #      }
   33209                         #
   33210                         #      public static Color toProto(java.awt.Color color) {
   33211                         #        float red = (float) color.getRed();
   33212                         #        float green = (float) color.getGreen();
   33213                         #        float blue = (float) color.getBlue();
   33214                         #        float denominator = 255.0;
   33215                         #        Color.Builder resultBuilder =
   33216                         #            Color
   33217                         #                .newBuilder()
   33218                         #                .setRed(red / denominator)
   33219                         #                .setGreen(green / denominator)
   33220                         #                .setBlue(blue / denominator);
   33221                         #        int alpha = color.getAlpha();
   33222                         #        if (alpha != 255) {
   33223                         #          result.setAlpha(
   33224                         #              FloatValue
   33225                         #                  .newBuilder()
   33226                         #                  .setValue(((float) alpha) / denominator)
   33227                         #                  .build());
   33228                         #        }
   33229                         #        return resultBuilder.build();
   33230                         #      }
   33231                         #      // ...
   33232                         #
   33233                         # Example (iOS / Obj-C):
   33234                         #
   33235                         #      // ...
   33236                         #      static UIColor* fromProto(Color* protocolor) {
   33237                         #         float red = [protocolor red];
   33238                         #         float green = [protocolor green];
   33239                         #         float blue = [protocolor blue];
   33240                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   33241                         #         float alpha = 1.0;
   33242                         #         if (alpha_wrapper != nil) {
   33243                         #           alpha = [alpha_wrapper value];
   33244                         #         }
   33245                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   33246                         #      }
   33247                         #
   33248                         #      static Color* toProto(UIColor* color) {
   33249                         #          CGFloat red, green, blue, alpha;
   33250                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   33251                         #            return nil;
   33252                         #          }
   33253                         #          Color* result = [Color alloc] init];
   33254                         #          [result setRed:red];
   33255                         #          [result setGreen:green];
   33256                         #          [result setBlue:blue];
   33257                         #          if (alpha <= 0.9999) {
   33258                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   33259                         #          }
   33260                         #          [result autorelease];
   33261                         #          return result;
   33262                         #     }
   33263                         #     // ...
   33264                         #
   33265                         #  Example (JavaScript):
   33266                         #
   33267                         #     // ...
   33268                         #
   33269                         #     var protoToCssColor = function(rgb_color) {
   33270                         #        var redFrac = rgb_color.red || 0.0;
   33271                         #        var greenFrac = rgb_color.green || 0.0;
   33272                         #        var blueFrac = rgb_color.blue || 0.0;
   33273                         #        var red = Math.floor(redFrac * 255);
   33274                         #        var green = Math.floor(greenFrac * 255);
   33275                         #        var blue = Math.floor(blueFrac * 255);
   33276                         #
   33277                         #        if (!('alpha' in rgb_color)) {
   33278                         #           return rgbToCssColor_(red, green, blue);
   33279                         #        }
   33280                         #
   33281                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   33282                         #        var rgbParams = [red, green, blue].join(',');
   33283                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   33284                         #     };
   33285                         #
   33286                         #     var rgbToCssColor_ = function(red, green, blue) {
   33287                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   33288                         #       var hexString = rgbNumber.toString(16);
   33289                         #       var missingZeros = 6 - hexString.length;
   33290                         #       var resultBuilder = ['#'];
   33291                         #       for (var i = 0; i < missingZeros; i++) {
   33292                         #          resultBuilder.push('0');
   33293                         #       }
   33294                         #       resultBuilder.push(hexString);
   33295                         #       return resultBuilder.join('');
   33296                         #     };
   33297                         #
   33298                         #     // ...
   33299                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   33300                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   33301                           # the final pixel color is defined by the equation:
   33302                           #
   33303                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   33304                           #
   33305                           # This means that a value of 1.0 corresponds to a solid color, whereas
   33306                           # a value of 0.0 corresponds to a completely transparent color. This
   33307                           # uses a wrapper message rather than a simple float scalar so that it is
   33308                           # possible to distinguish between a default value and the value being unset.
   33309                           # If omitted, this color object is to be rendered as a solid color
   33310                           # (as if the alpha value had been explicitly given with a value of 1.0).
   33311                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   33312                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   33313                     },
   33314                     "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   33315                     "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   33316                         # Absent values indicate that the field isn't specified.
   33317                       "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   33318                           # for simplicity of conversion to/from color representations in various
   33319                           # languages over compactness; for example, the fields of this representation
   33320                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   33321                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   33322                           # method in iOS; and, with just a little work, it can be easily formatted into
   33323                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   33324                           #
   33325                           # Example (Java):
   33326                           #
   33327                           #      import com.google.type.Color;
   33328                           #
   33329                           #      // ...
   33330                           #      public static java.awt.Color fromProto(Color protocolor) {
   33331                           #        float alpha = protocolor.hasAlpha()
   33332                           #            ? protocolor.getAlpha().getValue()
   33333                           #            : 1.0;
   33334                           #
   33335                           #        return new java.awt.Color(
   33336                           #            protocolor.getRed(),
   33337                           #            protocolor.getGreen(),
   33338                           #            protocolor.getBlue(),
   33339                           #            alpha);
   33340                           #      }
   33341                           #
   33342                           #      public static Color toProto(java.awt.Color color) {
   33343                           #        float red = (float) color.getRed();
   33344                           #        float green = (float) color.getGreen();
   33345                           #        float blue = (float) color.getBlue();
   33346                           #        float denominator = 255.0;
   33347                           #        Color.Builder resultBuilder =
   33348                           #            Color
   33349                           #                .newBuilder()
   33350                           #                .setRed(red / denominator)
   33351                           #                .setGreen(green / denominator)
   33352                           #                .setBlue(blue / denominator);
   33353                           #        int alpha = color.getAlpha();
   33354                           #        if (alpha != 255) {
   33355                           #          result.setAlpha(
   33356                           #              FloatValue
   33357                           #                  .newBuilder()
   33358                           #                  .setValue(((float) alpha) / denominator)
   33359                           #                  .build());
   33360                           #        }
   33361                           #        return resultBuilder.build();
   33362                           #      }
   33363                           #      // ...
   33364                           #
   33365                           # Example (iOS / Obj-C):
   33366                           #
   33367                           #      // ...
   33368                           #      static UIColor* fromProto(Color* protocolor) {
   33369                           #         float red = [protocolor red];
   33370                           #         float green = [protocolor green];
   33371                           #         float blue = [protocolor blue];
   33372                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   33373                           #         float alpha = 1.0;
   33374                           #         if (alpha_wrapper != nil) {
   33375                           #           alpha = [alpha_wrapper value];
   33376                           #         }
   33377                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   33378                           #      }
   33379                           #
   33380                           #      static Color* toProto(UIColor* color) {
   33381                           #          CGFloat red, green, blue, alpha;
   33382                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   33383                           #            return nil;
   33384                           #          }
   33385                           #          Color* result = [Color alloc] init];
   33386                           #          [result setRed:red];
   33387                           #          [result setGreen:green];
   33388                           #          [result setBlue:blue];
   33389                           #          if (alpha <= 0.9999) {
   33390                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   33391                           #          }
   33392                           #          [result autorelease];
   33393                           #          return result;
   33394                           #     }
   33395                           #     // ...
   33396                           #
   33397                           #  Example (JavaScript):
   33398                           #
   33399                           #     // ...
   33400                           #
   33401                           #     var protoToCssColor = function(rgb_color) {
   33402                           #        var redFrac = rgb_color.red || 0.0;
   33403                           #        var greenFrac = rgb_color.green || 0.0;
   33404                           #        var blueFrac = rgb_color.blue || 0.0;
   33405                           #        var red = Math.floor(redFrac * 255);
   33406                           #        var green = Math.floor(greenFrac * 255);
   33407                           #        var blue = Math.floor(blueFrac * 255);
   33408                           #
   33409                           #        if (!('alpha' in rgb_color)) {
   33410                           #           return rgbToCssColor_(red, green, blue);
   33411                           #        }
   33412                           #
   33413                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   33414                           #        var rgbParams = [red, green, blue].join(',');
   33415                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   33416                           #     };
   33417                           #
   33418                           #     var rgbToCssColor_ = function(red, green, blue) {
   33419                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   33420                           #       var hexString = rgbNumber.toString(16);
   33421                           #       var missingZeros = 6 - hexString.length;
   33422                           #       var resultBuilder = ['#'];
   33423                           #       for (var i = 0; i < missingZeros; i++) {
   33424                           #          resultBuilder.push('0');
   33425                           #       }
   33426                           #       resultBuilder.push(hexString);
   33427                           #       return resultBuilder.join('');
   33428                           #     };
   33429                           #
   33430                           #     // ...
   33431                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   33432                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   33433                             # the final pixel color is defined by the equation:
   33434                             #
   33435                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   33436                             #
   33437                             # This means that a value of 1.0 corresponds to a solid color, whereas
   33438                             # a value of 0.0 corresponds to a completely transparent color. This
   33439                             # uses a wrapper message rather than a simple float scalar so that it is
   33440                             # possible to distinguish between a default value and the value being unset.
   33441                             # If omitted, this color object is to be rendered as a solid color
   33442                             # (as if the alpha value had been explicitly given with a value of 1.0).
   33443                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   33444                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   33445                       },
   33446                       "bold": True or False, # True if the text is bold.
   33447                       "strikethrough": True or False, # True if the text has a strikethrough.
   33448                       "fontFamily": "A String", # The font family.
   33449                       "fontSize": 42, # The size of the font.
   33450                       "italic": True or False, # True if the text is italicized.
   33451                       "underline": True or False, # True if the text is underlined.
   33452                     },
   33453                     "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   33454                       "angle": 42, # The angle between the standard orientation and the desired orientation.
   33455                           # Measured in degrees. Valid values are between -90 and 90. Positive
   33456                           # angles are angled upwards, negative are angled downwards.
   33457                           #
   33458                           # Note: For LTR text direction positive angles are in the counterclockwise
   33459                           # direction, whereas for RTL they are in the clockwise direction
   33460                       "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   33461                           # characters is unchanged.
   33462                           # For example:
   33463                           #
   33464                           #     | V |
   33465                           #     | e |
   33466                           #     | r |
   33467                           #     | t |
   33468                           #     | i |
   33469                           #     | c |
   33470                           #     | a |
   33471                           #     | l |
   33472                     },
   33473                     "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   33474                     "borders": { # The borders of the cell. # The borders of the cell.
   33475                       "top": { # A border along a cell. # The top border of the cell.
   33476                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   33477                             # for simplicity of conversion to/from color representations in various
   33478                             # languages over compactness; for example, the fields of this representation
   33479                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   33480                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   33481                             # method in iOS; and, with just a little work, it can be easily formatted into
   33482                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   33483                             #
   33484                             # Example (Java):
   33485                             #
   33486                             #      import com.google.type.Color;
   33487                             #
   33488                             #      // ...
   33489                             #      public static java.awt.Color fromProto(Color protocolor) {
   33490                             #        float alpha = protocolor.hasAlpha()
   33491                             #            ? protocolor.getAlpha().getValue()
   33492                             #            : 1.0;
   33493                             #
   33494                             #        return new java.awt.Color(
   33495                             #            protocolor.getRed(),
   33496                             #            protocolor.getGreen(),
   33497                             #            protocolor.getBlue(),
   33498                             #            alpha);
   33499                             #      }
   33500                             #
   33501                             #      public static Color toProto(java.awt.Color color) {
   33502                             #        float red = (float) color.getRed();
   33503                             #        float green = (float) color.getGreen();
   33504                             #        float blue = (float) color.getBlue();
   33505                             #        float denominator = 255.0;
   33506                             #        Color.Builder resultBuilder =
   33507                             #            Color
   33508                             #                .newBuilder()
   33509                             #                .setRed(red / denominator)
   33510                             #                .setGreen(green / denominator)
   33511                             #                .setBlue(blue / denominator);
   33512                             #        int alpha = color.getAlpha();
   33513                             #        if (alpha != 255) {
   33514                             #          result.setAlpha(
   33515                             #              FloatValue
   33516                             #                  .newBuilder()
   33517                             #                  .setValue(((float) alpha) / denominator)
   33518                             #                  .build());
   33519                             #        }
   33520                             #        return resultBuilder.build();
   33521                             #      }
   33522                             #      // ...
   33523                             #
   33524                             # Example (iOS / Obj-C):
   33525                             #
   33526                             #      // ...
   33527                             #      static UIColor* fromProto(Color* protocolor) {
   33528                             #         float red = [protocolor red];
   33529                             #         float green = [protocolor green];
   33530                             #         float blue = [protocolor blue];
   33531                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   33532                             #         float alpha = 1.0;
   33533                             #         if (alpha_wrapper != nil) {
   33534                             #           alpha = [alpha_wrapper value];
   33535                             #         }
   33536                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   33537                             #      }
   33538                             #
   33539                             #      static Color* toProto(UIColor* color) {
   33540                             #          CGFloat red, green, blue, alpha;
   33541                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   33542                             #            return nil;
   33543                             #          }
   33544                             #          Color* result = [Color alloc] init];
   33545                             #          [result setRed:red];
   33546                             #          [result setGreen:green];
   33547                             #          [result setBlue:blue];
   33548                             #          if (alpha <= 0.9999) {
   33549                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   33550                             #          }
   33551                             #          [result autorelease];
   33552                             #          return result;
   33553                             #     }
   33554                             #     // ...
   33555                             #
   33556                             #  Example (JavaScript):
   33557                             #
   33558                             #     // ...
   33559                             #
   33560                             #     var protoToCssColor = function(rgb_color) {
   33561                             #        var redFrac = rgb_color.red || 0.0;
   33562                             #        var greenFrac = rgb_color.green || 0.0;
   33563                             #        var blueFrac = rgb_color.blue || 0.0;
   33564                             #        var red = Math.floor(redFrac * 255);
   33565                             #        var green = Math.floor(greenFrac * 255);
   33566                             #        var blue = Math.floor(blueFrac * 255);
   33567                             #
   33568                             #        if (!('alpha' in rgb_color)) {
   33569                             #           return rgbToCssColor_(red, green, blue);
   33570                             #        }
   33571                             #
   33572                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   33573                             #        var rgbParams = [red, green, blue].join(',');
   33574                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   33575                             #     };
   33576                             #
   33577                             #     var rgbToCssColor_ = function(red, green, blue) {
   33578                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   33579                             #       var hexString = rgbNumber.toString(16);
   33580                             #       var missingZeros = 6 - hexString.length;
   33581                             #       var resultBuilder = ['#'];
   33582                             #       for (var i = 0; i < missingZeros; i++) {
   33583                             #          resultBuilder.push('0');
   33584                             #       }
   33585                             #       resultBuilder.push(hexString);
   33586                             #       return resultBuilder.join('');
   33587                             #     };
   33588                             #
   33589                             #     // ...
   33590                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   33591                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   33592                               # the final pixel color is defined by the equation:
   33593                               #
   33594                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   33595                               #
   33596                               # This means that a value of 1.0 corresponds to a solid color, whereas
   33597                               # a value of 0.0 corresponds to a completely transparent color. This
   33598                               # uses a wrapper message rather than a simple float scalar so that it is
   33599                               # possible to distinguish between a default value and the value being unset.
   33600                               # If omitted, this color object is to be rendered as a solid color
   33601                               # (as if the alpha value had been explicitly given with a value of 1.0).
   33602                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   33603                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   33604                         },
   33605                         "width": 42, # The width of the border, in pixels.
   33606                             # Deprecated; the width is determined by the "style" field.
   33607                         "style": "A String", # The style of the border.
   33608                       },
   33609                       "right": { # A border along a cell. # The right border of the cell.
   33610                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   33611                             # for simplicity of conversion to/from color representations in various
   33612                             # languages over compactness; for example, the fields of this representation
   33613                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   33614                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   33615                             # method in iOS; and, with just a little work, it can be easily formatted into
   33616                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   33617                             #
   33618                             # Example (Java):
   33619                             #
   33620                             #      import com.google.type.Color;
   33621                             #
   33622                             #      // ...
   33623                             #      public static java.awt.Color fromProto(Color protocolor) {
   33624                             #        float alpha = protocolor.hasAlpha()
   33625                             #            ? protocolor.getAlpha().getValue()
   33626                             #            : 1.0;
   33627                             #
   33628                             #        return new java.awt.Color(
   33629                             #            protocolor.getRed(),
   33630                             #            protocolor.getGreen(),
   33631                             #            protocolor.getBlue(),
   33632                             #            alpha);
   33633                             #      }
   33634                             #
   33635                             #      public static Color toProto(java.awt.Color color) {
   33636                             #        float red = (float) color.getRed();
   33637                             #        float green = (float) color.getGreen();
   33638                             #        float blue = (float) color.getBlue();
   33639                             #        float denominator = 255.0;
   33640                             #        Color.Builder resultBuilder =
   33641                             #            Color
   33642                             #                .newBuilder()
   33643                             #                .setRed(red / denominator)
   33644                             #                .setGreen(green / denominator)
   33645                             #                .setBlue(blue / denominator);
   33646                             #        int alpha = color.getAlpha();
   33647                             #        if (alpha != 255) {
   33648                             #          result.setAlpha(
   33649                             #              FloatValue
   33650                             #                  .newBuilder()
   33651                             #                  .setValue(((float) alpha) / denominator)
   33652                             #                  .build());
   33653                             #        }
   33654                             #        return resultBuilder.build();
   33655                             #      }
   33656                             #      // ...
   33657                             #
   33658                             # Example (iOS / Obj-C):
   33659                             #
   33660                             #      // ...
   33661                             #      static UIColor* fromProto(Color* protocolor) {
   33662                             #         float red = [protocolor red];
   33663                             #         float green = [protocolor green];
   33664                             #         float blue = [protocolor blue];
   33665                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   33666                             #         float alpha = 1.0;
   33667                             #         if (alpha_wrapper != nil) {
   33668                             #           alpha = [alpha_wrapper value];
   33669                             #         }
   33670                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   33671                             #      }
   33672                             #
   33673                             #      static Color* toProto(UIColor* color) {
   33674                             #          CGFloat red, green, blue, alpha;
   33675                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   33676                             #            return nil;
   33677                             #          }
   33678                             #          Color* result = [Color alloc] init];
   33679                             #          [result setRed:red];
   33680                             #          [result setGreen:green];
   33681                             #          [result setBlue:blue];
   33682                             #          if (alpha <= 0.9999) {
   33683                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   33684                             #          }
   33685                             #          [result autorelease];
   33686                             #          return result;
   33687                             #     }
   33688                             #     // ...
   33689                             #
   33690                             #  Example (JavaScript):
   33691                             #
   33692                             #     // ...
   33693                             #
   33694                             #     var protoToCssColor = function(rgb_color) {
   33695                             #        var redFrac = rgb_color.red || 0.0;
   33696                             #        var greenFrac = rgb_color.green || 0.0;
   33697                             #        var blueFrac = rgb_color.blue || 0.0;
   33698                             #        var red = Math.floor(redFrac * 255);
   33699                             #        var green = Math.floor(greenFrac * 255);
   33700                             #        var blue = Math.floor(blueFrac * 255);
   33701                             #
   33702                             #        if (!('alpha' in rgb_color)) {
   33703                             #           return rgbToCssColor_(red, green, blue);
   33704                             #        }
   33705                             #
   33706                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   33707                             #        var rgbParams = [red, green, blue].join(',');
   33708                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   33709                             #     };
   33710                             #
   33711                             #     var rgbToCssColor_ = function(red, green, blue) {
   33712                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   33713                             #       var hexString = rgbNumber.toString(16);
   33714                             #       var missingZeros = 6 - hexString.length;
   33715                             #       var resultBuilder = ['#'];
   33716                             #       for (var i = 0; i < missingZeros; i++) {
   33717                             #          resultBuilder.push('0');
   33718                             #       }
   33719                             #       resultBuilder.push(hexString);
   33720                             #       return resultBuilder.join('');
   33721                             #     };
   33722                             #
   33723                             #     // ...
   33724                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   33725                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   33726                               # the final pixel color is defined by the equation:
   33727                               #
   33728                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   33729                               #
   33730                               # This means that a value of 1.0 corresponds to a solid color, whereas
   33731                               # a value of 0.0 corresponds to a completely transparent color. This
   33732                               # uses a wrapper message rather than a simple float scalar so that it is
   33733                               # possible to distinguish between a default value and the value being unset.
   33734                               # If omitted, this color object is to be rendered as a solid color
   33735                               # (as if the alpha value had been explicitly given with a value of 1.0).
   33736                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   33737                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   33738                         },
   33739                         "width": 42, # The width of the border, in pixels.
   33740                             # Deprecated; the width is determined by the "style" field.
   33741                         "style": "A String", # The style of the border.
   33742                       },
   33743                       "bottom": { # A border along a cell. # The bottom border of the cell.
   33744                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   33745                             # for simplicity of conversion to/from color representations in various
   33746                             # languages over compactness; for example, the fields of this representation
   33747                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   33748                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   33749                             # method in iOS; and, with just a little work, it can be easily formatted into
   33750                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   33751                             #
   33752                             # Example (Java):
   33753                             #
   33754                             #      import com.google.type.Color;
   33755                             #
   33756                             #      // ...
   33757                             #      public static java.awt.Color fromProto(Color protocolor) {
   33758                             #        float alpha = protocolor.hasAlpha()
   33759                             #            ? protocolor.getAlpha().getValue()
   33760                             #            : 1.0;
   33761                             #
   33762                             #        return new java.awt.Color(
   33763                             #            protocolor.getRed(),
   33764                             #            protocolor.getGreen(),
   33765                             #            protocolor.getBlue(),
   33766                             #            alpha);
   33767                             #      }
   33768                             #
   33769                             #      public static Color toProto(java.awt.Color color) {
   33770                             #        float red = (float) color.getRed();
   33771                             #        float green = (float) color.getGreen();
   33772                             #        float blue = (float) color.getBlue();
   33773                             #        float denominator = 255.0;
   33774                             #        Color.Builder resultBuilder =
   33775                             #            Color
   33776                             #                .newBuilder()
   33777                             #                .setRed(red / denominator)
   33778                             #                .setGreen(green / denominator)
   33779                             #                .setBlue(blue / denominator);
   33780                             #        int alpha = color.getAlpha();
   33781                             #        if (alpha != 255) {
   33782                             #          result.setAlpha(
   33783                             #              FloatValue
   33784                             #                  .newBuilder()
   33785                             #                  .setValue(((float) alpha) / denominator)
   33786                             #                  .build());
   33787                             #        }
   33788                             #        return resultBuilder.build();
   33789                             #      }
   33790                             #      // ...
   33791                             #
   33792                             # Example (iOS / Obj-C):
   33793                             #
   33794                             #      // ...
   33795                             #      static UIColor* fromProto(Color* protocolor) {
   33796                             #         float red = [protocolor red];
   33797                             #         float green = [protocolor green];
   33798                             #         float blue = [protocolor blue];
   33799                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   33800                             #         float alpha = 1.0;
   33801                             #         if (alpha_wrapper != nil) {
   33802                             #           alpha = [alpha_wrapper value];
   33803                             #         }
   33804                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   33805                             #      }
   33806                             #
   33807                             #      static Color* toProto(UIColor* color) {
   33808                             #          CGFloat red, green, blue, alpha;
   33809                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   33810                             #            return nil;
   33811                             #          }
   33812                             #          Color* result = [Color alloc] init];
   33813                             #          [result setRed:red];
   33814                             #          [result setGreen:green];
   33815                             #          [result setBlue:blue];
   33816                             #          if (alpha <= 0.9999) {
   33817                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   33818                             #          }
   33819                             #          [result autorelease];
   33820                             #          return result;
   33821                             #     }
   33822                             #     // ...
   33823                             #
   33824                             #  Example (JavaScript):
   33825                             #
   33826                             #     // ...
   33827                             #
   33828                             #     var protoToCssColor = function(rgb_color) {
   33829                             #        var redFrac = rgb_color.red || 0.0;
   33830                             #        var greenFrac = rgb_color.green || 0.0;
   33831                             #        var blueFrac = rgb_color.blue || 0.0;
   33832                             #        var red = Math.floor(redFrac * 255);
   33833                             #        var green = Math.floor(greenFrac * 255);
   33834                             #        var blue = Math.floor(blueFrac * 255);
   33835                             #
   33836                             #        if (!('alpha' in rgb_color)) {
   33837                             #           return rgbToCssColor_(red, green, blue);
   33838                             #        }
   33839                             #
   33840                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   33841                             #        var rgbParams = [red, green, blue].join(',');
   33842                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   33843                             #     };
   33844                             #
   33845                             #     var rgbToCssColor_ = function(red, green, blue) {
   33846                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   33847                             #       var hexString = rgbNumber.toString(16);
   33848                             #       var missingZeros = 6 - hexString.length;
   33849                             #       var resultBuilder = ['#'];
   33850                             #       for (var i = 0; i < missingZeros; i++) {
   33851                             #          resultBuilder.push('0');
   33852                             #       }
   33853                             #       resultBuilder.push(hexString);
   33854                             #       return resultBuilder.join('');
   33855                             #     };
   33856                             #
   33857                             #     // ...
   33858                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   33859                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   33860                               # the final pixel color is defined by the equation:
   33861                               #
   33862                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   33863                               #
   33864                               # This means that a value of 1.0 corresponds to a solid color, whereas
   33865                               # a value of 0.0 corresponds to a completely transparent color. This
   33866                               # uses a wrapper message rather than a simple float scalar so that it is
   33867                               # possible to distinguish between a default value and the value being unset.
   33868                               # If omitted, this color object is to be rendered as a solid color
   33869                               # (as if the alpha value had been explicitly given with a value of 1.0).
   33870                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   33871                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   33872                         },
   33873                         "width": 42, # The width of the border, in pixels.
   33874                             # Deprecated; the width is determined by the "style" field.
   33875                         "style": "A String", # The style of the border.
   33876                       },
   33877                       "left": { # A border along a cell. # The left border of the cell.
   33878                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   33879                             # for simplicity of conversion to/from color representations in various
   33880                             # languages over compactness; for example, the fields of this representation
   33881                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   33882                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   33883                             # method in iOS; and, with just a little work, it can be easily formatted into
   33884                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   33885                             #
   33886                             # Example (Java):
   33887                             #
   33888                             #      import com.google.type.Color;
   33889                             #
   33890                             #      // ...
   33891                             #      public static java.awt.Color fromProto(Color protocolor) {
   33892                             #        float alpha = protocolor.hasAlpha()
   33893                             #            ? protocolor.getAlpha().getValue()
   33894                             #            : 1.0;
   33895                             #
   33896                             #        return new java.awt.Color(
   33897                             #            protocolor.getRed(),
   33898                             #            protocolor.getGreen(),
   33899                             #            protocolor.getBlue(),
   33900                             #            alpha);
   33901                             #      }
   33902                             #
   33903                             #      public static Color toProto(java.awt.Color color) {
   33904                             #        float red = (float) color.getRed();
   33905                             #        float green = (float) color.getGreen();
   33906                             #        float blue = (float) color.getBlue();
   33907                             #        float denominator = 255.0;
   33908                             #        Color.Builder resultBuilder =
   33909                             #            Color
   33910                             #                .newBuilder()
   33911                             #                .setRed(red / denominator)
   33912                             #                .setGreen(green / denominator)
   33913                             #                .setBlue(blue / denominator);
   33914                             #        int alpha = color.getAlpha();
   33915                             #        if (alpha != 255) {
   33916                             #          result.setAlpha(
   33917                             #              FloatValue
   33918                             #                  .newBuilder()
   33919                             #                  .setValue(((float) alpha) / denominator)
   33920                             #                  .build());
   33921                             #        }
   33922                             #        return resultBuilder.build();
   33923                             #      }
   33924                             #      // ...
   33925                             #
   33926                             # Example (iOS / Obj-C):
   33927                             #
   33928                             #      // ...
   33929                             #      static UIColor* fromProto(Color* protocolor) {
   33930                             #         float red = [protocolor red];
   33931                             #         float green = [protocolor green];
   33932                             #         float blue = [protocolor blue];
   33933                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   33934                             #         float alpha = 1.0;
   33935                             #         if (alpha_wrapper != nil) {
   33936                             #           alpha = [alpha_wrapper value];
   33937                             #         }
   33938                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   33939                             #      }
   33940                             #
   33941                             #      static Color* toProto(UIColor* color) {
   33942                             #          CGFloat red, green, blue, alpha;
   33943                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   33944                             #            return nil;
   33945                             #          }
   33946                             #          Color* result = [Color alloc] init];
   33947                             #          [result setRed:red];
   33948                             #          [result setGreen:green];
   33949                             #          [result setBlue:blue];
   33950                             #          if (alpha <= 0.9999) {
   33951                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   33952                             #          }
   33953                             #          [result autorelease];
   33954                             #          return result;
   33955                             #     }
   33956                             #     // ...
   33957                             #
   33958                             #  Example (JavaScript):
   33959                             #
   33960                             #     // ...
   33961                             #
   33962                             #     var protoToCssColor = function(rgb_color) {
   33963                             #        var redFrac = rgb_color.red || 0.0;
   33964                             #        var greenFrac = rgb_color.green || 0.0;
   33965                             #        var blueFrac = rgb_color.blue || 0.0;
   33966                             #        var red = Math.floor(redFrac * 255);
   33967                             #        var green = Math.floor(greenFrac * 255);
   33968                             #        var blue = Math.floor(blueFrac * 255);
   33969                             #
   33970                             #        if (!('alpha' in rgb_color)) {
   33971                             #           return rgbToCssColor_(red, green, blue);
   33972                             #        }
   33973                             #
   33974                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   33975                             #        var rgbParams = [red, green, blue].join(',');
   33976                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   33977                             #     };
   33978                             #
   33979                             #     var rgbToCssColor_ = function(red, green, blue) {
   33980                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   33981                             #       var hexString = rgbNumber.toString(16);
   33982                             #       var missingZeros = 6 - hexString.length;
   33983                             #       var resultBuilder = ['#'];
   33984                             #       for (var i = 0; i < missingZeros; i++) {
   33985                             #          resultBuilder.push('0');
   33986                             #       }
   33987                             #       resultBuilder.push(hexString);
   33988                             #       return resultBuilder.join('');
   33989                             #     };
   33990                             #
   33991                             #     // ...
   33992                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   33993                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   33994                               # the final pixel color is defined by the equation:
   33995                               #
   33996                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   33997                               #
   33998                               # This means that a value of 1.0 corresponds to a solid color, whereas
   33999                               # a value of 0.0 corresponds to a completely transparent color. This
   34000                               # uses a wrapper message rather than a simple float scalar so that it is
   34001                               # possible to distinguish between a default value and the value being unset.
   34002                               # If omitted, this color object is to be rendered as a solid color
   34003                               # (as if the alpha value had been explicitly given with a value of 1.0).
   34004                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   34005                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   34006                         },
   34007                         "width": 42, # The width of the border, in pixels.
   34008                             # Deprecated; the width is determined by the "style" field.
   34009                         "style": "A String", # The style of the border.
   34010                       },
   34011                     },
   34012                     "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   34013                   },
   34014                   "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
   34015                       #
   34016                       # When writing, the new format will be merged with the existing format.
   34017                     "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   34018                       "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   34019                           # the user's locale will be used if necessary for the given type.
   34020                           # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   34021                           # information about the supported patterns.
   34022                       "type": "A String", # The type of the number format.
   34023                           # When writing, this field must be set.
   34024                     },
   34025                     "textDirection": "A String", # The direction of the text in the cell.
   34026                     "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   34027                         # When updating padding, every field must be specified.
   34028                       "top": 42, # The top padding of the cell.
   34029                       "right": 42, # The right padding of the cell.
   34030                       "bottom": 42, # The bottom padding of the cell.
   34031                       "left": 42, # The left padding of the cell.
   34032                     },
   34033                     "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   34034                     "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   34035                         # for simplicity of conversion to/from color representations in various
   34036                         # languages over compactness; for example, the fields of this representation
   34037                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   34038                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   34039                         # method in iOS; and, with just a little work, it can be easily formatted into
   34040                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   34041                         #
   34042                         # Example (Java):
   34043                         #
   34044                         #      import com.google.type.Color;
   34045                         #
   34046                         #      // ...
   34047                         #      public static java.awt.Color fromProto(Color protocolor) {
   34048                         #        float alpha = protocolor.hasAlpha()
   34049                         #            ? protocolor.getAlpha().getValue()
   34050                         #            : 1.0;
   34051                         #
   34052                         #        return new java.awt.Color(
   34053                         #            protocolor.getRed(),
   34054                         #            protocolor.getGreen(),
   34055                         #            protocolor.getBlue(),
   34056                         #            alpha);
   34057                         #      }
   34058                         #
   34059                         #      public static Color toProto(java.awt.Color color) {
   34060                         #        float red = (float) color.getRed();
   34061                         #        float green = (float) color.getGreen();
   34062                         #        float blue = (float) color.getBlue();
   34063                         #        float denominator = 255.0;
   34064                         #        Color.Builder resultBuilder =
   34065                         #            Color
   34066                         #                .newBuilder()
   34067                         #                .setRed(red / denominator)
   34068                         #                .setGreen(green / denominator)
   34069                         #                .setBlue(blue / denominator);
   34070                         #        int alpha = color.getAlpha();
   34071                         #        if (alpha != 255) {
   34072                         #          result.setAlpha(
   34073                         #              FloatValue
   34074                         #                  .newBuilder()
   34075                         #                  .setValue(((float) alpha) / denominator)
   34076                         #                  .build());
   34077                         #        }
   34078                         #        return resultBuilder.build();
   34079                         #      }
   34080                         #      // ...
   34081                         #
   34082                         # Example (iOS / Obj-C):
   34083                         #
   34084                         #      // ...
   34085                         #      static UIColor* fromProto(Color* protocolor) {
   34086                         #         float red = [protocolor red];
   34087                         #         float green = [protocolor green];
   34088                         #         float blue = [protocolor blue];
   34089                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   34090                         #         float alpha = 1.0;
   34091                         #         if (alpha_wrapper != nil) {
   34092                         #           alpha = [alpha_wrapper value];
   34093                         #         }
   34094                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   34095                         #      }
   34096                         #
   34097                         #      static Color* toProto(UIColor* color) {
   34098                         #          CGFloat red, green, blue, alpha;
   34099                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   34100                         #            return nil;
   34101                         #          }
   34102                         #          Color* result = [Color alloc] init];
   34103                         #          [result setRed:red];
   34104                         #          [result setGreen:green];
   34105                         #          [result setBlue:blue];
   34106                         #          if (alpha <= 0.9999) {
   34107                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   34108                         #          }
   34109                         #          [result autorelease];
   34110                         #          return result;
   34111                         #     }
   34112                         #     // ...
   34113                         #
   34114                         #  Example (JavaScript):
   34115                         #
   34116                         #     // ...
   34117                         #
   34118                         #     var protoToCssColor = function(rgb_color) {
   34119                         #        var redFrac = rgb_color.red || 0.0;
   34120                         #        var greenFrac = rgb_color.green || 0.0;
   34121                         #        var blueFrac = rgb_color.blue || 0.0;
   34122                         #        var red = Math.floor(redFrac * 255);
   34123                         #        var green = Math.floor(greenFrac * 255);
   34124                         #        var blue = Math.floor(blueFrac * 255);
   34125                         #
   34126                         #        if (!('alpha' in rgb_color)) {
   34127                         #           return rgbToCssColor_(red, green, blue);
   34128                         #        }
   34129                         #
   34130                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   34131                         #        var rgbParams = [red, green, blue].join(',');
   34132                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   34133                         #     };
   34134                         #
   34135                         #     var rgbToCssColor_ = function(red, green, blue) {
   34136                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   34137                         #       var hexString = rgbNumber.toString(16);
   34138                         #       var missingZeros = 6 - hexString.length;
   34139                         #       var resultBuilder = ['#'];
   34140                         #       for (var i = 0; i < missingZeros; i++) {
   34141                         #          resultBuilder.push('0');
   34142                         #       }
   34143                         #       resultBuilder.push(hexString);
   34144                         #       return resultBuilder.join('');
   34145                         #     };
   34146                         #
   34147                         #     // ...
   34148                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   34149                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   34150                           # the final pixel color is defined by the equation:
   34151                           #
   34152                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   34153                           #
   34154                           # This means that a value of 1.0 corresponds to a solid color, whereas
   34155                           # a value of 0.0 corresponds to a completely transparent color. This
   34156                           # uses a wrapper message rather than a simple float scalar so that it is
   34157                           # possible to distinguish between a default value and the value being unset.
   34158                           # If omitted, this color object is to be rendered as a solid color
   34159                           # (as if the alpha value had been explicitly given with a value of 1.0).
   34160                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   34161                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   34162                     },
   34163                     "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   34164                     "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   34165                         # Absent values indicate that the field isn't specified.
   34166                       "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   34167                           # for simplicity of conversion to/from color representations in various
   34168                           # languages over compactness; for example, the fields of this representation
   34169                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   34170                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   34171                           # method in iOS; and, with just a little work, it can be easily formatted into
   34172                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   34173                           #
   34174                           # Example (Java):
   34175                           #
   34176                           #      import com.google.type.Color;
   34177                           #
   34178                           #      // ...
   34179                           #      public static java.awt.Color fromProto(Color protocolor) {
   34180                           #        float alpha = protocolor.hasAlpha()
   34181                           #            ? protocolor.getAlpha().getValue()
   34182                           #            : 1.0;
   34183                           #
   34184                           #        return new java.awt.Color(
   34185                           #            protocolor.getRed(),
   34186                           #            protocolor.getGreen(),
   34187                           #            protocolor.getBlue(),
   34188                           #            alpha);
   34189                           #      }
   34190                           #
   34191                           #      public static Color toProto(java.awt.Color color) {
   34192                           #        float red = (float) color.getRed();
   34193                           #        float green = (float) color.getGreen();
   34194                           #        float blue = (float) color.getBlue();
   34195                           #        float denominator = 255.0;
   34196                           #        Color.Builder resultBuilder =
   34197                           #            Color
   34198                           #                .newBuilder()
   34199                           #                .setRed(red / denominator)
   34200                           #                .setGreen(green / denominator)
   34201                           #                .setBlue(blue / denominator);
   34202                           #        int alpha = color.getAlpha();
   34203                           #        if (alpha != 255) {
   34204                           #          result.setAlpha(
   34205                           #              FloatValue
   34206                           #                  .newBuilder()
   34207                           #                  .setValue(((float) alpha) / denominator)
   34208                           #                  .build());
   34209                           #        }
   34210                           #        return resultBuilder.build();
   34211                           #      }
   34212                           #      // ...
   34213                           #
   34214                           # Example (iOS / Obj-C):
   34215                           #
   34216                           #      // ...
   34217                           #      static UIColor* fromProto(Color* protocolor) {
   34218                           #         float red = [protocolor red];
   34219                           #         float green = [protocolor green];
   34220                           #         float blue = [protocolor blue];
   34221                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   34222                           #         float alpha = 1.0;
   34223                           #         if (alpha_wrapper != nil) {
   34224                           #           alpha = [alpha_wrapper value];
   34225                           #         }
   34226                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   34227                           #      }
   34228                           #
   34229                           #      static Color* toProto(UIColor* color) {
   34230                           #          CGFloat red, green, blue, alpha;
   34231                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   34232                           #            return nil;
   34233                           #          }
   34234                           #          Color* result = [Color alloc] init];
   34235                           #          [result setRed:red];
   34236                           #          [result setGreen:green];
   34237                           #          [result setBlue:blue];
   34238                           #          if (alpha <= 0.9999) {
   34239                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   34240                           #          }
   34241                           #          [result autorelease];
   34242                           #          return result;
   34243                           #     }
   34244                           #     // ...
   34245                           #
   34246                           #  Example (JavaScript):
   34247                           #
   34248                           #     // ...
   34249                           #
   34250                           #     var protoToCssColor = function(rgb_color) {
   34251                           #        var redFrac = rgb_color.red || 0.0;
   34252                           #        var greenFrac = rgb_color.green || 0.0;
   34253                           #        var blueFrac = rgb_color.blue || 0.0;
   34254                           #        var red = Math.floor(redFrac * 255);
   34255                           #        var green = Math.floor(greenFrac * 255);
   34256                           #        var blue = Math.floor(blueFrac * 255);
   34257                           #
   34258                           #        if (!('alpha' in rgb_color)) {
   34259                           #           return rgbToCssColor_(red, green, blue);
   34260                           #        }
   34261                           #
   34262                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   34263                           #        var rgbParams = [red, green, blue].join(',');
   34264                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   34265                           #     };
   34266                           #
   34267                           #     var rgbToCssColor_ = function(red, green, blue) {
   34268                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   34269                           #       var hexString = rgbNumber.toString(16);
   34270                           #       var missingZeros = 6 - hexString.length;
   34271                           #       var resultBuilder = ['#'];
   34272                           #       for (var i = 0; i < missingZeros; i++) {
   34273                           #          resultBuilder.push('0');
   34274                           #       }
   34275                           #       resultBuilder.push(hexString);
   34276                           #       return resultBuilder.join('');
   34277                           #     };
   34278                           #
   34279                           #     // ...
   34280                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   34281                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   34282                             # the final pixel color is defined by the equation:
   34283                             #
   34284                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   34285                             #
   34286                             # This means that a value of 1.0 corresponds to a solid color, whereas
   34287                             # a value of 0.0 corresponds to a completely transparent color. This
   34288                             # uses a wrapper message rather than a simple float scalar so that it is
   34289                             # possible to distinguish between a default value and the value being unset.
   34290                             # If omitted, this color object is to be rendered as a solid color
   34291                             # (as if the alpha value had been explicitly given with a value of 1.0).
   34292                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   34293                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   34294                       },
   34295                       "bold": True or False, # True if the text is bold.
   34296                       "strikethrough": True or False, # True if the text has a strikethrough.
   34297                       "fontFamily": "A String", # The font family.
   34298                       "fontSize": 42, # The size of the font.
   34299                       "italic": True or False, # True if the text is italicized.
   34300                       "underline": True or False, # True if the text is underlined.
   34301                     },
   34302                     "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   34303                       "angle": 42, # The angle between the standard orientation and the desired orientation.
   34304                           # Measured in degrees. Valid values are between -90 and 90. Positive
   34305                           # angles are angled upwards, negative are angled downwards.
   34306                           #
   34307                           # Note: For LTR text direction positive angles are in the counterclockwise
   34308                           # direction, whereas for RTL they are in the clockwise direction
   34309                       "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   34310                           # characters is unchanged.
   34311                           # For example:
   34312                           #
   34313                           #     | V |
   34314                           #     | e |
   34315                           #     | r |
   34316                           #     | t |
   34317                           #     | i |
   34318                           #     | c |
   34319                           #     | a |
   34320                           #     | l |
   34321                     },
   34322                     "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   34323                     "borders": { # The borders of the cell. # The borders of the cell.
   34324                       "top": { # A border along a cell. # The top border of the cell.
   34325                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   34326                             # for simplicity of conversion to/from color representations in various
   34327                             # languages over compactness; for example, the fields of this representation
   34328                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   34329                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   34330                             # method in iOS; and, with just a little work, it can be easily formatted into
   34331                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   34332                             #
   34333                             # Example (Java):
   34334                             #
   34335                             #      import com.google.type.Color;
   34336                             #
   34337                             #      // ...
   34338                             #      public static java.awt.Color fromProto(Color protocolor) {
   34339                             #        float alpha = protocolor.hasAlpha()
   34340                             #            ? protocolor.getAlpha().getValue()
   34341                             #            : 1.0;
   34342                             #
   34343                             #        return new java.awt.Color(
   34344                             #            protocolor.getRed(),
   34345                             #            protocolor.getGreen(),
   34346                             #            protocolor.getBlue(),
   34347                             #            alpha);
   34348                             #      }
   34349                             #
   34350                             #      public static Color toProto(java.awt.Color color) {
   34351                             #        float red = (float) color.getRed();
   34352                             #        float green = (float) color.getGreen();
   34353                             #        float blue = (float) color.getBlue();
   34354                             #        float denominator = 255.0;
   34355                             #        Color.Builder resultBuilder =
   34356                             #            Color
   34357                             #                .newBuilder()
   34358                             #                .setRed(red / denominator)
   34359                             #                .setGreen(green / denominator)
   34360                             #                .setBlue(blue / denominator);
   34361                             #        int alpha = color.getAlpha();
   34362                             #        if (alpha != 255) {
   34363                             #          result.setAlpha(
   34364                             #              FloatValue
   34365                             #                  .newBuilder()
   34366                             #                  .setValue(((float) alpha) / denominator)
   34367                             #                  .build());
   34368                             #        }
   34369                             #        return resultBuilder.build();
   34370                             #      }
   34371                             #      // ...
   34372                             #
   34373                             # Example (iOS / Obj-C):
   34374                             #
   34375                             #      // ...
   34376                             #      static UIColor* fromProto(Color* protocolor) {
   34377                             #         float red = [protocolor red];
   34378                             #         float green = [protocolor green];
   34379                             #         float blue = [protocolor blue];
   34380                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   34381                             #         float alpha = 1.0;
   34382                             #         if (alpha_wrapper != nil) {
   34383                             #           alpha = [alpha_wrapper value];
   34384                             #         }
   34385                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   34386                             #      }
   34387                             #
   34388                             #      static Color* toProto(UIColor* color) {
   34389                             #          CGFloat red, green, blue, alpha;
   34390                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   34391                             #            return nil;
   34392                             #          }
   34393                             #          Color* result = [Color alloc] init];
   34394                             #          [result setRed:red];
   34395                             #          [result setGreen:green];
   34396                             #          [result setBlue:blue];
   34397                             #          if (alpha <= 0.9999) {
   34398                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   34399                             #          }
   34400                             #          [result autorelease];
   34401                             #          return result;
   34402                             #     }
   34403                             #     // ...
   34404                             #
   34405                             #  Example (JavaScript):
   34406                             #
   34407                             #     // ...
   34408                             #
   34409                             #     var protoToCssColor = function(rgb_color) {
   34410                             #        var redFrac = rgb_color.red || 0.0;
   34411                             #        var greenFrac = rgb_color.green || 0.0;
   34412                             #        var blueFrac = rgb_color.blue || 0.0;
   34413                             #        var red = Math.floor(redFrac * 255);
   34414                             #        var green = Math.floor(greenFrac * 255);
   34415                             #        var blue = Math.floor(blueFrac * 255);
   34416                             #
   34417                             #        if (!('alpha' in rgb_color)) {
   34418                             #           return rgbToCssColor_(red, green, blue);
   34419                             #        }
   34420                             #
   34421                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   34422                             #        var rgbParams = [red, green, blue].join(',');
   34423                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   34424                             #     };
   34425                             #
   34426                             #     var rgbToCssColor_ = function(red, green, blue) {
   34427                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   34428                             #       var hexString = rgbNumber.toString(16);
   34429                             #       var missingZeros = 6 - hexString.length;
   34430                             #       var resultBuilder = ['#'];
   34431                             #       for (var i = 0; i < missingZeros; i++) {
   34432                             #          resultBuilder.push('0');
   34433                             #       }
   34434                             #       resultBuilder.push(hexString);
   34435                             #       return resultBuilder.join('');
   34436                             #     };
   34437                             #
   34438                             #     // ...
   34439                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   34440                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   34441                               # the final pixel color is defined by the equation:
   34442                               #
   34443                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   34444                               #
   34445                               # This means that a value of 1.0 corresponds to a solid color, whereas
   34446                               # a value of 0.0 corresponds to a completely transparent color. This
   34447                               # uses a wrapper message rather than a simple float scalar so that it is
   34448                               # possible to distinguish between a default value and the value being unset.
   34449                               # If omitted, this color object is to be rendered as a solid color
   34450                               # (as if the alpha value had been explicitly given with a value of 1.0).
   34451                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   34452                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   34453                         },
   34454                         "width": 42, # The width of the border, in pixels.
   34455                             # Deprecated; the width is determined by the "style" field.
   34456                         "style": "A String", # The style of the border.
   34457                       },
   34458                       "right": { # A border along a cell. # The right border of the cell.
   34459                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   34460                             # for simplicity of conversion to/from color representations in various
   34461                             # languages over compactness; for example, the fields of this representation
   34462                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   34463                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   34464                             # method in iOS; and, with just a little work, it can be easily formatted into
   34465                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   34466                             #
   34467                             # Example (Java):
   34468                             #
   34469                             #      import com.google.type.Color;
   34470                             #
   34471                             #      // ...
   34472                             #      public static java.awt.Color fromProto(Color protocolor) {
   34473                             #        float alpha = protocolor.hasAlpha()
   34474                             #            ? protocolor.getAlpha().getValue()
   34475                             #            : 1.0;
   34476                             #
   34477                             #        return new java.awt.Color(
   34478                             #            protocolor.getRed(),
   34479                             #            protocolor.getGreen(),
   34480                             #            protocolor.getBlue(),
   34481                             #            alpha);
   34482                             #      }
   34483                             #
   34484                             #      public static Color toProto(java.awt.Color color) {
   34485                             #        float red = (float) color.getRed();
   34486                             #        float green = (float) color.getGreen();
   34487                             #        float blue = (float) color.getBlue();
   34488                             #        float denominator = 255.0;
   34489                             #        Color.Builder resultBuilder =
   34490                             #            Color
   34491                             #                .newBuilder()
   34492                             #                .setRed(red / denominator)
   34493                             #                .setGreen(green / denominator)
   34494                             #                .setBlue(blue / denominator);
   34495                             #        int alpha = color.getAlpha();
   34496                             #        if (alpha != 255) {
   34497                             #          result.setAlpha(
   34498                             #              FloatValue
   34499                             #                  .newBuilder()
   34500                             #                  .setValue(((float) alpha) / denominator)
   34501                             #                  .build());
   34502                             #        }
   34503                             #        return resultBuilder.build();
   34504                             #      }
   34505                             #      // ...
   34506                             #
   34507                             # Example (iOS / Obj-C):
   34508                             #
   34509                             #      // ...
   34510                             #      static UIColor* fromProto(Color* protocolor) {
   34511                             #         float red = [protocolor red];
   34512                             #         float green = [protocolor green];
   34513                             #         float blue = [protocolor blue];
   34514                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   34515                             #         float alpha = 1.0;
   34516                             #         if (alpha_wrapper != nil) {
   34517                             #           alpha = [alpha_wrapper value];
   34518                             #         }
   34519                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   34520                             #      }
   34521                             #
   34522                             #      static Color* toProto(UIColor* color) {
   34523                             #          CGFloat red, green, blue, alpha;
   34524                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   34525                             #            return nil;
   34526                             #          }
   34527                             #          Color* result = [Color alloc] init];
   34528                             #          [result setRed:red];
   34529                             #          [result setGreen:green];
   34530                             #          [result setBlue:blue];
   34531                             #          if (alpha <= 0.9999) {
   34532                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   34533                             #          }
   34534                             #          [result autorelease];
   34535                             #          return result;
   34536                             #     }
   34537                             #     // ...
   34538                             #
   34539                             #  Example (JavaScript):
   34540                             #
   34541                             #     // ...
   34542                             #
   34543                             #     var protoToCssColor = function(rgb_color) {
   34544                             #        var redFrac = rgb_color.red || 0.0;
   34545                             #        var greenFrac = rgb_color.green || 0.0;
   34546                             #        var blueFrac = rgb_color.blue || 0.0;
   34547                             #        var red = Math.floor(redFrac * 255);
   34548                             #        var green = Math.floor(greenFrac * 255);
   34549                             #        var blue = Math.floor(blueFrac * 255);
   34550                             #
   34551                             #        if (!('alpha' in rgb_color)) {
   34552                             #           return rgbToCssColor_(red, green, blue);
   34553                             #        }
   34554                             #
   34555                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   34556                             #        var rgbParams = [red, green, blue].join(',');
   34557                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   34558                             #     };
   34559                             #
   34560                             #     var rgbToCssColor_ = function(red, green, blue) {
   34561                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   34562                             #       var hexString = rgbNumber.toString(16);
   34563                             #       var missingZeros = 6 - hexString.length;
   34564                             #       var resultBuilder = ['#'];
   34565                             #       for (var i = 0; i < missingZeros; i++) {
   34566                             #          resultBuilder.push('0');
   34567                             #       }
   34568                             #       resultBuilder.push(hexString);
   34569                             #       return resultBuilder.join('');
   34570                             #     };
   34571                             #
   34572                             #     // ...
   34573                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   34574                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   34575                               # the final pixel color is defined by the equation:
   34576                               #
   34577                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   34578                               #
   34579                               # This means that a value of 1.0 corresponds to a solid color, whereas
   34580                               # a value of 0.0 corresponds to a completely transparent color. This
   34581                               # uses a wrapper message rather than a simple float scalar so that it is
   34582                               # possible to distinguish between a default value and the value being unset.
   34583                               # If omitted, this color object is to be rendered as a solid color
   34584                               # (as if the alpha value had been explicitly given with a value of 1.0).
   34585                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   34586                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   34587                         },
   34588                         "width": 42, # The width of the border, in pixels.
   34589                             # Deprecated; the width is determined by the "style" field.
   34590                         "style": "A String", # The style of the border.
   34591                       },
   34592                       "bottom": { # A border along a cell. # The bottom border of the cell.
   34593                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   34594                             # for simplicity of conversion to/from color representations in various
   34595                             # languages over compactness; for example, the fields of this representation
   34596                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   34597                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   34598                             # method in iOS; and, with just a little work, it can be easily formatted into
   34599                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   34600                             #
   34601                             # Example (Java):
   34602                             #
   34603                             #      import com.google.type.Color;
   34604                             #
   34605                             #      // ...
   34606                             #      public static java.awt.Color fromProto(Color protocolor) {
   34607                             #        float alpha = protocolor.hasAlpha()
   34608                             #            ? protocolor.getAlpha().getValue()
   34609                             #            : 1.0;
   34610                             #
   34611                             #        return new java.awt.Color(
   34612                             #            protocolor.getRed(),
   34613                             #            protocolor.getGreen(),
   34614                             #            protocolor.getBlue(),
   34615                             #            alpha);
   34616                             #      }
   34617                             #
   34618                             #      public static Color toProto(java.awt.Color color) {
   34619                             #        float red = (float) color.getRed();
   34620                             #        float green = (float) color.getGreen();
   34621                             #        float blue = (float) color.getBlue();
   34622                             #        float denominator = 255.0;
   34623                             #        Color.Builder resultBuilder =
   34624                             #            Color
   34625                             #                .newBuilder()
   34626                             #                .setRed(red / denominator)
   34627                             #                .setGreen(green / denominator)
   34628                             #                .setBlue(blue / denominator);
   34629                             #        int alpha = color.getAlpha();
   34630                             #        if (alpha != 255) {
   34631                             #          result.setAlpha(
   34632                             #              FloatValue
   34633                             #                  .newBuilder()
   34634                             #                  .setValue(((float) alpha) / denominator)
   34635                             #                  .build());
   34636                             #        }
   34637                             #        return resultBuilder.build();
   34638                             #      }
   34639                             #      // ...
   34640                             #
   34641                             # Example (iOS / Obj-C):
   34642                             #
   34643                             #      // ...
   34644                             #      static UIColor* fromProto(Color* protocolor) {
   34645                             #         float red = [protocolor red];
   34646                             #         float green = [protocolor green];
   34647                             #         float blue = [protocolor blue];
   34648                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   34649                             #         float alpha = 1.0;
   34650                             #         if (alpha_wrapper != nil) {
   34651                             #           alpha = [alpha_wrapper value];
   34652                             #         }
   34653                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   34654                             #      }
   34655                             #
   34656                             #      static Color* toProto(UIColor* color) {
   34657                             #          CGFloat red, green, blue, alpha;
   34658                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   34659                             #            return nil;
   34660                             #          }
   34661                             #          Color* result = [Color alloc] init];
   34662                             #          [result setRed:red];
   34663                             #          [result setGreen:green];
   34664                             #          [result setBlue:blue];
   34665                             #          if (alpha <= 0.9999) {
   34666                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   34667                             #          }
   34668                             #          [result autorelease];
   34669                             #          return result;
   34670                             #     }
   34671                             #     // ...
   34672                             #
   34673                             #  Example (JavaScript):
   34674                             #
   34675                             #     // ...
   34676                             #
   34677                             #     var protoToCssColor = function(rgb_color) {
   34678                             #        var redFrac = rgb_color.red || 0.0;
   34679                             #        var greenFrac = rgb_color.green || 0.0;
   34680                             #        var blueFrac = rgb_color.blue || 0.0;
   34681                             #        var red = Math.floor(redFrac * 255);
   34682                             #        var green = Math.floor(greenFrac * 255);
   34683                             #        var blue = Math.floor(blueFrac * 255);
   34684                             #
   34685                             #        if (!('alpha' in rgb_color)) {
   34686                             #           return rgbToCssColor_(red, green, blue);
   34687                             #        }
   34688                             #
   34689                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   34690                             #        var rgbParams = [red, green, blue].join(',');
   34691                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   34692                             #     };
   34693                             #
   34694                             #     var rgbToCssColor_ = function(red, green, blue) {
   34695                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   34696                             #       var hexString = rgbNumber.toString(16);
   34697                             #       var missingZeros = 6 - hexString.length;
   34698                             #       var resultBuilder = ['#'];
   34699                             #       for (var i = 0; i < missingZeros; i++) {
   34700                             #          resultBuilder.push('0');
   34701                             #       }
   34702                             #       resultBuilder.push(hexString);
   34703                             #       return resultBuilder.join('');
   34704                             #     };
   34705                             #
   34706                             #     // ...
   34707                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   34708                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   34709                               # the final pixel color is defined by the equation:
   34710                               #
   34711                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   34712                               #
   34713                               # This means that a value of 1.0 corresponds to a solid color, whereas
   34714                               # a value of 0.0 corresponds to a completely transparent color. This
   34715                               # uses a wrapper message rather than a simple float scalar so that it is
   34716                               # possible to distinguish between a default value and the value being unset.
   34717                               # If omitted, this color object is to be rendered as a solid color
   34718                               # (as if the alpha value had been explicitly given with a value of 1.0).
   34719                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   34720                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   34721                         },
   34722                         "width": 42, # The width of the border, in pixels.
   34723                             # Deprecated; the width is determined by the "style" field.
   34724                         "style": "A String", # The style of the border.
   34725                       },
   34726                       "left": { # A border along a cell. # The left border of the cell.
   34727                         "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   34728                             # for simplicity of conversion to/from color representations in various
   34729                             # languages over compactness; for example, the fields of this representation
   34730                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   34731                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   34732                             # method in iOS; and, with just a little work, it can be easily formatted into
   34733                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   34734                             #
   34735                             # Example (Java):
   34736                             #
   34737                             #      import com.google.type.Color;
   34738                             #
   34739                             #      // ...
   34740                             #      public static java.awt.Color fromProto(Color protocolor) {
   34741                             #        float alpha = protocolor.hasAlpha()
   34742                             #            ? protocolor.getAlpha().getValue()
   34743                             #            : 1.0;
   34744                             #
   34745                             #        return new java.awt.Color(
   34746                             #            protocolor.getRed(),
   34747                             #            protocolor.getGreen(),
   34748                             #            protocolor.getBlue(),
   34749                             #            alpha);
   34750                             #      }
   34751                             #
   34752                             #      public static Color toProto(java.awt.Color color) {
   34753                             #        float red = (float) color.getRed();
   34754                             #        float green = (float) color.getGreen();
   34755                             #        float blue = (float) color.getBlue();
   34756                             #        float denominator = 255.0;
   34757                             #        Color.Builder resultBuilder =
   34758                             #            Color
   34759                             #                .newBuilder()
   34760                             #                .setRed(red / denominator)
   34761                             #                .setGreen(green / denominator)
   34762                             #                .setBlue(blue / denominator);
   34763                             #        int alpha = color.getAlpha();
   34764                             #        if (alpha != 255) {
   34765                             #          result.setAlpha(
   34766                             #              FloatValue
   34767                             #                  .newBuilder()
   34768                             #                  .setValue(((float) alpha) / denominator)
   34769                             #                  .build());
   34770                             #        }
   34771                             #        return resultBuilder.build();
   34772                             #      }
   34773                             #      // ...
   34774                             #
   34775                             # Example (iOS / Obj-C):
   34776                             #
   34777                             #      // ...
   34778                             #      static UIColor* fromProto(Color* protocolor) {
   34779                             #         float red = [protocolor red];
   34780                             #         float green = [protocolor green];
   34781                             #         float blue = [protocolor blue];
   34782                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   34783                             #         float alpha = 1.0;
   34784                             #         if (alpha_wrapper != nil) {
   34785                             #           alpha = [alpha_wrapper value];
   34786                             #         }
   34787                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   34788                             #      }
   34789                             #
   34790                             #      static Color* toProto(UIColor* color) {
   34791                             #          CGFloat red, green, blue, alpha;
   34792                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   34793                             #            return nil;
   34794                             #          }
   34795                             #          Color* result = [Color alloc] init];
   34796                             #          [result setRed:red];
   34797                             #          [result setGreen:green];
   34798                             #          [result setBlue:blue];
   34799                             #          if (alpha <= 0.9999) {
   34800                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   34801                             #          }
   34802                             #          [result autorelease];
   34803                             #          return result;
   34804                             #     }
   34805                             #     // ...
   34806                             #
   34807                             #  Example (JavaScript):
   34808                             #
   34809                             #     // ...
   34810                             #
   34811                             #     var protoToCssColor = function(rgb_color) {
   34812                             #        var redFrac = rgb_color.red || 0.0;
   34813                             #        var greenFrac = rgb_color.green || 0.0;
   34814                             #        var blueFrac = rgb_color.blue || 0.0;
   34815                             #        var red = Math.floor(redFrac * 255);
   34816                             #        var green = Math.floor(greenFrac * 255);
   34817                             #        var blue = Math.floor(blueFrac * 255);
   34818                             #
   34819                             #        if (!('alpha' in rgb_color)) {
   34820                             #           return rgbToCssColor_(red, green, blue);
   34821                             #        }
   34822                             #
   34823                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   34824                             #        var rgbParams = [red, green, blue].join(',');
   34825                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   34826                             #     };
   34827                             #
   34828                             #     var rgbToCssColor_ = function(red, green, blue) {
   34829                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   34830                             #       var hexString = rgbNumber.toString(16);
   34831                             #       var missingZeros = 6 - hexString.length;
   34832                             #       var resultBuilder = ['#'];
   34833                             #       for (var i = 0; i < missingZeros; i++) {
   34834                             #          resultBuilder.push('0');
   34835                             #       }
   34836                             #       resultBuilder.push(hexString);
   34837                             #       return resultBuilder.join('');
   34838                             #     };
   34839                             #
   34840                             #     // ...
   34841                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   34842                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   34843                               # the final pixel color is defined by the equation:
   34844                               #
   34845                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   34846                               #
   34847                               # This means that a value of 1.0 corresponds to a solid color, whereas
   34848                               # a value of 0.0 corresponds to a completely transparent color. This
   34849                               # uses a wrapper message rather than a simple float scalar so that it is
   34850                               # possible to distinguish between a default value and the value being unset.
   34851                               # If omitted, this color object is to be rendered as a solid color
   34852                               # (as if the alpha value had been explicitly given with a value of 1.0).
   34853                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   34854                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   34855                         },
   34856                         "width": 42, # The width of the border, in pixels.
   34857                             # Deprecated; the width is determined by the "style" field.
   34858                         "style": "A String", # The style of the border.
   34859                       },
   34860                     },
   34861                     "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   34862                   },
   34863                   "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
   34864                       #
   34865                       # When writing, the new data validation rule will overwrite any prior rule.
   34866                     "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
   34867                         # If true, "List" conditions will show a dropdown.
   34868                     "strict": True or False, # True if invalid data should be rejected.
   34869                     "inputMessage": "A String", # A message to show the user when adding data to the cell.
   34870                     "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
   34871                         # BooleanConditions are used by conditional formatting,
   34872                         # data validation, and the criteria in filters.
   34873                       "values": [ # The values of the condition. The number of supported values depends
   34874                           # on the condition type.  Some support zero values,
   34875                           # others one or two values,
   34876                           # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   34877                         { # The value of the condition.
   34878                           "relativeDate": "A String", # A relative date (based on the current date).
   34879                               # Valid only if the type is
   34880                               # DATE_BEFORE,
   34881                               # DATE_AFTER,
   34882                               # DATE_ON_OR_BEFORE or
   34883                               # DATE_ON_OR_AFTER.
   34884                               #
   34885                               # Relative dates are not supported in data validation.
   34886                               # They are supported only in conditional formatting and
   34887                               # conditional filters.
   34888                           "userEnteredValue": "A String", # A value the condition is based on.
   34889                               # The value will be parsed as if the user typed into a cell.
   34890                               # Formulas are supported (and must begin with an `=`).
   34891                         },
   34892                       ],
   34893                       "type": "A String", # The type of condition.
   34894                     },
   34895                   },
   34896                   "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
   34897                       # on user entered strings, not formulas, bools, or numbers.
   34898                       # Runs start at specific indexes in the text and continue until the next
   34899                       # run. Properties of a run will continue unless explicitly changed
   34900                       # in a subsequent run (and properties of the first run will continue
   34901                       # the properties of the cell unless explicitly changed).
   34902                       #
   34903                       # When writing, the new runs will overwrite any prior runs.  When writing a
   34904                       # new user_entered_value, previous runs will be erased.
   34905                     { # A run of a text format. The format of this run continues until the start
   34906                         # index of the next run.
   34907                         # When updating, all fields must be set.
   34908                       "startIndex": 42, # The character index where this run starts.
   34909                       "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
   34910                           # Absent values indicate that the field isn't specified.
   34911                         "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   34912                             # for simplicity of conversion to/from color representations in various
   34913                             # languages over compactness; for example, the fields of this representation
   34914                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   34915                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   34916                             # method in iOS; and, with just a little work, it can be easily formatted into
   34917                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   34918                             #
   34919                             # Example (Java):
   34920                             #
   34921                             #      import com.google.type.Color;
   34922                             #
   34923                             #      // ...
   34924                             #      public static java.awt.Color fromProto(Color protocolor) {
   34925                             #        float alpha = protocolor.hasAlpha()
   34926                             #            ? protocolor.getAlpha().getValue()
   34927                             #            : 1.0;
   34928                             #
   34929                             #        return new java.awt.Color(
   34930                             #            protocolor.getRed(),
   34931                             #            protocolor.getGreen(),
   34932                             #            protocolor.getBlue(),
   34933                             #            alpha);
   34934                             #      }
   34935                             #
   34936                             #      public static Color toProto(java.awt.Color color) {
   34937                             #        float red = (float) color.getRed();
   34938                             #        float green = (float) color.getGreen();
   34939                             #        float blue = (float) color.getBlue();
   34940                             #        float denominator = 255.0;
   34941                             #        Color.Builder resultBuilder =
   34942                             #            Color
   34943                             #                .newBuilder()
   34944                             #                .setRed(red / denominator)
   34945                             #                .setGreen(green / denominator)
   34946                             #                .setBlue(blue / denominator);
   34947                             #        int alpha = color.getAlpha();
   34948                             #        if (alpha != 255) {
   34949                             #          result.setAlpha(
   34950                             #              FloatValue
   34951                             #                  .newBuilder()
   34952                             #                  .setValue(((float) alpha) / denominator)
   34953                             #                  .build());
   34954                             #        }
   34955                             #        return resultBuilder.build();
   34956                             #      }
   34957                             #      // ...
   34958                             #
   34959                             # Example (iOS / Obj-C):
   34960                             #
   34961                             #      // ...
   34962                             #      static UIColor* fromProto(Color* protocolor) {
   34963                             #         float red = [protocolor red];
   34964                             #         float green = [protocolor green];
   34965                             #         float blue = [protocolor blue];
   34966                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   34967                             #         float alpha = 1.0;
   34968                             #         if (alpha_wrapper != nil) {
   34969                             #           alpha = [alpha_wrapper value];
   34970                             #         }
   34971                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   34972                             #      }
   34973                             #
   34974                             #      static Color* toProto(UIColor* color) {
   34975                             #          CGFloat red, green, blue, alpha;
   34976                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   34977                             #            return nil;
   34978                             #          }
   34979                             #          Color* result = [Color alloc] init];
   34980                             #          [result setRed:red];
   34981                             #          [result setGreen:green];
   34982                             #          [result setBlue:blue];
   34983                             #          if (alpha <= 0.9999) {
   34984                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   34985                             #          }
   34986                             #          [result autorelease];
   34987                             #          return result;
   34988                             #     }
   34989                             #     // ...
   34990                             #
   34991                             #  Example (JavaScript):
   34992                             #
   34993                             #     // ...
   34994                             #
   34995                             #     var protoToCssColor = function(rgb_color) {
   34996                             #        var redFrac = rgb_color.red || 0.0;
   34997                             #        var greenFrac = rgb_color.green || 0.0;
   34998                             #        var blueFrac = rgb_color.blue || 0.0;
   34999                             #        var red = Math.floor(redFrac * 255);
   35000                             #        var green = Math.floor(greenFrac * 255);
   35001                             #        var blue = Math.floor(blueFrac * 255);
   35002                             #
   35003                             #        if (!('alpha' in rgb_color)) {
   35004                             #           return rgbToCssColor_(red, green, blue);
   35005                             #        }
   35006                             #
   35007                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   35008                             #        var rgbParams = [red, green, blue].join(',');
   35009                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   35010                             #     };
   35011                             #
   35012                             #     var rgbToCssColor_ = function(red, green, blue) {
   35013                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   35014                             #       var hexString = rgbNumber.toString(16);
   35015                             #       var missingZeros = 6 - hexString.length;
   35016                             #       var resultBuilder = ['#'];
   35017                             #       for (var i = 0; i < missingZeros; i++) {
   35018                             #          resultBuilder.push('0');
   35019                             #       }
   35020                             #       resultBuilder.push(hexString);
   35021                             #       return resultBuilder.join('');
   35022                             #     };
   35023                             #
   35024                             #     // ...
   35025                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   35026                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   35027                               # the final pixel color is defined by the equation:
   35028                               #
   35029                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   35030                               #
   35031                               # This means that a value of 1.0 corresponds to a solid color, whereas
   35032                               # a value of 0.0 corresponds to a completely transparent color. This
   35033                               # uses a wrapper message rather than a simple float scalar so that it is
   35034                               # possible to distinguish between a default value and the value being unset.
   35035                               # If omitted, this color object is to be rendered as a solid color
   35036                               # (as if the alpha value had been explicitly given with a value of 1.0).
   35037                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   35038                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   35039                         },
   35040                         "bold": True or False, # True if the text is bold.
   35041                         "strikethrough": True or False, # True if the text has a strikethrough.
   35042                         "fontFamily": "A String", # The font family.
   35043                         "fontSize": 42, # The size of the font.
   35044                         "italic": True or False, # True if the text is italicized.
   35045                         "underline": True or False, # True if the text is underlined.
   35046                       },
   35047                     },
   35048                   ],
   35049                 },
   35050               ],
   35051             },
   35052           ],
   35053           "startRow": 42, # The first row this GridData refers to, zero-based.
   35054           "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
   35055               # in start_column.
   35056             { # Properties about a dimension.
   35057               "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
   35058               "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
   35059               "hiddenByFilter": True or False, # True if this dimension is being filtered.
   35060                   # This field is read-only.
   35061             },
   35062           ],
   35063         },
   35064       ],
   35065       "properties": { # Properties of a sheet. # The properties of the sheet.
   35066         "sheetType": "A String", # The type of sheet. Defaults to GRID.
   35067             # This field cannot be changed once set.
   35068         "index": 42, # The index of the sheet within the spreadsheet.
   35069             # When adding or updating sheet properties, if this field
   35070             # is excluded then the sheet will be added or moved to the end
   35071             # of the sheet list. When updating sheet indices or inserting
   35072             # sheets, movement is considered in "before the move" indexes.
   35073             # For example, if there were 3 sheets (S1, S2, S3) in order to
   35074             # move S1 ahead of S2 the index would have to be set to 2. A sheet
   35075             # index update request will be ignored if the requested index is
   35076             # identical to the sheets current index or if the requested new
   35077             # index is equal to the current sheet index + 1.
   35078         "title": "A String", # The name of the sheet.
   35079         "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
   35080             # (If the sheet is an object sheet, containing a chart or image, then
   35081             # this field will be absent.)
   35082             # When writing it is an error to set any grid properties on non-grid sheets.
   35083           "columnCount": 42, # The number of columns in the grid.
   35084           "frozenRowCount": 42, # The number of rows that are frozen in the grid.
   35085           "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
   35086           "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
   35087           "rowCount": 42, # The number of rows in the grid.
   35088         },
   35089         "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
   35090         "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
   35091             # for simplicity of conversion to/from color representations in various
   35092             # languages over compactness; for example, the fields of this representation
   35093             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   35094             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   35095             # method in iOS; and, with just a little work, it can be easily formatted into
   35096             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   35097             #
   35098             # Example (Java):
   35099             #
   35100             #      import com.google.type.Color;
   35101             #
   35102             #      // ...
   35103             #      public static java.awt.Color fromProto(Color protocolor) {
   35104             #        float alpha = protocolor.hasAlpha()
   35105             #            ? protocolor.getAlpha().getValue()
   35106             #            : 1.0;
   35107             #
   35108             #        return new java.awt.Color(
   35109             #            protocolor.getRed(),
   35110             #            protocolor.getGreen(),
   35111             #            protocolor.getBlue(),
   35112             #            alpha);
   35113             #      }
   35114             #
   35115             #      public static Color toProto(java.awt.Color color) {
   35116             #        float red = (float) color.getRed();
   35117             #        float green = (float) color.getGreen();
   35118             #        float blue = (float) color.getBlue();
   35119             #        float denominator = 255.0;
   35120             #        Color.Builder resultBuilder =
   35121             #            Color
   35122             #                .newBuilder()
   35123             #                .setRed(red / denominator)
   35124             #                .setGreen(green / denominator)
   35125             #                .setBlue(blue / denominator);
   35126             #        int alpha = color.getAlpha();
   35127             #        if (alpha != 255) {
   35128             #          result.setAlpha(
   35129             #              FloatValue
   35130             #                  .newBuilder()
   35131             #                  .setValue(((float) alpha) / denominator)
   35132             #                  .build());
   35133             #        }
   35134             #        return resultBuilder.build();
   35135             #      }
   35136             #      // ...
   35137             #
   35138             # Example (iOS / Obj-C):
   35139             #
   35140             #      // ...
   35141             #      static UIColor* fromProto(Color* protocolor) {
   35142             #         float red = [protocolor red];
   35143             #         float green = [protocolor green];
   35144             #         float blue = [protocolor blue];
   35145             #         FloatValue* alpha_wrapper = [protocolor alpha];
   35146             #         float alpha = 1.0;
   35147             #         if (alpha_wrapper != nil) {
   35148             #           alpha = [alpha_wrapper value];
   35149             #         }
   35150             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   35151             #      }
   35152             #
   35153             #      static Color* toProto(UIColor* color) {
   35154             #          CGFloat red, green, blue, alpha;
   35155             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   35156             #            return nil;
   35157             #          }
   35158             #          Color* result = [Color alloc] init];
   35159             #          [result setRed:red];
   35160             #          [result setGreen:green];
   35161             #          [result setBlue:blue];
   35162             #          if (alpha <= 0.9999) {
   35163             #            [result setAlpha:floatWrapperWithValue(alpha)];
   35164             #          }
   35165             #          [result autorelease];
   35166             #          return result;
   35167             #     }
   35168             #     // ...
   35169             #
   35170             #  Example (JavaScript):
   35171             #
   35172             #     // ...
   35173             #
   35174             #     var protoToCssColor = function(rgb_color) {
   35175             #        var redFrac = rgb_color.red || 0.0;
   35176             #        var greenFrac = rgb_color.green || 0.0;
   35177             #        var blueFrac = rgb_color.blue || 0.0;
   35178             #        var red = Math.floor(redFrac * 255);
   35179             #        var green = Math.floor(greenFrac * 255);
   35180             #        var blue = Math.floor(blueFrac * 255);
   35181             #
   35182             #        if (!('alpha' in rgb_color)) {
   35183             #           return rgbToCssColor_(red, green, blue);
   35184             #        }
   35185             #
   35186             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   35187             #        var rgbParams = [red, green, blue].join(',');
   35188             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   35189             #     };
   35190             #
   35191             #     var rgbToCssColor_ = function(red, green, blue) {
   35192             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   35193             #       var hexString = rgbNumber.toString(16);
   35194             #       var missingZeros = 6 - hexString.length;
   35195             #       var resultBuilder = ['#'];
   35196             #       for (var i = 0; i < missingZeros; i++) {
   35197             #          resultBuilder.push('0');
   35198             #       }
   35199             #       resultBuilder.push(hexString);
   35200             #       return resultBuilder.join('');
   35201             #     };
   35202             #
   35203             #     // ...
   35204           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   35205           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   35206               # the final pixel color is defined by the equation:
   35207               #
   35208               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   35209               #
   35210               # This means that a value of 1.0 corresponds to a solid color, whereas
   35211               # a value of 0.0 corresponds to a completely transparent color. This
   35212               # uses a wrapper message rather than a simple float scalar so that it is
   35213               # possible to distinguish between a default value and the value being unset.
   35214               # If omitted, this color object is to be rendered as a solid color
   35215               # (as if the alpha value had been explicitly given with a value of 1.0).
   35216           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   35217           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   35218         },
   35219         "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
   35220         "sheetId": 42, # The ID of the sheet. Must be non-negative.
   35221             # This field cannot be changed once set.
   35222       },
   35223     },
   35224   ],
   35225   "spreadsheetUrl": "A String", # The url of the spreadsheet.
   35226       # This field is read-only.
   35227 }
   35228 
   35229   x__xgafv: string, V1 error format.
   35230     Allowed values
   35231       1 - v1 error format
   35232       2 - v2 error format
   35233 
   35234 Returns:
   35235   An object of the form:
   35236 
   35237     { # Resource that represents a spreadsheet.
   35238     "spreadsheetId": "A String", # The ID of the spreadsheet.
   35239         # This field is read-only.
   35240     "namedRanges": [ # The named ranges defined in a spreadsheet.
   35241       { # A named range.
   35242         "namedRangeId": "A String", # The ID of the named range.
   35243         "range": { # A range on a sheet. # The range this represents.
   35244             # All indexes are zero-based.
   35245             # Indexes are half open, e.g the start index is inclusive
   35246             # and the end index is exclusive -- [start_index, end_index).
   35247             # Missing indexes indicate the range is unbounded on that side.
   35248             #
   35249             # For example, if `"Sheet1"` is sheet ID 0, then:
   35250             #
   35251             #   `Sheet1!A1:A1 == sheet_id: 0,
   35252             #                   start_row_index: 0, end_row_index: 1,
   35253             #                   start_column_index: 0, end_column_index: 1`
   35254             #
   35255             #   `Sheet1!A3:B4 == sheet_id: 0,
   35256             #                   start_row_index: 2, end_row_index: 4,
   35257             #                   start_column_index: 0, end_column_index: 2`
   35258             #
   35259             #   `Sheet1!A:B == sheet_id: 0,
   35260             #                 start_column_index: 0, end_column_index: 2`
   35261             #
   35262             #   `Sheet1!A5:B == sheet_id: 0,
   35263             #                  start_row_index: 4,
   35264             #                  start_column_index: 0, end_column_index: 2`
   35265             #
   35266             #   `Sheet1 == sheet_id:0`
   35267             #
   35268             # The start index must always be less than or equal to the end index.
   35269             # If the start index equals the end index, then the range is empty.
   35270             # Empty ranges are typically not meaningful and are usually rendered in the
   35271             # UI as `#REF!`.
   35272           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   35273           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   35274           "sheetId": 42, # The sheet this range is on.
   35275           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   35276           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   35277         },
   35278         "name": "A String", # The name of the named range.
   35279       },
   35280     ],
   35281     "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
   35282       "title": "A String", # The title of the spreadsheet.
   35283       "locale": "A String", # The locale of the spreadsheet in one of the following formats:
   35284           #
   35285           # * an ISO 639-1 language code such as `en`
   35286           #
   35287           # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
   35288           #
   35289           # * a combination of the ISO language code and country code, such as `en_US`
   35290           #
   35291           # Note: when updating this field, not all locales/languages are supported.
   35292       "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
   35293           # CellData.effectiveFormat will not be set if the
   35294           # cell's format is equal to this default format.
   35295           # This field is read-only.
   35296         "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   35297           "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   35298               # the user's locale will be used if necessary for the given type.
   35299               # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   35300               # information about the supported patterns.
   35301           "type": "A String", # The type of the number format.
   35302               # When writing, this field must be set.
   35303         },
   35304         "textDirection": "A String", # The direction of the text in the cell.
   35305         "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   35306             # When updating padding, every field must be specified.
   35307           "top": 42, # The top padding of the cell.
   35308           "right": 42, # The right padding of the cell.
   35309           "bottom": 42, # The bottom padding of the cell.
   35310           "left": 42, # The left padding of the cell.
   35311         },
   35312         "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   35313         "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   35314             # for simplicity of conversion to/from color representations in various
   35315             # languages over compactness; for example, the fields of this representation
   35316             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   35317             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   35318             # method in iOS; and, with just a little work, it can be easily formatted into
   35319             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   35320             #
   35321             # Example (Java):
   35322             #
   35323             #      import com.google.type.Color;
   35324             #
   35325             #      // ...
   35326             #      public static java.awt.Color fromProto(Color protocolor) {
   35327             #        float alpha = protocolor.hasAlpha()
   35328             #            ? protocolor.getAlpha().getValue()
   35329             #            : 1.0;
   35330             #
   35331             #        return new java.awt.Color(
   35332             #            protocolor.getRed(),
   35333             #            protocolor.getGreen(),
   35334             #            protocolor.getBlue(),
   35335             #            alpha);
   35336             #      }
   35337             #
   35338             #      public static Color toProto(java.awt.Color color) {
   35339             #        float red = (float) color.getRed();
   35340             #        float green = (float) color.getGreen();
   35341             #        float blue = (float) color.getBlue();
   35342             #        float denominator = 255.0;
   35343             #        Color.Builder resultBuilder =
   35344             #            Color
   35345             #                .newBuilder()
   35346             #                .setRed(red / denominator)
   35347             #                .setGreen(green / denominator)
   35348             #                .setBlue(blue / denominator);
   35349             #        int alpha = color.getAlpha();
   35350             #        if (alpha != 255) {
   35351             #          result.setAlpha(
   35352             #              FloatValue
   35353             #                  .newBuilder()
   35354             #                  .setValue(((float) alpha) / denominator)
   35355             #                  .build());
   35356             #        }
   35357             #        return resultBuilder.build();
   35358             #      }
   35359             #      // ...
   35360             #
   35361             # Example (iOS / Obj-C):
   35362             #
   35363             #      // ...
   35364             #      static UIColor* fromProto(Color* protocolor) {
   35365             #         float red = [protocolor red];
   35366             #         float green = [protocolor green];
   35367             #         float blue = [protocolor blue];
   35368             #         FloatValue* alpha_wrapper = [protocolor alpha];
   35369             #         float alpha = 1.0;
   35370             #         if (alpha_wrapper != nil) {
   35371             #           alpha = [alpha_wrapper value];
   35372             #         }
   35373             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   35374             #      }
   35375             #
   35376             #      static Color* toProto(UIColor* color) {
   35377             #          CGFloat red, green, blue, alpha;
   35378             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   35379             #            return nil;
   35380             #          }
   35381             #          Color* result = [Color alloc] init];
   35382             #          [result setRed:red];
   35383             #          [result setGreen:green];
   35384             #          [result setBlue:blue];
   35385             #          if (alpha <= 0.9999) {
   35386             #            [result setAlpha:floatWrapperWithValue(alpha)];
   35387             #          }
   35388             #          [result autorelease];
   35389             #          return result;
   35390             #     }
   35391             #     // ...
   35392             #
   35393             #  Example (JavaScript):
   35394             #
   35395             #     // ...
   35396             #
   35397             #     var protoToCssColor = function(rgb_color) {
   35398             #        var redFrac = rgb_color.red || 0.0;
   35399             #        var greenFrac = rgb_color.green || 0.0;
   35400             #        var blueFrac = rgb_color.blue || 0.0;
   35401             #        var red = Math.floor(redFrac * 255);
   35402             #        var green = Math.floor(greenFrac * 255);
   35403             #        var blue = Math.floor(blueFrac * 255);
   35404             #
   35405             #        if (!('alpha' in rgb_color)) {
   35406             #           return rgbToCssColor_(red, green, blue);
   35407             #        }
   35408             #
   35409             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   35410             #        var rgbParams = [red, green, blue].join(',');
   35411             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   35412             #     };
   35413             #
   35414             #     var rgbToCssColor_ = function(red, green, blue) {
   35415             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   35416             #       var hexString = rgbNumber.toString(16);
   35417             #       var missingZeros = 6 - hexString.length;
   35418             #       var resultBuilder = ['#'];
   35419             #       for (var i = 0; i < missingZeros; i++) {
   35420             #          resultBuilder.push('0');
   35421             #       }
   35422             #       resultBuilder.push(hexString);
   35423             #       return resultBuilder.join('');
   35424             #     };
   35425             #
   35426             #     // ...
   35427           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   35428           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   35429               # the final pixel color is defined by the equation:
   35430               #
   35431               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   35432               #
   35433               # This means that a value of 1.0 corresponds to a solid color, whereas
   35434               # a value of 0.0 corresponds to a completely transparent color. This
   35435               # uses a wrapper message rather than a simple float scalar so that it is
   35436               # possible to distinguish between a default value and the value being unset.
   35437               # If omitted, this color object is to be rendered as a solid color
   35438               # (as if the alpha value had been explicitly given with a value of 1.0).
   35439           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   35440           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   35441         },
   35442         "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   35443         "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   35444             # Absent values indicate that the field isn't specified.
   35445           "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   35446               # for simplicity of conversion to/from color representations in various
   35447               # languages over compactness; for example, the fields of this representation
   35448               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   35449               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   35450               # method in iOS; and, with just a little work, it can be easily formatted into
   35451               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   35452               #
   35453               # Example (Java):
   35454               #
   35455               #      import com.google.type.Color;
   35456               #
   35457               #      // ...
   35458               #      public static java.awt.Color fromProto(Color protocolor) {
   35459               #        float alpha = protocolor.hasAlpha()
   35460               #            ? protocolor.getAlpha().getValue()
   35461               #            : 1.0;
   35462               #
   35463               #        return new java.awt.Color(
   35464               #            protocolor.getRed(),
   35465               #            protocolor.getGreen(),
   35466               #            protocolor.getBlue(),
   35467               #            alpha);
   35468               #      }
   35469               #
   35470               #      public static Color toProto(java.awt.Color color) {
   35471               #        float red = (float) color.getRed();
   35472               #        float green = (float) color.getGreen();
   35473               #        float blue = (float) color.getBlue();
   35474               #        float denominator = 255.0;
   35475               #        Color.Builder resultBuilder =
   35476               #            Color
   35477               #                .newBuilder()
   35478               #                .setRed(red / denominator)
   35479               #                .setGreen(green / denominator)
   35480               #                .setBlue(blue / denominator);
   35481               #        int alpha = color.getAlpha();
   35482               #        if (alpha != 255) {
   35483               #          result.setAlpha(
   35484               #              FloatValue
   35485               #                  .newBuilder()
   35486               #                  .setValue(((float) alpha) / denominator)
   35487               #                  .build());
   35488               #        }
   35489               #        return resultBuilder.build();
   35490               #      }
   35491               #      // ...
   35492               #
   35493               # Example (iOS / Obj-C):
   35494               #
   35495               #      // ...
   35496               #      static UIColor* fromProto(Color* protocolor) {
   35497               #         float red = [protocolor red];
   35498               #         float green = [protocolor green];
   35499               #         float blue = [protocolor blue];
   35500               #         FloatValue* alpha_wrapper = [protocolor alpha];
   35501               #         float alpha = 1.0;
   35502               #         if (alpha_wrapper != nil) {
   35503               #           alpha = [alpha_wrapper value];
   35504               #         }
   35505               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   35506               #      }
   35507               #
   35508               #      static Color* toProto(UIColor* color) {
   35509               #          CGFloat red, green, blue, alpha;
   35510               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   35511               #            return nil;
   35512               #          }
   35513               #          Color* result = [Color alloc] init];
   35514               #          [result setRed:red];
   35515               #          [result setGreen:green];
   35516               #          [result setBlue:blue];
   35517               #          if (alpha <= 0.9999) {
   35518               #            [result setAlpha:floatWrapperWithValue(alpha)];
   35519               #          }
   35520               #          [result autorelease];
   35521               #          return result;
   35522               #     }
   35523               #     // ...
   35524               #
   35525               #  Example (JavaScript):
   35526               #
   35527               #     // ...
   35528               #
   35529               #     var protoToCssColor = function(rgb_color) {
   35530               #        var redFrac = rgb_color.red || 0.0;
   35531               #        var greenFrac = rgb_color.green || 0.0;
   35532               #        var blueFrac = rgb_color.blue || 0.0;
   35533               #        var red = Math.floor(redFrac * 255);
   35534               #        var green = Math.floor(greenFrac * 255);
   35535               #        var blue = Math.floor(blueFrac * 255);
   35536               #
   35537               #        if (!('alpha' in rgb_color)) {
   35538               #           return rgbToCssColor_(red, green, blue);
   35539               #        }
   35540               #
   35541               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   35542               #        var rgbParams = [red, green, blue].join(',');
   35543               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   35544               #     };
   35545               #
   35546               #     var rgbToCssColor_ = function(red, green, blue) {
   35547               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   35548               #       var hexString = rgbNumber.toString(16);
   35549               #       var missingZeros = 6 - hexString.length;
   35550               #       var resultBuilder = ['#'];
   35551               #       for (var i = 0; i < missingZeros; i++) {
   35552               #          resultBuilder.push('0');
   35553               #       }
   35554               #       resultBuilder.push(hexString);
   35555               #       return resultBuilder.join('');
   35556               #     };
   35557               #
   35558               #     // ...
   35559             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   35560             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   35561                 # the final pixel color is defined by the equation:
   35562                 #
   35563                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   35564                 #
   35565                 # This means that a value of 1.0 corresponds to a solid color, whereas
   35566                 # a value of 0.0 corresponds to a completely transparent color. This
   35567                 # uses a wrapper message rather than a simple float scalar so that it is
   35568                 # possible to distinguish between a default value and the value being unset.
   35569                 # If omitted, this color object is to be rendered as a solid color
   35570                 # (as if the alpha value had been explicitly given with a value of 1.0).
   35571             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   35572             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   35573           },
   35574           "bold": True or False, # True if the text is bold.
   35575           "strikethrough": True or False, # True if the text has a strikethrough.
   35576           "fontFamily": "A String", # The font family.
   35577           "fontSize": 42, # The size of the font.
   35578           "italic": True or False, # True if the text is italicized.
   35579           "underline": True or False, # True if the text is underlined.
   35580         },
   35581         "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   35582           "angle": 42, # The angle between the standard orientation and the desired orientation.
   35583               # Measured in degrees. Valid values are between -90 and 90. Positive
   35584               # angles are angled upwards, negative are angled downwards.
   35585               #
   35586               # Note: For LTR text direction positive angles are in the counterclockwise
   35587               # direction, whereas for RTL they are in the clockwise direction
   35588           "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   35589               # characters is unchanged.
   35590               # For example:
   35591               #
   35592               #     | V |
   35593               #     | e |
   35594               #     | r |
   35595               #     | t |
   35596               #     | i |
   35597               #     | c |
   35598               #     | a |
   35599               #     | l |
   35600         },
   35601         "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   35602         "borders": { # The borders of the cell. # The borders of the cell.
   35603           "top": { # A border along a cell. # The top border of the cell.
   35604             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   35605                 # for simplicity of conversion to/from color representations in various
   35606                 # languages over compactness; for example, the fields of this representation
   35607                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   35608                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   35609                 # method in iOS; and, with just a little work, it can be easily formatted into
   35610                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   35611                 #
   35612                 # Example (Java):
   35613                 #
   35614                 #      import com.google.type.Color;
   35615                 #
   35616                 #      // ...
   35617                 #      public static java.awt.Color fromProto(Color protocolor) {
   35618                 #        float alpha = protocolor.hasAlpha()
   35619                 #            ? protocolor.getAlpha().getValue()
   35620                 #            : 1.0;
   35621                 #
   35622                 #        return new java.awt.Color(
   35623                 #            protocolor.getRed(),
   35624                 #            protocolor.getGreen(),
   35625                 #            protocolor.getBlue(),
   35626                 #            alpha);
   35627                 #      }
   35628                 #
   35629                 #      public static Color toProto(java.awt.Color color) {
   35630                 #        float red = (float) color.getRed();
   35631                 #        float green = (float) color.getGreen();
   35632                 #        float blue = (float) color.getBlue();
   35633                 #        float denominator = 255.0;
   35634                 #        Color.Builder resultBuilder =
   35635                 #            Color
   35636                 #                .newBuilder()
   35637                 #                .setRed(red / denominator)
   35638                 #                .setGreen(green / denominator)
   35639                 #                .setBlue(blue / denominator);
   35640                 #        int alpha = color.getAlpha();
   35641                 #        if (alpha != 255) {
   35642                 #          result.setAlpha(
   35643                 #              FloatValue
   35644                 #                  .newBuilder()
   35645                 #                  .setValue(((float) alpha) / denominator)
   35646                 #                  .build());
   35647                 #        }
   35648                 #        return resultBuilder.build();
   35649                 #      }
   35650                 #      // ...
   35651                 #
   35652                 # Example (iOS / Obj-C):
   35653                 #
   35654                 #      // ...
   35655                 #      static UIColor* fromProto(Color* protocolor) {
   35656                 #         float red = [protocolor red];
   35657                 #         float green = [protocolor green];
   35658                 #         float blue = [protocolor blue];
   35659                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   35660                 #         float alpha = 1.0;
   35661                 #         if (alpha_wrapper != nil) {
   35662                 #           alpha = [alpha_wrapper value];
   35663                 #         }
   35664                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   35665                 #      }
   35666                 #
   35667                 #      static Color* toProto(UIColor* color) {
   35668                 #          CGFloat red, green, blue, alpha;
   35669                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   35670                 #            return nil;
   35671                 #          }
   35672                 #          Color* result = [Color alloc] init];
   35673                 #          [result setRed:red];
   35674                 #          [result setGreen:green];
   35675                 #          [result setBlue:blue];
   35676                 #          if (alpha <= 0.9999) {
   35677                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   35678                 #          }
   35679                 #          [result autorelease];
   35680                 #          return result;
   35681                 #     }
   35682                 #     // ...
   35683                 #
   35684                 #  Example (JavaScript):
   35685                 #
   35686                 #     // ...
   35687                 #
   35688                 #     var protoToCssColor = function(rgb_color) {
   35689                 #        var redFrac = rgb_color.red || 0.0;
   35690                 #        var greenFrac = rgb_color.green || 0.0;
   35691                 #        var blueFrac = rgb_color.blue || 0.0;
   35692                 #        var red = Math.floor(redFrac * 255);
   35693                 #        var green = Math.floor(greenFrac * 255);
   35694                 #        var blue = Math.floor(blueFrac * 255);
   35695                 #
   35696                 #        if (!('alpha' in rgb_color)) {
   35697                 #           return rgbToCssColor_(red, green, blue);
   35698                 #        }
   35699                 #
   35700                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   35701                 #        var rgbParams = [red, green, blue].join(',');
   35702                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   35703                 #     };
   35704                 #
   35705                 #     var rgbToCssColor_ = function(red, green, blue) {
   35706                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   35707                 #       var hexString = rgbNumber.toString(16);
   35708                 #       var missingZeros = 6 - hexString.length;
   35709                 #       var resultBuilder = ['#'];
   35710                 #       for (var i = 0; i < missingZeros; i++) {
   35711                 #          resultBuilder.push('0');
   35712                 #       }
   35713                 #       resultBuilder.push(hexString);
   35714                 #       return resultBuilder.join('');
   35715                 #     };
   35716                 #
   35717                 #     // ...
   35718               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   35719               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   35720                   # the final pixel color is defined by the equation:
   35721                   #
   35722                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   35723                   #
   35724                   # This means that a value of 1.0 corresponds to a solid color, whereas
   35725                   # a value of 0.0 corresponds to a completely transparent color. This
   35726                   # uses a wrapper message rather than a simple float scalar so that it is
   35727                   # possible to distinguish between a default value and the value being unset.
   35728                   # If omitted, this color object is to be rendered as a solid color
   35729                   # (as if the alpha value had been explicitly given with a value of 1.0).
   35730               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   35731               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   35732             },
   35733             "width": 42, # The width of the border, in pixels.
   35734                 # Deprecated; the width is determined by the "style" field.
   35735             "style": "A String", # The style of the border.
   35736           },
   35737           "right": { # A border along a cell. # The right border of the cell.
   35738             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   35739                 # for simplicity of conversion to/from color representations in various
   35740                 # languages over compactness; for example, the fields of this representation
   35741                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   35742                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   35743                 # method in iOS; and, with just a little work, it can be easily formatted into
   35744                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   35745                 #
   35746                 # Example (Java):
   35747                 #
   35748                 #      import com.google.type.Color;
   35749                 #
   35750                 #      // ...
   35751                 #      public static java.awt.Color fromProto(Color protocolor) {
   35752                 #        float alpha = protocolor.hasAlpha()
   35753                 #            ? protocolor.getAlpha().getValue()
   35754                 #            : 1.0;
   35755                 #
   35756                 #        return new java.awt.Color(
   35757                 #            protocolor.getRed(),
   35758                 #            protocolor.getGreen(),
   35759                 #            protocolor.getBlue(),
   35760                 #            alpha);
   35761                 #      }
   35762                 #
   35763                 #      public static Color toProto(java.awt.Color color) {
   35764                 #        float red = (float) color.getRed();
   35765                 #        float green = (float) color.getGreen();
   35766                 #        float blue = (float) color.getBlue();
   35767                 #        float denominator = 255.0;
   35768                 #        Color.Builder resultBuilder =
   35769                 #            Color
   35770                 #                .newBuilder()
   35771                 #                .setRed(red / denominator)
   35772                 #                .setGreen(green / denominator)
   35773                 #                .setBlue(blue / denominator);
   35774                 #        int alpha = color.getAlpha();
   35775                 #        if (alpha != 255) {
   35776                 #          result.setAlpha(
   35777                 #              FloatValue
   35778                 #                  .newBuilder()
   35779                 #                  .setValue(((float) alpha) / denominator)
   35780                 #                  .build());
   35781                 #        }
   35782                 #        return resultBuilder.build();
   35783                 #      }
   35784                 #      // ...
   35785                 #
   35786                 # Example (iOS / Obj-C):
   35787                 #
   35788                 #      // ...
   35789                 #      static UIColor* fromProto(Color* protocolor) {
   35790                 #         float red = [protocolor red];
   35791                 #         float green = [protocolor green];
   35792                 #         float blue = [protocolor blue];
   35793                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   35794                 #         float alpha = 1.0;
   35795                 #         if (alpha_wrapper != nil) {
   35796                 #           alpha = [alpha_wrapper value];
   35797                 #         }
   35798                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   35799                 #      }
   35800                 #
   35801                 #      static Color* toProto(UIColor* color) {
   35802                 #          CGFloat red, green, blue, alpha;
   35803                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   35804                 #            return nil;
   35805                 #          }
   35806                 #          Color* result = [Color alloc] init];
   35807                 #          [result setRed:red];
   35808                 #          [result setGreen:green];
   35809                 #          [result setBlue:blue];
   35810                 #          if (alpha <= 0.9999) {
   35811                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   35812                 #          }
   35813                 #          [result autorelease];
   35814                 #          return result;
   35815                 #     }
   35816                 #     // ...
   35817                 #
   35818                 #  Example (JavaScript):
   35819                 #
   35820                 #     // ...
   35821                 #
   35822                 #     var protoToCssColor = function(rgb_color) {
   35823                 #        var redFrac = rgb_color.red || 0.0;
   35824                 #        var greenFrac = rgb_color.green || 0.0;
   35825                 #        var blueFrac = rgb_color.blue || 0.0;
   35826                 #        var red = Math.floor(redFrac * 255);
   35827                 #        var green = Math.floor(greenFrac * 255);
   35828                 #        var blue = Math.floor(blueFrac * 255);
   35829                 #
   35830                 #        if (!('alpha' in rgb_color)) {
   35831                 #           return rgbToCssColor_(red, green, blue);
   35832                 #        }
   35833                 #
   35834                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   35835                 #        var rgbParams = [red, green, blue].join(',');
   35836                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   35837                 #     };
   35838                 #
   35839                 #     var rgbToCssColor_ = function(red, green, blue) {
   35840                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   35841                 #       var hexString = rgbNumber.toString(16);
   35842                 #       var missingZeros = 6 - hexString.length;
   35843                 #       var resultBuilder = ['#'];
   35844                 #       for (var i = 0; i < missingZeros; i++) {
   35845                 #          resultBuilder.push('0');
   35846                 #       }
   35847                 #       resultBuilder.push(hexString);
   35848                 #       return resultBuilder.join('');
   35849                 #     };
   35850                 #
   35851                 #     // ...
   35852               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   35853               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   35854                   # the final pixel color is defined by the equation:
   35855                   #
   35856                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   35857                   #
   35858                   # This means that a value of 1.0 corresponds to a solid color, whereas
   35859                   # a value of 0.0 corresponds to a completely transparent color. This
   35860                   # uses a wrapper message rather than a simple float scalar so that it is
   35861                   # possible to distinguish between a default value and the value being unset.
   35862                   # If omitted, this color object is to be rendered as a solid color
   35863                   # (as if the alpha value had been explicitly given with a value of 1.0).
   35864               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   35865               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   35866             },
   35867             "width": 42, # The width of the border, in pixels.
   35868                 # Deprecated; the width is determined by the "style" field.
   35869             "style": "A String", # The style of the border.
   35870           },
   35871           "bottom": { # A border along a cell. # The bottom border of the cell.
   35872             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   35873                 # for simplicity of conversion to/from color representations in various
   35874                 # languages over compactness; for example, the fields of this representation
   35875                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   35876                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   35877                 # method in iOS; and, with just a little work, it can be easily formatted into
   35878                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   35879                 #
   35880                 # Example (Java):
   35881                 #
   35882                 #      import com.google.type.Color;
   35883                 #
   35884                 #      // ...
   35885                 #      public static java.awt.Color fromProto(Color protocolor) {
   35886                 #        float alpha = protocolor.hasAlpha()
   35887                 #            ? protocolor.getAlpha().getValue()
   35888                 #            : 1.0;
   35889                 #
   35890                 #        return new java.awt.Color(
   35891                 #            protocolor.getRed(),
   35892                 #            protocolor.getGreen(),
   35893                 #            protocolor.getBlue(),
   35894                 #            alpha);
   35895                 #      }
   35896                 #
   35897                 #      public static Color toProto(java.awt.Color color) {
   35898                 #        float red = (float) color.getRed();
   35899                 #        float green = (float) color.getGreen();
   35900                 #        float blue = (float) color.getBlue();
   35901                 #        float denominator = 255.0;
   35902                 #        Color.Builder resultBuilder =
   35903                 #            Color
   35904                 #                .newBuilder()
   35905                 #                .setRed(red / denominator)
   35906                 #                .setGreen(green / denominator)
   35907                 #                .setBlue(blue / denominator);
   35908                 #        int alpha = color.getAlpha();
   35909                 #        if (alpha != 255) {
   35910                 #          result.setAlpha(
   35911                 #              FloatValue
   35912                 #                  .newBuilder()
   35913                 #                  .setValue(((float) alpha) / denominator)
   35914                 #                  .build());
   35915                 #        }
   35916                 #        return resultBuilder.build();
   35917                 #      }
   35918                 #      // ...
   35919                 #
   35920                 # Example (iOS / Obj-C):
   35921                 #
   35922                 #      // ...
   35923                 #      static UIColor* fromProto(Color* protocolor) {
   35924                 #         float red = [protocolor red];
   35925                 #         float green = [protocolor green];
   35926                 #         float blue = [protocolor blue];
   35927                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   35928                 #         float alpha = 1.0;
   35929                 #         if (alpha_wrapper != nil) {
   35930                 #           alpha = [alpha_wrapper value];
   35931                 #         }
   35932                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   35933                 #      }
   35934                 #
   35935                 #      static Color* toProto(UIColor* color) {
   35936                 #          CGFloat red, green, blue, alpha;
   35937                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   35938                 #            return nil;
   35939                 #          }
   35940                 #          Color* result = [Color alloc] init];
   35941                 #          [result setRed:red];
   35942                 #          [result setGreen:green];
   35943                 #          [result setBlue:blue];
   35944                 #          if (alpha <= 0.9999) {
   35945                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   35946                 #          }
   35947                 #          [result autorelease];
   35948                 #          return result;
   35949                 #     }
   35950                 #     // ...
   35951                 #
   35952                 #  Example (JavaScript):
   35953                 #
   35954                 #     // ...
   35955                 #
   35956                 #     var protoToCssColor = function(rgb_color) {
   35957                 #        var redFrac = rgb_color.red || 0.0;
   35958                 #        var greenFrac = rgb_color.green || 0.0;
   35959                 #        var blueFrac = rgb_color.blue || 0.0;
   35960                 #        var red = Math.floor(redFrac * 255);
   35961                 #        var green = Math.floor(greenFrac * 255);
   35962                 #        var blue = Math.floor(blueFrac * 255);
   35963                 #
   35964                 #        if (!('alpha' in rgb_color)) {
   35965                 #           return rgbToCssColor_(red, green, blue);
   35966                 #        }
   35967                 #
   35968                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   35969                 #        var rgbParams = [red, green, blue].join(',');
   35970                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   35971                 #     };
   35972                 #
   35973                 #     var rgbToCssColor_ = function(red, green, blue) {
   35974                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   35975                 #       var hexString = rgbNumber.toString(16);
   35976                 #       var missingZeros = 6 - hexString.length;
   35977                 #       var resultBuilder = ['#'];
   35978                 #       for (var i = 0; i < missingZeros; i++) {
   35979                 #          resultBuilder.push('0');
   35980                 #       }
   35981                 #       resultBuilder.push(hexString);
   35982                 #       return resultBuilder.join('');
   35983                 #     };
   35984                 #
   35985                 #     // ...
   35986               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   35987               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   35988                   # the final pixel color is defined by the equation:
   35989                   #
   35990                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   35991                   #
   35992                   # This means that a value of 1.0 corresponds to a solid color, whereas
   35993                   # a value of 0.0 corresponds to a completely transparent color. This
   35994                   # uses a wrapper message rather than a simple float scalar so that it is
   35995                   # possible to distinguish between a default value and the value being unset.
   35996                   # If omitted, this color object is to be rendered as a solid color
   35997                   # (as if the alpha value had been explicitly given with a value of 1.0).
   35998               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   35999               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   36000             },
   36001             "width": 42, # The width of the border, in pixels.
   36002                 # Deprecated; the width is determined by the "style" field.
   36003             "style": "A String", # The style of the border.
   36004           },
   36005           "left": { # A border along a cell. # The left border of the cell.
   36006             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   36007                 # for simplicity of conversion to/from color representations in various
   36008                 # languages over compactness; for example, the fields of this representation
   36009                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   36010                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   36011                 # method in iOS; and, with just a little work, it can be easily formatted into
   36012                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   36013                 #
   36014                 # Example (Java):
   36015                 #
   36016                 #      import com.google.type.Color;
   36017                 #
   36018                 #      // ...
   36019                 #      public static java.awt.Color fromProto(Color protocolor) {
   36020                 #        float alpha = protocolor.hasAlpha()
   36021                 #            ? protocolor.getAlpha().getValue()
   36022                 #            : 1.0;
   36023                 #
   36024                 #        return new java.awt.Color(
   36025                 #            protocolor.getRed(),
   36026                 #            protocolor.getGreen(),
   36027                 #            protocolor.getBlue(),
   36028                 #            alpha);
   36029                 #      }
   36030                 #
   36031                 #      public static Color toProto(java.awt.Color color) {
   36032                 #        float red = (float) color.getRed();
   36033                 #        float green = (float) color.getGreen();
   36034                 #        float blue = (float) color.getBlue();
   36035                 #        float denominator = 255.0;
   36036                 #        Color.Builder resultBuilder =
   36037                 #            Color
   36038                 #                .newBuilder()
   36039                 #                .setRed(red / denominator)
   36040                 #                .setGreen(green / denominator)
   36041                 #                .setBlue(blue / denominator);
   36042                 #        int alpha = color.getAlpha();
   36043                 #        if (alpha != 255) {
   36044                 #          result.setAlpha(
   36045                 #              FloatValue
   36046                 #                  .newBuilder()
   36047                 #                  .setValue(((float) alpha) / denominator)
   36048                 #                  .build());
   36049                 #        }
   36050                 #        return resultBuilder.build();
   36051                 #      }
   36052                 #      // ...
   36053                 #
   36054                 # Example (iOS / Obj-C):
   36055                 #
   36056                 #      // ...
   36057                 #      static UIColor* fromProto(Color* protocolor) {
   36058                 #         float red = [protocolor red];
   36059                 #         float green = [protocolor green];
   36060                 #         float blue = [protocolor blue];
   36061                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   36062                 #         float alpha = 1.0;
   36063                 #         if (alpha_wrapper != nil) {
   36064                 #           alpha = [alpha_wrapper value];
   36065                 #         }
   36066                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   36067                 #      }
   36068                 #
   36069                 #      static Color* toProto(UIColor* color) {
   36070                 #          CGFloat red, green, blue, alpha;
   36071                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   36072                 #            return nil;
   36073                 #          }
   36074                 #          Color* result = [Color alloc] init];
   36075                 #          [result setRed:red];
   36076                 #          [result setGreen:green];
   36077                 #          [result setBlue:blue];
   36078                 #          if (alpha <= 0.9999) {
   36079                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   36080                 #          }
   36081                 #          [result autorelease];
   36082                 #          return result;
   36083                 #     }
   36084                 #     // ...
   36085                 #
   36086                 #  Example (JavaScript):
   36087                 #
   36088                 #     // ...
   36089                 #
   36090                 #     var protoToCssColor = function(rgb_color) {
   36091                 #        var redFrac = rgb_color.red || 0.0;
   36092                 #        var greenFrac = rgb_color.green || 0.0;
   36093                 #        var blueFrac = rgb_color.blue || 0.0;
   36094                 #        var red = Math.floor(redFrac * 255);
   36095                 #        var green = Math.floor(greenFrac * 255);
   36096                 #        var blue = Math.floor(blueFrac * 255);
   36097                 #
   36098                 #        if (!('alpha' in rgb_color)) {
   36099                 #           return rgbToCssColor_(red, green, blue);
   36100                 #        }
   36101                 #
   36102                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   36103                 #        var rgbParams = [red, green, blue].join(',');
   36104                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   36105                 #     };
   36106                 #
   36107                 #     var rgbToCssColor_ = function(red, green, blue) {
   36108                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   36109                 #       var hexString = rgbNumber.toString(16);
   36110                 #       var missingZeros = 6 - hexString.length;
   36111                 #       var resultBuilder = ['#'];
   36112                 #       for (var i = 0; i < missingZeros; i++) {
   36113                 #          resultBuilder.push('0');
   36114                 #       }
   36115                 #       resultBuilder.push(hexString);
   36116                 #       return resultBuilder.join('');
   36117                 #     };
   36118                 #
   36119                 #     // ...
   36120               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   36121               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   36122                   # the final pixel color is defined by the equation:
   36123                   #
   36124                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   36125                   #
   36126                   # This means that a value of 1.0 corresponds to a solid color, whereas
   36127                   # a value of 0.0 corresponds to a completely transparent color. This
   36128                   # uses a wrapper message rather than a simple float scalar so that it is
   36129                   # possible to distinguish between a default value and the value being unset.
   36130                   # If omitted, this color object is to be rendered as a solid color
   36131                   # (as if the alpha value had been explicitly given with a value of 1.0).
   36132               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   36133               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   36134             },
   36135             "width": 42, # The width of the border, in pixels.
   36136                 # Deprecated; the width is determined by the "style" field.
   36137             "style": "A String", # The style of the border.
   36138           },
   36139         },
   36140         "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   36141       },
   36142       "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
   36143       "iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
   36144           # calculation.  Absence of this field means that circular references will
   36145           # result in calculation errors.
   36146           # calculation.
   36147         "convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
   36148             # less than this threshold value, the calculation rounds stop.
   36149         "maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
   36150             # rounds to perform.
   36151       },
   36152       "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
   36153           # `America/New_York`. If the time zone isn't recognized, this may
   36154           # be a custom time zone such as `GMT-07:00`.
   36155     },
   36156     "sheets": [ # The sheets that are part of a spreadsheet.
   36157       { # A sheet in a spreadsheet.
   36158         "conditionalFormats": [ # The conditional format rules in this sheet.
   36159           { # A rule describing a conditional format.
   36160             "ranges": [ # The ranges that will be formatted if the condition is true.
   36161                 # All the ranges must be on the same grid.
   36162               { # A range on a sheet.
   36163                   # All indexes are zero-based.
   36164                   # Indexes are half open, e.g the start index is inclusive
   36165                   # and the end index is exclusive -- [start_index, end_index).
   36166                   # Missing indexes indicate the range is unbounded on that side.
   36167                   #
   36168                   # For example, if `"Sheet1"` is sheet ID 0, then:
   36169                   #
   36170                   #   `Sheet1!A1:A1 == sheet_id: 0,
   36171                   #                   start_row_index: 0, end_row_index: 1,
   36172                   #                   start_column_index: 0, end_column_index: 1`
   36173                   #
   36174                   #   `Sheet1!A3:B4 == sheet_id: 0,
   36175                   #                   start_row_index: 2, end_row_index: 4,
   36176                   #                   start_column_index: 0, end_column_index: 2`
   36177                   #
   36178                   #   `Sheet1!A:B == sheet_id: 0,
   36179                   #                 start_column_index: 0, end_column_index: 2`
   36180                   #
   36181                   #   `Sheet1!A5:B == sheet_id: 0,
   36182                   #                  start_row_index: 4,
   36183                   #                  start_column_index: 0, end_column_index: 2`
   36184                   #
   36185                   #   `Sheet1 == sheet_id:0`
   36186                   #
   36187                   # The start index must always be less than or equal to the end index.
   36188                   # If the start index equals the end index, then the range is empty.
   36189                   # Empty ranges are typically not meaningful and are usually rendered in the
   36190                   # UI as `#REF!`.
   36191                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   36192                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   36193                 "sheetId": 42, # The sheet this range is on.
   36194                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   36195                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   36196               },
   36197             ],
   36198             "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
   36199               "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
   36200                   # the format will be applied.
   36201                   # BooleanConditions are used by conditional formatting,
   36202                   # data validation, and the criteria in filters.
   36203                 "values": [ # The values of the condition. The number of supported values depends
   36204                     # on the condition type.  Some support zero values,
   36205                     # others one or two values,
   36206                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   36207                   { # The value of the condition.
   36208                     "relativeDate": "A String", # A relative date (based on the current date).
   36209                         # Valid only if the type is
   36210                         # DATE_BEFORE,
   36211                         # DATE_AFTER,
   36212                         # DATE_ON_OR_BEFORE or
   36213                         # DATE_ON_OR_AFTER.
   36214                         #
   36215                         # Relative dates are not supported in data validation.
   36216                         # They are supported only in conditional formatting and
   36217                         # conditional filters.
   36218                     "userEnteredValue": "A String", # A value the condition is based on.
   36219                         # The value will be parsed as if the user typed into a cell.
   36220                         # Formulas are supported (and must begin with an `=`).
   36221                   },
   36222                 ],
   36223                 "type": "A String", # The type of condition.
   36224               },
   36225               "format": { # The format of a cell. # The format to apply.
   36226                   # Conditional formatting can only apply a subset of formatting:
   36227                   # bold, italic,
   36228                   # strikethrough,
   36229                   # foreground color &
   36230                   # background color.
   36231                 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   36232                   "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   36233                       # the user's locale will be used if necessary for the given type.
   36234                       # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   36235                       # information about the supported patterns.
   36236                   "type": "A String", # The type of the number format.
   36237                       # When writing, this field must be set.
   36238                 },
   36239                 "textDirection": "A String", # The direction of the text in the cell.
   36240                 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   36241                     # When updating padding, every field must be specified.
   36242                   "top": 42, # The top padding of the cell.
   36243                   "right": 42, # The right padding of the cell.
   36244                   "bottom": 42, # The bottom padding of the cell.
   36245                   "left": 42, # The left padding of the cell.
   36246                 },
   36247                 "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   36248                 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   36249                     # for simplicity of conversion to/from color representations in various
   36250                     # languages over compactness; for example, the fields of this representation
   36251                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   36252                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   36253                     # method in iOS; and, with just a little work, it can be easily formatted into
   36254                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   36255                     #
   36256                     # Example (Java):
   36257                     #
   36258                     #      import com.google.type.Color;
   36259                     #
   36260                     #      // ...
   36261                     #      public static java.awt.Color fromProto(Color protocolor) {
   36262                     #        float alpha = protocolor.hasAlpha()
   36263                     #            ? protocolor.getAlpha().getValue()
   36264                     #            : 1.0;
   36265                     #
   36266                     #        return new java.awt.Color(
   36267                     #            protocolor.getRed(),
   36268                     #            protocolor.getGreen(),
   36269                     #            protocolor.getBlue(),
   36270                     #            alpha);
   36271                     #      }
   36272                     #
   36273                     #      public static Color toProto(java.awt.Color color) {
   36274                     #        float red = (float) color.getRed();
   36275                     #        float green = (float) color.getGreen();
   36276                     #        float blue = (float) color.getBlue();
   36277                     #        float denominator = 255.0;
   36278                     #        Color.Builder resultBuilder =
   36279                     #            Color
   36280                     #                .newBuilder()
   36281                     #                .setRed(red / denominator)
   36282                     #                .setGreen(green / denominator)
   36283                     #                .setBlue(blue / denominator);
   36284                     #        int alpha = color.getAlpha();
   36285                     #        if (alpha != 255) {
   36286                     #          result.setAlpha(
   36287                     #              FloatValue
   36288                     #                  .newBuilder()
   36289                     #                  .setValue(((float) alpha) / denominator)
   36290                     #                  .build());
   36291                     #        }
   36292                     #        return resultBuilder.build();
   36293                     #      }
   36294                     #      // ...
   36295                     #
   36296                     # Example (iOS / Obj-C):
   36297                     #
   36298                     #      // ...
   36299                     #      static UIColor* fromProto(Color* protocolor) {
   36300                     #         float red = [protocolor red];
   36301                     #         float green = [protocolor green];
   36302                     #         float blue = [protocolor blue];
   36303                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   36304                     #         float alpha = 1.0;
   36305                     #         if (alpha_wrapper != nil) {
   36306                     #           alpha = [alpha_wrapper value];
   36307                     #         }
   36308                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   36309                     #      }
   36310                     #
   36311                     #      static Color* toProto(UIColor* color) {
   36312                     #          CGFloat red, green, blue, alpha;
   36313                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   36314                     #            return nil;
   36315                     #          }
   36316                     #          Color* result = [Color alloc] init];
   36317                     #          [result setRed:red];
   36318                     #          [result setGreen:green];
   36319                     #          [result setBlue:blue];
   36320                     #          if (alpha <= 0.9999) {
   36321                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   36322                     #          }
   36323                     #          [result autorelease];
   36324                     #          return result;
   36325                     #     }
   36326                     #     // ...
   36327                     #
   36328                     #  Example (JavaScript):
   36329                     #
   36330                     #     // ...
   36331                     #
   36332                     #     var protoToCssColor = function(rgb_color) {
   36333                     #        var redFrac = rgb_color.red || 0.0;
   36334                     #        var greenFrac = rgb_color.green || 0.0;
   36335                     #        var blueFrac = rgb_color.blue || 0.0;
   36336                     #        var red = Math.floor(redFrac * 255);
   36337                     #        var green = Math.floor(greenFrac * 255);
   36338                     #        var blue = Math.floor(blueFrac * 255);
   36339                     #
   36340                     #        if (!('alpha' in rgb_color)) {
   36341                     #           return rgbToCssColor_(red, green, blue);
   36342                     #        }
   36343                     #
   36344                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   36345                     #        var rgbParams = [red, green, blue].join(',');
   36346                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   36347                     #     };
   36348                     #
   36349                     #     var rgbToCssColor_ = function(red, green, blue) {
   36350                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   36351                     #       var hexString = rgbNumber.toString(16);
   36352                     #       var missingZeros = 6 - hexString.length;
   36353                     #       var resultBuilder = ['#'];
   36354                     #       for (var i = 0; i < missingZeros; i++) {
   36355                     #          resultBuilder.push('0');
   36356                     #       }
   36357                     #       resultBuilder.push(hexString);
   36358                     #       return resultBuilder.join('');
   36359                     #     };
   36360                     #
   36361                     #     // ...
   36362                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   36363                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   36364                       # the final pixel color is defined by the equation:
   36365                       #
   36366                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   36367                       #
   36368                       # This means that a value of 1.0 corresponds to a solid color, whereas
   36369                       # a value of 0.0 corresponds to a completely transparent color. This
   36370                       # uses a wrapper message rather than a simple float scalar so that it is
   36371                       # possible to distinguish between a default value and the value being unset.
   36372                       # If omitted, this color object is to be rendered as a solid color
   36373                       # (as if the alpha value had been explicitly given with a value of 1.0).
   36374                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   36375                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   36376                 },
   36377                 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   36378                 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   36379                     # Absent values indicate that the field isn't specified.
   36380                   "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   36381                       # for simplicity of conversion to/from color representations in various
   36382                       # languages over compactness; for example, the fields of this representation
   36383                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   36384                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   36385                       # method in iOS; and, with just a little work, it can be easily formatted into
   36386                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   36387                       #
   36388                       # Example (Java):
   36389                       #
   36390                       #      import com.google.type.Color;
   36391                       #
   36392                       #      // ...
   36393                       #      public static java.awt.Color fromProto(Color protocolor) {
   36394                       #        float alpha = protocolor.hasAlpha()
   36395                       #            ? protocolor.getAlpha().getValue()
   36396                       #            : 1.0;
   36397                       #
   36398                       #        return new java.awt.Color(
   36399                       #            protocolor.getRed(),
   36400                       #            protocolor.getGreen(),
   36401                       #            protocolor.getBlue(),
   36402                       #            alpha);
   36403                       #      }
   36404                       #
   36405                       #      public static Color toProto(java.awt.Color color) {
   36406                       #        float red = (float) color.getRed();
   36407                       #        float green = (float) color.getGreen();
   36408                       #        float blue = (float) color.getBlue();
   36409                       #        float denominator = 255.0;
   36410                       #        Color.Builder resultBuilder =
   36411                       #            Color
   36412                       #                .newBuilder()
   36413                       #                .setRed(red / denominator)
   36414                       #                .setGreen(green / denominator)
   36415                       #                .setBlue(blue / denominator);
   36416                       #        int alpha = color.getAlpha();
   36417                       #        if (alpha != 255) {
   36418                       #          result.setAlpha(
   36419                       #              FloatValue
   36420                       #                  .newBuilder()
   36421                       #                  .setValue(((float) alpha) / denominator)
   36422                       #                  .build());
   36423                       #        }
   36424                       #        return resultBuilder.build();
   36425                       #      }
   36426                       #      // ...
   36427                       #
   36428                       # Example (iOS / Obj-C):
   36429                       #
   36430                       #      // ...
   36431                       #      static UIColor* fromProto(Color* protocolor) {
   36432                       #         float red = [protocolor red];
   36433                       #         float green = [protocolor green];
   36434                       #         float blue = [protocolor blue];
   36435                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   36436                       #         float alpha = 1.0;
   36437                       #         if (alpha_wrapper != nil) {
   36438                       #           alpha = [alpha_wrapper value];
   36439                       #         }
   36440                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   36441                       #      }
   36442                       #
   36443                       #      static Color* toProto(UIColor* color) {
   36444                       #          CGFloat red, green, blue, alpha;
   36445                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   36446                       #            return nil;
   36447                       #          }
   36448                       #          Color* result = [Color alloc] init];
   36449                       #          [result setRed:red];
   36450                       #          [result setGreen:green];
   36451                       #          [result setBlue:blue];
   36452                       #          if (alpha <= 0.9999) {
   36453                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   36454                       #          }
   36455                       #          [result autorelease];
   36456                       #          return result;
   36457                       #     }
   36458                       #     // ...
   36459                       #
   36460                       #  Example (JavaScript):
   36461                       #
   36462                       #     // ...
   36463                       #
   36464                       #     var protoToCssColor = function(rgb_color) {
   36465                       #        var redFrac = rgb_color.red || 0.0;
   36466                       #        var greenFrac = rgb_color.green || 0.0;
   36467                       #        var blueFrac = rgb_color.blue || 0.0;
   36468                       #        var red = Math.floor(redFrac * 255);
   36469                       #        var green = Math.floor(greenFrac * 255);
   36470                       #        var blue = Math.floor(blueFrac * 255);
   36471                       #
   36472                       #        if (!('alpha' in rgb_color)) {
   36473                       #           return rgbToCssColor_(red, green, blue);
   36474                       #        }
   36475                       #
   36476                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   36477                       #        var rgbParams = [red, green, blue].join(',');
   36478                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   36479                       #     };
   36480                       #
   36481                       #     var rgbToCssColor_ = function(red, green, blue) {
   36482                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   36483                       #       var hexString = rgbNumber.toString(16);
   36484                       #       var missingZeros = 6 - hexString.length;
   36485                       #       var resultBuilder = ['#'];
   36486                       #       for (var i = 0; i < missingZeros; i++) {
   36487                       #          resultBuilder.push('0');
   36488                       #       }
   36489                       #       resultBuilder.push(hexString);
   36490                       #       return resultBuilder.join('');
   36491                       #     };
   36492                       #
   36493                       #     // ...
   36494                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   36495                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   36496                         # the final pixel color is defined by the equation:
   36497                         #
   36498                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   36499                         #
   36500                         # This means that a value of 1.0 corresponds to a solid color, whereas
   36501                         # a value of 0.0 corresponds to a completely transparent color. This
   36502                         # uses a wrapper message rather than a simple float scalar so that it is
   36503                         # possible to distinguish between a default value and the value being unset.
   36504                         # If omitted, this color object is to be rendered as a solid color
   36505                         # (as if the alpha value had been explicitly given with a value of 1.0).
   36506                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   36507                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   36508                   },
   36509                   "bold": True or False, # True if the text is bold.
   36510                   "strikethrough": True or False, # True if the text has a strikethrough.
   36511                   "fontFamily": "A String", # The font family.
   36512                   "fontSize": 42, # The size of the font.
   36513                   "italic": True or False, # True if the text is italicized.
   36514                   "underline": True or False, # True if the text is underlined.
   36515                 },
   36516                 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   36517                   "angle": 42, # The angle between the standard orientation and the desired orientation.
   36518                       # Measured in degrees. Valid values are between -90 and 90. Positive
   36519                       # angles are angled upwards, negative are angled downwards.
   36520                       #
   36521                       # Note: For LTR text direction positive angles are in the counterclockwise
   36522                       # direction, whereas for RTL they are in the clockwise direction
   36523                   "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   36524                       # characters is unchanged.
   36525                       # For example:
   36526                       #
   36527                       #     | V |
   36528                       #     | e |
   36529                       #     | r |
   36530                       #     | t |
   36531                       #     | i |
   36532                       #     | c |
   36533                       #     | a |
   36534                       #     | l |
   36535                 },
   36536                 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   36537                 "borders": { # The borders of the cell. # The borders of the cell.
   36538                   "top": { # A border along a cell. # The top border of the cell.
   36539                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   36540                         # for simplicity of conversion to/from color representations in various
   36541                         # languages over compactness; for example, the fields of this representation
   36542                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   36543                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   36544                         # method in iOS; and, with just a little work, it can be easily formatted into
   36545                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   36546                         #
   36547                         # Example (Java):
   36548                         #
   36549                         #      import com.google.type.Color;
   36550                         #
   36551                         #      // ...
   36552                         #      public static java.awt.Color fromProto(Color protocolor) {
   36553                         #        float alpha = protocolor.hasAlpha()
   36554                         #            ? protocolor.getAlpha().getValue()
   36555                         #            : 1.0;
   36556                         #
   36557                         #        return new java.awt.Color(
   36558                         #            protocolor.getRed(),
   36559                         #            protocolor.getGreen(),
   36560                         #            protocolor.getBlue(),
   36561                         #            alpha);
   36562                         #      }
   36563                         #
   36564                         #      public static Color toProto(java.awt.Color color) {
   36565                         #        float red = (float) color.getRed();
   36566                         #        float green = (float) color.getGreen();
   36567                         #        float blue = (float) color.getBlue();
   36568                         #        float denominator = 255.0;
   36569                         #        Color.Builder resultBuilder =
   36570                         #            Color
   36571                         #                .newBuilder()
   36572                         #                .setRed(red / denominator)
   36573                         #                .setGreen(green / denominator)
   36574                         #                .setBlue(blue / denominator);
   36575                         #        int alpha = color.getAlpha();
   36576                         #        if (alpha != 255) {
   36577                         #          result.setAlpha(
   36578                         #              FloatValue
   36579                         #                  .newBuilder()
   36580                         #                  .setValue(((float) alpha) / denominator)
   36581                         #                  .build());
   36582                         #        }
   36583                         #        return resultBuilder.build();
   36584                         #      }
   36585                         #      // ...
   36586                         #
   36587                         # Example (iOS / Obj-C):
   36588                         #
   36589                         #      // ...
   36590                         #      static UIColor* fromProto(Color* protocolor) {
   36591                         #         float red = [protocolor red];
   36592                         #         float green = [protocolor green];
   36593                         #         float blue = [protocolor blue];
   36594                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   36595                         #         float alpha = 1.0;
   36596                         #         if (alpha_wrapper != nil) {
   36597                         #           alpha = [alpha_wrapper value];
   36598                         #         }
   36599                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   36600                         #      }
   36601                         #
   36602                         #      static Color* toProto(UIColor* color) {
   36603                         #          CGFloat red, green, blue, alpha;
   36604                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   36605                         #            return nil;
   36606                         #          }
   36607                         #          Color* result = [Color alloc] init];
   36608                         #          [result setRed:red];
   36609                         #          [result setGreen:green];
   36610                         #          [result setBlue:blue];
   36611                         #          if (alpha <= 0.9999) {
   36612                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   36613                         #          }
   36614                         #          [result autorelease];
   36615                         #          return result;
   36616                         #     }
   36617                         #     // ...
   36618                         #
   36619                         #  Example (JavaScript):
   36620                         #
   36621                         #     // ...
   36622                         #
   36623                         #     var protoToCssColor = function(rgb_color) {
   36624                         #        var redFrac = rgb_color.red || 0.0;
   36625                         #        var greenFrac = rgb_color.green || 0.0;
   36626                         #        var blueFrac = rgb_color.blue || 0.0;
   36627                         #        var red = Math.floor(redFrac * 255);
   36628                         #        var green = Math.floor(greenFrac * 255);
   36629                         #        var blue = Math.floor(blueFrac * 255);
   36630                         #
   36631                         #        if (!('alpha' in rgb_color)) {
   36632                         #           return rgbToCssColor_(red, green, blue);
   36633                         #        }
   36634                         #
   36635                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   36636                         #        var rgbParams = [red, green, blue].join(',');
   36637                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   36638                         #     };
   36639                         #
   36640                         #     var rgbToCssColor_ = function(red, green, blue) {
   36641                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   36642                         #       var hexString = rgbNumber.toString(16);
   36643                         #       var missingZeros = 6 - hexString.length;
   36644                         #       var resultBuilder = ['#'];
   36645                         #       for (var i = 0; i < missingZeros; i++) {
   36646                         #          resultBuilder.push('0');
   36647                         #       }
   36648                         #       resultBuilder.push(hexString);
   36649                         #       return resultBuilder.join('');
   36650                         #     };
   36651                         #
   36652                         #     // ...
   36653                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   36654                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   36655                           # the final pixel color is defined by the equation:
   36656                           #
   36657                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   36658                           #
   36659                           # This means that a value of 1.0 corresponds to a solid color, whereas
   36660                           # a value of 0.0 corresponds to a completely transparent color. This
   36661                           # uses a wrapper message rather than a simple float scalar so that it is
   36662                           # possible to distinguish between a default value and the value being unset.
   36663                           # If omitted, this color object is to be rendered as a solid color
   36664                           # (as if the alpha value had been explicitly given with a value of 1.0).
   36665                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   36666                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   36667                     },
   36668                     "width": 42, # The width of the border, in pixels.
   36669                         # Deprecated; the width is determined by the "style" field.
   36670                     "style": "A String", # The style of the border.
   36671                   },
   36672                   "right": { # A border along a cell. # The right border of the cell.
   36673                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   36674                         # for simplicity of conversion to/from color representations in various
   36675                         # languages over compactness; for example, the fields of this representation
   36676                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   36677                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   36678                         # method in iOS; and, with just a little work, it can be easily formatted into
   36679                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   36680                         #
   36681                         # Example (Java):
   36682                         #
   36683                         #      import com.google.type.Color;
   36684                         #
   36685                         #      // ...
   36686                         #      public static java.awt.Color fromProto(Color protocolor) {
   36687                         #        float alpha = protocolor.hasAlpha()
   36688                         #            ? protocolor.getAlpha().getValue()
   36689                         #            : 1.0;
   36690                         #
   36691                         #        return new java.awt.Color(
   36692                         #            protocolor.getRed(),
   36693                         #            protocolor.getGreen(),
   36694                         #            protocolor.getBlue(),
   36695                         #            alpha);
   36696                         #      }
   36697                         #
   36698                         #      public static Color toProto(java.awt.Color color) {
   36699                         #        float red = (float) color.getRed();
   36700                         #        float green = (float) color.getGreen();
   36701                         #        float blue = (float) color.getBlue();
   36702                         #        float denominator = 255.0;
   36703                         #        Color.Builder resultBuilder =
   36704                         #            Color
   36705                         #                .newBuilder()
   36706                         #                .setRed(red / denominator)
   36707                         #                .setGreen(green / denominator)
   36708                         #                .setBlue(blue / denominator);
   36709                         #        int alpha = color.getAlpha();
   36710                         #        if (alpha != 255) {
   36711                         #          result.setAlpha(
   36712                         #              FloatValue
   36713                         #                  .newBuilder()
   36714                         #                  .setValue(((float) alpha) / denominator)
   36715                         #                  .build());
   36716                         #        }
   36717                         #        return resultBuilder.build();
   36718                         #      }
   36719                         #      // ...
   36720                         #
   36721                         # Example (iOS / Obj-C):
   36722                         #
   36723                         #      // ...
   36724                         #      static UIColor* fromProto(Color* protocolor) {
   36725                         #         float red = [protocolor red];
   36726                         #         float green = [protocolor green];
   36727                         #         float blue = [protocolor blue];
   36728                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   36729                         #         float alpha = 1.0;
   36730                         #         if (alpha_wrapper != nil) {
   36731                         #           alpha = [alpha_wrapper value];
   36732                         #         }
   36733                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   36734                         #      }
   36735                         #
   36736                         #      static Color* toProto(UIColor* color) {
   36737                         #          CGFloat red, green, blue, alpha;
   36738                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   36739                         #            return nil;
   36740                         #          }
   36741                         #          Color* result = [Color alloc] init];
   36742                         #          [result setRed:red];
   36743                         #          [result setGreen:green];
   36744                         #          [result setBlue:blue];
   36745                         #          if (alpha <= 0.9999) {
   36746                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   36747                         #          }
   36748                         #          [result autorelease];
   36749                         #          return result;
   36750                         #     }
   36751                         #     // ...
   36752                         #
   36753                         #  Example (JavaScript):
   36754                         #
   36755                         #     // ...
   36756                         #
   36757                         #     var protoToCssColor = function(rgb_color) {
   36758                         #        var redFrac = rgb_color.red || 0.0;
   36759                         #        var greenFrac = rgb_color.green || 0.0;
   36760                         #        var blueFrac = rgb_color.blue || 0.0;
   36761                         #        var red = Math.floor(redFrac * 255);
   36762                         #        var green = Math.floor(greenFrac * 255);
   36763                         #        var blue = Math.floor(blueFrac * 255);
   36764                         #
   36765                         #        if (!('alpha' in rgb_color)) {
   36766                         #           return rgbToCssColor_(red, green, blue);
   36767                         #        }
   36768                         #
   36769                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   36770                         #        var rgbParams = [red, green, blue].join(',');
   36771                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   36772                         #     };
   36773                         #
   36774                         #     var rgbToCssColor_ = function(red, green, blue) {
   36775                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   36776                         #       var hexString = rgbNumber.toString(16);
   36777                         #       var missingZeros = 6 - hexString.length;
   36778                         #       var resultBuilder = ['#'];
   36779                         #       for (var i = 0; i < missingZeros; i++) {
   36780                         #          resultBuilder.push('0');
   36781                         #       }
   36782                         #       resultBuilder.push(hexString);
   36783                         #       return resultBuilder.join('');
   36784                         #     };
   36785                         #
   36786                         #     // ...
   36787                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   36788                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   36789                           # the final pixel color is defined by the equation:
   36790                           #
   36791                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   36792                           #
   36793                           # This means that a value of 1.0 corresponds to a solid color, whereas
   36794                           # a value of 0.0 corresponds to a completely transparent color. This
   36795                           # uses a wrapper message rather than a simple float scalar so that it is
   36796                           # possible to distinguish between a default value and the value being unset.
   36797                           # If omitted, this color object is to be rendered as a solid color
   36798                           # (as if the alpha value had been explicitly given with a value of 1.0).
   36799                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   36800                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   36801                     },
   36802                     "width": 42, # The width of the border, in pixels.
   36803                         # Deprecated; the width is determined by the "style" field.
   36804                     "style": "A String", # The style of the border.
   36805                   },
   36806                   "bottom": { # A border along a cell. # The bottom border of the cell.
   36807                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   36808                         # for simplicity of conversion to/from color representations in various
   36809                         # languages over compactness; for example, the fields of this representation
   36810                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   36811                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   36812                         # method in iOS; and, with just a little work, it can be easily formatted into
   36813                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   36814                         #
   36815                         # Example (Java):
   36816                         #
   36817                         #      import com.google.type.Color;
   36818                         #
   36819                         #      // ...
   36820                         #      public static java.awt.Color fromProto(Color protocolor) {
   36821                         #        float alpha = protocolor.hasAlpha()
   36822                         #            ? protocolor.getAlpha().getValue()
   36823                         #            : 1.0;
   36824                         #
   36825                         #        return new java.awt.Color(
   36826                         #            protocolor.getRed(),
   36827                         #            protocolor.getGreen(),
   36828                         #            protocolor.getBlue(),
   36829                         #            alpha);
   36830                         #      }
   36831                         #
   36832                         #      public static Color toProto(java.awt.Color color) {
   36833                         #        float red = (float) color.getRed();
   36834                         #        float green = (float) color.getGreen();
   36835                         #        float blue = (float) color.getBlue();
   36836                         #        float denominator = 255.0;
   36837                         #        Color.Builder resultBuilder =
   36838                         #            Color
   36839                         #                .newBuilder()
   36840                         #                .setRed(red / denominator)
   36841                         #                .setGreen(green / denominator)
   36842                         #                .setBlue(blue / denominator);
   36843                         #        int alpha = color.getAlpha();
   36844                         #        if (alpha != 255) {
   36845                         #          result.setAlpha(
   36846                         #              FloatValue
   36847                         #                  .newBuilder()
   36848                         #                  .setValue(((float) alpha) / denominator)
   36849                         #                  .build());
   36850                         #        }
   36851                         #        return resultBuilder.build();
   36852                         #      }
   36853                         #      // ...
   36854                         #
   36855                         # Example (iOS / Obj-C):
   36856                         #
   36857                         #      // ...
   36858                         #      static UIColor* fromProto(Color* protocolor) {
   36859                         #         float red = [protocolor red];
   36860                         #         float green = [protocolor green];
   36861                         #         float blue = [protocolor blue];
   36862                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   36863                         #         float alpha = 1.0;
   36864                         #         if (alpha_wrapper != nil) {
   36865                         #           alpha = [alpha_wrapper value];
   36866                         #         }
   36867                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   36868                         #      }
   36869                         #
   36870                         #      static Color* toProto(UIColor* color) {
   36871                         #          CGFloat red, green, blue, alpha;
   36872                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   36873                         #            return nil;
   36874                         #          }
   36875                         #          Color* result = [Color alloc] init];
   36876                         #          [result setRed:red];
   36877                         #          [result setGreen:green];
   36878                         #          [result setBlue:blue];
   36879                         #          if (alpha <= 0.9999) {
   36880                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   36881                         #          }
   36882                         #          [result autorelease];
   36883                         #          return result;
   36884                         #     }
   36885                         #     // ...
   36886                         #
   36887                         #  Example (JavaScript):
   36888                         #
   36889                         #     // ...
   36890                         #
   36891                         #     var protoToCssColor = function(rgb_color) {
   36892                         #        var redFrac = rgb_color.red || 0.0;
   36893                         #        var greenFrac = rgb_color.green || 0.0;
   36894                         #        var blueFrac = rgb_color.blue || 0.0;
   36895                         #        var red = Math.floor(redFrac * 255);
   36896                         #        var green = Math.floor(greenFrac * 255);
   36897                         #        var blue = Math.floor(blueFrac * 255);
   36898                         #
   36899                         #        if (!('alpha' in rgb_color)) {
   36900                         #           return rgbToCssColor_(red, green, blue);
   36901                         #        }
   36902                         #
   36903                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   36904                         #        var rgbParams = [red, green, blue].join(',');
   36905                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   36906                         #     };
   36907                         #
   36908                         #     var rgbToCssColor_ = function(red, green, blue) {
   36909                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   36910                         #       var hexString = rgbNumber.toString(16);
   36911                         #       var missingZeros = 6 - hexString.length;
   36912                         #       var resultBuilder = ['#'];
   36913                         #       for (var i = 0; i < missingZeros; i++) {
   36914                         #          resultBuilder.push('0');
   36915                         #       }
   36916                         #       resultBuilder.push(hexString);
   36917                         #       return resultBuilder.join('');
   36918                         #     };
   36919                         #
   36920                         #     // ...
   36921                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   36922                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   36923                           # the final pixel color is defined by the equation:
   36924                           #
   36925                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   36926                           #
   36927                           # This means that a value of 1.0 corresponds to a solid color, whereas
   36928                           # a value of 0.0 corresponds to a completely transparent color. This
   36929                           # uses a wrapper message rather than a simple float scalar so that it is
   36930                           # possible to distinguish between a default value and the value being unset.
   36931                           # If omitted, this color object is to be rendered as a solid color
   36932                           # (as if the alpha value had been explicitly given with a value of 1.0).
   36933                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   36934                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   36935                     },
   36936                     "width": 42, # The width of the border, in pixels.
   36937                         # Deprecated; the width is determined by the "style" field.
   36938                     "style": "A String", # The style of the border.
   36939                   },
   36940                   "left": { # A border along a cell. # The left border of the cell.
   36941                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   36942                         # for simplicity of conversion to/from color representations in various
   36943                         # languages over compactness; for example, the fields of this representation
   36944                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   36945                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   36946                         # method in iOS; and, with just a little work, it can be easily formatted into
   36947                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   36948                         #
   36949                         # Example (Java):
   36950                         #
   36951                         #      import com.google.type.Color;
   36952                         #
   36953                         #      // ...
   36954                         #      public static java.awt.Color fromProto(Color protocolor) {
   36955                         #        float alpha = protocolor.hasAlpha()
   36956                         #            ? protocolor.getAlpha().getValue()
   36957                         #            : 1.0;
   36958                         #
   36959                         #        return new java.awt.Color(
   36960                         #            protocolor.getRed(),
   36961                         #            protocolor.getGreen(),
   36962                         #            protocolor.getBlue(),
   36963                         #            alpha);
   36964                         #      }
   36965                         #
   36966                         #      public static Color toProto(java.awt.Color color) {
   36967                         #        float red = (float) color.getRed();
   36968                         #        float green = (float) color.getGreen();
   36969                         #        float blue = (float) color.getBlue();
   36970                         #        float denominator = 255.0;
   36971                         #        Color.Builder resultBuilder =
   36972                         #            Color
   36973                         #                .newBuilder()
   36974                         #                .setRed(red / denominator)
   36975                         #                .setGreen(green / denominator)
   36976                         #                .setBlue(blue / denominator);
   36977                         #        int alpha = color.getAlpha();
   36978                         #        if (alpha != 255) {
   36979                         #          result.setAlpha(
   36980                         #              FloatValue
   36981                         #                  .newBuilder()
   36982                         #                  .setValue(((float) alpha) / denominator)
   36983                         #                  .build());
   36984                         #        }
   36985                         #        return resultBuilder.build();
   36986                         #      }
   36987                         #      // ...
   36988                         #
   36989                         # Example (iOS / Obj-C):
   36990                         #
   36991                         #      // ...
   36992                         #      static UIColor* fromProto(Color* protocolor) {
   36993                         #         float red = [protocolor red];
   36994                         #         float green = [protocolor green];
   36995                         #         float blue = [protocolor blue];
   36996                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   36997                         #         float alpha = 1.0;
   36998                         #         if (alpha_wrapper != nil) {
   36999                         #           alpha = [alpha_wrapper value];
   37000                         #         }
   37001                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   37002                         #      }
   37003                         #
   37004                         #      static Color* toProto(UIColor* color) {
   37005                         #          CGFloat red, green, blue, alpha;
   37006                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   37007                         #            return nil;
   37008                         #          }
   37009                         #          Color* result = [Color alloc] init];
   37010                         #          [result setRed:red];
   37011                         #          [result setGreen:green];
   37012                         #          [result setBlue:blue];
   37013                         #          if (alpha <= 0.9999) {
   37014                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   37015                         #          }
   37016                         #          [result autorelease];
   37017                         #          return result;
   37018                         #     }
   37019                         #     // ...
   37020                         #
   37021                         #  Example (JavaScript):
   37022                         #
   37023                         #     // ...
   37024                         #
   37025                         #     var protoToCssColor = function(rgb_color) {
   37026                         #        var redFrac = rgb_color.red || 0.0;
   37027                         #        var greenFrac = rgb_color.green || 0.0;
   37028                         #        var blueFrac = rgb_color.blue || 0.0;
   37029                         #        var red = Math.floor(redFrac * 255);
   37030                         #        var green = Math.floor(greenFrac * 255);
   37031                         #        var blue = Math.floor(blueFrac * 255);
   37032                         #
   37033                         #        if (!('alpha' in rgb_color)) {
   37034                         #           return rgbToCssColor_(red, green, blue);
   37035                         #        }
   37036                         #
   37037                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   37038                         #        var rgbParams = [red, green, blue].join(',');
   37039                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   37040                         #     };
   37041                         #
   37042                         #     var rgbToCssColor_ = function(red, green, blue) {
   37043                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   37044                         #       var hexString = rgbNumber.toString(16);
   37045                         #       var missingZeros = 6 - hexString.length;
   37046                         #       var resultBuilder = ['#'];
   37047                         #       for (var i = 0; i < missingZeros; i++) {
   37048                         #          resultBuilder.push('0');
   37049                         #       }
   37050                         #       resultBuilder.push(hexString);
   37051                         #       return resultBuilder.join('');
   37052                         #     };
   37053                         #
   37054                         #     // ...
   37055                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   37056                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   37057                           # the final pixel color is defined by the equation:
   37058                           #
   37059                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   37060                           #
   37061                           # This means that a value of 1.0 corresponds to a solid color, whereas
   37062                           # a value of 0.0 corresponds to a completely transparent color. This
   37063                           # uses a wrapper message rather than a simple float scalar so that it is
   37064                           # possible to distinguish between a default value and the value being unset.
   37065                           # If omitted, this color object is to be rendered as a solid color
   37066                           # (as if the alpha value had been explicitly given with a value of 1.0).
   37067                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   37068                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   37069                     },
   37070                     "width": 42, # The width of the border, in pixels.
   37071                         # Deprecated; the width is determined by the "style" field.
   37072                     "style": "A String", # The style of the border.
   37073                   },
   37074                 },
   37075                 "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   37076               },
   37077             },
   37078             "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
   37079                 # the interpolation points listed. The format of a cell will vary
   37080                 # based on its contents as compared to the values of the interpolation
   37081                 # points.
   37082               "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
   37083                   # These pin the gradient color scale according to the color,
   37084                   # type and value chosen.
   37085                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   37086                     # for simplicity of conversion to/from color representations in various
   37087                     # languages over compactness; for example, the fields of this representation
   37088                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   37089                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   37090                     # method in iOS; and, with just a little work, it can be easily formatted into
   37091                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   37092                     #
   37093                     # Example (Java):
   37094                     #
   37095                     #      import com.google.type.Color;
   37096                     #
   37097                     #      // ...
   37098                     #      public static java.awt.Color fromProto(Color protocolor) {
   37099                     #        float alpha = protocolor.hasAlpha()
   37100                     #            ? protocolor.getAlpha().getValue()
   37101                     #            : 1.0;
   37102                     #
   37103                     #        return new java.awt.Color(
   37104                     #            protocolor.getRed(),
   37105                     #            protocolor.getGreen(),
   37106                     #            protocolor.getBlue(),
   37107                     #            alpha);
   37108                     #      }
   37109                     #
   37110                     #      public static Color toProto(java.awt.Color color) {
   37111                     #        float red = (float) color.getRed();
   37112                     #        float green = (float) color.getGreen();
   37113                     #        float blue = (float) color.getBlue();
   37114                     #        float denominator = 255.0;
   37115                     #        Color.Builder resultBuilder =
   37116                     #            Color
   37117                     #                .newBuilder()
   37118                     #                .setRed(red / denominator)
   37119                     #                .setGreen(green / denominator)
   37120                     #                .setBlue(blue / denominator);
   37121                     #        int alpha = color.getAlpha();
   37122                     #        if (alpha != 255) {
   37123                     #          result.setAlpha(
   37124                     #              FloatValue
   37125                     #                  .newBuilder()
   37126                     #                  .setValue(((float) alpha) / denominator)
   37127                     #                  .build());
   37128                     #        }
   37129                     #        return resultBuilder.build();
   37130                     #      }
   37131                     #      // ...
   37132                     #
   37133                     # Example (iOS / Obj-C):
   37134                     #
   37135                     #      // ...
   37136                     #      static UIColor* fromProto(Color* protocolor) {
   37137                     #         float red = [protocolor red];
   37138                     #         float green = [protocolor green];
   37139                     #         float blue = [protocolor blue];
   37140                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   37141                     #         float alpha = 1.0;
   37142                     #         if (alpha_wrapper != nil) {
   37143                     #           alpha = [alpha_wrapper value];
   37144                     #         }
   37145                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   37146                     #      }
   37147                     #
   37148                     #      static Color* toProto(UIColor* color) {
   37149                     #          CGFloat red, green, blue, alpha;
   37150                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   37151                     #            return nil;
   37152                     #          }
   37153                     #          Color* result = [Color alloc] init];
   37154                     #          [result setRed:red];
   37155                     #          [result setGreen:green];
   37156                     #          [result setBlue:blue];
   37157                     #          if (alpha <= 0.9999) {
   37158                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   37159                     #          }
   37160                     #          [result autorelease];
   37161                     #          return result;
   37162                     #     }
   37163                     #     // ...
   37164                     #
   37165                     #  Example (JavaScript):
   37166                     #
   37167                     #     // ...
   37168                     #
   37169                     #     var protoToCssColor = function(rgb_color) {
   37170                     #        var redFrac = rgb_color.red || 0.0;
   37171                     #        var greenFrac = rgb_color.green || 0.0;
   37172                     #        var blueFrac = rgb_color.blue || 0.0;
   37173                     #        var red = Math.floor(redFrac * 255);
   37174                     #        var green = Math.floor(greenFrac * 255);
   37175                     #        var blue = Math.floor(blueFrac * 255);
   37176                     #
   37177                     #        if (!('alpha' in rgb_color)) {
   37178                     #           return rgbToCssColor_(red, green, blue);
   37179                     #        }
   37180                     #
   37181                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   37182                     #        var rgbParams = [red, green, blue].join(',');
   37183                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   37184                     #     };
   37185                     #
   37186                     #     var rgbToCssColor_ = function(red, green, blue) {
   37187                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   37188                     #       var hexString = rgbNumber.toString(16);
   37189                     #       var missingZeros = 6 - hexString.length;
   37190                     #       var resultBuilder = ['#'];
   37191                     #       for (var i = 0; i < missingZeros; i++) {
   37192                     #          resultBuilder.push('0');
   37193                     #       }
   37194                     #       resultBuilder.push(hexString);
   37195                     #       return resultBuilder.join('');
   37196                     #     };
   37197                     #
   37198                     #     // ...
   37199                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   37200                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   37201                       # the final pixel color is defined by the equation:
   37202                       #
   37203                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   37204                       #
   37205                       # This means that a value of 1.0 corresponds to a solid color, whereas
   37206                       # a value of 0.0 corresponds to a completely transparent color. This
   37207                       # uses a wrapper message rather than a simple float scalar so that it is
   37208                       # possible to distinguish between a default value and the value being unset.
   37209                       # If omitted, this color object is to be rendered as a solid color
   37210                       # (as if the alpha value had been explicitly given with a value of 1.0).
   37211                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   37212                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   37213                 },
   37214                 "type": "A String", # How the value should be interpreted.
   37215                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   37216                     # Unused if type is MIN or
   37217                     # MAX.
   37218               },
   37219               "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
   37220                   # These pin the gradient color scale according to the color,
   37221                   # type and value chosen.
   37222                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   37223                     # for simplicity of conversion to/from color representations in various
   37224                     # languages over compactness; for example, the fields of this representation
   37225                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   37226                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   37227                     # method in iOS; and, with just a little work, it can be easily formatted into
   37228                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   37229                     #
   37230                     # Example (Java):
   37231                     #
   37232                     #      import com.google.type.Color;
   37233                     #
   37234                     #      // ...
   37235                     #      public static java.awt.Color fromProto(Color protocolor) {
   37236                     #        float alpha = protocolor.hasAlpha()
   37237                     #            ? protocolor.getAlpha().getValue()
   37238                     #            : 1.0;
   37239                     #
   37240                     #        return new java.awt.Color(
   37241                     #            protocolor.getRed(),
   37242                     #            protocolor.getGreen(),
   37243                     #            protocolor.getBlue(),
   37244                     #            alpha);
   37245                     #      }
   37246                     #
   37247                     #      public static Color toProto(java.awt.Color color) {
   37248                     #        float red = (float) color.getRed();
   37249                     #        float green = (float) color.getGreen();
   37250                     #        float blue = (float) color.getBlue();
   37251                     #        float denominator = 255.0;
   37252                     #        Color.Builder resultBuilder =
   37253                     #            Color
   37254                     #                .newBuilder()
   37255                     #                .setRed(red / denominator)
   37256                     #                .setGreen(green / denominator)
   37257                     #                .setBlue(blue / denominator);
   37258                     #        int alpha = color.getAlpha();
   37259                     #        if (alpha != 255) {
   37260                     #          result.setAlpha(
   37261                     #              FloatValue
   37262                     #                  .newBuilder()
   37263                     #                  .setValue(((float) alpha) / denominator)
   37264                     #                  .build());
   37265                     #        }
   37266                     #        return resultBuilder.build();
   37267                     #      }
   37268                     #      // ...
   37269                     #
   37270                     # Example (iOS / Obj-C):
   37271                     #
   37272                     #      // ...
   37273                     #      static UIColor* fromProto(Color* protocolor) {
   37274                     #         float red = [protocolor red];
   37275                     #         float green = [protocolor green];
   37276                     #         float blue = [protocolor blue];
   37277                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   37278                     #         float alpha = 1.0;
   37279                     #         if (alpha_wrapper != nil) {
   37280                     #           alpha = [alpha_wrapper value];
   37281                     #         }
   37282                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   37283                     #      }
   37284                     #
   37285                     #      static Color* toProto(UIColor* color) {
   37286                     #          CGFloat red, green, blue, alpha;
   37287                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   37288                     #            return nil;
   37289                     #          }
   37290                     #          Color* result = [Color alloc] init];
   37291                     #          [result setRed:red];
   37292                     #          [result setGreen:green];
   37293                     #          [result setBlue:blue];
   37294                     #          if (alpha <= 0.9999) {
   37295                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   37296                     #          }
   37297                     #          [result autorelease];
   37298                     #          return result;
   37299                     #     }
   37300                     #     // ...
   37301                     #
   37302                     #  Example (JavaScript):
   37303                     #
   37304                     #     // ...
   37305                     #
   37306                     #     var protoToCssColor = function(rgb_color) {
   37307                     #        var redFrac = rgb_color.red || 0.0;
   37308                     #        var greenFrac = rgb_color.green || 0.0;
   37309                     #        var blueFrac = rgb_color.blue || 0.0;
   37310                     #        var red = Math.floor(redFrac * 255);
   37311                     #        var green = Math.floor(greenFrac * 255);
   37312                     #        var blue = Math.floor(blueFrac * 255);
   37313                     #
   37314                     #        if (!('alpha' in rgb_color)) {
   37315                     #           return rgbToCssColor_(red, green, blue);
   37316                     #        }
   37317                     #
   37318                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   37319                     #        var rgbParams = [red, green, blue].join(',');
   37320                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   37321                     #     };
   37322                     #
   37323                     #     var rgbToCssColor_ = function(red, green, blue) {
   37324                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   37325                     #       var hexString = rgbNumber.toString(16);
   37326                     #       var missingZeros = 6 - hexString.length;
   37327                     #       var resultBuilder = ['#'];
   37328                     #       for (var i = 0; i < missingZeros; i++) {
   37329                     #          resultBuilder.push('0');
   37330                     #       }
   37331                     #       resultBuilder.push(hexString);
   37332                     #       return resultBuilder.join('');
   37333                     #     };
   37334                     #
   37335                     #     // ...
   37336                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   37337                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   37338                       # the final pixel color is defined by the equation:
   37339                       #
   37340                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   37341                       #
   37342                       # This means that a value of 1.0 corresponds to a solid color, whereas
   37343                       # a value of 0.0 corresponds to a completely transparent color. This
   37344                       # uses a wrapper message rather than a simple float scalar so that it is
   37345                       # possible to distinguish between a default value and the value being unset.
   37346                       # If omitted, this color object is to be rendered as a solid color
   37347                       # (as if the alpha value had been explicitly given with a value of 1.0).
   37348                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   37349                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   37350                 },
   37351                 "type": "A String", # How the value should be interpreted.
   37352                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   37353                     # Unused if type is MIN or
   37354                     # MAX.
   37355               },
   37356               "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
   37357                   # These pin the gradient color scale according to the color,
   37358                   # type and value chosen.
   37359                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   37360                     # for simplicity of conversion to/from color representations in various
   37361                     # languages over compactness; for example, the fields of this representation
   37362                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   37363                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   37364                     # method in iOS; and, with just a little work, it can be easily formatted into
   37365                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   37366                     #
   37367                     # Example (Java):
   37368                     #
   37369                     #      import com.google.type.Color;
   37370                     #
   37371                     #      // ...
   37372                     #      public static java.awt.Color fromProto(Color protocolor) {
   37373                     #        float alpha = protocolor.hasAlpha()
   37374                     #            ? protocolor.getAlpha().getValue()
   37375                     #            : 1.0;
   37376                     #
   37377                     #        return new java.awt.Color(
   37378                     #            protocolor.getRed(),
   37379                     #            protocolor.getGreen(),
   37380                     #            protocolor.getBlue(),
   37381                     #            alpha);
   37382                     #      }
   37383                     #
   37384                     #      public static Color toProto(java.awt.Color color) {
   37385                     #        float red = (float) color.getRed();
   37386                     #        float green = (float) color.getGreen();
   37387                     #        float blue = (float) color.getBlue();
   37388                     #        float denominator = 255.0;
   37389                     #        Color.Builder resultBuilder =
   37390                     #            Color
   37391                     #                .newBuilder()
   37392                     #                .setRed(red / denominator)
   37393                     #                .setGreen(green / denominator)
   37394                     #                .setBlue(blue / denominator);
   37395                     #        int alpha = color.getAlpha();
   37396                     #        if (alpha != 255) {
   37397                     #          result.setAlpha(
   37398                     #              FloatValue
   37399                     #                  .newBuilder()
   37400                     #                  .setValue(((float) alpha) / denominator)
   37401                     #                  .build());
   37402                     #        }
   37403                     #        return resultBuilder.build();
   37404                     #      }
   37405                     #      // ...
   37406                     #
   37407                     # Example (iOS / Obj-C):
   37408                     #
   37409                     #      // ...
   37410                     #      static UIColor* fromProto(Color* protocolor) {
   37411                     #         float red = [protocolor red];
   37412                     #         float green = [protocolor green];
   37413                     #         float blue = [protocolor blue];
   37414                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   37415                     #         float alpha = 1.0;
   37416                     #         if (alpha_wrapper != nil) {
   37417                     #           alpha = [alpha_wrapper value];
   37418                     #         }
   37419                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   37420                     #      }
   37421                     #
   37422                     #      static Color* toProto(UIColor* color) {
   37423                     #          CGFloat red, green, blue, alpha;
   37424                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   37425                     #            return nil;
   37426                     #          }
   37427                     #          Color* result = [Color alloc] init];
   37428                     #          [result setRed:red];
   37429                     #          [result setGreen:green];
   37430                     #          [result setBlue:blue];
   37431                     #          if (alpha <= 0.9999) {
   37432                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   37433                     #          }
   37434                     #          [result autorelease];
   37435                     #          return result;
   37436                     #     }
   37437                     #     // ...
   37438                     #
   37439                     #  Example (JavaScript):
   37440                     #
   37441                     #     // ...
   37442                     #
   37443                     #     var protoToCssColor = function(rgb_color) {
   37444                     #        var redFrac = rgb_color.red || 0.0;
   37445                     #        var greenFrac = rgb_color.green || 0.0;
   37446                     #        var blueFrac = rgb_color.blue || 0.0;
   37447                     #        var red = Math.floor(redFrac * 255);
   37448                     #        var green = Math.floor(greenFrac * 255);
   37449                     #        var blue = Math.floor(blueFrac * 255);
   37450                     #
   37451                     #        if (!('alpha' in rgb_color)) {
   37452                     #           return rgbToCssColor_(red, green, blue);
   37453                     #        }
   37454                     #
   37455                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   37456                     #        var rgbParams = [red, green, blue].join(',');
   37457                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   37458                     #     };
   37459                     #
   37460                     #     var rgbToCssColor_ = function(red, green, blue) {
   37461                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   37462                     #       var hexString = rgbNumber.toString(16);
   37463                     #       var missingZeros = 6 - hexString.length;
   37464                     #       var resultBuilder = ['#'];
   37465                     #       for (var i = 0; i < missingZeros; i++) {
   37466                     #          resultBuilder.push('0');
   37467                     #       }
   37468                     #       resultBuilder.push(hexString);
   37469                     #       return resultBuilder.join('');
   37470                     #     };
   37471                     #
   37472                     #     // ...
   37473                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   37474                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   37475                       # the final pixel color is defined by the equation:
   37476                       #
   37477                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   37478                       #
   37479                       # This means that a value of 1.0 corresponds to a solid color, whereas
   37480                       # a value of 0.0 corresponds to a completely transparent color. This
   37481                       # uses a wrapper message rather than a simple float scalar so that it is
   37482                       # possible to distinguish between a default value and the value being unset.
   37483                       # If omitted, this color object is to be rendered as a solid color
   37484                       # (as if the alpha value had been explicitly given with a value of 1.0).
   37485                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   37486                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   37487                 },
   37488                 "type": "A String", # How the value should be interpreted.
   37489                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   37490                     # Unused if type is MIN or
   37491                     # MAX.
   37492               },
   37493             },
   37494           },
   37495         ],
   37496         "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet.
   37497           { # A banded (alternating colors) range in a sheet.
   37498             "range": { # A range on a sheet. # The range over which these properties are applied.
   37499                 # All indexes are zero-based.
   37500                 # Indexes are half open, e.g the start index is inclusive
   37501                 # and the end index is exclusive -- [start_index, end_index).
   37502                 # Missing indexes indicate the range is unbounded on that side.
   37503                 #
   37504                 # For example, if `"Sheet1"` is sheet ID 0, then:
   37505                 #
   37506                 #   `Sheet1!A1:A1 == sheet_id: 0,
   37507                 #                   start_row_index: 0, end_row_index: 1,
   37508                 #                   start_column_index: 0, end_column_index: 1`
   37509                 #
   37510                 #   `Sheet1!A3:B4 == sheet_id: 0,
   37511                 #                   start_row_index: 2, end_row_index: 4,
   37512                 #                   start_column_index: 0, end_column_index: 2`
   37513                 #
   37514                 #   `Sheet1!A:B == sheet_id: 0,
   37515                 #                 start_column_index: 0, end_column_index: 2`
   37516                 #
   37517                 #   `Sheet1!A5:B == sheet_id: 0,
   37518                 #                  start_row_index: 4,
   37519                 #                  start_column_index: 0, end_column_index: 2`
   37520                 #
   37521                 #   `Sheet1 == sheet_id:0`
   37522                 #
   37523                 # The start index must always be less than or equal to the end index.
   37524                 # If the start index equals the end index, then the range is empty.
   37525                 # Empty ranges are typically not meaningful and are usually rendered in the
   37526                 # UI as `#REF!`.
   37527               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   37528               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   37529               "sheetId": 42, # The sheet this range is on.
   37530               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   37531               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   37532             },
   37533             "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
   37534                 # by-column basis throughout all the columns in the range. At least one of
   37535                 # row_properties or column_properties must be specified.
   37536                 # BandedRange.row_properties and BandedRange.column_properties are
   37537                 # set, the fill colors are applied to cells according to the following rules:
   37538                 #
   37539                 # * header_color and footer_color take priority over band colors.
   37540                 # * first_band_color takes priority over second_band_color.
   37541                 # * row_properties takes priority over column_properties.
   37542                 #
   37543                 # For example, the first row color takes priority over the first column
   37544                 # color, but the first column color takes priority over the second row color.
   37545                 # Similarly, the row header takes priority over the column header in the
   37546                 # top left cell, but the column header takes priority over the first row
   37547                 # color if the row header is not set.
   37548               "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   37549                   # for simplicity of conversion to/from color representations in various
   37550                   # languages over compactness; for example, the fields of this representation
   37551                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   37552                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   37553                   # method in iOS; and, with just a little work, it can be easily formatted into
   37554                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   37555                   #
   37556                   # Example (Java):
   37557                   #
   37558                   #      import com.google.type.Color;
   37559                   #
   37560                   #      // ...
   37561                   #      public static java.awt.Color fromProto(Color protocolor) {
   37562                   #        float alpha = protocolor.hasAlpha()
   37563                   #            ? protocolor.getAlpha().getValue()
   37564                   #            : 1.0;
   37565                   #
   37566                   #        return new java.awt.Color(
   37567                   #            protocolor.getRed(),
   37568                   #            protocolor.getGreen(),
   37569                   #            protocolor.getBlue(),
   37570                   #            alpha);
   37571                   #      }
   37572                   #
   37573                   #      public static Color toProto(java.awt.Color color) {
   37574                   #        float red = (float) color.getRed();
   37575                   #        float green = (float) color.getGreen();
   37576                   #        float blue = (float) color.getBlue();
   37577                   #        float denominator = 255.0;
   37578                   #        Color.Builder resultBuilder =
   37579                   #            Color
   37580                   #                .newBuilder()
   37581                   #                .setRed(red / denominator)
   37582                   #                .setGreen(green / denominator)
   37583                   #                .setBlue(blue / denominator);
   37584                   #        int alpha = color.getAlpha();
   37585                   #        if (alpha != 255) {
   37586                   #          result.setAlpha(
   37587                   #              FloatValue
   37588                   #                  .newBuilder()
   37589                   #                  .setValue(((float) alpha) / denominator)
   37590                   #                  .build());
   37591                   #        }
   37592                   #        return resultBuilder.build();
   37593                   #      }
   37594                   #      // ...
   37595                   #
   37596                   # Example (iOS / Obj-C):
   37597                   #
   37598                   #      // ...
   37599                   #      static UIColor* fromProto(Color* protocolor) {
   37600                   #         float red = [protocolor red];
   37601                   #         float green = [protocolor green];
   37602                   #         float blue = [protocolor blue];
   37603                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   37604                   #         float alpha = 1.0;
   37605                   #         if (alpha_wrapper != nil) {
   37606                   #           alpha = [alpha_wrapper value];
   37607                   #         }
   37608                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   37609                   #      }
   37610                   #
   37611                   #      static Color* toProto(UIColor* color) {
   37612                   #          CGFloat red, green, blue, alpha;
   37613                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   37614                   #            return nil;
   37615                   #          }
   37616                   #          Color* result = [Color alloc] init];
   37617                   #          [result setRed:red];
   37618                   #          [result setGreen:green];
   37619                   #          [result setBlue:blue];
   37620                   #          if (alpha <= 0.9999) {
   37621                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   37622                   #          }
   37623                   #          [result autorelease];
   37624                   #          return result;
   37625                   #     }
   37626                   #     // ...
   37627                   #
   37628                   #  Example (JavaScript):
   37629                   #
   37630                   #     // ...
   37631                   #
   37632                   #     var protoToCssColor = function(rgb_color) {
   37633                   #        var redFrac = rgb_color.red || 0.0;
   37634                   #        var greenFrac = rgb_color.green || 0.0;
   37635                   #        var blueFrac = rgb_color.blue || 0.0;
   37636                   #        var red = Math.floor(redFrac * 255);
   37637                   #        var green = Math.floor(greenFrac * 255);
   37638                   #        var blue = Math.floor(blueFrac * 255);
   37639                   #
   37640                   #        if (!('alpha' in rgb_color)) {
   37641                   #           return rgbToCssColor_(red, green, blue);
   37642                   #        }
   37643                   #
   37644                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   37645                   #        var rgbParams = [red, green, blue].join(',');
   37646                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   37647                   #     };
   37648                   #
   37649                   #     var rgbToCssColor_ = function(red, green, blue) {
   37650                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   37651                   #       var hexString = rgbNumber.toString(16);
   37652                   #       var missingZeros = 6 - hexString.length;
   37653                   #       var resultBuilder = ['#'];
   37654                   #       for (var i = 0; i < missingZeros; i++) {
   37655                   #          resultBuilder.push('0');
   37656                   #       }
   37657                   #       resultBuilder.push(hexString);
   37658                   #       return resultBuilder.join('');
   37659                   #     };
   37660                   #
   37661                   #     // ...
   37662                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   37663                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   37664                     # the final pixel color is defined by the equation:
   37665                     #
   37666                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   37667                     #
   37668                     # This means that a value of 1.0 corresponds to a solid color, whereas
   37669                     # a value of 0.0 corresponds to a completely transparent color. This
   37670                     # uses a wrapper message rather than a simple float scalar so that it is
   37671                     # possible to distinguish between a default value and the value being unset.
   37672                     # If omitted, this color object is to be rendered as a solid color
   37673                     # (as if the alpha value had been explicitly given with a value of 1.0).
   37674                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   37675                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   37676               },
   37677               "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   37678                   # row or column will be filled with this color and the colors will
   37679                   # alternate between first_band_color and second_band_color starting
   37680                   # from the second row or column. Otherwise, the first row or column will be
   37681                   # filled with first_band_color and the colors will proceed to alternate
   37682                   # as they normally would.
   37683                   # for simplicity of conversion to/from color representations in various
   37684                   # languages over compactness; for example, the fields of this representation
   37685                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   37686                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   37687                   # method in iOS; and, with just a little work, it can be easily formatted into
   37688                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   37689                   #
   37690                   # Example (Java):
   37691                   #
   37692                   #      import com.google.type.Color;
   37693                   #
   37694                   #      // ...
   37695                   #      public static java.awt.Color fromProto(Color protocolor) {
   37696                   #        float alpha = protocolor.hasAlpha()
   37697                   #            ? protocolor.getAlpha().getValue()
   37698                   #            : 1.0;
   37699                   #
   37700                   #        return new java.awt.Color(
   37701                   #            protocolor.getRed(),
   37702                   #            protocolor.getGreen(),
   37703                   #            protocolor.getBlue(),
   37704                   #            alpha);
   37705                   #      }
   37706                   #
   37707                   #      public static Color toProto(java.awt.Color color) {
   37708                   #        float red = (float) color.getRed();
   37709                   #        float green = (float) color.getGreen();
   37710                   #        float blue = (float) color.getBlue();
   37711                   #        float denominator = 255.0;
   37712                   #        Color.Builder resultBuilder =
   37713                   #            Color
   37714                   #                .newBuilder()
   37715                   #                .setRed(red / denominator)
   37716                   #                .setGreen(green / denominator)
   37717                   #                .setBlue(blue / denominator);
   37718                   #        int alpha = color.getAlpha();
   37719                   #        if (alpha != 255) {
   37720                   #          result.setAlpha(
   37721                   #              FloatValue
   37722                   #                  .newBuilder()
   37723                   #                  .setValue(((float) alpha) / denominator)
   37724                   #                  .build());
   37725                   #        }
   37726                   #        return resultBuilder.build();
   37727                   #      }
   37728                   #      // ...
   37729                   #
   37730                   # Example (iOS / Obj-C):
   37731                   #
   37732                   #      // ...
   37733                   #      static UIColor* fromProto(Color* protocolor) {
   37734                   #         float red = [protocolor red];
   37735                   #         float green = [protocolor green];
   37736                   #         float blue = [protocolor blue];
   37737                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   37738                   #         float alpha = 1.0;
   37739                   #         if (alpha_wrapper != nil) {
   37740                   #           alpha = [alpha_wrapper value];
   37741                   #         }
   37742                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   37743                   #      }
   37744                   #
   37745                   #      static Color* toProto(UIColor* color) {
   37746                   #          CGFloat red, green, blue, alpha;
   37747                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   37748                   #            return nil;
   37749                   #          }
   37750                   #          Color* result = [Color alloc] init];
   37751                   #          [result setRed:red];
   37752                   #          [result setGreen:green];
   37753                   #          [result setBlue:blue];
   37754                   #          if (alpha <= 0.9999) {
   37755                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   37756                   #          }
   37757                   #          [result autorelease];
   37758                   #          return result;
   37759                   #     }
   37760                   #     // ...
   37761                   #
   37762                   #  Example (JavaScript):
   37763                   #
   37764                   #     // ...
   37765                   #
   37766                   #     var protoToCssColor = function(rgb_color) {
   37767                   #        var redFrac = rgb_color.red || 0.0;
   37768                   #        var greenFrac = rgb_color.green || 0.0;
   37769                   #        var blueFrac = rgb_color.blue || 0.0;
   37770                   #        var red = Math.floor(redFrac * 255);
   37771                   #        var green = Math.floor(greenFrac * 255);
   37772                   #        var blue = Math.floor(blueFrac * 255);
   37773                   #
   37774                   #        if (!('alpha' in rgb_color)) {
   37775                   #           return rgbToCssColor_(red, green, blue);
   37776                   #        }
   37777                   #
   37778                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   37779                   #        var rgbParams = [red, green, blue].join(',');
   37780                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   37781                   #     };
   37782                   #
   37783                   #     var rgbToCssColor_ = function(red, green, blue) {
   37784                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   37785                   #       var hexString = rgbNumber.toString(16);
   37786                   #       var missingZeros = 6 - hexString.length;
   37787                   #       var resultBuilder = ['#'];
   37788                   #       for (var i = 0; i < missingZeros; i++) {
   37789                   #          resultBuilder.push('0');
   37790                   #       }
   37791                   #       resultBuilder.push(hexString);
   37792                   #       return resultBuilder.join('');
   37793                   #     };
   37794                   #
   37795                   #     // ...
   37796                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   37797                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   37798                     # the final pixel color is defined by the equation:
   37799                     #
   37800                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   37801                     #
   37802                     # This means that a value of 1.0 corresponds to a solid color, whereas
   37803                     # a value of 0.0 corresponds to a completely transparent color. This
   37804                     # uses a wrapper message rather than a simple float scalar so that it is
   37805                     # possible to distinguish between a default value and the value being unset.
   37806                     # If omitted, this color object is to be rendered as a solid color
   37807                     # (as if the alpha value had been explicitly given with a value of 1.0).
   37808                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   37809                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   37810               },
   37811               "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   37812                   # row or column will be filled with either first_band_color or
   37813                   # second_band_color, depending on the color of the previous row or
   37814                   # column.
   37815                   # for simplicity of conversion to/from color representations in various
   37816                   # languages over compactness; for example, the fields of this representation
   37817                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   37818                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   37819                   # method in iOS; and, with just a little work, it can be easily formatted into
   37820                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   37821                   #
   37822                   # Example (Java):
   37823                   #
   37824                   #      import com.google.type.Color;
   37825                   #
   37826                   #      // ...
   37827                   #      public static java.awt.Color fromProto(Color protocolor) {
   37828                   #        float alpha = protocolor.hasAlpha()
   37829                   #            ? protocolor.getAlpha().getValue()
   37830                   #            : 1.0;
   37831                   #
   37832                   #        return new java.awt.Color(
   37833                   #            protocolor.getRed(),
   37834                   #            protocolor.getGreen(),
   37835                   #            protocolor.getBlue(),
   37836                   #            alpha);
   37837                   #      }
   37838                   #
   37839                   #      public static Color toProto(java.awt.Color color) {
   37840                   #        float red = (float) color.getRed();
   37841                   #        float green = (float) color.getGreen();
   37842                   #        float blue = (float) color.getBlue();
   37843                   #        float denominator = 255.0;
   37844                   #        Color.Builder resultBuilder =
   37845                   #            Color
   37846                   #                .newBuilder()
   37847                   #                .setRed(red / denominator)
   37848                   #                .setGreen(green / denominator)
   37849                   #                .setBlue(blue / denominator);
   37850                   #        int alpha = color.getAlpha();
   37851                   #        if (alpha != 255) {
   37852                   #          result.setAlpha(
   37853                   #              FloatValue
   37854                   #                  .newBuilder()
   37855                   #                  .setValue(((float) alpha) / denominator)
   37856                   #                  .build());
   37857                   #        }
   37858                   #        return resultBuilder.build();
   37859                   #      }
   37860                   #      // ...
   37861                   #
   37862                   # Example (iOS / Obj-C):
   37863                   #
   37864                   #      // ...
   37865                   #      static UIColor* fromProto(Color* protocolor) {
   37866                   #         float red = [protocolor red];
   37867                   #         float green = [protocolor green];
   37868                   #         float blue = [protocolor blue];
   37869                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   37870                   #         float alpha = 1.0;
   37871                   #         if (alpha_wrapper != nil) {
   37872                   #           alpha = [alpha_wrapper value];
   37873                   #         }
   37874                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   37875                   #      }
   37876                   #
   37877                   #      static Color* toProto(UIColor* color) {
   37878                   #          CGFloat red, green, blue, alpha;
   37879                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   37880                   #            return nil;
   37881                   #          }
   37882                   #          Color* result = [Color alloc] init];
   37883                   #          [result setRed:red];
   37884                   #          [result setGreen:green];
   37885                   #          [result setBlue:blue];
   37886                   #          if (alpha <= 0.9999) {
   37887                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   37888                   #          }
   37889                   #          [result autorelease];
   37890                   #          return result;
   37891                   #     }
   37892                   #     // ...
   37893                   #
   37894                   #  Example (JavaScript):
   37895                   #
   37896                   #     // ...
   37897                   #
   37898                   #     var protoToCssColor = function(rgb_color) {
   37899                   #        var redFrac = rgb_color.red || 0.0;
   37900                   #        var greenFrac = rgb_color.green || 0.0;
   37901                   #        var blueFrac = rgb_color.blue || 0.0;
   37902                   #        var red = Math.floor(redFrac * 255);
   37903                   #        var green = Math.floor(greenFrac * 255);
   37904                   #        var blue = Math.floor(blueFrac * 255);
   37905                   #
   37906                   #        if (!('alpha' in rgb_color)) {
   37907                   #           return rgbToCssColor_(red, green, blue);
   37908                   #        }
   37909                   #
   37910                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   37911                   #        var rgbParams = [red, green, blue].join(',');
   37912                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   37913                   #     };
   37914                   #
   37915                   #     var rgbToCssColor_ = function(red, green, blue) {
   37916                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   37917                   #       var hexString = rgbNumber.toString(16);
   37918                   #       var missingZeros = 6 - hexString.length;
   37919                   #       var resultBuilder = ['#'];
   37920                   #       for (var i = 0; i < missingZeros; i++) {
   37921                   #          resultBuilder.push('0');
   37922                   #       }
   37923                   #       resultBuilder.push(hexString);
   37924                   #       return resultBuilder.join('');
   37925                   #     };
   37926                   #
   37927                   #     // ...
   37928                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   37929                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   37930                     # the final pixel color is defined by the equation:
   37931                     #
   37932                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   37933                     #
   37934                     # This means that a value of 1.0 corresponds to a solid color, whereas
   37935                     # a value of 0.0 corresponds to a completely transparent color. This
   37936                     # uses a wrapper message rather than a simple float scalar so that it is
   37937                     # possible to distinguish between a default value and the value being unset.
   37938                     # If omitted, this color object is to be rendered as a solid color
   37939                     # (as if the alpha value had been explicitly given with a value of 1.0).
   37940                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   37941                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   37942               },
   37943               "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   37944                   # for simplicity of conversion to/from color representations in various
   37945                   # languages over compactness; for example, the fields of this representation
   37946                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   37947                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   37948                   # method in iOS; and, with just a little work, it can be easily formatted into
   37949                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   37950                   #
   37951                   # Example (Java):
   37952                   #
   37953                   #      import com.google.type.Color;
   37954                   #
   37955                   #      // ...
   37956                   #      public static java.awt.Color fromProto(Color protocolor) {
   37957                   #        float alpha = protocolor.hasAlpha()
   37958                   #            ? protocolor.getAlpha().getValue()
   37959                   #            : 1.0;
   37960                   #
   37961                   #        return new java.awt.Color(
   37962                   #            protocolor.getRed(),
   37963                   #            protocolor.getGreen(),
   37964                   #            protocolor.getBlue(),
   37965                   #            alpha);
   37966                   #      }
   37967                   #
   37968                   #      public static Color toProto(java.awt.Color color) {
   37969                   #        float red = (float) color.getRed();
   37970                   #        float green = (float) color.getGreen();
   37971                   #        float blue = (float) color.getBlue();
   37972                   #        float denominator = 255.0;
   37973                   #        Color.Builder resultBuilder =
   37974                   #            Color
   37975                   #                .newBuilder()
   37976                   #                .setRed(red / denominator)
   37977                   #                .setGreen(green / denominator)
   37978                   #                .setBlue(blue / denominator);
   37979                   #        int alpha = color.getAlpha();
   37980                   #        if (alpha != 255) {
   37981                   #          result.setAlpha(
   37982                   #              FloatValue
   37983                   #                  .newBuilder()
   37984                   #                  .setValue(((float) alpha) / denominator)
   37985                   #                  .build());
   37986                   #        }
   37987                   #        return resultBuilder.build();
   37988                   #      }
   37989                   #      // ...
   37990                   #
   37991                   # Example (iOS / Obj-C):
   37992                   #
   37993                   #      // ...
   37994                   #      static UIColor* fromProto(Color* protocolor) {
   37995                   #         float red = [protocolor red];
   37996                   #         float green = [protocolor green];
   37997                   #         float blue = [protocolor blue];
   37998                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   37999                   #         float alpha = 1.0;
   38000                   #         if (alpha_wrapper != nil) {
   38001                   #           alpha = [alpha_wrapper value];
   38002                   #         }
   38003                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   38004                   #      }
   38005                   #
   38006                   #      static Color* toProto(UIColor* color) {
   38007                   #          CGFloat red, green, blue, alpha;
   38008                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   38009                   #            return nil;
   38010                   #          }
   38011                   #          Color* result = [Color alloc] init];
   38012                   #          [result setRed:red];
   38013                   #          [result setGreen:green];
   38014                   #          [result setBlue:blue];
   38015                   #          if (alpha <= 0.9999) {
   38016                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   38017                   #          }
   38018                   #          [result autorelease];
   38019                   #          return result;
   38020                   #     }
   38021                   #     // ...
   38022                   #
   38023                   #  Example (JavaScript):
   38024                   #
   38025                   #     // ...
   38026                   #
   38027                   #     var protoToCssColor = function(rgb_color) {
   38028                   #        var redFrac = rgb_color.red || 0.0;
   38029                   #        var greenFrac = rgb_color.green || 0.0;
   38030                   #        var blueFrac = rgb_color.blue || 0.0;
   38031                   #        var red = Math.floor(redFrac * 255);
   38032                   #        var green = Math.floor(greenFrac * 255);
   38033                   #        var blue = Math.floor(blueFrac * 255);
   38034                   #
   38035                   #        if (!('alpha' in rgb_color)) {
   38036                   #           return rgbToCssColor_(red, green, blue);
   38037                   #        }
   38038                   #
   38039                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   38040                   #        var rgbParams = [red, green, blue].join(',');
   38041                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   38042                   #     };
   38043                   #
   38044                   #     var rgbToCssColor_ = function(red, green, blue) {
   38045                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   38046                   #       var hexString = rgbNumber.toString(16);
   38047                   #       var missingZeros = 6 - hexString.length;
   38048                   #       var resultBuilder = ['#'];
   38049                   #       for (var i = 0; i < missingZeros; i++) {
   38050                   #          resultBuilder.push('0');
   38051                   #       }
   38052                   #       resultBuilder.push(hexString);
   38053                   #       return resultBuilder.join('');
   38054                   #     };
   38055                   #
   38056                   #     // ...
   38057                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   38058                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   38059                     # the final pixel color is defined by the equation:
   38060                     #
   38061                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   38062                     #
   38063                     # This means that a value of 1.0 corresponds to a solid color, whereas
   38064                     # a value of 0.0 corresponds to a completely transparent color. This
   38065                     # uses a wrapper message rather than a simple float scalar so that it is
   38066                     # possible to distinguish between a default value and the value being unset.
   38067                     # If omitted, this color object is to be rendered as a solid color
   38068                     # (as if the alpha value had been explicitly given with a value of 1.0).
   38069                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   38070                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   38071               },
   38072             },
   38073             "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
   38074                 # basis throughout all the rows in the range. At least one of
   38075                 # row_properties or column_properties must be specified.
   38076                 # BandedRange.row_properties and BandedRange.column_properties are
   38077                 # set, the fill colors are applied to cells according to the following rules:
   38078                 #
   38079                 # * header_color and footer_color take priority over band colors.
   38080                 # * first_band_color takes priority over second_band_color.
   38081                 # * row_properties takes priority over column_properties.
   38082                 #
   38083                 # For example, the first row color takes priority over the first column
   38084                 # color, but the first column color takes priority over the second row color.
   38085                 # Similarly, the row header takes priority over the column header in the
   38086                 # top left cell, but the column header takes priority over the first row
   38087                 # color if the row header is not set.
   38088               "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   38089                   # for simplicity of conversion to/from color representations in various
   38090                   # languages over compactness; for example, the fields of this representation
   38091                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   38092                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   38093                   # method in iOS; and, with just a little work, it can be easily formatted into
   38094                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   38095                   #
   38096                   # Example (Java):
   38097                   #
   38098                   #      import com.google.type.Color;
   38099                   #
   38100                   #      // ...
   38101                   #      public static java.awt.Color fromProto(Color protocolor) {
   38102                   #        float alpha = protocolor.hasAlpha()
   38103                   #            ? protocolor.getAlpha().getValue()
   38104                   #            : 1.0;
   38105                   #
   38106                   #        return new java.awt.Color(
   38107                   #            protocolor.getRed(),
   38108                   #            protocolor.getGreen(),
   38109                   #            protocolor.getBlue(),
   38110                   #            alpha);
   38111                   #      }
   38112                   #
   38113                   #      public static Color toProto(java.awt.Color color) {
   38114                   #        float red = (float) color.getRed();
   38115                   #        float green = (float) color.getGreen();
   38116                   #        float blue = (float) color.getBlue();
   38117                   #        float denominator = 255.0;
   38118                   #        Color.Builder resultBuilder =
   38119                   #            Color
   38120                   #                .newBuilder()
   38121                   #                .setRed(red / denominator)
   38122                   #                .setGreen(green / denominator)
   38123                   #                .setBlue(blue / denominator);
   38124                   #        int alpha = color.getAlpha();
   38125                   #        if (alpha != 255) {
   38126                   #          result.setAlpha(
   38127                   #              FloatValue
   38128                   #                  .newBuilder()
   38129                   #                  .setValue(((float) alpha) / denominator)
   38130                   #                  .build());
   38131                   #        }
   38132                   #        return resultBuilder.build();
   38133                   #      }
   38134                   #      // ...
   38135                   #
   38136                   # Example (iOS / Obj-C):
   38137                   #
   38138                   #      // ...
   38139                   #      static UIColor* fromProto(Color* protocolor) {
   38140                   #         float red = [protocolor red];
   38141                   #         float green = [protocolor green];
   38142                   #         float blue = [protocolor blue];
   38143                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   38144                   #         float alpha = 1.0;
   38145                   #         if (alpha_wrapper != nil) {
   38146                   #           alpha = [alpha_wrapper value];
   38147                   #         }
   38148                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   38149                   #      }
   38150                   #
   38151                   #      static Color* toProto(UIColor* color) {
   38152                   #          CGFloat red, green, blue, alpha;
   38153                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   38154                   #            return nil;
   38155                   #          }
   38156                   #          Color* result = [Color alloc] init];
   38157                   #          [result setRed:red];
   38158                   #          [result setGreen:green];
   38159                   #          [result setBlue:blue];
   38160                   #          if (alpha <= 0.9999) {
   38161                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   38162                   #          }
   38163                   #          [result autorelease];
   38164                   #          return result;
   38165                   #     }
   38166                   #     // ...
   38167                   #
   38168                   #  Example (JavaScript):
   38169                   #
   38170                   #     // ...
   38171                   #
   38172                   #     var protoToCssColor = function(rgb_color) {
   38173                   #        var redFrac = rgb_color.red || 0.0;
   38174                   #        var greenFrac = rgb_color.green || 0.0;
   38175                   #        var blueFrac = rgb_color.blue || 0.0;
   38176                   #        var red = Math.floor(redFrac * 255);
   38177                   #        var green = Math.floor(greenFrac * 255);
   38178                   #        var blue = Math.floor(blueFrac * 255);
   38179                   #
   38180                   #        if (!('alpha' in rgb_color)) {
   38181                   #           return rgbToCssColor_(red, green, blue);
   38182                   #        }
   38183                   #
   38184                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   38185                   #        var rgbParams = [red, green, blue].join(',');
   38186                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   38187                   #     };
   38188                   #
   38189                   #     var rgbToCssColor_ = function(red, green, blue) {
   38190                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   38191                   #       var hexString = rgbNumber.toString(16);
   38192                   #       var missingZeros = 6 - hexString.length;
   38193                   #       var resultBuilder = ['#'];
   38194                   #       for (var i = 0; i < missingZeros; i++) {
   38195                   #          resultBuilder.push('0');
   38196                   #       }
   38197                   #       resultBuilder.push(hexString);
   38198                   #       return resultBuilder.join('');
   38199                   #     };
   38200                   #
   38201                   #     // ...
   38202                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   38203                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   38204                     # the final pixel color is defined by the equation:
   38205                     #
   38206                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   38207                     #
   38208                     # This means that a value of 1.0 corresponds to a solid color, whereas
   38209                     # a value of 0.0 corresponds to a completely transparent color. This
   38210                     # uses a wrapper message rather than a simple float scalar so that it is
   38211                     # possible to distinguish between a default value and the value being unset.
   38212                     # If omitted, this color object is to be rendered as a solid color
   38213                     # (as if the alpha value had been explicitly given with a value of 1.0).
   38214                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   38215                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   38216               },
   38217               "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   38218                   # row or column will be filled with this color and the colors will
   38219                   # alternate between first_band_color and second_band_color starting
   38220                   # from the second row or column. Otherwise, the first row or column will be
   38221                   # filled with first_band_color and the colors will proceed to alternate
   38222                   # as they normally would.
   38223                   # for simplicity of conversion to/from color representations in various
   38224                   # languages over compactness; for example, the fields of this representation
   38225                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   38226                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   38227                   # method in iOS; and, with just a little work, it can be easily formatted into
   38228                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   38229                   #
   38230                   # Example (Java):
   38231                   #
   38232                   #      import com.google.type.Color;
   38233                   #
   38234                   #      // ...
   38235                   #      public static java.awt.Color fromProto(Color protocolor) {
   38236                   #        float alpha = protocolor.hasAlpha()
   38237                   #            ? protocolor.getAlpha().getValue()
   38238                   #            : 1.0;
   38239                   #
   38240                   #        return new java.awt.Color(
   38241                   #            protocolor.getRed(),
   38242                   #            protocolor.getGreen(),
   38243                   #            protocolor.getBlue(),
   38244                   #            alpha);
   38245                   #      }
   38246                   #
   38247                   #      public static Color toProto(java.awt.Color color) {
   38248                   #        float red = (float) color.getRed();
   38249                   #        float green = (float) color.getGreen();
   38250                   #        float blue = (float) color.getBlue();
   38251                   #        float denominator = 255.0;
   38252                   #        Color.Builder resultBuilder =
   38253                   #            Color
   38254                   #                .newBuilder()
   38255                   #                .setRed(red / denominator)
   38256                   #                .setGreen(green / denominator)
   38257                   #                .setBlue(blue / denominator);
   38258                   #        int alpha = color.getAlpha();
   38259                   #        if (alpha != 255) {
   38260                   #          result.setAlpha(
   38261                   #              FloatValue
   38262                   #                  .newBuilder()
   38263                   #                  .setValue(((float) alpha) / denominator)
   38264                   #                  .build());
   38265                   #        }
   38266                   #        return resultBuilder.build();
   38267                   #      }
   38268                   #      // ...
   38269                   #
   38270                   # Example (iOS / Obj-C):
   38271                   #
   38272                   #      // ...
   38273                   #      static UIColor* fromProto(Color* protocolor) {
   38274                   #         float red = [protocolor red];
   38275                   #         float green = [protocolor green];
   38276                   #         float blue = [protocolor blue];
   38277                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   38278                   #         float alpha = 1.0;
   38279                   #         if (alpha_wrapper != nil) {
   38280                   #           alpha = [alpha_wrapper value];
   38281                   #         }
   38282                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   38283                   #      }
   38284                   #
   38285                   #      static Color* toProto(UIColor* color) {
   38286                   #          CGFloat red, green, blue, alpha;
   38287                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   38288                   #            return nil;
   38289                   #          }
   38290                   #          Color* result = [Color alloc] init];
   38291                   #          [result setRed:red];
   38292                   #          [result setGreen:green];
   38293                   #          [result setBlue:blue];
   38294                   #          if (alpha <= 0.9999) {
   38295                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   38296                   #          }
   38297                   #          [result autorelease];
   38298                   #          return result;
   38299                   #     }
   38300                   #     // ...
   38301                   #
   38302                   #  Example (JavaScript):
   38303                   #
   38304                   #     // ...
   38305                   #
   38306                   #     var protoToCssColor = function(rgb_color) {
   38307                   #        var redFrac = rgb_color.red || 0.0;
   38308                   #        var greenFrac = rgb_color.green || 0.0;
   38309                   #        var blueFrac = rgb_color.blue || 0.0;
   38310                   #        var red = Math.floor(redFrac * 255);
   38311                   #        var green = Math.floor(greenFrac * 255);
   38312                   #        var blue = Math.floor(blueFrac * 255);
   38313                   #
   38314                   #        if (!('alpha' in rgb_color)) {
   38315                   #           return rgbToCssColor_(red, green, blue);
   38316                   #        }
   38317                   #
   38318                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   38319                   #        var rgbParams = [red, green, blue].join(',');
   38320                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   38321                   #     };
   38322                   #
   38323                   #     var rgbToCssColor_ = function(red, green, blue) {
   38324                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   38325                   #       var hexString = rgbNumber.toString(16);
   38326                   #       var missingZeros = 6 - hexString.length;
   38327                   #       var resultBuilder = ['#'];
   38328                   #       for (var i = 0; i < missingZeros; i++) {
   38329                   #          resultBuilder.push('0');
   38330                   #       }
   38331                   #       resultBuilder.push(hexString);
   38332                   #       return resultBuilder.join('');
   38333                   #     };
   38334                   #
   38335                   #     // ...
   38336                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   38337                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   38338                     # the final pixel color is defined by the equation:
   38339                     #
   38340                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   38341                     #
   38342                     # This means that a value of 1.0 corresponds to a solid color, whereas
   38343                     # a value of 0.0 corresponds to a completely transparent color. This
   38344                     # uses a wrapper message rather than a simple float scalar so that it is
   38345                     # possible to distinguish between a default value and the value being unset.
   38346                     # If omitted, this color object is to be rendered as a solid color
   38347                     # (as if the alpha value had been explicitly given with a value of 1.0).
   38348                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   38349                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   38350               },
   38351               "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   38352                   # row or column will be filled with either first_band_color or
   38353                   # second_band_color, depending on the color of the previous row or
   38354                   # column.
   38355                   # for simplicity of conversion to/from color representations in various
   38356                   # languages over compactness; for example, the fields of this representation
   38357                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   38358                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   38359                   # method in iOS; and, with just a little work, it can be easily formatted into
   38360                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   38361                   #
   38362                   # Example (Java):
   38363                   #
   38364                   #      import com.google.type.Color;
   38365                   #
   38366                   #      // ...
   38367                   #      public static java.awt.Color fromProto(Color protocolor) {
   38368                   #        float alpha = protocolor.hasAlpha()
   38369                   #            ? protocolor.getAlpha().getValue()
   38370                   #            : 1.0;
   38371                   #
   38372                   #        return new java.awt.Color(
   38373                   #            protocolor.getRed(),
   38374                   #            protocolor.getGreen(),
   38375                   #            protocolor.getBlue(),
   38376                   #            alpha);
   38377                   #      }
   38378                   #
   38379                   #      public static Color toProto(java.awt.Color color) {
   38380                   #        float red = (float) color.getRed();
   38381                   #        float green = (float) color.getGreen();
   38382                   #        float blue = (float) color.getBlue();
   38383                   #        float denominator = 255.0;
   38384                   #        Color.Builder resultBuilder =
   38385                   #            Color
   38386                   #                .newBuilder()
   38387                   #                .setRed(red / denominator)
   38388                   #                .setGreen(green / denominator)
   38389                   #                .setBlue(blue / denominator);
   38390                   #        int alpha = color.getAlpha();
   38391                   #        if (alpha != 255) {
   38392                   #          result.setAlpha(
   38393                   #              FloatValue
   38394                   #                  .newBuilder()
   38395                   #                  .setValue(((float) alpha) / denominator)
   38396                   #                  .build());
   38397                   #        }
   38398                   #        return resultBuilder.build();
   38399                   #      }
   38400                   #      // ...
   38401                   #
   38402                   # Example (iOS / Obj-C):
   38403                   #
   38404                   #      // ...
   38405                   #      static UIColor* fromProto(Color* protocolor) {
   38406                   #         float red = [protocolor red];
   38407                   #         float green = [protocolor green];
   38408                   #         float blue = [protocolor blue];
   38409                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   38410                   #         float alpha = 1.0;
   38411                   #         if (alpha_wrapper != nil) {
   38412                   #           alpha = [alpha_wrapper value];
   38413                   #         }
   38414                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   38415                   #      }
   38416                   #
   38417                   #      static Color* toProto(UIColor* color) {
   38418                   #          CGFloat red, green, blue, alpha;
   38419                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   38420                   #            return nil;
   38421                   #          }
   38422                   #          Color* result = [Color alloc] init];
   38423                   #          [result setRed:red];
   38424                   #          [result setGreen:green];
   38425                   #          [result setBlue:blue];
   38426                   #          if (alpha <= 0.9999) {
   38427                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   38428                   #          }
   38429                   #          [result autorelease];
   38430                   #          return result;
   38431                   #     }
   38432                   #     // ...
   38433                   #
   38434                   #  Example (JavaScript):
   38435                   #
   38436                   #     // ...
   38437                   #
   38438                   #     var protoToCssColor = function(rgb_color) {
   38439                   #        var redFrac = rgb_color.red || 0.0;
   38440                   #        var greenFrac = rgb_color.green || 0.0;
   38441                   #        var blueFrac = rgb_color.blue || 0.0;
   38442                   #        var red = Math.floor(redFrac * 255);
   38443                   #        var green = Math.floor(greenFrac * 255);
   38444                   #        var blue = Math.floor(blueFrac * 255);
   38445                   #
   38446                   #        if (!('alpha' in rgb_color)) {
   38447                   #           return rgbToCssColor_(red, green, blue);
   38448                   #        }
   38449                   #
   38450                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   38451                   #        var rgbParams = [red, green, blue].join(',');
   38452                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   38453                   #     };
   38454                   #
   38455                   #     var rgbToCssColor_ = function(red, green, blue) {
   38456                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   38457                   #       var hexString = rgbNumber.toString(16);
   38458                   #       var missingZeros = 6 - hexString.length;
   38459                   #       var resultBuilder = ['#'];
   38460                   #       for (var i = 0; i < missingZeros; i++) {
   38461                   #          resultBuilder.push('0');
   38462                   #       }
   38463                   #       resultBuilder.push(hexString);
   38464                   #       return resultBuilder.join('');
   38465                   #     };
   38466                   #
   38467                   #     // ...
   38468                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   38469                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   38470                     # the final pixel color is defined by the equation:
   38471                     #
   38472                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   38473                     #
   38474                     # This means that a value of 1.0 corresponds to a solid color, whereas
   38475                     # a value of 0.0 corresponds to a completely transparent color. This
   38476                     # uses a wrapper message rather than a simple float scalar so that it is
   38477                     # possible to distinguish between a default value and the value being unset.
   38478                     # If omitted, this color object is to be rendered as a solid color
   38479                     # (as if the alpha value had been explicitly given with a value of 1.0).
   38480                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   38481                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   38482               },
   38483               "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   38484                   # for simplicity of conversion to/from color representations in various
   38485                   # languages over compactness; for example, the fields of this representation
   38486                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   38487                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   38488                   # method in iOS; and, with just a little work, it can be easily formatted into
   38489                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   38490                   #
   38491                   # Example (Java):
   38492                   #
   38493                   #      import com.google.type.Color;
   38494                   #
   38495                   #      // ...
   38496                   #      public static java.awt.Color fromProto(Color protocolor) {
   38497                   #        float alpha = protocolor.hasAlpha()
   38498                   #            ? protocolor.getAlpha().getValue()
   38499                   #            : 1.0;
   38500                   #
   38501                   #        return new java.awt.Color(
   38502                   #            protocolor.getRed(),
   38503                   #            protocolor.getGreen(),
   38504                   #            protocolor.getBlue(),
   38505                   #            alpha);
   38506                   #      }
   38507                   #
   38508                   #      public static Color toProto(java.awt.Color color) {
   38509                   #        float red = (float) color.getRed();
   38510                   #        float green = (float) color.getGreen();
   38511                   #        float blue = (float) color.getBlue();
   38512                   #        float denominator = 255.0;
   38513                   #        Color.Builder resultBuilder =
   38514                   #            Color
   38515                   #                .newBuilder()
   38516                   #                .setRed(red / denominator)
   38517                   #                .setGreen(green / denominator)
   38518                   #                .setBlue(blue / denominator);
   38519                   #        int alpha = color.getAlpha();
   38520                   #        if (alpha != 255) {
   38521                   #          result.setAlpha(
   38522                   #              FloatValue
   38523                   #                  .newBuilder()
   38524                   #                  .setValue(((float) alpha) / denominator)
   38525                   #                  .build());
   38526                   #        }
   38527                   #        return resultBuilder.build();
   38528                   #      }
   38529                   #      // ...
   38530                   #
   38531                   # Example (iOS / Obj-C):
   38532                   #
   38533                   #      // ...
   38534                   #      static UIColor* fromProto(Color* protocolor) {
   38535                   #         float red = [protocolor red];
   38536                   #         float green = [protocolor green];
   38537                   #         float blue = [protocolor blue];
   38538                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   38539                   #         float alpha = 1.0;
   38540                   #         if (alpha_wrapper != nil) {
   38541                   #           alpha = [alpha_wrapper value];
   38542                   #         }
   38543                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   38544                   #      }
   38545                   #
   38546                   #      static Color* toProto(UIColor* color) {
   38547                   #          CGFloat red, green, blue, alpha;
   38548                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   38549                   #            return nil;
   38550                   #          }
   38551                   #          Color* result = [Color alloc] init];
   38552                   #          [result setRed:red];
   38553                   #          [result setGreen:green];
   38554                   #          [result setBlue:blue];
   38555                   #          if (alpha <= 0.9999) {
   38556                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   38557                   #          }
   38558                   #          [result autorelease];
   38559                   #          return result;
   38560                   #     }
   38561                   #     // ...
   38562                   #
   38563                   #  Example (JavaScript):
   38564                   #
   38565                   #     // ...
   38566                   #
   38567                   #     var protoToCssColor = function(rgb_color) {
   38568                   #        var redFrac = rgb_color.red || 0.0;
   38569                   #        var greenFrac = rgb_color.green || 0.0;
   38570                   #        var blueFrac = rgb_color.blue || 0.0;
   38571                   #        var red = Math.floor(redFrac * 255);
   38572                   #        var green = Math.floor(greenFrac * 255);
   38573                   #        var blue = Math.floor(blueFrac * 255);
   38574                   #
   38575                   #        if (!('alpha' in rgb_color)) {
   38576                   #           return rgbToCssColor_(red, green, blue);
   38577                   #        }
   38578                   #
   38579                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   38580                   #        var rgbParams = [red, green, blue].join(',');
   38581                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   38582                   #     };
   38583                   #
   38584                   #     var rgbToCssColor_ = function(red, green, blue) {
   38585                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   38586                   #       var hexString = rgbNumber.toString(16);
   38587                   #       var missingZeros = 6 - hexString.length;
   38588                   #       var resultBuilder = ['#'];
   38589                   #       for (var i = 0; i < missingZeros; i++) {
   38590                   #          resultBuilder.push('0');
   38591                   #       }
   38592                   #       resultBuilder.push(hexString);
   38593                   #       return resultBuilder.join('');
   38594                   #     };
   38595                   #
   38596                   #     // ...
   38597                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   38598                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   38599                     # the final pixel color is defined by the equation:
   38600                     #
   38601                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   38602                     #
   38603                     # This means that a value of 1.0 corresponds to a solid color, whereas
   38604                     # a value of 0.0 corresponds to a completely transparent color. This
   38605                     # uses a wrapper message rather than a simple float scalar so that it is
   38606                     # possible to distinguish between a default value and the value being unset.
   38607                     # If omitted, this color object is to be rendered as a solid color
   38608                     # (as if the alpha value had been explicitly given with a value of 1.0).
   38609                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   38610                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   38611               },
   38612             },
   38613             "bandedRangeId": 42, # The id of the banded range.
   38614           },
   38615         ],
   38616         "merges": [ # The ranges that are merged together.
   38617           { # A range on a sheet.
   38618               # All indexes are zero-based.
   38619               # Indexes are half open, e.g the start index is inclusive
   38620               # and the end index is exclusive -- [start_index, end_index).
   38621               # Missing indexes indicate the range is unbounded on that side.
   38622               #
   38623               # For example, if `"Sheet1"` is sheet ID 0, then:
   38624               #
   38625               #   `Sheet1!A1:A1 == sheet_id: 0,
   38626               #                   start_row_index: 0, end_row_index: 1,
   38627               #                   start_column_index: 0, end_column_index: 1`
   38628               #
   38629               #   `Sheet1!A3:B4 == sheet_id: 0,
   38630               #                   start_row_index: 2, end_row_index: 4,
   38631               #                   start_column_index: 0, end_column_index: 2`
   38632               #
   38633               #   `Sheet1!A:B == sheet_id: 0,
   38634               #                 start_column_index: 0, end_column_index: 2`
   38635               #
   38636               #   `Sheet1!A5:B == sheet_id: 0,
   38637               #                  start_row_index: 4,
   38638               #                  start_column_index: 0, end_column_index: 2`
   38639               #
   38640               #   `Sheet1 == sheet_id:0`
   38641               #
   38642               # The start index must always be less than or equal to the end index.
   38643               # If the start index equals the end index, then the range is empty.
   38644               # Empty ranges are typically not meaningful and are usually rendered in the
   38645               # UI as `#REF!`.
   38646             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   38647             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   38648             "sheetId": 42, # The sheet this range is on.
   38649             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   38650             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   38651           },
   38652         ],
   38653         "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
   38654           "range": { # A range on a sheet. # The range the filter covers.
   38655               # All indexes are zero-based.
   38656               # Indexes are half open, e.g the start index is inclusive
   38657               # and the end index is exclusive -- [start_index, end_index).
   38658               # Missing indexes indicate the range is unbounded on that side.
   38659               #
   38660               # For example, if `"Sheet1"` is sheet ID 0, then:
   38661               #
   38662               #   `Sheet1!A1:A1 == sheet_id: 0,
   38663               #                   start_row_index: 0, end_row_index: 1,
   38664               #                   start_column_index: 0, end_column_index: 1`
   38665               #
   38666               #   `Sheet1!A3:B4 == sheet_id: 0,
   38667               #                   start_row_index: 2, end_row_index: 4,
   38668               #                   start_column_index: 0, end_column_index: 2`
   38669               #
   38670               #   `Sheet1!A:B == sheet_id: 0,
   38671               #                 start_column_index: 0, end_column_index: 2`
   38672               #
   38673               #   `Sheet1!A5:B == sheet_id: 0,
   38674               #                  start_row_index: 4,
   38675               #                  start_column_index: 0, end_column_index: 2`
   38676               #
   38677               #   `Sheet1 == sheet_id:0`
   38678               #
   38679               # The start index must always be less than or equal to the end index.
   38680               # If the start index equals the end index, then the range is empty.
   38681               # Empty ranges are typically not meaningful and are usually rendered in the
   38682               # UI as `#REF!`.
   38683             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   38684             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   38685             "sheetId": 42, # The sheet this range is on.
   38686             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   38687             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   38688           },
   38689           "sortSpecs": [ # The sort order per column. Later specifications are used when values
   38690               # are equal in the earlier specifications.
   38691             { # A sort order associated with a specific column or row.
   38692               "sortOrder": "A String", # The order data should be sorted.
   38693               "dimensionIndex": 42, # The dimension the sort should be applied to.
   38694             },
   38695           ],
   38696           "criteria": { # The criteria for showing/hiding values per column.
   38697               # The map's key is the column index, and the value is the criteria for
   38698               # that column.
   38699             "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   38700               "hiddenValues": [ # Values that should be hidden.
   38701                 "A String",
   38702               ],
   38703               "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   38704                   # (This does not override hiddenValues -- if a value is listed there,
   38705                   #  it will still be hidden.)
   38706                   # BooleanConditions are used by conditional formatting,
   38707                   # data validation, and the criteria in filters.
   38708                 "values": [ # The values of the condition. The number of supported values depends
   38709                     # on the condition type.  Some support zero values,
   38710                     # others one or two values,
   38711                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   38712                   { # The value of the condition.
   38713                     "relativeDate": "A String", # A relative date (based on the current date).
   38714                         # Valid only if the type is
   38715                         # DATE_BEFORE,
   38716                         # DATE_AFTER,
   38717                         # DATE_ON_OR_BEFORE or
   38718                         # DATE_ON_OR_AFTER.
   38719                         #
   38720                         # Relative dates are not supported in data validation.
   38721                         # They are supported only in conditional formatting and
   38722                         # conditional filters.
   38723                     "userEnteredValue": "A String", # A value the condition is based on.
   38724                         # The value will be parsed as if the user typed into a cell.
   38725                         # Formulas are supported (and must begin with an `=`).
   38726                   },
   38727                 ],
   38728                 "type": "A String", # The type of condition.
   38729               },
   38730             },
   38731           },
   38732         },
   38733         "charts": [ # The specifications of every chart on this sheet.
   38734           { # A chart embedded in a sheet.
   38735             "chartId": 42, # The ID of the chart.
   38736             "position": { # The position of an embedded object such as a chart. # The position of the chart.
   38737               "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
   38738                   # is chosen for you. Used only when writing.
   38739               "sheetId": 42, # The sheet this is on. Set only if the embedded object
   38740                   # is on its own sheet. Must be non-negative.
   38741               "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
   38742                 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
   38743                     # All indexes are zero-based.
   38744                   "rowIndex": 42, # The row index of the coordinate.
   38745                   "columnIndex": 42, # The column index of the coordinate.
   38746                   "sheetId": 42, # The sheet this coordinate is on.
   38747                 },
   38748                 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
   38749                     # from the anchor cell.
   38750                 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
   38751                 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
   38752                     # from the anchor cell.
   38753                 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
   38754               },
   38755             },
   38756             "spec": { # The specifications of a chart. # The specification of the chart.
   38757               "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
   38758               "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
   38759                 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
   38760                   "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   38761                     "sources": [ # The ranges of data for a series or domain.
   38762                         # Exactly one dimension must have a length of 1,
   38763                         # and all sources in the list must have the same dimension
   38764                         # with length 1.
   38765                         # The domain (if it exists) & all series must have the same number
   38766                         # of source ranges. If using more than one source range, then the source
   38767                         # range at a given offset must be contiguous across the domain and series.
   38768                         #
   38769                         # For example, these are valid configurations:
   38770                         #
   38771                         #     domain sources: A1:A5
   38772                         #     series1 sources: B1:B5
   38773                         #     series2 sources: D6:D10
   38774                         #
   38775                         #     domain sources: A1:A5, C10:C12
   38776                         #     series1 sources: B1:B5, D10:D12
   38777                         #     series2 sources: C1:C5, E10:E12
   38778                       { # A range on a sheet.
   38779                           # All indexes are zero-based.
   38780                           # Indexes are half open, e.g the start index is inclusive
   38781                           # and the end index is exclusive -- [start_index, end_index).
   38782                           # Missing indexes indicate the range is unbounded on that side.
   38783                           #
   38784                           # For example, if `"Sheet1"` is sheet ID 0, then:
   38785                           #
   38786                           #   `Sheet1!A1:A1 == sheet_id: 0,
   38787                           #                   start_row_index: 0, end_row_index: 1,
   38788                           #                   start_column_index: 0, end_column_index: 1`
   38789                           #
   38790                           #   `Sheet1!A3:B4 == sheet_id: 0,
   38791                           #                   start_row_index: 2, end_row_index: 4,
   38792                           #                   start_column_index: 0, end_column_index: 2`
   38793                           #
   38794                           #   `Sheet1!A:B == sheet_id: 0,
   38795                           #                 start_column_index: 0, end_column_index: 2`
   38796                           #
   38797                           #   `Sheet1!A5:B == sheet_id: 0,
   38798                           #                  start_row_index: 4,
   38799                           #                  start_column_index: 0, end_column_index: 2`
   38800                           #
   38801                           #   `Sheet1 == sheet_id:0`
   38802                           #
   38803                           # The start index must always be less than or equal to the end index.
   38804                           # If the start index equals the end index, then the range is empty.
   38805                           # Empty ranges are typically not meaningful and are usually rendered in the
   38806                           # UI as `#REF!`.
   38807                         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   38808                         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   38809                         "sheetId": 42, # The sheet this range is on.
   38810                         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   38811                         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   38812                       },
   38813                     ],
   38814                   },
   38815                 },
   38816                 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
   38817                   "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   38818                     "sources": [ # The ranges of data for a series or domain.
   38819                         # Exactly one dimension must have a length of 1,
   38820                         # and all sources in the list must have the same dimension
   38821                         # with length 1.
   38822                         # The domain (if it exists) & all series must have the same number
   38823                         # of source ranges. If using more than one source range, then the source
   38824                         # range at a given offset must be contiguous across the domain and series.
   38825                         #
   38826                         # For example, these are valid configurations:
   38827                         #
   38828                         #     domain sources: A1:A5
   38829                         #     series1 sources: B1:B5
   38830                         #     series2 sources: D6:D10
   38831                         #
   38832                         #     domain sources: A1:A5, C10:C12
   38833                         #     series1 sources: B1:B5, D10:D12
   38834                         #     series2 sources: C1:C5, E10:E12
   38835                       { # A range on a sheet.
   38836                           # All indexes are zero-based.
   38837                           # Indexes are half open, e.g the start index is inclusive
   38838                           # and the end index is exclusive -- [start_index, end_index).
   38839                           # Missing indexes indicate the range is unbounded on that side.
   38840                           #
   38841                           # For example, if `"Sheet1"` is sheet ID 0, then:
   38842                           #
   38843                           #   `Sheet1!A1:A1 == sheet_id: 0,
   38844                           #                   start_row_index: 0, end_row_index: 1,
   38845                           #                   start_column_index: 0, end_column_index: 1`
   38846                           #
   38847                           #   `Sheet1!A3:B4 == sheet_id: 0,
   38848                           #                   start_row_index: 2, end_row_index: 4,
   38849                           #                   start_column_index: 0, end_column_index: 2`
   38850                           #
   38851                           #   `Sheet1!A:B == sheet_id: 0,
   38852                           #                 start_column_index: 0, end_column_index: 2`
   38853                           #
   38854                           #   `Sheet1!A5:B == sheet_id: 0,
   38855                           #                  start_row_index: 4,
   38856                           #                  start_column_index: 0, end_column_index: 2`
   38857                           #
   38858                           #   `Sheet1 == sheet_id:0`
   38859                           #
   38860                           # The start index must always be less than or equal to the end index.
   38861                           # If the start index equals the end index, then the range is empty.
   38862                           # Empty ranges are typically not meaningful and are usually rendered in the
   38863                           # UI as `#REF!`.
   38864                         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   38865                         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   38866                         "sheetId": 42, # The sheet this range is on.
   38867                         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   38868                         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   38869                       },
   38870                     ],
   38871                   },
   38872                 },
   38873                 "threeDimensional": True or False, # True if the pie is three dimensional.
   38874                 "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
   38875                 "pieHole": 3.14, # The size of the hole in the pie chart.
   38876               },
   38877               "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
   38878                   # See BasicChartType for the list of all
   38879                   # charts this supports.
   38880                   # of charts this supports.
   38881                 "headerCount": 42, # The number of rows or columns in the data that are "headers".
   38882                     # If not set, Google Sheets will guess how many rows are headers based
   38883                     # on the data.
   38884                     #
   38885                     # (Note that BasicChartAxis.title may override the axis title
   38886                     #  inferred from the header values.)
   38887                 "series": [ # The data this chart is visualizing.
   38888                   { # A single series of data in a chart.
   38889                       # For example, if charting stock prices over time, multiple series may exist,
   38890                       # one for the "Open Price", "High Price", "Low Price" and "Close Price".
   38891                     "series": { # The data included in a domain or series. # The data being visualized in this chart series.
   38892                       "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   38893                         "sources": [ # The ranges of data for a series or domain.
   38894                             # Exactly one dimension must have a length of 1,
   38895                             # and all sources in the list must have the same dimension
   38896                             # with length 1.
   38897                             # The domain (if it exists) & all series must have the same number
   38898                             # of source ranges. If using more than one source range, then the source
   38899                             # range at a given offset must be contiguous across the domain and series.
   38900                             #
   38901                             # For example, these are valid configurations:
   38902                             #
   38903                             #     domain sources: A1:A5
   38904                             #     series1 sources: B1:B5
   38905                             #     series2 sources: D6:D10
   38906                             #
   38907                             #     domain sources: A1:A5, C10:C12
   38908                             #     series1 sources: B1:B5, D10:D12
   38909                             #     series2 sources: C1:C5, E10:E12
   38910                           { # A range on a sheet.
   38911                               # All indexes are zero-based.
   38912                               # Indexes are half open, e.g the start index is inclusive
   38913                               # and the end index is exclusive -- [start_index, end_index).
   38914                               # Missing indexes indicate the range is unbounded on that side.
   38915                               #
   38916                               # For example, if `"Sheet1"` is sheet ID 0, then:
   38917                               #
   38918                               #   `Sheet1!A1:A1 == sheet_id: 0,
   38919                               #                   start_row_index: 0, end_row_index: 1,
   38920                               #                   start_column_index: 0, end_column_index: 1`
   38921                               #
   38922                               #   `Sheet1!A3:B4 == sheet_id: 0,
   38923                               #                   start_row_index: 2, end_row_index: 4,
   38924                               #                   start_column_index: 0, end_column_index: 2`
   38925                               #
   38926                               #   `Sheet1!A:B == sheet_id: 0,
   38927                               #                 start_column_index: 0, end_column_index: 2`
   38928                               #
   38929                               #   `Sheet1!A5:B == sheet_id: 0,
   38930                               #                  start_row_index: 4,
   38931                               #                  start_column_index: 0, end_column_index: 2`
   38932                               #
   38933                               #   `Sheet1 == sheet_id:0`
   38934                               #
   38935                               # The start index must always be less than or equal to the end index.
   38936                               # If the start index equals the end index, then the range is empty.
   38937                               # Empty ranges are typically not meaningful and are usually rendered in the
   38938                               # UI as `#REF!`.
   38939                             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   38940                             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   38941                             "sheetId": 42, # The sheet this range is on.
   38942                             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   38943                             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   38944                           },
   38945                         ],
   38946                       },
   38947                     },
   38948                     "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
   38949                         # For example, if charting stocks over time, the "Volume" series
   38950                         # may want to be pinned to the right with the prices pinned to the left,
   38951                         # because the scale of trading volume is different than the scale of
   38952                         # prices.
   38953                         # It is an error to specify an axis that isn't a valid minor axis
   38954                         # for the chart's type.
   38955                     "type": "A String", # The type of this series. Valid only if the
   38956                         # chartType is
   38957                         # COMBO.
   38958                         # Different types will change the way the series is visualized.
   38959                         # Only LINE, AREA,
   38960                         # and COLUMN are supported.
   38961                   },
   38962                 ],
   38963                 "legendPosition": "A String", # The position of the chart legend.
   38964                 "domains": [ # The domain of data this is charting.
   38965                     # Only a single domain is supported.
   38966                   { # The domain of a chart.
   38967                       # For example, if charting stock prices over time, this would be the date.
   38968                     "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
   38969                         # this is the data representing the dates.
   38970                       "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   38971                         "sources": [ # The ranges of data for a series or domain.
   38972                             # Exactly one dimension must have a length of 1,
   38973                             # and all sources in the list must have the same dimension
   38974                             # with length 1.
   38975                             # The domain (if it exists) & all series must have the same number
   38976                             # of source ranges. If using more than one source range, then the source
   38977                             # range at a given offset must be contiguous across the domain and series.
   38978                             #
   38979                             # For example, these are valid configurations:
   38980                             #
   38981                             #     domain sources: A1:A5
   38982                             #     series1 sources: B1:B5
   38983                             #     series2 sources: D6:D10
   38984                             #
   38985                             #     domain sources: A1:A5, C10:C12
   38986                             #     series1 sources: B1:B5, D10:D12
   38987                             #     series2 sources: C1:C5, E10:E12
   38988                           { # A range on a sheet.
   38989                               # All indexes are zero-based.
   38990                               # Indexes are half open, e.g the start index is inclusive
   38991                               # and the end index is exclusive -- [start_index, end_index).
   38992                               # Missing indexes indicate the range is unbounded on that side.
   38993                               #
   38994                               # For example, if `"Sheet1"` is sheet ID 0, then:
   38995                               #
   38996                               #   `Sheet1!A1:A1 == sheet_id: 0,
   38997                               #                   start_row_index: 0, end_row_index: 1,
   38998                               #                   start_column_index: 0, end_column_index: 1`
   38999                               #
   39000                               #   `Sheet1!A3:B4 == sheet_id: 0,
   39001                               #                   start_row_index: 2, end_row_index: 4,
   39002                               #                   start_column_index: 0, end_column_index: 2`
   39003                               #
   39004                               #   `Sheet1!A:B == sheet_id: 0,
   39005                               #                 start_column_index: 0, end_column_index: 2`
   39006                               #
   39007                               #   `Sheet1!A5:B == sheet_id: 0,
   39008                               #                  start_row_index: 4,
   39009                               #                  start_column_index: 0, end_column_index: 2`
   39010                               #
   39011                               #   `Sheet1 == sheet_id:0`
   39012                               #
   39013                               # The start index must always be less than or equal to the end index.
   39014                               # If the start index equals the end index, then the range is empty.
   39015                               # Empty ranges are typically not meaningful and are usually rendered in the
   39016                               # UI as `#REF!`.
   39017                             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   39018                             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   39019                             "sheetId": 42, # The sheet this range is on.
   39020                             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   39021                             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   39022                           },
   39023                         ],
   39024                       },
   39025                     },
   39026                   },
   39027                 ],
   39028                 "chartType": "A String", # The type of the chart.
   39029                 "axis": [ # The axis on the chart.
   39030                   { # An axis of the chart.
   39031                       # A chart may not have more than one axis per
   39032                       # axis position.
   39033                     "position": "A String", # The position of this axis.
   39034                     "format": { # The format of a run of text in a cell. # The format of the title.
   39035                         # Only valid if the axis is not associated with the domain.
   39036                         # Absent values indicate that the field isn't specified.
   39037                       "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   39038                           # for simplicity of conversion to/from color representations in various
   39039                           # languages over compactness; for example, the fields of this representation
   39040                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   39041                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   39042                           # method in iOS; and, with just a little work, it can be easily formatted into
   39043                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   39044                           #
   39045                           # Example (Java):
   39046                           #
   39047                           #      import com.google.type.Color;
   39048                           #
   39049                           #      // ...
   39050                           #      public static java.awt.Color fromProto(Color protocolor) {
   39051                           #        float alpha = protocolor.hasAlpha()
   39052                           #            ? protocolor.getAlpha().getValue()
   39053                           #            : 1.0;
   39054                           #
   39055                           #        return new java.awt.Color(
   39056                           #            protocolor.getRed(),
   39057                           #            protocolor.getGreen(),
   39058                           #            protocolor.getBlue(),
   39059                           #            alpha);
   39060                           #      }
   39061                           #
   39062                           #      public static Color toProto(java.awt.Color color) {
   39063                           #        float red = (float) color.getRed();
   39064                           #        float green = (float) color.getGreen();
   39065                           #        float blue = (float) color.getBlue();
   39066                           #        float denominator = 255.0;
   39067                           #        Color.Builder resultBuilder =
   39068                           #            Color
   39069                           #                .newBuilder()
   39070                           #                .setRed(red / denominator)
   39071                           #                .setGreen(green / denominator)
   39072                           #                .setBlue(blue / denominator);
   39073                           #        int alpha = color.getAlpha();
   39074                           #        if (alpha != 255) {
   39075                           #          result.setAlpha(
   39076                           #              FloatValue
   39077                           #                  .newBuilder()
   39078                           #                  .setValue(((float) alpha) / denominator)
   39079                           #                  .build());
   39080                           #        }
   39081                           #        return resultBuilder.build();
   39082                           #      }
   39083                           #      // ...
   39084                           #
   39085                           # Example (iOS / Obj-C):
   39086                           #
   39087                           #      // ...
   39088                           #      static UIColor* fromProto(Color* protocolor) {
   39089                           #         float red = [protocolor red];
   39090                           #         float green = [protocolor green];
   39091                           #         float blue = [protocolor blue];
   39092                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   39093                           #         float alpha = 1.0;
   39094                           #         if (alpha_wrapper != nil) {
   39095                           #           alpha = [alpha_wrapper value];
   39096                           #         }
   39097                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   39098                           #      }
   39099                           #
   39100                           #      static Color* toProto(UIColor* color) {
   39101                           #          CGFloat red, green, blue, alpha;
   39102                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   39103                           #            return nil;
   39104                           #          }
   39105                           #          Color* result = [Color alloc] init];
   39106                           #          [result setRed:red];
   39107                           #          [result setGreen:green];
   39108                           #          [result setBlue:blue];
   39109                           #          if (alpha <= 0.9999) {
   39110                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   39111                           #          }
   39112                           #          [result autorelease];
   39113                           #          return result;
   39114                           #     }
   39115                           #     // ...
   39116                           #
   39117                           #  Example (JavaScript):
   39118                           #
   39119                           #     // ...
   39120                           #
   39121                           #     var protoToCssColor = function(rgb_color) {
   39122                           #        var redFrac = rgb_color.red || 0.0;
   39123                           #        var greenFrac = rgb_color.green || 0.0;
   39124                           #        var blueFrac = rgb_color.blue || 0.0;
   39125                           #        var red = Math.floor(redFrac * 255);
   39126                           #        var green = Math.floor(greenFrac * 255);
   39127                           #        var blue = Math.floor(blueFrac * 255);
   39128                           #
   39129                           #        if (!('alpha' in rgb_color)) {
   39130                           #           return rgbToCssColor_(red, green, blue);
   39131                           #        }
   39132                           #
   39133                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   39134                           #        var rgbParams = [red, green, blue].join(',');
   39135                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   39136                           #     };
   39137                           #
   39138                           #     var rgbToCssColor_ = function(red, green, blue) {
   39139                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   39140                           #       var hexString = rgbNumber.toString(16);
   39141                           #       var missingZeros = 6 - hexString.length;
   39142                           #       var resultBuilder = ['#'];
   39143                           #       for (var i = 0; i < missingZeros; i++) {
   39144                           #          resultBuilder.push('0');
   39145                           #       }
   39146                           #       resultBuilder.push(hexString);
   39147                           #       return resultBuilder.join('');
   39148                           #     };
   39149                           #
   39150                           #     // ...
   39151                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   39152                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   39153                             # the final pixel color is defined by the equation:
   39154                             #
   39155                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   39156                             #
   39157                             # This means that a value of 1.0 corresponds to a solid color, whereas
   39158                             # a value of 0.0 corresponds to a completely transparent color. This
   39159                             # uses a wrapper message rather than a simple float scalar so that it is
   39160                             # possible to distinguish between a default value and the value being unset.
   39161                             # If omitted, this color object is to be rendered as a solid color
   39162                             # (as if the alpha value had been explicitly given with a value of 1.0).
   39163                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   39164                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   39165                       },
   39166                       "bold": True or False, # True if the text is bold.
   39167                       "strikethrough": True or False, # True if the text has a strikethrough.
   39168                       "fontFamily": "A String", # The font family.
   39169                       "fontSize": 42, # The size of the font.
   39170                       "italic": True or False, # True if the text is italicized.
   39171                       "underline": True or False, # True if the text is underlined.
   39172                     },
   39173                     "title": "A String", # The title of this axis. If set, this overrides any title inferred
   39174                         # from headers of the data.
   39175                   },
   39176                 ],
   39177               },
   39178               "title": "A String", # The title of the chart.
   39179             },
   39180           },
   39181         ],
   39182         "filterViews": [ # The filter views in this sheet.
   39183           { # A filter view.
   39184             "title": "A String", # The name of the filter view.
   39185             "namedRangeId": "A String", # The named range this filter view is backed by, if any.
   39186                 #
   39187                 # When writing, only one of range or named_range_id
   39188                 # may be set.
   39189             "filterViewId": 42, # The ID of the filter view.
   39190             "range": { # A range on a sheet. # The range this filter view covers.
   39191                 #
   39192                 # When writing, only one of range or named_range_id
   39193                 # may be set.
   39194                 # All indexes are zero-based.
   39195                 # Indexes are half open, e.g the start index is inclusive
   39196                 # and the end index is exclusive -- [start_index, end_index).
   39197                 # Missing indexes indicate the range is unbounded on that side.
   39198                 #
   39199                 # For example, if `"Sheet1"` is sheet ID 0, then:
   39200                 #
   39201                 #   `Sheet1!A1:A1 == sheet_id: 0,
   39202                 #                   start_row_index: 0, end_row_index: 1,
   39203                 #                   start_column_index: 0, end_column_index: 1`
   39204                 #
   39205                 #   `Sheet1!A3:B4 == sheet_id: 0,
   39206                 #                   start_row_index: 2, end_row_index: 4,
   39207                 #                   start_column_index: 0, end_column_index: 2`
   39208                 #
   39209                 #   `Sheet1!A:B == sheet_id: 0,
   39210                 #                 start_column_index: 0, end_column_index: 2`
   39211                 #
   39212                 #   `Sheet1!A5:B == sheet_id: 0,
   39213                 #                  start_row_index: 4,
   39214                 #                  start_column_index: 0, end_column_index: 2`
   39215                 #
   39216                 #   `Sheet1 == sheet_id:0`
   39217                 #
   39218                 # The start index must always be less than or equal to the end index.
   39219                 # If the start index equals the end index, then the range is empty.
   39220                 # Empty ranges are typically not meaningful and are usually rendered in the
   39221                 # UI as `#REF!`.
   39222               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   39223               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   39224               "sheetId": 42, # The sheet this range is on.
   39225               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   39226               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   39227             },
   39228             "sortSpecs": [ # The sort order per column. Later specifications are used when values
   39229                 # are equal in the earlier specifications.
   39230               { # A sort order associated with a specific column or row.
   39231                 "sortOrder": "A String", # The order data should be sorted.
   39232                 "dimensionIndex": 42, # The dimension the sort should be applied to.
   39233               },
   39234             ],
   39235             "criteria": { # The criteria for showing/hiding values per column.
   39236                 # The map's key is the column index, and the value is the criteria for
   39237                 # that column.
   39238               "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   39239                 "hiddenValues": [ # Values that should be hidden.
   39240                   "A String",
   39241                 ],
   39242                 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   39243                     # (This does not override hiddenValues -- if a value is listed there,
   39244                     #  it will still be hidden.)
   39245                     # BooleanConditions are used by conditional formatting,
   39246                     # data validation, and the criteria in filters.
   39247                   "values": [ # The values of the condition. The number of supported values depends
   39248                       # on the condition type.  Some support zero values,
   39249                       # others one or two values,
   39250                       # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   39251                     { # The value of the condition.
   39252                       "relativeDate": "A String", # A relative date (based on the current date).
   39253                           # Valid only if the type is
   39254                           # DATE_BEFORE,
   39255                           # DATE_AFTER,
   39256                           # DATE_ON_OR_BEFORE or
   39257                           # DATE_ON_OR_AFTER.
   39258                           #
   39259                           # Relative dates are not supported in data validation.
   39260                           # They are supported only in conditional formatting and
   39261                           # conditional filters.
   39262                       "userEnteredValue": "A String", # A value the condition is based on.
   39263                           # The value will be parsed as if the user typed into a cell.
   39264                           # Formulas are supported (and must begin with an `=`).
   39265                     },
   39266                   ],
   39267                   "type": "A String", # The type of condition.
   39268                 },
   39269               },
   39270             },
   39271           },
   39272         ],
   39273         "protectedRanges": [ # The protected ranges in this sheet.
   39274           { # A protected range.
   39275             "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
   39276                 # Unprotected ranges are only supported on protected sheets.
   39277               { # A range on a sheet.
   39278                   # All indexes are zero-based.
   39279                   # Indexes are half open, e.g the start index is inclusive
   39280                   # and the end index is exclusive -- [start_index, end_index).
   39281                   # Missing indexes indicate the range is unbounded on that side.
   39282                   #
   39283                   # For example, if `"Sheet1"` is sheet ID 0, then:
   39284                   #
   39285                   #   `Sheet1!A1:A1 == sheet_id: 0,
   39286                   #                   start_row_index: 0, end_row_index: 1,
   39287                   #                   start_column_index: 0, end_column_index: 1`
   39288                   #
   39289                   #   `Sheet1!A3:B4 == sheet_id: 0,
   39290                   #                   start_row_index: 2, end_row_index: 4,
   39291                   #                   start_column_index: 0, end_column_index: 2`
   39292                   #
   39293                   #   `Sheet1!A:B == sheet_id: 0,
   39294                   #                 start_column_index: 0, end_column_index: 2`
   39295                   #
   39296                   #   `Sheet1!A5:B == sheet_id: 0,
   39297                   #                  start_row_index: 4,
   39298                   #                  start_column_index: 0, end_column_index: 2`
   39299                   #
   39300                   #   `Sheet1 == sheet_id:0`
   39301                   #
   39302                   # The start index must always be less than or equal to the end index.
   39303                   # If the start index equals the end index, then the range is empty.
   39304                   # Empty ranges are typically not meaningful and are usually rendered in the
   39305                   # UI as `#REF!`.
   39306                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   39307                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   39308                 "sheetId": 42, # The sheet this range is on.
   39309                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   39310                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   39311               },
   39312             ],
   39313             "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
   39314                 # protected area.
   39315                 # This field is read-only.
   39316             "description": "A String", # The description of this protected range.
   39317             "namedRangeId": "A String", # The named range this protected range is backed by, if any.
   39318                 #
   39319                 # When writing, only one of range or named_range_id
   39320                 # may be set.
   39321             "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
   39322                 # This field is only visible to users with edit access to the protected
   39323                 # range and the document.
   39324                 # Editors are not supported with warning_only protection.
   39325               "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
   39326                   # range.  Domain protection is only supported on documents within a domain.
   39327               "users": [ # The email addresses of users with edit access to the protected range.
   39328                 "A String",
   39329               ],
   39330               "groups": [ # The email addresses of groups with edit access to the protected range.
   39331                 "A String",
   39332               ],
   39333             },
   39334             "protectedRangeId": 42, # The ID of the protected range.
   39335                 # This field is read-only.
   39336             "warningOnly": True or False, # True if this protected range will show a warning when editing.
   39337                 # Warning-based protection means that every user can edit data in the
   39338                 # protected range, except editing will prompt a warning asking the user
   39339                 # to confirm the edit.
   39340                 #
   39341                 # When writing: if this field is true, then editors is ignored.
   39342                 # Additionally, if this field is changed from true to false and the
   39343                 # `editors` field is not set (nor included in the field mask), then
   39344                 # the editors will be set to all the editors in the document.
   39345             "range": { # A range on a sheet. # The range that is being protected.
   39346                 # The range may be fully unbounded, in which case this is considered
   39347                 # a protected sheet.
   39348                 #
   39349                 # When writing, only one of range or named_range_id
   39350                 # may be set.
   39351                 # All indexes are zero-based.
   39352                 # Indexes are half open, e.g the start index is inclusive
   39353                 # and the end index is exclusive -- [start_index, end_index).
   39354                 # Missing indexes indicate the range is unbounded on that side.
   39355                 #
   39356                 # For example, if `"Sheet1"` is sheet ID 0, then:
   39357                 #
   39358                 #   `Sheet1!A1:A1 == sheet_id: 0,
   39359                 #                   start_row_index: 0, end_row_index: 1,
   39360                 #                   start_column_index: 0, end_column_index: 1`
   39361                 #
   39362                 #   `Sheet1!A3:B4 == sheet_id: 0,
   39363                 #                   start_row_index: 2, end_row_index: 4,
   39364                 #                   start_column_index: 0, end_column_index: 2`
   39365                 #
   39366                 #   `Sheet1!A:B == sheet_id: 0,
   39367                 #                 start_column_index: 0, end_column_index: 2`
   39368                 #
   39369                 #   `Sheet1!A5:B == sheet_id: 0,
   39370                 #                  start_row_index: 4,
   39371                 #                  start_column_index: 0, end_column_index: 2`
   39372                 #
   39373                 #   `Sheet1 == sheet_id:0`
   39374                 #
   39375                 # The start index must always be less than or equal to the end index.
   39376                 # If the start index equals the end index, then the range is empty.
   39377                 # Empty ranges are typically not meaningful and are usually rendered in the
   39378                 # UI as `#REF!`.
   39379               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   39380               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   39381               "sheetId": 42, # The sheet this range is on.
   39382               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   39383               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   39384             },
   39385           },
   39386         ],
   39387         "data": [ # Data in the grid, if this is a grid sheet.
   39388             # The number of GridData objects returned is dependent on the number of
   39389             # ranges requested on this sheet. For example, if this is representing
   39390             # `Sheet1`, and the spreadsheet was requested with ranges
   39391             # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
   39392             # startRow/startColumn of `0`,
   39393             # while the second one will have `startRow 14` (zero-based row 15),
   39394             # and `startColumn 3` (zero-based column D).
   39395           { # Data in the grid, as well as metadata about the dimensions.
   39396             "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
   39397                 # in start_row.
   39398               { # Properties about a dimension.
   39399                 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
   39400                 "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
   39401                 "hiddenByFilter": True or False, # True if this dimension is being filtered.
   39402                     # This field is read-only.
   39403               },
   39404             ],
   39405             "startColumn": 42, # The first column this GridData refers to, zero-based.
   39406             "rowData": [ # The data in the grid, one entry per row,
   39407                 # starting with the row in startRow.
   39408                 # The values in RowData will correspond to columns starting
   39409                 # at start_column.
   39410               { # Data about each cell in a row.
   39411                 "values": [ # The values in the row, one per column.
   39412                   { # Data about a specific cell.
   39413                     "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
   39414                         # is computed dynamically based on its data, grouping, filters, values,
   39415                         # etc. Only the top-left cell of the pivot table contains the pivot table
   39416                         # definition. The other cells will contain the calculated values of the
   39417                         # results of the pivot in their effective_value fields.
   39418                       "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
   39419                           # or vertically (as rows).
   39420                       "rows": [ # Each row grouping in the pivot table.
   39421                         { # A single grouping (either row or column) in a pivot table.
   39422                           "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   39423                           "valueMetadata": [ # Metadata about values in the grouping.
   39424                             { # Metadata about a value in a pivot grouping.
   39425                               "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   39426                               "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   39427                                   # (Note that formulaValue is not valid,
   39428                                   #  because the values will be calculated.)
   39429                                 "stringValue": "A String", # Represents a string value.
   39430                                     # Leading single quotes are not included. For example, if the user typed
   39431                                     # `'123` into the UI, this would be represented as a `stringValue` of
   39432                                     # `"123"`.
   39433                                 "boolValue": True or False, # Represents a boolean value.
   39434                                 "errorValue": { # An error in a cell. # Represents an error.
   39435                                     # This field is read-only.
   39436                                   "message": "A String", # A message with more information about the error
   39437                                       # (in the spreadsheet's locale).
   39438                                   "type": "A String", # The type of error.
   39439                                 },
   39440                                 "formulaValue": "A String", # Represents a formula.
   39441                                 "numberValue": 3.14, # Represents a double value.
   39442                                     # Note: Dates, Times and DateTimes are represented as doubles in
   39443                                     # "serial number" format.
   39444                               },
   39445                             },
   39446                           ],
   39447                           "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   39448                               # If not specified, sorting is alphabetical by this group's values.
   39449                             "buckets": [ # Determines the bucket from which values are chosen to sort.
   39450                                 #
   39451                                 # For example, in a pivot table with one row group & two column groups,
   39452                                 # the row group can list up to two values. The first value corresponds
   39453                                 # to a value within the first column group, and the second value
   39454                                 # corresponds to a value in the second column group.  If no values
   39455                                 # are listed, this would indicate that the row should be sorted according
   39456                                 # to the "Grand Total" over the column groups. If a single value is listed,
   39457                                 # this would correspond to using the "Total" of that bucket.
   39458                               { # The kinds of value that a cell in a spreadsheet can have.
   39459                                 "stringValue": "A String", # Represents a string value.
   39460                                     # Leading single quotes are not included. For example, if the user typed
   39461                                     # `'123` into the UI, this would be represented as a `stringValue` of
   39462                                     # `"123"`.
   39463                                 "boolValue": True or False, # Represents a boolean value.
   39464                                 "errorValue": { # An error in a cell. # Represents an error.
   39465                                     # This field is read-only.
   39466                                   "message": "A String", # A message with more information about the error
   39467                                       # (in the spreadsheet's locale).
   39468                                   "type": "A String", # The type of error.
   39469                                 },
   39470                                 "formulaValue": "A String", # Represents a formula.
   39471                                 "numberValue": 3.14, # Represents a double value.
   39472                                     # Note: Dates, Times and DateTimes are represented as doubles in
   39473                                     # "serial number" format.
   39474                               },
   39475                             ],
   39476                             "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   39477                                 # grouping should be sorted by.
   39478                           },
   39479                           "sortOrder": "A String", # The order the values in this group should be sorted.
   39480                           "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   39481                               #
   39482                               # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   39483                               # means this group refers to column `C`, whereas the offset `1` would refer
   39484                               # to column `D`.
   39485                         },
   39486                       ],
   39487                       "source": { # A range on a sheet. # The range the pivot table is reading data from.
   39488                           # All indexes are zero-based.
   39489                           # Indexes are half open, e.g the start index is inclusive
   39490                           # and the end index is exclusive -- [start_index, end_index).
   39491                           # Missing indexes indicate the range is unbounded on that side.
   39492                           #
   39493                           # For example, if `"Sheet1"` is sheet ID 0, then:
   39494                           #
   39495                           #   `Sheet1!A1:A1 == sheet_id: 0,
   39496                           #                   start_row_index: 0, end_row_index: 1,
   39497                           #                   start_column_index: 0, end_column_index: 1`
   39498                           #
   39499                           #   `Sheet1!A3:B4 == sheet_id: 0,
   39500                           #                   start_row_index: 2, end_row_index: 4,
   39501                           #                   start_column_index: 0, end_column_index: 2`
   39502                           #
   39503                           #   `Sheet1!A:B == sheet_id: 0,
   39504                           #                 start_column_index: 0, end_column_index: 2`
   39505                           #
   39506                           #   `Sheet1!A5:B == sheet_id: 0,
   39507                           #                  start_row_index: 4,
   39508                           #                  start_column_index: 0, end_column_index: 2`
   39509                           #
   39510                           #   `Sheet1 == sheet_id:0`
   39511                           #
   39512                           # The start index must always be less than or equal to the end index.
   39513                           # If the start index equals the end index, then the range is empty.
   39514                           # Empty ranges are typically not meaningful and are usually rendered in the
   39515                           # UI as `#REF!`.
   39516                         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   39517                         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   39518                         "sheetId": 42, # The sheet this range is on.
   39519                         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   39520                         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   39521                       },
   39522                       "values": [ # A list of values to include in the pivot table.
   39523                         { # The definition of how a value in a pivot table should be calculated.
   39524                           "formula": "A String", # A custom formula to calculate the value.  The formula must start
   39525                               # with an `=` character.
   39526                           "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
   39527                               #
   39528                               # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   39529                               # means this value refers to column `C`, whereas the offset `1` would
   39530                               # refer to column `D`.
   39531                           "summarizeFunction": "A String", # A function to summarize the value.
   39532                               # If formula is set, the only supported values are
   39533                               # SUM and
   39534                               # CUSTOM.
   39535                               # If sourceColumnOffset is set, then `CUSTOM`
   39536                               # is not supported.
   39537                           "name": "A String", # A name to use for the value. This is only used if formula was set.
   39538                               # Otherwise, the column name is used.
   39539                         },
   39540                       ],
   39541                       "criteria": { # An optional mapping of filters per source column offset.
   39542                           #
   39543                           # The filters will be applied before aggregating data into the pivot table.
   39544                           # The map's key is the column offset of the source range that you want to
   39545                           # filter, and the value is the criteria for that column.
   39546                           #
   39547                           # For example, if the source was `C10:E15`, a key of `0` will have the filter
   39548                           # for column `C`, whereas the key `1` is for column `D`.
   39549                         "a_key": { # Criteria for showing/hiding rows in a pivot table.
   39550                           "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
   39551                             "A String",
   39552                           ],
   39553                         },
   39554                       },
   39555                       "columns": [ # Each column grouping in the pivot table.
   39556                         { # A single grouping (either row or column) in a pivot table.
   39557                           "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   39558                           "valueMetadata": [ # Metadata about values in the grouping.
   39559                             { # Metadata about a value in a pivot grouping.
   39560                               "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   39561                               "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   39562                                   # (Note that formulaValue is not valid,
   39563                                   #  because the values will be calculated.)
   39564                                 "stringValue": "A String", # Represents a string value.
   39565                                     # Leading single quotes are not included. For example, if the user typed
   39566                                     # `'123` into the UI, this would be represented as a `stringValue` of
   39567                                     # `"123"`.
   39568                                 "boolValue": True or False, # Represents a boolean value.
   39569                                 "errorValue": { # An error in a cell. # Represents an error.
   39570                                     # This field is read-only.
   39571                                   "message": "A String", # A message with more information about the error
   39572                                       # (in the spreadsheet's locale).
   39573                                   "type": "A String", # The type of error.
   39574                                 },
   39575                                 "formulaValue": "A String", # Represents a formula.
   39576                                 "numberValue": 3.14, # Represents a double value.
   39577                                     # Note: Dates, Times and DateTimes are represented as doubles in
   39578                                     # "serial number" format.
   39579                               },
   39580                             },
   39581                           ],
   39582                           "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   39583                               # If not specified, sorting is alphabetical by this group's values.
   39584                             "buckets": [ # Determines the bucket from which values are chosen to sort.
   39585                                 #
   39586                                 # For example, in a pivot table with one row group & two column groups,
   39587                                 # the row group can list up to two values. The first value corresponds
   39588                                 # to a value within the first column group, and the second value
   39589                                 # corresponds to a value in the second column group.  If no values
   39590                                 # are listed, this would indicate that the row should be sorted according
   39591                                 # to the "Grand Total" over the column groups. If a single value is listed,
   39592                                 # this would correspond to using the "Total" of that bucket.
   39593                               { # The kinds of value that a cell in a spreadsheet can have.
   39594                                 "stringValue": "A String", # Represents a string value.
   39595                                     # Leading single quotes are not included. For example, if the user typed
   39596                                     # `'123` into the UI, this would be represented as a `stringValue` of
   39597                                     # `"123"`.
   39598                                 "boolValue": True or False, # Represents a boolean value.
   39599                                 "errorValue": { # An error in a cell. # Represents an error.
   39600                                     # This field is read-only.
   39601                                   "message": "A String", # A message with more information about the error
   39602                                       # (in the spreadsheet's locale).
   39603                                   "type": "A String", # The type of error.
   39604                                 },
   39605                                 "formulaValue": "A String", # Represents a formula.
   39606                                 "numberValue": 3.14, # Represents a double value.
   39607                                     # Note: Dates, Times and DateTimes are represented as doubles in
   39608                                     # "serial number" format.
   39609                               },
   39610                             ],
   39611                             "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   39612                                 # grouping should be sorted by.
   39613                           },
   39614                           "sortOrder": "A String", # The order the values in this group should be sorted.
   39615                           "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   39616                               #
   39617                               # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   39618                               # means this group refers to column `C`, whereas the offset `1` would refer
   39619                               # to column `D`.
   39620                         },
   39621                       ],
   39622                     },
   39623                     "hyperlink": "A String", # A hyperlink this cell points to, if any.
   39624                         # This field is read-only.  (To set it, use a `=HYPERLINK` formula
   39625                         # in the userEnteredValue.formulaValue
   39626                         # field.)
   39627                     "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
   39628                         # the calculated value.  For cells with literals, this will be
   39629                         # the same as the user_entered_value.
   39630                         # This field is read-only.
   39631                       "stringValue": "A String", # Represents a string value.
   39632                           # Leading single quotes are not included. For example, if the user typed
   39633                           # `'123` into the UI, this would be represented as a `stringValue` of
   39634                           # `"123"`.
   39635                       "boolValue": True or False, # Represents a boolean value.
   39636                       "errorValue": { # An error in a cell. # Represents an error.
   39637                           # This field is read-only.
   39638                         "message": "A String", # A message with more information about the error
   39639                             # (in the spreadsheet's locale).
   39640                         "type": "A String", # The type of error.
   39641                       },
   39642                       "formulaValue": "A String", # Represents a formula.
   39643                       "numberValue": 3.14, # Represents a double value.
   39644                           # Note: Dates, Times and DateTimes are represented as doubles in
   39645                           # "serial number" format.
   39646                     },
   39647                     "formattedValue": "A String", # The formatted value of the cell.
   39648                         # This is the value as it's shown to the user.
   39649                         # This field is read-only.
   39650                     "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
   39651                         # Note: Dates, Times and DateTimes are represented as doubles in
   39652                         # serial number format.
   39653                       "stringValue": "A String", # Represents a string value.
   39654                           # Leading single quotes are not included. For example, if the user typed
   39655                           # `'123` into the UI, this would be represented as a `stringValue` of
   39656                           # `"123"`.
   39657                       "boolValue": True or False, # Represents a boolean value.
   39658                       "errorValue": { # An error in a cell. # Represents an error.
   39659                           # This field is read-only.
   39660                         "message": "A String", # A message with more information about the error
   39661                             # (in the spreadsheet's locale).
   39662                         "type": "A String", # The type of error.
   39663                       },
   39664                       "formulaValue": "A String", # Represents a formula.
   39665                       "numberValue": 3.14, # Represents a double value.
   39666                           # Note: Dates, Times and DateTimes are represented as doubles in
   39667                           # "serial number" format.
   39668                     },
   39669                     "note": "A String", # Any note on the cell.
   39670                     "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
   39671                         # This includes the results of applying any conditional formatting and,
   39672                         # if the cell contains a formula, the computed number format.
   39673                         # If the effective format is the default format, effective format will
   39674                         # not be written.
   39675                         # This field is read-only.
   39676                       "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   39677                         "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   39678                             # the user's locale will be used if necessary for the given type.
   39679                             # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   39680                             # information about the supported patterns.
   39681                         "type": "A String", # The type of the number format.
   39682                             # When writing, this field must be set.
   39683                       },
   39684                       "textDirection": "A String", # The direction of the text in the cell.
   39685                       "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   39686                           # When updating padding, every field must be specified.
   39687                         "top": 42, # The top padding of the cell.
   39688                         "right": 42, # The right padding of the cell.
   39689                         "bottom": 42, # The bottom padding of the cell.
   39690                         "left": 42, # The left padding of the cell.
   39691                       },
   39692                       "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   39693                       "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   39694                           # for simplicity of conversion to/from color representations in various
   39695                           # languages over compactness; for example, the fields of this representation
   39696                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   39697                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   39698                           # method in iOS; and, with just a little work, it can be easily formatted into
   39699                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   39700                           #
   39701                           # Example (Java):
   39702                           #
   39703                           #      import com.google.type.Color;
   39704                           #
   39705                           #      // ...
   39706                           #      public static java.awt.Color fromProto(Color protocolor) {
   39707                           #        float alpha = protocolor.hasAlpha()
   39708                           #            ? protocolor.getAlpha().getValue()
   39709                           #            : 1.0;
   39710                           #
   39711                           #        return new java.awt.Color(
   39712                           #            protocolor.getRed(),
   39713                           #            protocolor.getGreen(),
   39714                           #            protocolor.getBlue(),
   39715                           #            alpha);
   39716                           #      }
   39717                           #
   39718                           #      public static Color toProto(java.awt.Color color) {
   39719                           #        float red = (float) color.getRed();
   39720                           #        float green = (float) color.getGreen();
   39721                           #        float blue = (float) color.getBlue();
   39722                           #        float denominator = 255.0;
   39723                           #        Color.Builder resultBuilder =
   39724                           #            Color
   39725                           #                .newBuilder()
   39726                           #                .setRed(red / denominator)
   39727                           #                .setGreen(green / denominator)
   39728                           #                .setBlue(blue / denominator);
   39729                           #        int alpha = color.getAlpha();
   39730                           #        if (alpha != 255) {
   39731                           #          result.setAlpha(
   39732                           #              FloatValue
   39733                           #                  .newBuilder()
   39734                           #                  .setValue(((float) alpha) / denominator)
   39735                           #                  .build());
   39736                           #        }
   39737                           #        return resultBuilder.build();
   39738                           #      }
   39739                           #      // ...
   39740                           #
   39741                           # Example (iOS / Obj-C):
   39742                           #
   39743                           #      // ...
   39744                           #      static UIColor* fromProto(Color* protocolor) {
   39745                           #         float red = [protocolor red];
   39746                           #         float green = [protocolor green];
   39747                           #         float blue = [protocolor blue];
   39748                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   39749                           #         float alpha = 1.0;
   39750                           #         if (alpha_wrapper != nil) {
   39751                           #           alpha = [alpha_wrapper value];
   39752                           #         }
   39753                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   39754                           #      }
   39755                           #
   39756                           #      static Color* toProto(UIColor* color) {
   39757                           #          CGFloat red, green, blue, alpha;
   39758                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   39759                           #            return nil;
   39760                           #          }
   39761                           #          Color* result = [Color alloc] init];
   39762                           #          [result setRed:red];
   39763                           #          [result setGreen:green];
   39764                           #          [result setBlue:blue];
   39765                           #          if (alpha <= 0.9999) {
   39766                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   39767                           #          }
   39768                           #          [result autorelease];
   39769                           #          return result;
   39770                           #     }
   39771                           #     // ...
   39772                           #
   39773                           #  Example (JavaScript):
   39774                           #
   39775                           #     // ...
   39776                           #
   39777                           #     var protoToCssColor = function(rgb_color) {
   39778                           #        var redFrac = rgb_color.red || 0.0;
   39779                           #        var greenFrac = rgb_color.green || 0.0;
   39780                           #        var blueFrac = rgb_color.blue || 0.0;
   39781                           #        var red = Math.floor(redFrac * 255);
   39782                           #        var green = Math.floor(greenFrac * 255);
   39783                           #        var blue = Math.floor(blueFrac * 255);
   39784                           #
   39785                           #        if (!('alpha' in rgb_color)) {
   39786                           #           return rgbToCssColor_(red, green, blue);
   39787                           #        }
   39788                           #
   39789                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   39790                           #        var rgbParams = [red, green, blue].join(',');
   39791                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   39792                           #     };
   39793                           #
   39794                           #     var rgbToCssColor_ = function(red, green, blue) {
   39795                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   39796                           #       var hexString = rgbNumber.toString(16);
   39797                           #       var missingZeros = 6 - hexString.length;
   39798                           #       var resultBuilder = ['#'];
   39799                           #       for (var i = 0; i < missingZeros; i++) {
   39800                           #          resultBuilder.push('0');
   39801                           #       }
   39802                           #       resultBuilder.push(hexString);
   39803                           #       return resultBuilder.join('');
   39804                           #     };
   39805                           #
   39806                           #     // ...
   39807                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   39808                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   39809                             # the final pixel color is defined by the equation:
   39810                             #
   39811                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   39812                             #
   39813                             # This means that a value of 1.0 corresponds to a solid color, whereas
   39814                             # a value of 0.0 corresponds to a completely transparent color. This
   39815                             # uses a wrapper message rather than a simple float scalar so that it is
   39816                             # possible to distinguish between a default value and the value being unset.
   39817                             # If omitted, this color object is to be rendered as a solid color
   39818                             # (as if the alpha value had been explicitly given with a value of 1.0).
   39819                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   39820                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   39821                       },
   39822                       "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   39823                       "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   39824                           # Absent values indicate that the field isn't specified.
   39825                         "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   39826                             # for simplicity of conversion to/from color representations in various
   39827                             # languages over compactness; for example, the fields of this representation
   39828                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   39829                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   39830                             # method in iOS; and, with just a little work, it can be easily formatted into
   39831                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   39832                             #
   39833                             # Example (Java):
   39834                             #
   39835                             #      import com.google.type.Color;
   39836                             #
   39837                             #      // ...
   39838                             #      public static java.awt.Color fromProto(Color protocolor) {
   39839                             #        float alpha = protocolor.hasAlpha()
   39840                             #            ? protocolor.getAlpha().getValue()
   39841                             #            : 1.0;
   39842                             #
   39843                             #        return new java.awt.Color(
   39844                             #            protocolor.getRed(),
   39845                             #            protocolor.getGreen(),
   39846                             #            protocolor.getBlue(),
   39847                             #            alpha);
   39848                             #      }
   39849                             #
   39850                             #      public static Color toProto(java.awt.Color color) {
   39851                             #        float red = (float) color.getRed();
   39852                             #        float green = (float) color.getGreen();
   39853                             #        float blue = (float) color.getBlue();
   39854                             #        float denominator = 255.0;
   39855                             #        Color.Builder resultBuilder =
   39856                             #            Color
   39857                             #                .newBuilder()
   39858                             #                .setRed(red / denominator)
   39859                             #                .setGreen(green / denominator)
   39860                             #                .setBlue(blue / denominator);
   39861                             #        int alpha = color.getAlpha();
   39862                             #        if (alpha != 255) {
   39863                             #          result.setAlpha(
   39864                             #              FloatValue
   39865                             #                  .newBuilder()
   39866                             #                  .setValue(((float) alpha) / denominator)
   39867                             #                  .build());
   39868                             #        }
   39869                             #        return resultBuilder.build();
   39870                             #      }
   39871                             #      // ...
   39872                             #
   39873                             # Example (iOS / Obj-C):
   39874                             #
   39875                             #      // ...
   39876                             #      static UIColor* fromProto(Color* protocolor) {
   39877                             #         float red = [protocolor red];
   39878                             #         float green = [protocolor green];
   39879                             #         float blue = [protocolor blue];
   39880                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   39881                             #         float alpha = 1.0;
   39882                             #         if (alpha_wrapper != nil) {
   39883                             #           alpha = [alpha_wrapper value];
   39884                             #         }
   39885                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   39886                             #      }
   39887                             #
   39888                             #      static Color* toProto(UIColor* color) {
   39889                             #          CGFloat red, green, blue, alpha;
   39890                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   39891                             #            return nil;
   39892                             #          }
   39893                             #          Color* result = [Color alloc] init];
   39894                             #          [result setRed:red];
   39895                             #          [result setGreen:green];
   39896                             #          [result setBlue:blue];
   39897                             #          if (alpha <= 0.9999) {
   39898                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   39899                             #          }
   39900                             #          [result autorelease];
   39901                             #          return result;
   39902                             #     }
   39903                             #     // ...
   39904                             #
   39905                             #  Example (JavaScript):
   39906                             #
   39907                             #     // ...
   39908                             #
   39909                             #     var protoToCssColor = function(rgb_color) {
   39910                             #        var redFrac = rgb_color.red || 0.0;
   39911                             #        var greenFrac = rgb_color.green || 0.0;
   39912                             #        var blueFrac = rgb_color.blue || 0.0;
   39913                             #        var red = Math.floor(redFrac * 255);
   39914                             #        var green = Math.floor(greenFrac * 255);
   39915                             #        var blue = Math.floor(blueFrac * 255);
   39916                             #
   39917                             #        if (!('alpha' in rgb_color)) {
   39918                             #           return rgbToCssColor_(red, green, blue);
   39919                             #        }
   39920                             #
   39921                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   39922                             #        var rgbParams = [red, green, blue].join(',');
   39923                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   39924                             #     };
   39925                             #
   39926                             #     var rgbToCssColor_ = function(red, green, blue) {
   39927                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   39928                             #       var hexString = rgbNumber.toString(16);
   39929                             #       var missingZeros = 6 - hexString.length;
   39930                             #       var resultBuilder = ['#'];
   39931                             #       for (var i = 0; i < missingZeros; i++) {
   39932                             #          resultBuilder.push('0');
   39933                             #       }
   39934                             #       resultBuilder.push(hexString);
   39935                             #       return resultBuilder.join('');
   39936                             #     };
   39937                             #
   39938                             #     // ...
   39939                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   39940                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   39941                               # the final pixel color is defined by the equation:
   39942                               #
   39943                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   39944                               #
   39945                               # This means that a value of 1.0 corresponds to a solid color, whereas
   39946                               # a value of 0.0 corresponds to a completely transparent color. This
   39947                               # uses a wrapper message rather than a simple float scalar so that it is
   39948                               # possible to distinguish between a default value and the value being unset.
   39949                               # If omitted, this color object is to be rendered as a solid color
   39950                               # (as if the alpha value had been explicitly given with a value of 1.0).
   39951                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   39952                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   39953                         },
   39954                         "bold": True or False, # True if the text is bold.
   39955                         "strikethrough": True or False, # True if the text has a strikethrough.
   39956                         "fontFamily": "A String", # The font family.
   39957                         "fontSize": 42, # The size of the font.
   39958                         "italic": True or False, # True if the text is italicized.
   39959                         "underline": True or False, # True if the text is underlined.
   39960                       },
   39961                       "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   39962                         "angle": 42, # The angle between the standard orientation and the desired orientation.
   39963                             # Measured in degrees. Valid values are between -90 and 90. Positive
   39964                             # angles are angled upwards, negative are angled downwards.
   39965                             #
   39966                             # Note: For LTR text direction positive angles are in the counterclockwise
   39967                             # direction, whereas for RTL they are in the clockwise direction
   39968                         "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   39969                             # characters is unchanged.
   39970                             # For example:
   39971                             #
   39972                             #     | V |
   39973                             #     | e |
   39974                             #     | r |
   39975                             #     | t |
   39976                             #     | i |
   39977                             #     | c |
   39978                             #     | a |
   39979                             #     | l |
   39980                       },
   39981                       "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   39982                       "borders": { # The borders of the cell. # The borders of the cell.
   39983                         "top": { # A border along a cell. # The top border of the cell.
   39984                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   39985                               # for simplicity of conversion to/from color representations in various
   39986                               # languages over compactness; for example, the fields of this representation
   39987                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   39988                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   39989                               # method in iOS; and, with just a little work, it can be easily formatted into
   39990                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   39991                               #
   39992                               # Example (Java):
   39993                               #
   39994                               #      import com.google.type.Color;
   39995                               #
   39996                               #      // ...
   39997                               #      public static java.awt.Color fromProto(Color protocolor) {
   39998                               #        float alpha = protocolor.hasAlpha()
   39999                               #            ? protocolor.getAlpha().getValue()
   40000                               #            : 1.0;
   40001                               #
   40002                               #        return new java.awt.Color(
   40003                               #            protocolor.getRed(),
   40004                               #            protocolor.getGreen(),
   40005                               #            protocolor.getBlue(),
   40006                               #            alpha);
   40007                               #      }
   40008                               #
   40009                               #      public static Color toProto(java.awt.Color color) {
   40010                               #        float red = (float) color.getRed();
   40011                               #        float green = (float) color.getGreen();
   40012                               #        float blue = (float) color.getBlue();
   40013                               #        float denominator = 255.0;
   40014                               #        Color.Builder resultBuilder =
   40015                               #            Color
   40016                               #                .newBuilder()
   40017                               #                .setRed(red / denominator)
   40018                               #                .setGreen(green / denominator)
   40019                               #                .setBlue(blue / denominator);
   40020                               #        int alpha = color.getAlpha();
   40021                               #        if (alpha != 255) {
   40022                               #          result.setAlpha(
   40023                               #              FloatValue
   40024                               #                  .newBuilder()
   40025                               #                  .setValue(((float) alpha) / denominator)
   40026                               #                  .build());
   40027                               #        }
   40028                               #        return resultBuilder.build();
   40029                               #      }
   40030                               #      // ...
   40031                               #
   40032                               # Example (iOS / Obj-C):
   40033                               #
   40034                               #      // ...
   40035                               #      static UIColor* fromProto(Color* protocolor) {
   40036                               #         float red = [protocolor red];
   40037                               #         float green = [protocolor green];
   40038                               #         float blue = [protocolor blue];
   40039                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   40040                               #         float alpha = 1.0;
   40041                               #         if (alpha_wrapper != nil) {
   40042                               #           alpha = [alpha_wrapper value];
   40043                               #         }
   40044                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   40045                               #      }
   40046                               #
   40047                               #      static Color* toProto(UIColor* color) {
   40048                               #          CGFloat red, green, blue, alpha;
   40049                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   40050                               #            return nil;
   40051                               #          }
   40052                               #          Color* result = [Color alloc] init];
   40053                               #          [result setRed:red];
   40054                               #          [result setGreen:green];
   40055                               #          [result setBlue:blue];
   40056                               #          if (alpha <= 0.9999) {
   40057                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   40058                               #          }
   40059                               #          [result autorelease];
   40060                               #          return result;
   40061                               #     }
   40062                               #     // ...
   40063                               #
   40064                               #  Example (JavaScript):
   40065                               #
   40066                               #     // ...
   40067                               #
   40068                               #     var protoToCssColor = function(rgb_color) {
   40069                               #        var redFrac = rgb_color.red || 0.0;
   40070                               #        var greenFrac = rgb_color.green || 0.0;
   40071                               #        var blueFrac = rgb_color.blue || 0.0;
   40072                               #        var red = Math.floor(redFrac * 255);
   40073                               #        var green = Math.floor(greenFrac * 255);
   40074                               #        var blue = Math.floor(blueFrac * 255);
   40075                               #
   40076                               #        if (!('alpha' in rgb_color)) {
   40077                               #           return rgbToCssColor_(red, green, blue);
   40078                               #        }
   40079                               #
   40080                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   40081                               #        var rgbParams = [red, green, blue].join(',');
   40082                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   40083                               #     };
   40084                               #
   40085                               #     var rgbToCssColor_ = function(red, green, blue) {
   40086                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   40087                               #       var hexString = rgbNumber.toString(16);
   40088                               #       var missingZeros = 6 - hexString.length;
   40089                               #       var resultBuilder = ['#'];
   40090                               #       for (var i = 0; i < missingZeros; i++) {
   40091                               #          resultBuilder.push('0');
   40092                               #       }
   40093                               #       resultBuilder.push(hexString);
   40094                               #       return resultBuilder.join('');
   40095                               #     };
   40096                               #
   40097                               #     // ...
   40098                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   40099                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   40100                                 # the final pixel color is defined by the equation:
   40101                                 #
   40102                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   40103                                 #
   40104                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   40105                                 # a value of 0.0 corresponds to a completely transparent color. This
   40106                                 # uses a wrapper message rather than a simple float scalar so that it is
   40107                                 # possible to distinguish between a default value and the value being unset.
   40108                                 # If omitted, this color object is to be rendered as a solid color
   40109                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   40110                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   40111                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   40112                           },
   40113                           "width": 42, # The width of the border, in pixels.
   40114                               # Deprecated; the width is determined by the "style" field.
   40115                           "style": "A String", # The style of the border.
   40116                         },
   40117                         "right": { # A border along a cell. # The right border of the cell.
   40118                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   40119                               # for simplicity of conversion to/from color representations in various
   40120                               # languages over compactness; for example, the fields of this representation
   40121                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   40122                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   40123                               # method in iOS; and, with just a little work, it can be easily formatted into
   40124                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   40125                               #
   40126                               # Example (Java):
   40127                               #
   40128                               #      import com.google.type.Color;
   40129                               #
   40130                               #      // ...
   40131                               #      public static java.awt.Color fromProto(Color protocolor) {
   40132                               #        float alpha = protocolor.hasAlpha()
   40133                               #            ? protocolor.getAlpha().getValue()
   40134                               #            : 1.0;
   40135                               #
   40136                               #        return new java.awt.Color(
   40137                               #            protocolor.getRed(),
   40138                               #            protocolor.getGreen(),
   40139                               #            protocolor.getBlue(),
   40140                               #            alpha);
   40141                               #      }
   40142                               #
   40143                               #      public static Color toProto(java.awt.Color color) {
   40144                               #        float red = (float) color.getRed();
   40145                               #        float green = (float) color.getGreen();
   40146                               #        float blue = (float) color.getBlue();
   40147                               #        float denominator = 255.0;
   40148                               #        Color.Builder resultBuilder =
   40149                               #            Color
   40150                               #                .newBuilder()
   40151                               #                .setRed(red / denominator)
   40152                               #                .setGreen(green / denominator)
   40153                               #                .setBlue(blue / denominator);
   40154                               #        int alpha = color.getAlpha();
   40155                               #        if (alpha != 255) {
   40156                               #          result.setAlpha(
   40157                               #              FloatValue
   40158                               #                  .newBuilder()
   40159                               #                  .setValue(((float) alpha) / denominator)
   40160                               #                  .build());
   40161                               #        }
   40162                               #        return resultBuilder.build();
   40163                               #      }
   40164                               #      // ...
   40165                               #
   40166                               # Example (iOS / Obj-C):
   40167                               #
   40168                               #      // ...
   40169                               #      static UIColor* fromProto(Color* protocolor) {
   40170                               #         float red = [protocolor red];
   40171                               #         float green = [protocolor green];
   40172                               #         float blue = [protocolor blue];
   40173                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   40174                               #         float alpha = 1.0;
   40175                               #         if (alpha_wrapper != nil) {
   40176                               #           alpha = [alpha_wrapper value];
   40177                               #         }
   40178                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   40179                               #      }
   40180                               #
   40181                               #      static Color* toProto(UIColor* color) {
   40182                               #          CGFloat red, green, blue, alpha;
   40183                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   40184                               #            return nil;
   40185                               #          }
   40186                               #          Color* result = [Color alloc] init];
   40187                               #          [result setRed:red];
   40188                               #          [result setGreen:green];
   40189                               #          [result setBlue:blue];
   40190                               #          if (alpha <= 0.9999) {
   40191                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   40192                               #          }
   40193                               #          [result autorelease];
   40194                               #          return result;
   40195                               #     }
   40196                               #     // ...
   40197                               #
   40198                               #  Example (JavaScript):
   40199                               #
   40200                               #     // ...
   40201                               #
   40202                               #     var protoToCssColor = function(rgb_color) {
   40203                               #        var redFrac = rgb_color.red || 0.0;
   40204                               #        var greenFrac = rgb_color.green || 0.0;
   40205                               #        var blueFrac = rgb_color.blue || 0.0;
   40206                               #        var red = Math.floor(redFrac * 255);
   40207                               #        var green = Math.floor(greenFrac * 255);
   40208                               #        var blue = Math.floor(blueFrac * 255);
   40209                               #
   40210                               #        if (!('alpha' in rgb_color)) {
   40211                               #           return rgbToCssColor_(red, green, blue);
   40212                               #        }
   40213                               #
   40214                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   40215                               #        var rgbParams = [red, green, blue].join(',');
   40216                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   40217                               #     };
   40218                               #
   40219                               #     var rgbToCssColor_ = function(red, green, blue) {
   40220                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   40221                               #       var hexString = rgbNumber.toString(16);
   40222                               #       var missingZeros = 6 - hexString.length;
   40223                               #       var resultBuilder = ['#'];
   40224                               #       for (var i = 0; i < missingZeros; i++) {
   40225                               #          resultBuilder.push('0');
   40226                               #       }
   40227                               #       resultBuilder.push(hexString);
   40228                               #       return resultBuilder.join('');
   40229                               #     };
   40230                               #
   40231                               #     // ...
   40232                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   40233                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   40234                                 # the final pixel color is defined by the equation:
   40235                                 #
   40236                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   40237                                 #
   40238                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   40239                                 # a value of 0.0 corresponds to a completely transparent color. This
   40240                                 # uses a wrapper message rather than a simple float scalar so that it is
   40241                                 # possible to distinguish between a default value and the value being unset.
   40242                                 # If omitted, this color object is to be rendered as a solid color
   40243                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   40244                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   40245                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   40246                           },
   40247                           "width": 42, # The width of the border, in pixels.
   40248                               # Deprecated; the width is determined by the "style" field.
   40249                           "style": "A String", # The style of the border.
   40250                         },
   40251                         "bottom": { # A border along a cell. # The bottom border of the cell.
   40252                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   40253                               # for simplicity of conversion to/from color representations in various
   40254                               # languages over compactness; for example, the fields of this representation
   40255                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   40256                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   40257                               # method in iOS; and, with just a little work, it can be easily formatted into
   40258                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   40259                               #
   40260                               # Example (Java):
   40261                               #
   40262                               #      import com.google.type.Color;
   40263                               #
   40264                               #      // ...
   40265                               #      public static java.awt.Color fromProto(Color protocolor) {
   40266                               #        float alpha = protocolor.hasAlpha()
   40267                               #            ? protocolor.getAlpha().getValue()
   40268                               #            : 1.0;
   40269                               #
   40270                               #        return new java.awt.Color(
   40271                               #            protocolor.getRed(),
   40272                               #            protocolor.getGreen(),
   40273                               #            protocolor.getBlue(),
   40274                               #            alpha);
   40275                               #      }
   40276                               #
   40277                               #      public static Color toProto(java.awt.Color color) {
   40278                               #        float red = (float) color.getRed();
   40279                               #        float green = (float) color.getGreen();
   40280                               #        float blue = (float) color.getBlue();
   40281                               #        float denominator = 255.0;
   40282                               #        Color.Builder resultBuilder =
   40283                               #            Color
   40284                               #                .newBuilder()
   40285                               #                .setRed(red / denominator)
   40286                               #                .setGreen(green / denominator)
   40287                               #                .setBlue(blue / denominator);
   40288                               #        int alpha = color.getAlpha();
   40289                               #        if (alpha != 255) {
   40290                               #          result.setAlpha(
   40291                               #              FloatValue
   40292                               #                  .newBuilder()
   40293                               #                  .setValue(((float) alpha) / denominator)
   40294                               #                  .build());
   40295                               #        }
   40296                               #        return resultBuilder.build();
   40297                               #      }
   40298                               #      // ...
   40299                               #
   40300                               # Example (iOS / Obj-C):
   40301                               #
   40302                               #      // ...
   40303                               #      static UIColor* fromProto(Color* protocolor) {
   40304                               #         float red = [protocolor red];
   40305                               #         float green = [protocolor green];
   40306                               #         float blue = [protocolor blue];
   40307                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   40308                               #         float alpha = 1.0;
   40309                               #         if (alpha_wrapper != nil) {
   40310                               #           alpha = [alpha_wrapper value];
   40311                               #         }
   40312                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   40313                               #      }
   40314                               #
   40315                               #      static Color* toProto(UIColor* color) {
   40316                               #          CGFloat red, green, blue, alpha;
   40317                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   40318                               #            return nil;
   40319                               #          }
   40320                               #          Color* result = [Color alloc] init];
   40321                               #          [result setRed:red];
   40322                               #          [result setGreen:green];
   40323                               #          [result setBlue:blue];
   40324                               #          if (alpha <= 0.9999) {
   40325                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   40326                               #          }
   40327                               #          [result autorelease];
   40328                               #          return result;
   40329                               #     }
   40330                               #     // ...
   40331                               #
   40332                               #  Example (JavaScript):
   40333                               #
   40334                               #     // ...
   40335                               #
   40336                               #     var protoToCssColor = function(rgb_color) {
   40337                               #        var redFrac = rgb_color.red || 0.0;
   40338                               #        var greenFrac = rgb_color.green || 0.0;
   40339                               #        var blueFrac = rgb_color.blue || 0.0;
   40340                               #        var red = Math.floor(redFrac * 255);
   40341                               #        var green = Math.floor(greenFrac * 255);
   40342                               #        var blue = Math.floor(blueFrac * 255);
   40343                               #
   40344                               #        if (!('alpha' in rgb_color)) {
   40345                               #           return rgbToCssColor_(red, green, blue);
   40346                               #        }
   40347                               #
   40348                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   40349                               #        var rgbParams = [red, green, blue].join(',');
   40350                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   40351                               #     };
   40352                               #
   40353                               #     var rgbToCssColor_ = function(red, green, blue) {
   40354                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   40355                               #       var hexString = rgbNumber.toString(16);
   40356                               #       var missingZeros = 6 - hexString.length;
   40357                               #       var resultBuilder = ['#'];
   40358                               #       for (var i = 0; i < missingZeros; i++) {
   40359                               #          resultBuilder.push('0');
   40360                               #       }
   40361                               #       resultBuilder.push(hexString);
   40362                               #       return resultBuilder.join('');
   40363                               #     };
   40364                               #
   40365                               #     // ...
   40366                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   40367                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   40368                                 # the final pixel color is defined by the equation:
   40369                                 #
   40370                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   40371                                 #
   40372                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   40373                                 # a value of 0.0 corresponds to a completely transparent color. This
   40374                                 # uses a wrapper message rather than a simple float scalar so that it is
   40375                                 # possible to distinguish between a default value and the value being unset.
   40376                                 # If omitted, this color object is to be rendered as a solid color
   40377                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   40378                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   40379                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   40380                           },
   40381                           "width": 42, # The width of the border, in pixels.
   40382                               # Deprecated; the width is determined by the "style" field.
   40383                           "style": "A String", # The style of the border.
   40384                         },
   40385                         "left": { # A border along a cell. # The left border of the cell.
   40386                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   40387                               # for simplicity of conversion to/from color representations in various
   40388                               # languages over compactness; for example, the fields of this representation
   40389                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   40390                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   40391                               # method in iOS; and, with just a little work, it can be easily formatted into
   40392                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   40393                               #
   40394                               # Example (Java):
   40395                               #
   40396                               #      import com.google.type.Color;
   40397                               #
   40398                               #      // ...
   40399                               #      public static java.awt.Color fromProto(Color protocolor) {
   40400                               #        float alpha = protocolor.hasAlpha()
   40401                               #            ? protocolor.getAlpha().getValue()
   40402                               #            : 1.0;
   40403                               #
   40404                               #        return new java.awt.Color(
   40405                               #            protocolor.getRed(),
   40406                               #            protocolor.getGreen(),
   40407                               #            protocolor.getBlue(),
   40408                               #            alpha);
   40409                               #      }
   40410                               #
   40411                               #      public static Color toProto(java.awt.Color color) {
   40412                               #        float red = (float) color.getRed();
   40413                               #        float green = (float) color.getGreen();
   40414                               #        float blue = (float) color.getBlue();
   40415                               #        float denominator = 255.0;
   40416                               #        Color.Builder resultBuilder =
   40417                               #            Color
   40418                               #                .newBuilder()
   40419                               #                .setRed(red / denominator)
   40420                               #                .setGreen(green / denominator)
   40421                               #                .setBlue(blue / denominator);
   40422                               #        int alpha = color.getAlpha();
   40423                               #        if (alpha != 255) {
   40424                               #          result.setAlpha(
   40425                               #              FloatValue
   40426                               #                  .newBuilder()
   40427                               #                  .setValue(((float) alpha) / denominator)
   40428                               #                  .build());
   40429                               #        }
   40430                               #        return resultBuilder.build();
   40431                               #      }
   40432                               #      // ...
   40433                               #
   40434                               # Example (iOS / Obj-C):
   40435                               #
   40436                               #      // ...
   40437                               #      static UIColor* fromProto(Color* protocolor) {
   40438                               #         float red = [protocolor red];
   40439                               #         float green = [protocolor green];
   40440                               #         float blue = [protocolor blue];
   40441                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   40442                               #         float alpha = 1.0;
   40443                               #         if (alpha_wrapper != nil) {
   40444                               #           alpha = [alpha_wrapper value];
   40445                               #         }
   40446                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   40447                               #      }
   40448                               #
   40449                               #      static Color* toProto(UIColor* color) {
   40450                               #          CGFloat red, green, blue, alpha;
   40451                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   40452                               #            return nil;
   40453                               #          }
   40454                               #          Color* result = [Color alloc] init];
   40455                               #          [result setRed:red];
   40456                               #          [result setGreen:green];
   40457                               #          [result setBlue:blue];
   40458                               #          if (alpha <= 0.9999) {
   40459                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   40460                               #          }
   40461                               #          [result autorelease];
   40462                               #          return result;
   40463                               #     }
   40464                               #     // ...
   40465                               #
   40466                               #  Example (JavaScript):
   40467                               #
   40468                               #     // ...
   40469                               #
   40470                               #     var protoToCssColor = function(rgb_color) {
   40471                               #        var redFrac = rgb_color.red || 0.0;
   40472                               #        var greenFrac = rgb_color.green || 0.0;
   40473                               #        var blueFrac = rgb_color.blue || 0.0;
   40474                               #        var red = Math.floor(redFrac * 255);
   40475                               #        var green = Math.floor(greenFrac * 255);
   40476                               #        var blue = Math.floor(blueFrac * 255);
   40477                               #
   40478                               #        if (!('alpha' in rgb_color)) {
   40479                               #           return rgbToCssColor_(red, green, blue);
   40480                               #        }
   40481                               #
   40482                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   40483                               #        var rgbParams = [red, green, blue].join(',');
   40484                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   40485                               #     };
   40486                               #
   40487                               #     var rgbToCssColor_ = function(red, green, blue) {
   40488                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   40489                               #       var hexString = rgbNumber.toString(16);
   40490                               #       var missingZeros = 6 - hexString.length;
   40491                               #       var resultBuilder = ['#'];
   40492                               #       for (var i = 0; i < missingZeros; i++) {
   40493                               #          resultBuilder.push('0');
   40494                               #       }
   40495                               #       resultBuilder.push(hexString);
   40496                               #       return resultBuilder.join('');
   40497                               #     };
   40498                               #
   40499                               #     // ...
   40500                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   40501                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   40502                                 # the final pixel color is defined by the equation:
   40503                                 #
   40504                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   40505                                 #
   40506                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   40507                                 # a value of 0.0 corresponds to a completely transparent color. This
   40508                                 # uses a wrapper message rather than a simple float scalar so that it is
   40509                                 # possible to distinguish between a default value and the value being unset.
   40510                                 # If omitted, this color object is to be rendered as a solid color
   40511                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   40512                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   40513                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   40514                           },
   40515                           "width": 42, # The width of the border, in pixels.
   40516                               # Deprecated; the width is determined by the "style" field.
   40517                           "style": "A String", # The style of the border.
   40518                         },
   40519                       },
   40520                       "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   40521                     },
   40522                     "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
   40523                         #
   40524                         # When writing, the new format will be merged with the existing format.
   40525                       "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   40526                         "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   40527                             # the user's locale will be used if necessary for the given type.
   40528                             # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   40529                             # information about the supported patterns.
   40530                         "type": "A String", # The type of the number format.
   40531                             # When writing, this field must be set.
   40532                       },
   40533                       "textDirection": "A String", # The direction of the text in the cell.
   40534                       "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   40535                           # When updating padding, every field must be specified.
   40536                         "top": 42, # The top padding of the cell.
   40537                         "right": 42, # The right padding of the cell.
   40538                         "bottom": 42, # The bottom padding of the cell.
   40539                         "left": 42, # The left padding of the cell.
   40540                       },
   40541                       "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   40542                       "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   40543                           # for simplicity of conversion to/from color representations in various
   40544                           # languages over compactness; for example, the fields of this representation
   40545                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   40546                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   40547                           # method in iOS; and, with just a little work, it can be easily formatted into
   40548                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   40549                           #
   40550                           # Example (Java):
   40551                           #
   40552                           #      import com.google.type.Color;
   40553                           #
   40554                           #      // ...
   40555                           #      public static java.awt.Color fromProto(Color protocolor) {
   40556                           #        float alpha = protocolor.hasAlpha()
   40557                           #            ? protocolor.getAlpha().getValue()
   40558                           #            : 1.0;
   40559                           #
   40560                           #        return new java.awt.Color(
   40561                           #            protocolor.getRed(),
   40562                           #            protocolor.getGreen(),
   40563                           #            protocolor.getBlue(),
   40564                           #            alpha);
   40565                           #      }
   40566                           #
   40567                           #      public static Color toProto(java.awt.Color color) {
   40568                           #        float red = (float) color.getRed();
   40569                           #        float green = (float) color.getGreen();
   40570                           #        float blue = (float) color.getBlue();
   40571                           #        float denominator = 255.0;
   40572                           #        Color.Builder resultBuilder =
   40573                           #            Color
   40574                           #                .newBuilder()
   40575                           #                .setRed(red / denominator)
   40576                           #                .setGreen(green / denominator)
   40577                           #                .setBlue(blue / denominator);
   40578                           #        int alpha = color.getAlpha();
   40579                           #        if (alpha != 255) {
   40580                           #          result.setAlpha(
   40581                           #              FloatValue
   40582                           #                  .newBuilder()
   40583                           #                  .setValue(((float) alpha) / denominator)
   40584                           #                  .build());
   40585                           #        }
   40586                           #        return resultBuilder.build();
   40587                           #      }
   40588                           #      // ...
   40589                           #
   40590                           # Example (iOS / Obj-C):
   40591                           #
   40592                           #      // ...
   40593                           #      static UIColor* fromProto(Color* protocolor) {
   40594                           #         float red = [protocolor red];
   40595                           #         float green = [protocolor green];
   40596                           #         float blue = [protocolor blue];
   40597                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   40598                           #         float alpha = 1.0;
   40599                           #         if (alpha_wrapper != nil) {
   40600                           #           alpha = [alpha_wrapper value];
   40601                           #         }
   40602                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   40603                           #      }
   40604                           #
   40605                           #      static Color* toProto(UIColor* color) {
   40606                           #          CGFloat red, green, blue, alpha;
   40607                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   40608                           #            return nil;
   40609                           #          }
   40610                           #          Color* result = [Color alloc] init];
   40611                           #          [result setRed:red];
   40612                           #          [result setGreen:green];
   40613                           #          [result setBlue:blue];
   40614                           #          if (alpha <= 0.9999) {
   40615                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   40616                           #          }
   40617                           #          [result autorelease];
   40618                           #          return result;
   40619                           #     }
   40620                           #     // ...
   40621                           #
   40622                           #  Example (JavaScript):
   40623                           #
   40624                           #     // ...
   40625                           #
   40626                           #     var protoToCssColor = function(rgb_color) {
   40627                           #        var redFrac = rgb_color.red || 0.0;
   40628                           #        var greenFrac = rgb_color.green || 0.0;
   40629                           #        var blueFrac = rgb_color.blue || 0.0;
   40630                           #        var red = Math.floor(redFrac * 255);
   40631                           #        var green = Math.floor(greenFrac * 255);
   40632                           #        var blue = Math.floor(blueFrac * 255);
   40633                           #
   40634                           #        if (!('alpha' in rgb_color)) {
   40635                           #           return rgbToCssColor_(red, green, blue);
   40636                           #        }
   40637                           #
   40638                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   40639                           #        var rgbParams = [red, green, blue].join(',');
   40640                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   40641                           #     };
   40642                           #
   40643                           #     var rgbToCssColor_ = function(red, green, blue) {
   40644                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   40645                           #       var hexString = rgbNumber.toString(16);
   40646                           #       var missingZeros = 6 - hexString.length;
   40647                           #       var resultBuilder = ['#'];
   40648                           #       for (var i = 0; i < missingZeros; i++) {
   40649                           #          resultBuilder.push('0');
   40650                           #       }
   40651                           #       resultBuilder.push(hexString);
   40652                           #       return resultBuilder.join('');
   40653                           #     };
   40654                           #
   40655                           #     // ...
   40656                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   40657                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   40658                             # the final pixel color is defined by the equation:
   40659                             #
   40660                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   40661                             #
   40662                             # This means that a value of 1.0 corresponds to a solid color, whereas
   40663                             # a value of 0.0 corresponds to a completely transparent color. This
   40664                             # uses a wrapper message rather than a simple float scalar so that it is
   40665                             # possible to distinguish between a default value and the value being unset.
   40666                             # If omitted, this color object is to be rendered as a solid color
   40667                             # (as if the alpha value had been explicitly given with a value of 1.0).
   40668                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   40669                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   40670                       },
   40671                       "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   40672                       "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   40673                           # Absent values indicate that the field isn't specified.
   40674                         "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   40675                             # for simplicity of conversion to/from color representations in various
   40676                             # languages over compactness; for example, the fields of this representation
   40677                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   40678                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   40679                             # method in iOS; and, with just a little work, it can be easily formatted into
   40680                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   40681                             #
   40682                             # Example (Java):
   40683                             #
   40684                             #      import com.google.type.Color;
   40685                             #
   40686                             #      // ...
   40687                             #      public static java.awt.Color fromProto(Color protocolor) {
   40688                             #        float alpha = protocolor.hasAlpha()
   40689                             #            ? protocolor.getAlpha().getValue()
   40690                             #            : 1.0;
   40691                             #
   40692                             #        return new java.awt.Color(
   40693                             #            protocolor.getRed(),
   40694                             #            protocolor.getGreen(),
   40695                             #            protocolor.getBlue(),
   40696                             #            alpha);
   40697                             #      }
   40698                             #
   40699                             #      public static Color toProto(java.awt.Color color) {
   40700                             #        float red = (float) color.getRed();
   40701                             #        float green = (float) color.getGreen();
   40702                             #        float blue = (float) color.getBlue();
   40703                             #        float denominator = 255.0;
   40704                             #        Color.Builder resultBuilder =
   40705                             #            Color
   40706                             #                .newBuilder()
   40707                             #                .setRed(red / denominator)
   40708                             #                .setGreen(green / denominator)
   40709                             #                .setBlue(blue / denominator);
   40710                             #        int alpha = color.getAlpha();
   40711                             #        if (alpha != 255) {
   40712                             #          result.setAlpha(
   40713                             #              FloatValue
   40714                             #                  .newBuilder()
   40715                             #                  .setValue(((float) alpha) / denominator)
   40716                             #                  .build());
   40717                             #        }
   40718                             #        return resultBuilder.build();
   40719                             #      }
   40720                             #      // ...
   40721                             #
   40722                             # Example (iOS / Obj-C):
   40723                             #
   40724                             #      // ...
   40725                             #      static UIColor* fromProto(Color* protocolor) {
   40726                             #         float red = [protocolor red];
   40727                             #         float green = [protocolor green];
   40728                             #         float blue = [protocolor blue];
   40729                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   40730                             #         float alpha = 1.0;
   40731                             #         if (alpha_wrapper != nil) {
   40732                             #           alpha = [alpha_wrapper value];
   40733                             #         }
   40734                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   40735                             #      }
   40736                             #
   40737                             #      static Color* toProto(UIColor* color) {
   40738                             #          CGFloat red, green, blue, alpha;
   40739                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   40740                             #            return nil;
   40741                             #          }
   40742                             #          Color* result = [Color alloc] init];
   40743                             #          [result setRed:red];
   40744                             #          [result setGreen:green];
   40745                             #          [result setBlue:blue];
   40746                             #          if (alpha <= 0.9999) {
   40747                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   40748                             #          }
   40749                             #          [result autorelease];
   40750                             #          return result;
   40751                             #     }
   40752                             #     // ...
   40753                             #
   40754                             #  Example (JavaScript):
   40755                             #
   40756                             #     // ...
   40757                             #
   40758                             #     var protoToCssColor = function(rgb_color) {
   40759                             #        var redFrac = rgb_color.red || 0.0;
   40760                             #        var greenFrac = rgb_color.green || 0.0;
   40761                             #        var blueFrac = rgb_color.blue || 0.0;
   40762                             #        var red = Math.floor(redFrac * 255);
   40763                             #        var green = Math.floor(greenFrac * 255);
   40764                             #        var blue = Math.floor(blueFrac * 255);
   40765                             #
   40766                             #        if (!('alpha' in rgb_color)) {
   40767                             #           return rgbToCssColor_(red, green, blue);
   40768                             #        }
   40769                             #
   40770                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   40771                             #        var rgbParams = [red, green, blue].join(',');
   40772                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   40773                             #     };
   40774                             #
   40775                             #     var rgbToCssColor_ = function(red, green, blue) {
   40776                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   40777                             #       var hexString = rgbNumber.toString(16);
   40778                             #       var missingZeros = 6 - hexString.length;
   40779                             #       var resultBuilder = ['#'];
   40780                             #       for (var i = 0; i < missingZeros; i++) {
   40781                             #          resultBuilder.push('0');
   40782                             #       }
   40783                             #       resultBuilder.push(hexString);
   40784                             #       return resultBuilder.join('');
   40785                             #     };
   40786                             #
   40787                             #     // ...
   40788                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   40789                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   40790                               # the final pixel color is defined by the equation:
   40791                               #
   40792                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   40793                               #
   40794                               # This means that a value of 1.0 corresponds to a solid color, whereas
   40795                               # a value of 0.0 corresponds to a completely transparent color. This
   40796                               # uses a wrapper message rather than a simple float scalar so that it is
   40797                               # possible to distinguish between a default value and the value being unset.
   40798                               # If omitted, this color object is to be rendered as a solid color
   40799                               # (as if the alpha value had been explicitly given with a value of 1.0).
   40800                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   40801                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   40802                         },
   40803                         "bold": True or False, # True if the text is bold.
   40804                         "strikethrough": True or False, # True if the text has a strikethrough.
   40805                         "fontFamily": "A String", # The font family.
   40806                         "fontSize": 42, # The size of the font.
   40807                         "italic": True or False, # True if the text is italicized.
   40808                         "underline": True or False, # True if the text is underlined.
   40809                       },
   40810                       "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   40811                         "angle": 42, # The angle between the standard orientation and the desired orientation.
   40812                             # Measured in degrees. Valid values are between -90 and 90. Positive
   40813                             # angles are angled upwards, negative are angled downwards.
   40814                             #
   40815                             # Note: For LTR text direction positive angles are in the counterclockwise
   40816                             # direction, whereas for RTL they are in the clockwise direction
   40817                         "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   40818                             # characters is unchanged.
   40819                             # For example:
   40820                             #
   40821                             #     | V |
   40822                             #     | e |
   40823                             #     | r |
   40824                             #     | t |
   40825                             #     | i |
   40826                             #     | c |
   40827                             #     | a |
   40828                             #     | l |
   40829                       },
   40830                       "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   40831                       "borders": { # The borders of the cell. # The borders of the cell.
   40832                         "top": { # A border along a cell. # The top border of the cell.
   40833                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   40834                               # for simplicity of conversion to/from color representations in various
   40835                               # languages over compactness; for example, the fields of this representation
   40836                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   40837                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   40838                               # method in iOS; and, with just a little work, it can be easily formatted into
   40839                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   40840                               #
   40841                               # Example (Java):
   40842                               #
   40843                               #      import com.google.type.Color;
   40844                               #
   40845                               #      // ...
   40846                               #      public static java.awt.Color fromProto(Color protocolor) {
   40847                               #        float alpha = protocolor.hasAlpha()
   40848                               #            ? protocolor.getAlpha().getValue()
   40849                               #            : 1.0;
   40850                               #
   40851                               #        return new java.awt.Color(
   40852                               #            protocolor.getRed(),
   40853                               #            protocolor.getGreen(),
   40854                               #            protocolor.getBlue(),
   40855                               #            alpha);
   40856                               #      }
   40857                               #
   40858                               #      public static Color toProto(java.awt.Color color) {
   40859                               #        float red = (float) color.getRed();
   40860                               #        float green = (float) color.getGreen();
   40861                               #        float blue = (float) color.getBlue();
   40862                               #        float denominator = 255.0;
   40863                               #        Color.Builder resultBuilder =
   40864                               #            Color
   40865                               #                .newBuilder()
   40866                               #                .setRed(red / denominator)
   40867                               #                .setGreen(green / denominator)
   40868                               #                .setBlue(blue / denominator);
   40869                               #        int alpha = color.getAlpha();
   40870                               #        if (alpha != 255) {
   40871                               #          result.setAlpha(
   40872                               #              FloatValue
   40873                               #                  .newBuilder()
   40874                               #                  .setValue(((float) alpha) / denominator)
   40875                               #                  .build());
   40876                               #        }
   40877                               #        return resultBuilder.build();
   40878                               #      }
   40879                               #      // ...
   40880                               #
   40881                               # Example (iOS / Obj-C):
   40882                               #
   40883                               #      // ...
   40884                               #      static UIColor* fromProto(Color* protocolor) {
   40885                               #         float red = [protocolor red];
   40886                               #         float green = [protocolor green];
   40887                               #         float blue = [protocolor blue];
   40888                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   40889                               #         float alpha = 1.0;
   40890                               #         if (alpha_wrapper != nil) {
   40891                               #           alpha = [alpha_wrapper value];
   40892                               #         }
   40893                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   40894                               #      }
   40895                               #
   40896                               #      static Color* toProto(UIColor* color) {
   40897                               #          CGFloat red, green, blue, alpha;
   40898                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   40899                               #            return nil;
   40900                               #          }
   40901                               #          Color* result = [Color alloc] init];
   40902                               #          [result setRed:red];
   40903                               #          [result setGreen:green];
   40904                               #          [result setBlue:blue];
   40905                               #          if (alpha <= 0.9999) {
   40906                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   40907                               #          }
   40908                               #          [result autorelease];
   40909                               #          return result;
   40910                               #     }
   40911                               #     // ...
   40912                               #
   40913                               #  Example (JavaScript):
   40914                               #
   40915                               #     // ...
   40916                               #
   40917                               #     var protoToCssColor = function(rgb_color) {
   40918                               #        var redFrac = rgb_color.red || 0.0;
   40919                               #        var greenFrac = rgb_color.green || 0.0;
   40920                               #        var blueFrac = rgb_color.blue || 0.0;
   40921                               #        var red = Math.floor(redFrac * 255);
   40922                               #        var green = Math.floor(greenFrac * 255);
   40923                               #        var blue = Math.floor(blueFrac * 255);
   40924                               #
   40925                               #        if (!('alpha' in rgb_color)) {
   40926                               #           return rgbToCssColor_(red, green, blue);
   40927                               #        }
   40928                               #
   40929                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   40930                               #        var rgbParams = [red, green, blue].join(',');
   40931                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   40932                               #     };
   40933                               #
   40934                               #     var rgbToCssColor_ = function(red, green, blue) {
   40935                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   40936                               #       var hexString = rgbNumber.toString(16);
   40937                               #       var missingZeros = 6 - hexString.length;
   40938                               #       var resultBuilder = ['#'];
   40939                               #       for (var i = 0; i < missingZeros; i++) {
   40940                               #          resultBuilder.push('0');
   40941                               #       }
   40942                               #       resultBuilder.push(hexString);
   40943                               #       return resultBuilder.join('');
   40944                               #     };
   40945                               #
   40946                               #     // ...
   40947                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   40948                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   40949                                 # the final pixel color is defined by the equation:
   40950                                 #
   40951                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   40952                                 #
   40953                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   40954                                 # a value of 0.0 corresponds to a completely transparent color. This
   40955                                 # uses a wrapper message rather than a simple float scalar so that it is
   40956                                 # possible to distinguish between a default value and the value being unset.
   40957                                 # If omitted, this color object is to be rendered as a solid color
   40958                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   40959                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   40960                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   40961                           },
   40962                           "width": 42, # The width of the border, in pixels.
   40963                               # Deprecated; the width is determined by the "style" field.
   40964                           "style": "A String", # The style of the border.
   40965                         },
   40966                         "right": { # A border along a cell. # The right border of the cell.
   40967                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   40968                               # for simplicity of conversion to/from color representations in various
   40969                               # languages over compactness; for example, the fields of this representation
   40970                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   40971                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   40972                               # method in iOS; and, with just a little work, it can be easily formatted into
   40973                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   40974                               #
   40975                               # Example (Java):
   40976                               #
   40977                               #      import com.google.type.Color;
   40978                               #
   40979                               #      // ...
   40980                               #      public static java.awt.Color fromProto(Color protocolor) {
   40981                               #        float alpha = protocolor.hasAlpha()
   40982                               #            ? protocolor.getAlpha().getValue()
   40983                               #            : 1.0;
   40984                               #
   40985                               #        return new java.awt.Color(
   40986                               #            protocolor.getRed(),
   40987                               #            protocolor.getGreen(),
   40988                               #            protocolor.getBlue(),
   40989                               #            alpha);
   40990                               #      }
   40991                               #
   40992                               #      public static Color toProto(java.awt.Color color) {
   40993                               #        float red = (float) color.getRed();
   40994                               #        float green = (float) color.getGreen();
   40995                               #        float blue = (float) color.getBlue();
   40996                               #        float denominator = 255.0;
   40997                               #        Color.Builder resultBuilder =
   40998                               #            Color
   40999                               #                .newBuilder()
   41000                               #                .setRed(red / denominator)
   41001                               #                .setGreen(green / denominator)
   41002                               #                .setBlue(blue / denominator);
   41003                               #        int alpha = color.getAlpha();
   41004                               #        if (alpha != 255) {
   41005                               #          result.setAlpha(
   41006                               #              FloatValue
   41007                               #                  .newBuilder()
   41008                               #                  .setValue(((float) alpha) / denominator)
   41009                               #                  .build());
   41010                               #        }
   41011                               #        return resultBuilder.build();
   41012                               #      }
   41013                               #      // ...
   41014                               #
   41015                               # Example (iOS / Obj-C):
   41016                               #
   41017                               #      // ...
   41018                               #      static UIColor* fromProto(Color* protocolor) {
   41019                               #         float red = [protocolor red];
   41020                               #         float green = [protocolor green];
   41021                               #         float blue = [protocolor blue];
   41022                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   41023                               #         float alpha = 1.0;
   41024                               #         if (alpha_wrapper != nil) {
   41025                               #           alpha = [alpha_wrapper value];
   41026                               #         }
   41027                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   41028                               #      }
   41029                               #
   41030                               #      static Color* toProto(UIColor* color) {
   41031                               #          CGFloat red, green, blue, alpha;
   41032                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   41033                               #            return nil;
   41034                               #          }
   41035                               #          Color* result = [Color alloc] init];
   41036                               #          [result setRed:red];
   41037                               #          [result setGreen:green];
   41038                               #          [result setBlue:blue];
   41039                               #          if (alpha <= 0.9999) {
   41040                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   41041                               #          }
   41042                               #          [result autorelease];
   41043                               #          return result;
   41044                               #     }
   41045                               #     // ...
   41046                               #
   41047                               #  Example (JavaScript):
   41048                               #
   41049                               #     // ...
   41050                               #
   41051                               #     var protoToCssColor = function(rgb_color) {
   41052                               #        var redFrac = rgb_color.red || 0.0;
   41053                               #        var greenFrac = rgb_color.green || 0.0;
   41054                               #        var blueFrac = rgb_color.blue || 0.0;
   41055                               #        var red = Math.floor(redFrac * 255);
   41056                               #        var green = Math.floor(greenFrac * 255);
   41057                               #        var blue = Math.floor(blueFrac * 255);
   41058                               #
   41059                               #        if (!('alpha' in rgb_color)) {
   41060                               #           return rgbToCssColor_(red, green, blue);
   41061                               #        }
   41062                               #
   41063                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   41064                               #        var rgbParams = [red, green, blue].join(',');
   41065                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   41066                               #     };
   41067                               #
   41068                               #     var rgbToCssColor_ = function(red, green, blue) {
   41069                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   41070                               #       var hexString = rgbNumber.toString(16);
   41071                               #       var missingZeros = 6 - hexString.length;
   41072                               #       var resultBuilder = ['#'];
   41073                               #       for (var i = 0; i < missingZeros; i++) {
   41074                               #          resultBuilder.push('0');
   41075                               #       }
   41076                               #       resultBuilder.push(hexString);
   41077                               #       return resultBuilder.join('');
   41078                               #     };
   41079                               #
   41080                               #     // ...
   41081                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   41082                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   41083                                 # the final pixel color is defined by the equation:
   41084                                 #
   41085                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   41086                                 #
   41087                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   41088                                 # a value of 0.0 corresponds to a completely transparent color. This
   41089                                 # uses a wrapper message rather than a simple float scalar so that it is
   41090                                 # possible to distinguish between a default value and the value being unset.
   41091                                 # If omitted, this color object is to be rendered as a solid color
   41092                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   41093                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   41094                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   41095                           },
   41096                           "width": 42, # The width of the border, in pixels.
   41097                               # Deprecated; the width is determined by the "style" field.
   41098                           "style": "A String", # The style of the border.
   41099                         },
   41100                         "bottom": { # A border along a cell. # The bottom border of the cell.
   41101                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   41102                               # for simplicity of conversion to/from color representations in various
   41103                               # languages over compactness; for example, the fields of this representation
   41104                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   41105                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   41106                               # method in iOS; and, with just a little work, it can be easily formatted into
   41107                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   41108                               #
   41109                               # Example (Java):
   41110                               #
   41111                               #      import com.google.type.Color;
   41112                               #
   41113                               #      // ...
   41114                               #      public static java.awt.Color fromProto(Color protocolor) {
   41115                               #        float alpha = protocolor.hasAlpha()
   41116                               #            ? protocolor.getAlpha().getValue()
   41117                               #            : 1.0;
   41118                               #
   41119                               #        return new java.awt.Color(
   41120                               #            protocolor.getRed(),
   41121                               #            protocolor.getGreen(),
   41122                               #            protocolor.getBlue(),
   41123                               #            alpha);
   41124                               #      }
   41125                               #
   41126                               #      public static Color toProto(java.awt.Color color) {
   41127                               #        float red = (float) color.getRed();
   41128                               #        float green = (float) color.getGreen();
   41129                               #        float blue = (float) color.getBlue();
   41130                               #        float denominator = 255.0;
   41131                               #        Color.Builder resultBuilder =
   41132                               #            Color
   41133                               #                .newBuilder()
   41134                               #                .setRed(red / denominator)
   41135                               #                .setGreen(green / denominator)
   41136                               #                .setBlue(blue / denominator);
   41137                               #        int alpha = color.getAlpha();
   41138                               #        if (alpha != 255) {
   41139                               #          result.setAlpha(
   41140                               #              FloatValue
   41141                               #                  .newBuilder()
   41142                               #                  .setValue(((float) alpha) / denominator)
   41143                               #                  .build());
   41144                               #        }
   41145                               #        return resultBuilder.build();
   41146                               #      }
   41147                               #      // ...
   41148                               #
   41149                               # Example (iOS / Obj-C):
   41150                               #
   41151                               #      // ...
   41152                               #      static UIColor* fromProto(Color* protocolor) {
   41153                               #         float red = [protocolor red];
   41154                               #         float green = [protocolor green];
   41155                               #         float blue = [protocolor blue];
   41156                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   41157                               #         float alpha = 1.0;
   41158                               #         if (alpha_wrapper != nil) {
   41159                               #           alpha = [alpha_wrapper value];
   41160                               #         }
   41161                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   41162                               #      }
   41163                               #
   41164                               #      static Color* toProto(UIColor* color) {
   41165                               #          CGFloat red, green, blue, alpha;
   41166                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   41167                               #            return nil;
   41168                               #          }
   41169                               #          Color* result = [Color alloc] init];
   41170                               #          [result setRed:red];
   41171                               #          [result setGreen:green];
   41172                               #          [result setBlue:blue];
   41173                               #          if (alpha <= 0.9999) {
   41174                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   41175                               #          }
   41176                               #          [result autorelease];
   41177                               #          return result;
   41178                               #     }
   41179                               #     // ...
   41180                               #
   41181                               #  Example (JavaScript):
   41182                               #
   41183                               #     // ...
   41184                               #
   41185                               #     var protoToCssColor = function(rgb_color) {
   41186                               #        var redFrac = rgb_color.red || 0.0;
   41187                               #        var greenFrac = rgb_color.green || 0.0;
   41188                               #        var blueFrac = rgb_color.blue || 0.0;
   41189                               #        var red = Math.floor(redFrac * 255);
   41190                               #        var green = Math.floor(greenFrac * 255);
   41191                               #        var blue = Math.floor(blueFrac * 255);
   41192                               #
   41193                               #        if (!('alpha' in rgb_color)) {
   41194                               #           return rgbToCssColor_(red, green, blue);
   41195                               #        }
   41196                               #
   41197                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   41198                               #        var rgbParams = [red, green, blue].join(',');
   41199                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   41200                               #     };
   41201                               #
   41202                               #     var rgbToCssColor_ = function(red, green, blue) {
   41203                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   41204                               #       var hexString = rgbNumber.toString(16);
   41205                               #       var missingZeros = 6 - hexString.length;
   41206                               #       var resultBuilder = ['#'];
   41207                               #       for (var i = 0; i < missingZeros; i++) {
   41208                               #          resultBuilder.push('0');
   41209                               #       }
   41210                               #       resultBuilder.push(hexString);
   41211                               #       return resultBuilder.join('');
   41212                               #     };
   41213                               #
   41214                               #     // ...
   41215                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   41216                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   41217                                 # the final pixel color is defined by the equation:
   41218                                 #
   41219                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   41220                                 #
   41221                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   41222                                 # a value of 0.0 corresponds to a completely transparent color. This
   41223                                 # uses a wrapper message rather than a simple float scalar so that it is
   41224                                 # possible to distinguish between a default value and the value being unset.
   41225                                 # If omitted, this color object is to be rendered as a solid color
   41226                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   41227                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   41228                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   41229                           },
   41230                           "width": 42, # The width of the border, in pixels.
   41231                               # Deprecated; the width is determined by the "style" field.
   41232                           "style": "A String", # The style of the border.
   41233                         },
   41234                         "left": { # A border along a cell. # The left border of the cell.
   41235                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   41236                               # for simplicity of conversion to/from color representations in various
   41237                               # languages over compactness; for example, the fields of this representation
   41238                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   41239                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   41240                               # method in iOS; and, with just a little work, it can be easily formatted into
   41241                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   41242                               #
   41243                               # Example (Java):
   41244                               #
   41245                               #      import com.google.type.Color;
   41246                               #
   41247                               #      // ...
   41248                               #      public static java.awt.Color fromProto(Color protocolor) {
   41249                               #        float alpha = protocolor.hasAlpha()
   41250                               #            ? protocolor.getAlpha().getValue()
   41251                               #            : 1.0;
   41252                               #
   41253                               #        return new java.awt.Color(
   41254                               #            protocolor.getRed(),
   41255                               #            protocolor.getGreen(),
   41256                               #            protocolor.getBlue(),
   41257                               #            alpha);
   41258                               #      }
   41259                               #
   41260                               #      public static Color toProto(java.awt.Color color) {
   41261                               #        float red = (float) color.getRed();
   41262                               #        float green = (float) color.getGreen();
   41263                               #        float blue = (float) color.getBlue();
   41264                               #        float denominator = 255.0;
   41265                               #        Color.Builder resultBuilder =
   41266                               #            Color
   41267                               #                .newBuilder()
   41268                               #                .setRed(red / denominator)
   41269                               #                .setGreen(green / denominator)
   41270                               #                .setBlue(blue / denominator);
   41271                               #        int alpha = color.getAlpha();
   41272                               #        if (alpha != 255) {
   41273                               #          result.setAlpha(
   41274                               #              FloatValue
   41275                               #                  .newBuilder()
   41276                               #                  .setValue(((float) alpha) / denominator)
   41277                               #                  .build());
   41278                               #        }
   41279                               #        return resultBuilder.build();
   41280                               #      }
   41281                               #      // ...
   41282                               #
   41283                               # Example (iOS / Obj-C):
   41284                               #
   41285                               #      // ...
   41286                               #      static UIColor* fromProto(Color* protocolor) {
   41287                               #         float red = [protocolor red];
   41288                               #         float green = [protocolor green];
   41289                               #         float blue = [protocolor blue];
   41290                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   41291                               #         float alpha = 1.0;
   41292                               #         if (alpha_wrapper != nil) {
   41293                               #           alpha = [alpha_wrapper value];
   41294                               #         }
   41295                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   41296                               #      }
   41297                               #
   41298                               #      static Color* toProto(UIColor* color) {
   41299                               #          CGFloat red, green, blue, alpha;
   41300                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   41301                               #            return nil;
   41302                               #          }
   41303                               #          Color* result = [Color alloc] init];
   41304                               #          [result setRed:red];
   41305                               #          [result setGreen:green];
   41306                               #          [result setBlue:blue];
   41307                               #          if (alpha <= 0.9999) {
   41308                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   41309                               #          }
   41310                               #          [result autorelease];
   41311                               #          return result;
   41312                               #     }
   41313                               #     // ...
   41314                               #
   41315                               #  Example (JavaScript):
   41316                               #
   41317                               #     // ...
   41318                               #
   41319                               #     var protoToCssColor = function(rgb_color) {
   41320                               #        var redFrac = rgb_color.red || 0.0;
   41321                               #        var greenFrac = rgb_color.green || 0.0;
   41322                               #        var blueFrac = rgb_color.blue || 0.0;
   41323                               #        var red = Math.floor(redFrac * 255);
   41324                               #        var green = Math.floor(greenFrac * 255);
   41325                               #        var blue = Math.floor(blueFrac * 255);
   41326                               #
   41327                               #        if (!('alpha' in rgb_color)) {
   41328                               #           return rgbToCssColor_(red, green, blue);
   41329                               #        }
   41330                               #
   41331                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   41332                               #        var rgbParams = [red, green, blue].join(',');
   41333                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   41334                               #     };
   41335                               #
   41336                               #     var rgbToCssColor_ = function(red, green, blue) {
   41337                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   41338                               #       var hexString = rgbNumber.toString(16);
   41339                               #       var missingZeros = 6 - hexString.length;
   41340                               #       var resultBuilder = ['#'];
   41341                               #       for (var i = 0; i < missingZeros; i++) {
   41342                               #          resultBuilder.push('0');
   41343                               #       }
   41344                               #       resultBuilder.push(hexString);
   41345                               #       return resultBuilder.join('');
   41346                               #     };
   41347                               #
   41348                               #     // ...
   41349                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   41350                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   41351                                 # the final pixel color is defined by the equation:
   41352                                 #
   41353                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   41354                                 #
   41355                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   41356                                 # a value of 0.0 corresponds to a completely transparent color. This
   41357                                 # uses a wrapper message rather than a simple float scalar so that it is
   41358                                 # possible to distinguish between a default value and the value being unset.
   41359                                 # If omitted, this color object is to be rendered as a solid color
   41360                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   41361                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   41362                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   41363                           },
   41364                           "width": 42, # The width of the border, in pixels.
   41365                               # Deprecated; the width is determined by the "style" field.
   41366                           "style": "A String", # The style of the border.
   41367                         },
   41368                       },
   41369                       "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   41370                     },
   41371                     "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
   41372                         #
   41373                         # When writing, the new data validation rule will overwrite any prior rule.
   41374                       "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
   41375                           # If true, "List" conditions will show a dropdown.
   41376                       "strict": True or False, # True if invalid data should be rejected.
   41377                       "inputMessage": "A String", # A message to show the user when adding data to the cell.
   41378                       "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
   41379                           # BooleanConditions are used by conditional formatting,
   41380                           # data validation, and the criteria in filters.
   41381                         "values": [ # The values of the condition. The number of supported values depends
   41382                             # on the condition type.  Some support zero values,
   41383                             # others one or two values,
   41384                             # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   41385                           { # The value of the condition.
   41386                             "relativeDate": "A String", # A relative date (based on the current date).
   41387                                 # Valid only if the type is
   41388                                 # DATE_BEFORE,
   41389                                 # DATE_AFTER,
   41390                                 # DATE_ON_OR_BEFORE or
   41391                                 # DATE_ON_OR_AFTER.
   41392                                 #
   41393                                 # Relative dates are not supported in data validation.
   41394                                 # They are supported only in conditional formatting and
   41395                                 # conditional filters.
   41396                             "userEnteredValue": "A String", # A value the condition is based on.
   41397                                 # The value will be parsed as if the user typed into a cell.
   41398                                 # Formulas are supported (and must begin with an `=`).
   41399                           },
   41400                         ],
   41401                         "type": "A String", # The type of condition.
   41402                       },
   41403                     },
   41404                     "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
   41405                         # on user entered strings, not formulas, bools, or numbers.
   41406                         # Runs start at specific indexes in the text and continue until the next
   41407                         # run. Properties of a run will continue unless explicitly changed
   41408                         # in a subsequent run (and properties of the first run will continue
   41409                         # the properties of the cell unless explicitly changed).
   41410                         #
   41411                         # When writing, the new runs will overwrite any prior runs.  When writing a
   41412                         # new user_entered_value, previous runs will be erased.
   41413                       { # A run of a text format. The format of this run continues until the start
   41414                           # index of the next run.
   41415                           # When updating, all fields must be set.
   41416                         "startIndex": 42, # The character index where this run starts.
   41417                         "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
   41418                             # Absent values indicate that the field isn't specified.
   41419                           "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   41420                               # for simplicity of conversion to/from color representations in various
   41421                               # languages over compactness; for example, the fields of this representation
   41422                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   41423                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   41424                               # method in iOS; and, with just a little work, it can be easily formatted into
   41425                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   41426                               #
   41427                               # Example (Java):
   41428                               #
   41429                               #      import com.google.type.Color;
   41430                               #
   41431                               #      // ...
   41432                               #      public static java.awt.Color fromProto(Color protocolor) {
   41433                               #        float alpha = protocolor.hasAlpha()
   41434                               #            ? protocolor.getAlpha().getValue()
   41435                               #            : 1.0;
   41436                               #
   41437                               #        return new java.awt.Color(
   41438                               #            protocolor.getRed(),
   41439                               #            protocolor.getGreen(),
   41440                               #            protocolor.getBlue(),
   41441                               #            alpha);
   41442                               #      }
   41443                               #
   41444                               #      public static Color toProto(java.awt.Color color) {
   41445                               #        float red = (float) color.getRed();
   41446                               #        float green = (float) color.getGreen();
   41447                               #        float blue = (float) color.getBlue();
   41448                               #        float denominator = 255.0;
   41449                               #        Color.Builder resultBuilder =
   41450                               #            Color
   41451                               #                .newBuilder()
   41452                               #                .setRed(red / denominator)
   41453                               #                .setGreen(green / denominator)
   41454                               #                .setBlue(blue / denominator);
   41455                               #        int alpha = color.getAlpha();
   41456                               #        if (alpha != 255) {
   41457                               #          result.setAlpha(
   41458                               #              FloatValue
   41459                               #                  .newBuilder()
   41460                               #                  .setValue(((float) alpha) / denominator)
   41461                               #                  .build());
   41462                               #        }
   41463                               #        return resultBuilder.build();
   41464                               #      }
   41465                               #      // ...
   41466                               #
   41467                               # Example (iOS / Obj-C):
   41468                               #
   41469                               #      // ...
   41470                               #      static UIColor* fromProto(Color* protocolor) {
   41471                               #         float red = [protocolor red];
   41472                               #         float green = [protocolor green];
   41473                               #         float blue = [protocolor blue];
   41474                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   41475                               #         float alpha = 1.0;
   41476                               #         if (alpha_wrapper != nil) {
   41477                               #           alpha = [alpha_wrapper value];
   41478                               #         }
   41479                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   41480                               #      }
   41481                               #
   41482                               #      static Color* toProto(UIColor* color) {
   41483                               #          CGFloat red, green, blue, alpha;
   41484                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   41485                               #            return nil;
   41486                               #          }
   41487                               #          Color* result = [Color alloc] init];
   41488                               #          [result setRed:red];
   41489                               #          [result setGreen:green];
   41490                               #          [result setBlue:blue];
   41491                               #          if (alpha <= 0.9999) {
   41492                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   41493                               #          }
   41494                               #          [result autorelease];
   41495                               #          return result;
   41496                               #     }
   41497                               #     // ...
   41498                               #
   41499                               #  Example (JavaScript):
   41500                               #
   41501                               #     // ...
   41502                               #
   41503                               #     var protoToCssColor = function(rgb_color) {
   41504                               #        var redFrac = rgb_color.red || 0.0;
   41505                               #        var greenFrac = rgb_color.green || 0.0;
   41506                               #        var blueFrac = rgb_color.blue || 0.0;
   41507                               #        var red = Math.floor(redFrac * 255);
   41508                               #        var green = Math.floor(greenFrac * 255);
   41509                               #        var blue = Math.floor(blueFrac * 255);
   41510                               #
   41511                               #        if (!('alpha' in rgb_color)) {
   41512                               #           return rgbToCssColor_(red, green, blue);
   41513                               #        }
   41514                               #
   41515                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   41516                               #        var rgbParams = [red, green, blue].join(',');
   41517                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   41518                               #     };
   41519                               #
   41520                               #     var rgbToCssColor_ = function(red, green, blue) {
   41521                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   41522                               #       var hexString = rgbNumber.toString(16);
   41523                               #       var missingZeros = 6 - hexString.length;
   41524                               #       var resultBuilder = ['#'];
   41525                               #       for (var i = 0; i < missingZeros; i++) {
   41526                               #          resultBuilder.push('0');
   41527                               #       }
   41528                               #       resultBuilder.push(hexString);
   41529                               #       return resultBuilder.join('');
   41530                               #     };
   41531                               #
   41532                               #     // ...
   41533                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   41534                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   41535                                 # the final pixel color is defined by the equation:
   41536                                 #
   41537                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   41538                                 #
   41539                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   41540                                 # a value of 0.0 corresponds to a completely transparent color. This
   41541                                 # uses a wrapper message rather than a simple float scalar so that it is
   41542                                 # possible to distinguish between a default value and the value being unset.
   41543                                 # If omitted, this color object is to be rendered as a solid color
   41544                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   41545                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   41546                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   41547                           },
   41548                           "bold": True or False, # True if the text is bold.
   41549                           "strikethrough": True or False, # True if the text has a strikethrough.
   41550                           "fontFamily": "A String", # The font family.
   41551                           "fontSize": 42, # The size of the font.
   41552                           "italic": True or False, # True if the text is italicized.
   41553                           "underline": True or False, # True if the text is underlined.
   41554                         },
   41555                       },
   41556                     ],
   41557                   },
   41558                 ],
   41559               },
   41560             ],
   41561             "startRow": 42, # The first row this GridData refers to, zero-based.
   41562             "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
   41563                 # in start_column.
   41564               { # Properties about a dimension.
   41565                 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
   41566                 "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
   41567                 "hiddenByFilter": True or False, # True if this dimension is being filtered.
   41568                     # This field is read-only.
   41569               },
   41570             ],
   41571           },
   41572         ],
   41573         "properties": { # Properties of a sheet. # The properties of the sheet.
   41574           "sheetType": "A String", # The type of sheet. Defaults to GRID.
   41575               # This field cannot be changed once set.
   41576           "index": 42, # The index of the sheet within the spreadsheet.
   41577               # When adding or updating sheet properties, if this field
   41578               # is excluded then the sheet will be added or moved to the end
   41579               # of the sheet list. When updating sheet indices or inserting
   41580               # sheets, movement is considered in "before the move" indexes.
   41581               # For example, if there were 3 sheets (S1, S2, S3) in order to
   41582               # move S1 ahead of S2 the index would have to be set to 2. A sheet
   41583               # index update request will be ignored if the requested index is
   41584               # identical to the sheets current index or if the requested new
   41585               # index is equal to the current sheet index + 1.
   41586           "title": "A String", # The name of the sheet.
   41587           "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
   41588               # (If the sheet is an object sheet, containing a chart or image, then
   41589               # this field will be absent.)
   41590               # When writing it is an error to set any grid properties on non-grid sheets.
   41591             "columnCount": 42, # The number of columns in the grid.
   41592             "frozenRowCount": 42, # The number of rows that are frozen in the grid.
   41593             "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
   41594             "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
   41595             "rowCount": 42, # The number of rows in the grid.
   41596           },
   41597           "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
   41598           "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
   41599               # for simplicity of conversion to/from color representations in various
   41600               # languages over compactness; for example, the fields of this representation
   41601               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   41602               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   41603               # method in iOS; and, with just a little work, it can be easily formatted into
   41604               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   41605               #
   41606               # Example (Java):
   41607               #
   41608               #      import com.google.type.Color;
   41609               #
   41610               #      // ...
   41611               #      public static java.awt.Color fromProto(Color protocolor) {
   41612               #        float alpha = protocolor.hasAlpha()
   41613               #            ? protocolor.getAlpha().getValue()
   41614               #            : 1.0;
   41615               #
   41616               #        return new java.awt.Color(
   41617               #            protocolor.getRed(),
   41618               #            protocolor.getGreen(),
   41619               #            protocolor.getBlue(),
   41620               #            alpha);
   41621               #      }
   41622               #
   41623               #      public static Color toProto(java.awt.Color color) {
   41624               #        float red = (float) color.getRed();
   41625               #        float green = (float) color.getGreen();
   41626               #        float blue = (float) color.getBlue();
   41627               #        float denominator = 255.0;
   41628               #        Color.Builder resultBuilder =
   41629               #            Color
   41630               #                .newBuilder()
   41631               #                .setRed(red / denominator)
   41632               #                .setGreen(green / denominator)
   41633               #                .setBlue(blue / denominator);
   41634               #        int alpha = color.getAlpha();
   41635               #        if (alpha != 255) {
   41636               #          result.setAlpha(
   41637               #              FloatValue
   41638               #                  .newBuilder()
   41639               #                  .setValue(((float) alpha) / denominator)
   41640               #                  .build());
   41641               #        }
   41642               #        return resultBuilder.build();
   41643               #      }
   41644               #      // ...
   41645               #
   41646               # Example (iOS / Obj-C):
   41647               #
   41648               #      // ...
   41649               #      static UIColor* fromProto(Color* protocolor) {
   41650               #         float red = [protocolor red];
   41651               #         float green = [protocolor green];
   41652               #         float blue = [protocolor blue];
   41653               #         FloatValue* alpha_wrapper = [protocolor alpha];
   41654               #         float alpha = 1.0;
   41655               #         if (alpha_wrapper != nil) {
   41656               #           alpha = [alpha_wrapper value];
   41657               #         }
   41658               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   41659               #      }
   41660               #
   41661               #      static Color* toProto(UIColor* color) {
   41662               #          CGFloat red, green, blue, alpha;
   41663               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   41664               #            return nil;
   41665               #          }
   41666               #          Color* result = [Color alloc] init];
   41667               #          [result setRed:red];
   41668               #          [result setGreen:green];
   41669               #          [result setBlue:blue];
   41670               #          if (alpha <= 0.9999) {
   41671               #            [result setAlpha:floatWrapperWithValue(alpha)];
   41672               #          }
   41673               #          [result autorelease];
   41674               #          return result;
   41675               #     }
   41676               #     // ...
   41677               #
   41678               #  Example (JavaScript):
   41679               #
   41680               #     // ...
   41681               #
   41682               #     var protoToCssColor = function(rgb_color) {
   41683               #        var redFrac = rgb_color.red || 0.0;
   41684               #        var greenFrac = rgb_color.green || 0.0;
   41685               #        var blueFrac = rgb_color.blue || 0.0;
   41686               #        var red = Math.floor(redFrac * 255);
   41687               #        var green = Math.floor(greenFrac * 255);
   41688               #        var blue = Math.floor(blueFrac * 255);
   41689               #
   41690               #        if (!('alpha' in rgb_color)) {
   41691               #           return rgbToCssColor_(red, green, blue);
   41692               #        }
   41693               #
   41694               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   41695               #        var rgbParams = [red, green, blue].join(',');
   41696               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   41697               #     };
   41698               #
   41699               #     var rgbToCssColor_ = function(red, green, blue) {
   41700               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   41701               #       var hexString = rgbNumber.toString(16);
   41702               #       var missingZeros = 6 - hexString.length;
   41703               #       var resultBuilder = ['#'];
   41704               #       for (var i = 0; i < missingZeros; i++) {
   41705               #          resultBuilder.push('0');
   41706               #       }
   41707               #       resultBuilder.push(hexString);
   41708               #       return resultBuilder.join('');
   41709               #     };
   41710               #
   41711               #     // ...
   41712             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   41713             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   41714                 # the final pixel color is defined by the equation:
   41715                 #
   41716                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   41717                 #
   41718                 # This means that a value of 1.0 corresponds to a solid color, whereas
   41719                 # a value of 0.0 corresponds to a completely transparent color. This
   41720                 # uses a wrapper message rather than a simple float scalar so that it is
   41721                 # possible to distinguish between a default value and the value being unset.
   41722                 # If omitted, this color object is to be rendered as a solid color
   41723                 # (as if the alpha value had been explicitly given with a value of 1.0).
   41724             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   41725             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   41726           },
   41727           "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
   41728           "sheetId": 42, # The ID of the sheet. Must be non-negative.
   41729               # This field cannot be changed once set.
   41730         },
   41731       },
   41732     ],
   41733     "spreadsheetUrl": "A String", # The url of the spreadsheet.
   41734         # This field is read-only.
   41735   }</pre>
   41736 </div>
   41737 
   41738 <div class="method">
   41739     <code class="details" id="get">get(spreadsheetId, ranges=None, x__xgafv=None, includeGridData=None)</code>
   41740   <pre>Returns the spreadsheet at the given ID.
   41741 The caller must specify the spreadsheet ID.
   41742 
   41743 By default, data within grids will not be returned.
   41744 You can include grid data one of two ways:
   41745 
   41746 * Specify a field mask listing your desired fields using the `fields` URL
   41747 parameter in HTTP
   41748 
   41749 * Set the includeGridData
   41750 URL parameter to true.  If a field mask is set, the `includeGridData`
   41751 parameter is ignored
   41752 
   41753 For large spreadsheets, it is recommended to retrieve only the specific
   41754 fields of the spreadsheet that you want.
   41755 
   41756 To retrieve only subsets of the spreadsheet, use the
   41757 ranges URL parameter.
   41758 Multiple ranges can be specified.  Limiting the range will
   41759 return only the portions of the spreadsheet that intersect the requested
   41760 ranges. Ranges are specified using A1 notation.
   41761 
   41762 Args:
   41763   spreadsheetId: string, The spreadsheet to request. (required)
   41764   ranges: string, The ranges to retrieve from the spreadsheet. (repeated)
   41765   x__xgafv: string, V1 error format.
   41766     Allowed values
   41767       1 - v1 error format
   41768       2 - v2 error format
   41769   includeGridData: boolean, True if grid data should be returned.
   41770 This parameter is ignored if a field mask was set in the request.
   41771 
   41772 Returns:
   41773   An object of the form:
   41774 
   41775     { # Resource that represents a spreadsheet.
   41776     "spreadsheetId": "A String", # The ID of the spreadsheet.
   41777         # This field is read-only.
   41778     "namedRanges": [ # The named ranges defined in a spreadsheet.
   41779       { # A named range.
   41780         "namedRangeId": "A String", # The ID of the named range.
   41781         "range": { # A range on a sheet. # The range this represents.
   41782             # All indexes are zero-based.
   41783             # Indexes are half open, e.g the start index is inclusive
   41784             # and the end index is exclusive -- [start_index, end_index).
   41785             # Missing indexes indicate the range is unbounded on that side.
   41786             #
   41787             # For example, if `"Sheet1"` is sheet ID 0, then:
   41788             #
   41789             #   `Sheet1!A1:A1 == sheet_id: 0,
   41790             #                   start_row_index: 0, end_row_index: 1,
   41791             #                   start_column_index: 0, end_column_index: 1`
   41792             #
   41793             #   `Sheet1!A3:B4 == sheet_id: 0,
   41794             #                   start_row_index: 2, end_row_index: 4,
   41795             #                   start_column_index: 0, end_column_index: 2`
   41796             #
   41797             #   `Sheet1!A:B == sheet_id: 0,
   41798             #                 start_column_index: 0, end_column_index: 2`
   41799             #
   41800             #   `Sheet1!A5:B == sheet_id: 0,
   41801             #                  start_row_index: 4,
   41802             #                  start_column_index: 0, end_column_index: 2`
   41803             #
   41804             #   `Sheet1 == sheet_id:0`
   41805             #
   41806             # The start index must always be less than or equal to the end index.
   41807             # If the start index equals the end index, then the range is empty.
   41808             # Empty ranges are typically not meaningful and are usually rendered in the
   41809             # UI as `#REF!`.
   41810           "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   41811           "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   41812           "sheetId": 42, # The sheet this range is on.
   41813           "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   41814           "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   41815         },
   41816         "name": "A String", # The name of the named range.
   41817       },
   41818     ],
   41819     "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
   41820       "title": "A String", # The title of the spreadsheet.
   41821       "locale": "A String", # The locale of the spreadsheet in one of the following formats:
   41822           #
   41823           # * an ISO 639-1 language code such as `en`
   41824           #
   41825           # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
   41826           #
   41827           # * a combination of the ISO language code and country code, such as `en_US`
   41828           #
   41829           # Note: when updating this field, not all locales/languages are supported.
   41830       "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
   41831           # CellData.effectiveFormat will not be set if the
   41832           # cell's format is equal to this default format.
   41833           # This field is read-only.
   41834         "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   41835           "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   41836               # the user's locale will be used if necessary for the given type.
   41837               # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   41838               # information about the supported patterns.
   41839           "type": "A String", # The type of the number format.
   41840               # When writing, this field must be set.
   41841         },
   41842         "textDirection": "A String", # The direction of the text in the cell.
   41843         "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   41844             # When updating padding, every field must be specified.
   41845           "top": 42, # The top padding of the cell.
   41846           "right": 42, # The right padding of the cell.
   41847           "bottom": 42, # The bottom padding of the cell.
   41848           "left": 42, # The left padding of the cell.
   41849         },
   41850         "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   41851         "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   41852             # for simplicity of conversion to/from color representations in various
   41853             # languages over compactness; for example, the fields of this representation
   41854             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   41855             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   41856             # method in iOS; and, with just a little work, it can be easily formatted into
   41857             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   41858             #
   41859             # Example (Java):
   41860             #
   41861             #      import com.google.type.Color;
   41862             #
   41863             #      // ...
   41864             #      public static java.awt.Color fromProto(Color protocolor) {
   41865             #        float alpha = protocolor.hasAlpha()
   41866             #            ? protocolor.getAlpha().getValue()
   41867             #            : 1.0;
   41868             #
   41869             #        return new java.awt.Color(
   41870             #            protocolor.getRed(),
   41871             #            protocolor.getGreen(),
   41872             #            protocolor.getBlue(),
   41873             #            alpha);
   41874             #      }
   41875             #
   41876             #      public static Color toProto(java.awt.Color color) {
   41877             #        float red = (float) color.getRed();
   41878             #        float green = (float) color.getGreen();
   41879             #        float blue = (float) color.getBlue();
   41880             #        float denominator = 255.0;
   41881             #        Color.Builder resultBuilder =
   41882             #            Color
   41883             #                .newBuilder()
   41884             #                .setRed(red / denominator)
   41885             #                .setGreen(green / denominator)
   41886             #                .setBlue(blue / denominator);
   41887             #        int alpha = color.getAlpha();
   41888             #        if (alpha != 255) {
   41889             #          result.setAlpha(
   41890             #              FloatValue
   41891             #                  .newBuilder()
   41892             #                  .setValue(((float) alpha) / denominator)
   41893             #                  .build());
   41894             #        }
   41895             #        return resultBuilder.build();
   41896             #      }
   41897             #      // ...
   41898             #
   41899             # Example (iOS / Obj-C):
   41900             #
   41901             #      // ...
   41902             #      static UIColor* fromProto(Color* protocolor) {
   41903             #         float red = [protocolor red];
   41904             #         float green = [protocolor green];
   41905             #         float blue = [protocolor blue];
   41906             #         FloatValue* alpha_wrapper = [protocolor alpha];
   41907             #         float alpha = 1.0;
   41908             #         if (alpha_wrapper != nil) {
   41909             #           alpha = [alpha_wrapper value];
   41910             #         }
   41911             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   41912             #      }
   41913             #
   41914             #      static Color* toProto(UIColor* color) {
   41915             #          CGFloat red, green, blue, alpha;
   41916             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   41917             #            return nil;
   41918             #          }
   41919             #          Color* result = [Color alloc] init];
   41920             #          [result setRed:red];
   41921             #          [result setGreen:green];
   41922             #          [result setBlue:blue];
   41923             #          if (alpha <= 0.9999) {
   41924             #            [result setAlpha:floatWrapperWithValue(alpha)];
   41925             #          }
   41926             #          [result autorelease];
   41927             #          return result;
   41928             #     }
   41929             #     // ...
   41930             #
   41931             #  Example (JavaScript):
   41932             #
   41933             #     // ...
   41934             #
   41935             #     var protoToCssColor = function(rgb_color) {
   41936             #        var redFrac = rgb_color.red || 0.0;
   41937             #        var greenFrac = rgb_color.green || 0.0;
   41938             #        var blueFrac = rgb_color.blue || 0.0;
   41939             #        var red = Math.floor(redFrac * 255);
   41940             #        var green = Math.floor(greenFrac * 255);
   41941             #        var blue = Math.floor(blueFrac * 255);
   41942             #
   41943             #        if (!('alpha' in rgb_color)) {
   41944             #           return rgbToCssColor_(red, green, blue);
   41945             #        }
   41946             #
   41947             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   41948             #        var rgbParams = [red, green, blue].join(',');
   41949             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   41950             #     };
   41951             #
   41952             #     var rgbToCssColor_ = function(red, green, blue) {
   41953             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   41954             #       var hexString = rgbNumber.toString(16);
   41955             #       var missingZeros = 6 - hexString.length;
   41956             #       var resultBuilder = ['#'];
   41957             #       for (var i = 0; i < missingZeros; i++) {
   41958             #          resultBuilder.push('0');
   41959             #       }
   41960             #       resultBuilder.push(hexString);
   41961             #       return resultBuilder.join('');
   41962             #     };
   41963             #
   41964             #     // ...
   41965           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   41966           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   41967               # the final pixel color is defined by the equation:
   41968               #
   41969               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   41970               #
   41971               # This means that a value of 1.0 corresponds to a solid color, whereas
   41972               # a value of 0.0 corresponds to a completely transparent color. This
   41973               # uses a wrapper message rather than a simple float scalar so that it is
   41974               # possible to distinguish between a default value and the value being unset.
   41975               # If omitted, this color object is to be rendered as a solid color
   41976               # (as if the alpha value had been explicitly given with a value of 1.0).
   41977           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   41978           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   41979         },
   41980         "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   41981         "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   41982             # Absent values indicate that the field isn't specified.
   41983           "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   41984               # for simplicity of conversion to/from color representations in various
   41985               # languages over compactness; for example, the fields of this representation
   41986               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   41987               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   41988               # method in iOS; and, with just a little work, it can be easily formatted into
   41989               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   41990               #
   41991               # Example (Java):
   41992               #
   41993               #      import com.google.type.Color;
   41994               #
   41995               #      // ...
   41996               #      public static java.awt.Color fromProto(Color protocolor) {
   41997               #        float alpha = protocolor.hasAlpha()
   41998               #            ? protocolor.getAlpha().getValue()
   41999               #            : 1.0;
   42000               #
   42001               #        return new java.awt.Color(
   42002               #            protocolor.getRed(),
   42003               #            protocolor.getGreen(),
   42004               #            protocolor.getBlue(),
   42005               #            alpha);
   42006               #      }
   42007               #
   42008               #      public static Color toProto(java.awt.Color color) {
   42009               #        float red = (float) color.getRed();
   42010               #        float green = (float) color.getGreen();
   42011               #        float blue = (float) color.getBlue();
   42012               #        float denominator = 255.0;
   42013               #        Color.Builder resultBuilder =
   42014               #            Color
   42015               #                .newBuilder()
   42016               #                .setRed(red / denominator)
   42017               #                .setGreen(green / denominator)
   42018               #                .setBlue(blue / denominator);
   42019               #        int alpha = color.getAlpha();
   42020               #        if (alpha != 255) {
   42021               #          result.setAlpha(
   42022               #              FloatValue
   42023               #                  .newBuilder()
   42024               #                  .setValue(((float) alpha) / denominator)
   42025               #                  .build());
   42026               #        }
   42027               #        return resultBuilder.build();
   42028               #      }
   42029               #      // ...
   42030               #
   42031               # Example (iOS / Obj-C):
   42032               #
   42033               #      // ...
   42034               #      static UIColor* fromProto(Color* protocolor) {
   42035               #         float red = [protocolor red];
   42036               #         float green = [protocolor green];
   42037               #         float blue = [protocolor blue];
   42038               #         FloatValue* alpha_wrapper = [protocolor alpha];
   42039               #         float alpha = 1.0;
   42040               #         if (alpha_wrapper != nil) {
   42041               #           alpha = [alpha_wrapper value];
   42042               #         }
   42043               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   42044               #      }
   42045               #
   42046               #      static Color* toProto(UIColor* color) {
   42047               #          CGFloat red, green, blue, alpha;
   42048               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   42049               #            return nil;
   42050               #          }
   42051               #          Color* result = [Color alloc] init];
   42052               #          [result setRed:red];
   42053               #          [result setGreen:green];
   42054               #          [result setBlue:blue];
   42055               #          if (alpha <= 0.9999) {
   42056               #            [result setAlpha:floatWrapperWithValue(alpha)];
   42057               #          }
   42058               #          [result autorelease];
   42059               #          return result;
   42060               #     }
   42061               #     // ...
   42062               #
   42063               #  Example (JavaScript):
   42064               #
   42065               #     // ...
   42066               #
   42067               #     var protoToCssColor = function(rgb_color) {
   42068               #        var redFrac = rgb_color.red || 0.0;
   42069               #        var greenFrac = rgb_color.green || 0.0;
   42070               #        var blueFrac = rgb_color.blue || 0.0;
   42071               #        var red = Math.floor(redFrac * 255);
   42072               #        var green = Math.floor(greenFrac * 255);
   42073               #        var blue = Math.floor(blueFrac * 255);
   42074               #
   42075               #        if (!('alpha' in rgb_color)) {
   42076               #           return rgbToCssColor_(red, green, blue);
   42077               #        }
   42078               #
   42079               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   42080               #        var rgbParams = [red, green, blue].join(',');
   42081               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   42082               #     };
   42083               #
   42084               #     var rgbToCssColor_ = function(red, green, blue) {
   42085               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   42086               #       var hexString = rgbNumber.toString(16);
   42087               #       var missingZeros = 6 - hexString.length;
   42088               #       var resultBuilder = ['#'];
   42089               #       for (var i = 0; i < missingZeros; i++) {
   42090               #          resultBuilder.push('0');
   42091               #       }
   42092               #       resultBuilder.push(hexString);
   42093               #       return resultBuilder.join('');
   42094               #     };
   42095               #
   42096               #     // ...
   42097             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   42098             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   42099                 # the final pixel color is defined by the equation:
   42100                 #
   42101                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   42102                 #
   42103                 # This means that a value of 1.0 corresponds to a solid color, whereas
   42104                 # a value of 0.0 corresponds to a completely transparent color. This
   42105                 # uses a wrapper message rather than a simple float scalar so that it is
   42106                 # possible to distinguish between a default value and the value being unset.
   42107                 # If omitted, this color object is to be rendered as a solid color
   42108                 # (as if the alpha value had been explicitly given with a value of 1.0).
   42109             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   42110             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   42111           },
   42112           "bold": True or False, # True if the text is bold.
   42113           "strikethrough": True or False, # True if the text has a strikethrough.
   42114           "fontFamily": "A String", # The font family.
   42115           "fontSize": 42, # The size of the font.
   42116           "italic": True or False, # True if the text is italicized.
   42117           "underline": True or False, # True if the text is underlined.
   42118         },
   42119         "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   42120           "angle": 42, # The angle between the standard orientation and the desired orientation.
   42121               # Measured in degrees. Valid values are between -90 and 90. Positive
   42122               # angles are angled upwards, negative are angled downwards.
   42123               #
   42124               # Note: For LTR text direction positive angles are in the counterclockwise
   42125               # direction, whereas for RTL they are in the clockwise direction
   42126           "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   42127               # characters is unchanged.
   42128               # For example:
   42129               #
   42130               #     | V |
   42131               #     | e |
   42132               #     | r |
   42133               #     | t |
   42134               #     | i |
   42135               #     | c |
   42136               #     | a |
   42137               #     | l |
   42138         },
   42139         "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   42140         "borders": { # The borders of the cell. # The borders of the cell.
   42141           "top": { # A border along a cell. # The top border of the cell.
   42142             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   42143                 # for simplicity of conversion to/from color representations in various
   42144                 # languages over compactness; for example, the fields of this representation
   42145                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   42146                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   42147                 # method in iOS; and, with just a little work, it can be easily formatted into
   42148                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   42149                 #
   42150                 # Example (Java):
   42151                 #
   42152                 #      import com.google.type.Color;
   42153                 #
   42154                 #      // ...
   42155                 #      public static java.awt.Color fromProto(Color protocolor) {
   42156                 #        float alpha = protocolor.hasAlpha()
   42157                 #            ? protocolor.getAlpha().getValue()
   42158                 #            : 1.0;
   42159                 #
   42160                 #        return new java.awt.Color(
   42161                 #            protocolor.getRed(),
   42162                 #            protocolor.getGreen(),
   42163                 #            protocolor.getBlue(),
   42164                 #            alpha);
   42165                 #      }
   42166                 #
   42167                 #      public static Color toProto(java.awt.Color color) {
   42168                 #        float red = (float) color.getRed();
   42169                 #        float green = (float) color.getGreen();
   42170                 #        float blue = (float) color.getBlue();
   42171                 #        float denominator = 255.0;
   42172                 #        Color.Builder resultBuilder =
   42173                 #            Color
   42174                 #                .newBuilder()
   42175                 #                .setRed(red / denominator)
   42176                 #                .setGreen(green / denominator)
   42177                 #                .setBlue(blue / denominator);
   42178                 #        int alpha = color.getAlpha();
   42179                 #        if (alpha != 255) {
   42180                 #          result.setAlpha(
   42181                 #              FloatValue
   42182                 #                  .newBuilder()
   42183                 #                  .setValue(((float) alpha) / denominator)
   42184                 #                  .build());
   42185                 #        }
   42186                 #        return resultBuilder.build();
   42187                 #      }
   42188                 #      // ...
   42189                 #
   42190                 # Example (iOS / Obj-C):
   42191                 #
   42192                 #      // ...
   42193                 #      static UIColor* fromProto(Color* protocolor) {
   42194                 #         float red = [protocolor red];
   42195                 #         float green = [protocolor green];
   42196                 #         float blue = [protocolor blue];
   42197                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   42198                 #         float alpha = 1.0;
   42199                 #         if (alpha_wrapper != nil) {
   42200                 #           alpha = [alpha_wrapper value];
   42201                 #         }
   42202                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   42203                 #      }
   42204                 #
   42205                 #      static Color* toProto(UIColor* color) {
   42206                 #          CGFloat red, green, blue, alpha;
   42207                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   42208                 #            return nil;
   42209                 #          }
   42210                 #          Color* result = [Color alloc] init];
   42211                 #          [result setRed:red];
   42212                 #          [result setGreen:green];
   42213                 #          [result setBlue:blue];
   42214                 #          if (alpha <= 0.9999) {
   42215                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   42216                 #          }
   42217                 #          [result autorelease];
   42218                 #          return result;
   42219                 #     }
   42220                 #     // ...
   42221                 #
   42222                 #  Example (JavaScript):
   42223                 #
   42224                 #     // ...
   42225                 #
   42226                 #     var protoToCssColor = function(rgb_color) {
   42227                 #        var redFrac = rgb_color.red || 0.0;
   42228                 #        var greenFrac = rgb_color.green || 0.0;
   42229                 #        var blueFrac = rgb_color.blue || 0.0;
   42230                 #        var red = Math.floor(redFrac * 255);
   42231                 #        var green = Math.floor(greenFrac * 255);
   42232                 #        var blue = Math.floor(blueFrac * 255);
   42233                 #
   42234                 #        if (!('alpha' in rgb_color)) {
   42235                 #           return rgbToCssColor_(red, green, blue);
   42236                 #        }
   42237                 #
   42238                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   42239                 #        var rgbParams = [red, green, blue].join(',');
   42240                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   42241                 #     };
   42242                 #
   42243                 #     var rgbToCssColor_ = function(red, green, blue) {
   42244                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   42245                 #       var hexString = rgbNumber.toString(16);
   42246                 #       var missingZeros = 6 - hexString.length;
   42247                 #       var resultBuilder = ['#'];
   42248                 #       for (var i = 0; i < missingZeros; i++) {
   42249                 #          resultBuilder.push('0');
   42250                 #       }
   42251                 #       resultBuilder.push(hexString);
   42252                 #       return resultBuilder.join('');
   42253                 #     };
   42254                 #
   42255                 #     // ...
   42256               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   42257               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   42258                   # the final pixel color is defined by the equation:
   42259                   #
   42260                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   42261                   #
   42262                   # This means that a value of 1.0 corresponds to a solid color, whereas
   42263                   # a value of 0.0 corresponds to a completely transparent color. This
   42264                   # uses a wrapper message rather than a simple float scalar so that it is
   42265                   # possible to distinguish between a default value and the value being unset.
   42266                   # If omitted, this color object is to be rendered as a solid color
   42267                   # (as if the alpha value had been explicitly given with a value of 1.0).
   42268               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   42269               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   42270             },
   42271             "width": 42, # The width of the border, in pixels.
   42272                 # Deprecated; the width is determined by the "style" field.
   42273             "style": "A String", # The style of the border.
   42274           },
   42275           "right": { # A border along a cell. # The right border of the cell.
   42276             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   42277                 # for simplicity of conversion to/from color representations in various
   42278                 # languages over compactness; for example, the fields of this representation
   42279                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   42280                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   42281                 # method in iOS; and, with just a little work, it can be easily formatted into
   42282                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   42283                 #
   42284                 # Example (Java):
   42285                 #
   42286                 #      import com.google.type.Color;
   42287                 #
   42288                 #      // ...
   42289                 #      public static java.awt.Color fromProto(Color protocolor) {
   42290                 #        float alpha = protocolor.hasAlpha()
   42291                 #            ? protocolor.getAlpha().getValue()
   42292                 #            : 1.0;
   42293                 #
   42294                 #        return new java.awt.Color(
   42295                 #            protocolor.getRed(),
   42296                 #            protocolor.getGreen(),
   42297                 #            protocolor.getBlue(),
   42298                 #            alpha);
   42299                 #      }
   42300                 #
   42301                 #      public static Color toProto(java.awt.Color color) {
   42302                 #        float red = (float) color.getRed();
   42303                 #        float green = (float) color.getGreen();
   42304                 #        float blue = (float) color.getBlue();
   42305                 #        float denominator = 255.0;
   42306                 #        Color.Builder resultBuilder =
   42307                 #            Color
   42308                 #                .newBuilder()
   42309                 #                .setRed(red / denominator)
   42310                 #                .setGreen(green / denominator)
   42311                 #                .setBlue(blue / denominator);
   42312                 #        int alpha = color.getAlpha();
   42313                 #        if (alpha != 255) {
   42314                 #          result.setAlpha(
   42315                 #              FloatValue
   42316                 #                  .newBuilder()
   42317                 #                  .setValue(((float) alpha) / denominator)
   42318                 #                  .build());
   42319                 #        }
   42320                 #        return resultBuilder.build();
   42321                 #      }
   42322                 #      // ...
   42323                 #
   42324                 # Example (iOS / Obj-C):
   42325                 #
   42326                 #      // ...
   42327                 #      static UIColor* fromProto(Color* protocolor) {
   42328                 #         float red = [protocolor red];
   42329                 #         float green = [protocolor green];
   42330                 #         float blue = [protocolor blue];
   42331                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   42332                 #         float alpha = 1.0;
   42333                 #         if (alpha_wrapper != nil) {
   42334                 #           alpha = [alpha_wrapper value];
   42335                 #         }
   42336                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   42337                 #      }
   42338                 #
   42339                 #      static Color* toProto(UIColor* color) {
   42340                 #          CGFloat red, green, blue, alpha;
   42341                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   42342                 #            return nil;
   42343                 #          }
   42344                 #          Color* result = [Color alloc] init];
   42345                 #          [result setRed:red];
   42346                 #          [result setGreen:green];
   42347                 #          [result setBlue:blue];
   42348                 #          if (alpha <= 0.9999) {
   42349                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   42350                 #          }
   42351                 #          [result autorelease];
   42352                 #          return result;
   42353                 #     }
   42354                 #     // ...
   42355                 #
   42356                 #  Example (JavaScript):
   42357                 #
   42358                 #     // ...
   42359                 #
   42360                 #     var protoToCssColor = function(rgb_color) {
   42361                 #        var redFrac = rgb_color.red || 0.0;
   42362                 #        var greenFrac = rgb_color.green || 0.0;
   42363                 #        var blueFrac = rgb_color.blue || 0.0;
   42364                 #        var red = Math.floor(redFrac * 255);
   42365                 #        var green = Math.floor(greenFrac * 255);
   42366                 #        var blue = Math.floor(blueFrac * 255);
   42367                 #
   42368                 #        if (!('alpha' in rgb_color)) {
   42369                 #           return rgbToCssColor_(red, green, blue);
   42370                 #        }
   42371                 #
   42372                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   42373                 #        var rgbParams = [red, green, blue].join(',');
   42374                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   42375                 #     };
   42376                 #
   42377                 #     var rgbToCssColor_ = function(red, green, blue) {
   42378                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   42379                 #       var hexString = rgbNumber.toString(16);
   42380                 #       var missingZeros = 6 - hexString.length;
   42381                 #       var resultBuilder = ['#'];
   42382                 #       for (var i = 0; i < missingZeros; i++) {
   42383                 #          resultBuilder.push('0');
   42384                 #       }
   42385                 #       resultBuilder.push(hexString);
   42386                 #       return resultBuilder.join('');
   42387                 #     };
   42388                 #
   42389                 #     // ...
   42390               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   42391               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   42392                   # the final pixel color is defined by the equation:
   42393                   #
   42394                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   42395                   #
   42396                   # This means that a value of 1.0 corresponds to a solid color, whereas
   42397                   # a value of 0.0 corresponds to a completely transparent color. This
   42398                   # uses a wrapper message rather than a simple float scalar so that it is
   42399                   # possible to distinguish between a default value and the value being unset.
   42400                   # If omitted, this color object is to be rendered as a solid color
   42401                   # (as if the alpha value had been explicitly given with a value of 1.0).
   42402               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   42403               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   42404             },
   42405             "width": 42, # The width of the border, in pixels.
   42406                 # Deprecated; the width is determined by the "style" field.
   42407             "style": "A String", # The style of the border.
   42408           },
   42409           "bottom": { # A border along a cell. # The bottom border of the cell.
   42410             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   42411                 # for simplicity of conversion to/from color representations in various
   42412                 # languages over compactness; for example, the fields of this representation
   42413                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   42414                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   42415                 # method in iOS; and, with just a little work, it can be easily formatted into
   42416                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   42417                 #
   42418                 # Example (Java):
   42419                 #
   42420                 #      import com.google.type.Color;
   42421                 #
   42422                 #      // ...
   42423                 #      public static java.awt.Color fromProto(Color protocolor) {
   42424                 #        float alpha = protocolor.hasAlpha()
   42425                 #            ? protocolor.getAlpha().getValue()
   42426                 #            : 1.0;
   42427                 #
   42428                 #        return new java.awt.Color(
   42429                 #            protocolor.getRed(),
   42430                 #            protocolor.getGreen(),
   42431                 #            protocolor.getBlue(),
   42432                 #            alpha);
   42433                 #      }
   42434                 #
   42435                 #      public static Color toProto(java.awt.Color color) {
   42436                 #        float red = (float) color.getRed();
   42437                 #        float green = (float) color.getGreen();
   42438                 #        float blue = (float) color.getBlue();
   42439                 #        float denominator = 255.0;
   42440                 #        Color.Builder resultBuilder =
   42441                 #            Color
   42442                 #                .newBuilder()
   42443                 #                .setRed(red / denominator)
   42444                 #                .setGreen(green / denominator)
   42445                 #                .setBlue(blue / denominator);
   42446                 #        int alpha = color.getAlpha();
   42447                 #        if (alpha != 255) {
   42448                 #          result.setAlpha(
   42449                 #              FloatValue
   42450                 #                  .newBuilder()
   42451                 #                  .setValue(((float) alpha) / denominator)
   42452                 #                  .build());
   42453                 #        }
   42454                 #        return resultBuilder.build();
   42455                 #      }
   42456                 #      // ...
   42457                 #
   42458                 # Example (iOS / Obj-C):
   42459                 #
   42460                 #      // ...
   42461                 #      static UIColor* fromProto(Color* protocolor) {
   42462                 #         float red = [protocolor red];
   42463                 #         float green = [protocolor green];
   42464                 #         float blue = [protocolor blue];
   42465                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   42466                 #         float alpha = 1.0;
   42467                 #         if (alpha_wrapper != nil) {
   42468                 #           alpha = [alpha_wrapper value];
   42469                 #         }
   42470                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   42471                 #      }
   42472                 #
   42473                 #      static Color* toProto(UIColor* color) {
   42474                 #          CGFloat red, green, blue, alpha;
   42475                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   42476                 #            return nil;
   42477                 #          }
   42478                 #          Color* result = [Color alloc] init];
   42479                 #          [result setRed:red];
   42480                 #          [result setGreen:green];
   42481                 #          [result setBlue:blue];
   42482                 #          if (alpha <= 0.9999) {
   42483                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   42484                 #          }
   42485                 #          [result autorelease];
   42486                 #          return result;
   42487                 #     }
   42488                 #     // ...
   42489                 #
   42490                 #  Example (JavaScript):
   42491                 #
   42492                 #     // ...
   42493                 #
   42494                 #     var protoToCssColor = function(rgb_color) {
   42495                 #        var redFrac = rgb_color.red || 0.0;
   42496                 #        var greenFrac = rgb_color.green || 0.0;
   42497                 #        var blueFrac = rgb_color.blue || 0.0;
   42498                 #        var red = Math.floor(redFrac * 255);
   42499                 #        var green = Math.floor(greenFrac * 255);
   42500                 #        var blue = Math.floor(blueFrac * 255);
   42501                 #
   42502                 #        if (!('alpha' in rgb_color)) {
   42503                 #           return rgbToCssColor_(red, green, blue);
   42504                 #        }
   42505                 #
   42506                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   42507                 #        var rgbParams = [red, green, blue].join(',');
   42508                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   42509                 #     };
   42510                 #
   42511                 #     var rgbToCssColor_ = function(red, green, blue) {
   42512                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   42513                 #       var hexString = rgbNumber.toString(16);
   42514                 #       var missingZeros = 6 - hexString.length;
   42515                 #       var resultBuilder = ['#'];
   42516                 #       for (var i = 0; i < missingZeros; i++) {
   42517                 #          resultBuilder.push('0');
   42518                 #       }
   42519                 #       resultBuilder.push(hexString);
   42520                 #       return resultBuilder.join('');
   42521                 #     };
   42522                 #
   42523                 #     // ...
   42524               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   42525               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   42526                   # the final pixel color is defined by the equation:
   42527                   #
   42528                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   42529                   #
   42530                   # This means that a value of 1.0 corresponds to a solid color, whereas
   42531                   # a value of 0.0 corresponds to a completely transparent color. This
   42532                   # uses a wrapper message rather than a simple float scalar so that it is
   42533                   # possible to distinguish between a default value and the value being unset.
   42534                   # If omitted, this color object is to be rendered as a solid color
   42535                   # (as if the alpha value had been explicitly given with a value of 1.0).
   42536               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   42537               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   42538             },
   42539             "width": 42, # The width of the border, in pixels.
   42540                 # Deprecated; the width is determined by the "style" field.
   42541             "style": "A String", # The style of the border.
   42542           },
   42543           "left": { # A border along a cell. # The left border of the cell.
   42544             "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   42545                 # for simplicity of conversion to/from color representations in various
   42546                 # languages over compactness; for example, the fields of this representation
   42547                 # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   42548                 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   42549                 # method in iOS; and, with just a little work, it can be easily formatted into
   42550                 # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   42551                 #
   42552                 # Example (Java):
   42553                 #
   42554                 #      import com.google.type.Color;
   42555                 #
   42556                 #      // ...
   42557                 #      public static java.awt.Color fromProto(Color protocolor) {
   42558                 #        float alpha = protocolor.hasAlpha()
   42559                 #            ? protocolor.getAlpha().getValue()
   42560                 #            : 1.0;
   42561                 #
   42562                 #        return new java.awt.Color(
   42563                 #            protocolor.getRed(),
   42564                 #            protocolor.getGreen(),
   42565                 #            protocolor.getBlue(),
   42566                 #            alpha);
   42567                 #      }
   42568                 #
   42569                 #      public static Color toProto(java.awt.Color color) {
   42570                 #        float red = (float) color.getRed();
   42571                 #        float green = (float) color.getGreen();
   42572                 #        float blue = (float) color.getBlue();
   42573                 #        float denominator = 255.0;
   42574                 #        Color.Builder resultBuilder =
   42575                 #            Color
   42576                 #                .newBuilder()
   42577                 #                .setRed(red / denominator)
   42578                 #                .setGreen(green / denominator)
   42579                 #                .setBlue(blue / denominator);
   42580                 #        int alpha = color.getAlpha();
   42581                 #        if (alpha != 255) {
   42582                 #          result.setAlpha(
   42583                 #              FloatValue
   42584                 #                  .newBuilder()
   42585                 #                  .setValue(((float) alpha) / denominator)
   42586                 #                  .build());
   42587                 #        }
   42588                 #        return resultBuilder.build();
   42589                 #      }
   42590                 #      // ...
   42591                 #
   42592                 # Example (iOS / Obj-C):
   42593                 #
   42594                 #      // ...
   42595                 #      static UIColor* fromProto(Color* protocolor) {
   42596                 #         float red = [protocolor red];
   42597                 #         float green = [protocolor green];
   42598                 #         float blue = [protocolor blue];
   42599                 #         FloatValue* alpha_wrapper = [protocolor alpha];
   42600                 #         float alpha = 1.0;
   42601                 #         if (alpha_wrapper != nil) {
   42602                 #           alpha = [alpha_wrapper value];
   42603                 #         }
   42604                 #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   42605                 #      }
   42606                 #
   42607                 #      static Color* toProto(UIColor* color) {
   42608                 #          CGFloat red, green, blue, alpha;
   42609                 #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   42610                 #            return nil;
   42611                 #          }
   42612                 #          Color* result = [Color alloc] init];
   42613                 #          [result setRed:red];
   42614                 #          [result setGreen:green];
   42615                 #          [result setBlue:blue];
   42616                 #          if (alpha <= 0.9999) {
   42617                 #            [result setAlpha:floatWrapperWithValue(alpha)];
   42618                 #          }
   42619                 #          [result autorelease];
   42620                 #          return result;
   42621                 #     }
   42622                 #     // ...
   42623                 #
   42624                 #  Example (JavaScript):
   42625                 #
   42626                 #     // ...
   42627                 #
   42628                 #     var protoToCssColor = function(rgb_color) {
   42629                 #        var redFrac = rgb_color.red || 0.0;
   42630                 #        var greenFrac = rgb_color.green || 0.0;
   42631                 #        var blueFrac = rgb_color.blue || 0.0;
   42632                 #        var red = Math.floor(redFrac * 255);
   42633                 #        var green = Math.floor(greenFrac * 255);
   42634                 #        var blue = Math.floor(blueFrac * 255);
   42635                 #
   42636                 #        if (!('alpha' in rgb_color)) {
   42637                 #           return rgbToCssColor_(red, green, blue);
   42638                 #        }
   42639                 #
   42640                 #        var alphaFrac = rgb_color.alpha.value || 0.0;
   42641                 #        var rgbParams = [red, green, blue].join(',');
   42642                 #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   42643                 #     };
   42644                 #
   42645                 #     var rgbToCssColor_ = function(red, green, blue) {
   42646                 #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   42647                 #       var hexString = rgbNumber.toString(16);
   42648                 #       var missingZeros = 6 - hexString.length;
   42649                 #       var resultBuilder = ['#'];
   42650                 #       for (var i = 0; i < missingZeros; i++) {
   42651                 #          resultBuilder.push('0');
   42652                 #       }
   42653                 #       resultBuilder.push(hexString);
   42654                 #       return resultBuilder.join('');
   42655                 #     };
   42656                 #
   42657                 #     // ...
   42658               "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   42659               "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   42660                   # the final pixel color is defined by the equation:
   42661                   #
   42662                   #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   42663                   #
   42664                   # This means that a value of 1.0 corresponds to a solid color, whereas
   42665                   # a value of 0.0 corresponds to a completely transparent color. This
   42666                   # uses a wrapper message rather than a simple float scalar so that it is
   42667                   # possible to distinguish between a default value and the value being unset.
   42668                   # If omitted, this color object is to be rendered as a solid color
   42669                   # (as if the alpha value had been explicitly given with a value of 1.0).
   42670               "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   42671               "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   42672             },
   42673             "width": 42, # The width of the border, in pixels.
   42674                 # Deprecated; the width is determined by the "style" field.
   42675             "style": "A String", # The style of the border.
   42676           },
   42677         },
   42678         "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   42679       },
   42680       "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
   42681       "iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative
   42682           # calculation.  Absence of this field means that circular references will
   42683           # result in calculation errors.
   42684           # calculation.
   42685         "convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by
   42686             # less than this threshold value, the calculation rounds stop.
   42687         "maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation
   42688             # rounds to perform.
   42689       },
   42690       "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
   42691           # `America/New_York`. If the time zone isn't recognized, this may
   42692           # be a custom time zone such as `GMT-07:00`.
   42693     },
   42694     "sheets": [ # The sheets that are part of a spreadsheet.
   42695       { # A sheet in a spreadsheet.
   42696         "conditionalFormats": [ # The conditional format rules in this sheet.
   42697           { # A rule describing a conditional format.
   42698             "ranges": [ # The ranges that will be formatted if the condition is true.
   42699                 # All the ranges must be on the same grid.
   42700               { # A range on a sheet.
   42701                   # All indexes are zero-based.
   42702                   # Indexes are half open, e.g the start index is inclusive
   42703                   # and the end index is exclusive -- [start_index, end_index).
   42704                   # Missing indexes indicate the range is unbounded on that side.
   42705                   #
   42706                   # For example, if `"Sheet1"` is sheet ID 0, then:
   42707                   #
   42708                   #   `Sheet1!A1:A1 == sheet_id: 0,
   42709                   #                   start_row_index: 0, end_row_index: 1,
   42710                   #                   start_column_index: 0, end_column_index: 1`
   42711                   #
   42712                   #   `Sheet1!A3:B4 == sheet_id: 0,
   42713                   #                   start_row_index: 2, end_row_index: 4,
   42714                   #                   start_column_index: 0, end_column_index: 2`
   42715                   #
   42716                   #   `Sheet1!A:B == sheet_id: 0,
   42717                   #                 start_column_index: 0, end_column_index: 2`
   42718                   #
   42719                   #   `Sheet1!A5:B == sheet_id: 0,
   42720                   #                  start_row_index: 4,
   42721                   #                  start_column_index: 0, end_column_index: 2`
   42722                   #
   42723                   #   `Sheet1 == sheet_id:0`
   42724                   #
   42725                   # The start index must always be less than or equal to the end index.
   42726                   # If the start index equals the end index, then the range is empty.
   42727                   # Empty ranges are typically not meaningful and are usually rendered in the
   42728                   # UI as `#REF!`.
   42729                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   42730                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   42731                 "sheetId": 42, # The sheet this range is on.
   42732                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   42733                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   42734               },
   42735             ],
   42736             "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
   42737               "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
   42738                   # the format will be applied.
   42739                   # BooleanConditions are used by conditional formatting,
   42740                   # data validation, and the criteria in filters.
   42741                 "values": [ # The values of the condition. The number of supported values depends
   42742                     # on the condition type.  Some support zero values,
   42743                     # others one or two values,
   42744                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   42745                   { # The value of the condition.
   42746                     "relativeDate": "A String", # A relative date (based on the current date).
   42747                         # Valid only if the type is
   42748                         # DATE_BEFORE,
   42749                         # DATE_AFTER,
   42750                         # DATE_ON_OR_BEFORE or
   42751                         # DATE_ON_OR_AFTER.
   42752                         #
   42753                         # Relative dates are not supported in data validation.
   42754                         # They are supported only in conditional formatting and
   42755                         # conditional filters.
   42756                     "userEnteredValue": "A String", # A value the condition is based on.
   42757                         # The value will be parsed as if the user typed into a cell.
   42758                         # Formulas are supported (and must begin with an `=`).
   42759                   },
   42760                 ],
   42761                 "type": "A String", # The type of condition.
   42762               },
   42763               "format": { # The format of a cell. # The format to apply.
   42764                   # Conditional formatting can only apply a subset of formatting:
   42765                   # bold, italic,
   42766                   # strikethrough,
   42767                   # foreground color &
   42768                   # background color.
   42769                 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   42770                   "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   42771                       # the user's locale will be used if necessary for the given type.
   42772                       # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   42773                       # information about the supported patterns.
   42774                   "type": "A String", # The type of the number format.
   42775                       # When writing, this field must be set.
   42776                 },
   42777                 "textDirection": "A String", # The direction of the text in the cell.
   42778                 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   42779                     # When updating padding, every field must be specified.
   42780                   "top": 42, # The top padding of the cell.
   42781                   "right": 42, # The right padding of the cell.
   42782                   "bottom": 42, # The bottom padding of the cell.
   42783                   "left": 42, # The left padding of the cell.
   42784                 },
   42785                 "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   42786                 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   42787                     # for simplicity of conversion to/from color representations in various
   42788                     # languages over compactness; for example, the fields of this representation
   42789                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   42790                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   42791                     # method in iOS; and, with just a little work, it can be easily formatted into
   42792                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   42793                     #
   42794                     # Example (Java):
   42795                     #
   42796                     #      import com.google.type.Color;
   42797                     #
   42798                     #      // ...
   42799                     #      public static java.awt.Color fromProto(Color protocolor) {
   42800                     #        float alpha = protocolor.hasAlpha()
   42801                     #            ? protocolor.getAlpha().getValue()
   42802                     #            : 1.0;
   42803                     #
   42804                     #        return new java.awt.Color(
   42805                     #            protocolor.getRed(),
   42806                     #            protocolor.getGreen(),
   42807                     #            protocolor.getBlue(),
   42808                     #            alpha);
   42809                     #      }
   42810                     #
   42811                     #      public static Color toProto(java.awt.Color color) {
   42812                     #        float red = (float) color.getRed();
   42813                     #        float green = (float) color.getGreen();
   42814                     #        float blue = (float) color.getBlue();
   42815                     #        float denominator = 255.0;
   42816                     #        Color.Builder resultBuilder =
   42817                     #            Color
   42818                     #                .newBuilder()
   42819                     #                .setRed(red / denominator)
   42820                     #                .setGreen(green / denominator)
   42821                     #                .setBlue(blue / denominator);
   42822                     #        int alpha = color.getAlpha();
   42823                     #        if (alpha != 255) {
   42824                     #          result.setAlpha(
   42825                     #              FloatValue
   42826                     #                  .newBuilder()
   42827                     #                  .setValue(((float) alpha) / denominator)
   42828                     #                  .build());
   42829                     #        }
   42830                     #        return resultBuilder.build();
   42831                     #      }
   42832                     #      // ...
   42833                     #
   42834                     # Example (iOS / Obj-C):
   42835                     #
   42836                     #      // ...
   42837                     #      static UIColor* fromProto(Color* protocolor) {
   42838                     #         float red = [protocolor red];
   42839                     #         float green = [protocolor green];
   42840                     #         float blue = [protocolor blue];
   42841                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   42842                     #         float alpha = 1.0;
   42843                     #         if (alpha_wrapper != nil) {
   42844                     #           alpha = [alpha_wrapper value];
   42845                     #         }
   42846                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   42847                     #      }
   42848                     #
   42849                     #      static Color* toProto(UIColor* color) {
   42850                     #          CGFloat red, green, blue, alpha;
   42851                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   42852                     #            return nil;
   42853                     #          }
   42854                     #          Color* result = [Color alloc] init];
   42855                     #          [result setRed:red];
   42856                     #          [result setGreen:green];
   42857                     #          [result setBlue:blue];
   42858                     #          if (alpha <= 0.9999) {
   42859                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   42860                     #          }
   42861                     #          [result autorelease];
   42862                     #          return result;
   42863                     #     }
   42864                     #     // ...
   42865                     #
   42866                     #  Example (JavaScript):
   42867                     #
   42868                     #     // ...
   42869                     #
   42870                     #     var protoToCssColor = function(rgb_color) {
   42871                     #        var redFrac = rgb_color.red || 0.0;
   42872                     #        var greenFrac = rgb_color.green || 0.0;
   42873                     #        var blueFrac = rgb_color.blue || 0.0;
   42874                     #        var red = Math.floor(redFrac * 255);
   42875                     #        var green = Math.floor(greenFrac * 255);
   42876                     #        var blue = Math.floor(blueFrac * 255);
   42877                     #
   42878                     #        if (!('alpha' in rgb_color)) {
   42879                     #           return rgbToCssColor_(red, green, blue);
   42880                     #        }
   42881                     #
   42882                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   42883                     #        var rgbParams = [red, green, blue].join(',');
   42884                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   42885                     #     };
   42886                     #
   42887                     #     var rgbToCssColor_ = function(red, green, blue) {
   42888                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   42889                     #       var hexString = rgbNumber.toString(16);
   42890                     #       var missingZeros = 6 - hexString.length;
   42891                     #       var resultBuilder = ['#'];
   42892                     #       for (var i = 0; i < missingZeros; i++) {
   42893                     #          resultBuilder.push('0');
   42894                     #       }
   42895                     #       resultBuilder.push(hexString);
   42896                     #       return resultBuilder.join('');
   42897                     #     };
   42898                     #
   42899                     #     // ...
   42900                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   42901                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   42902                       # the final pixel color is defined by the equation:
   42903                       #
   42904                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   42905                       #
   42906                       # This means that a value of 1.0 corresponds to a solid color, whereas
   42907                       # a value of 0.0 corresponds to a completely transparent color. This
   42908                       # uses a wrapper message rather than a simple float scalar so that it is
   42909                       # possible to distinguish between a default value and the value being unset.
   42910                       # If omitted, this color object is to be rendered as a solid color
   42911                       # (as if the alpha value had been explicitly given with a value of 1.0).
   42912                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   42913                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   42914                 },
   42915                 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   42916                 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   42917                     # Absent values indicate that the field isn't specified.
   42918                   "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   42919                       # for simplicity of conversion to/from color representations in various
   42920                       # languages over compactness; for example, the fields of this representation
   42921                       # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   42922                       # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   42923                       # method in iOS; and, with just a little work, it can be easily formatted into
   42924                       # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   42925                       #
   42926                       # Example (Java):
   42927                       #
   42928                       #      import com.google.type.Color;
   42929                       #
   42930                       #      // ...
   42931                       #      public static java.awt.Color fromProto(Color protocolor) {
   42932                       #        float alpha = protocolor.hasAlpha()
   42933                       #            ? protocolor.getAlpha().getValue()
   42934                       #            : 1.0;
   42935                       #
   42936                       #        return new java.awt.Color(
   42937                       #            protocolor.getRed(),
   42938                       #            protocolor.getGreen(),
   42939                       #            protocolor.getBlue(),
   42940                       #            alpha);
   42941                       #      }
   42942                       #
   42943                       #      public static Color toProto(java.awt.Color color) {
   42944                       #        float red = (float) color.getRed();
   42945                       #        float green = (float) color.getGreen();
   42946                       #        float blue = (float) color.getBlue();
   42947                       #        float denominator = 255.0;
   42948                       #        Color.Builder resultBuilder =
   42949                       #            Color
   42950                       #                .newBuilder()
   42951                       #                .setRed(red / denominator)
   42952                       #                .setGreen(green / denominator)
   42953                       #                .setBlue(blue / denominator);
   42954                       #        int alpha = color.getAlpha();
   42955                       #        if (alpha != 255) {
   42956                       #          result.setAlpha(
   42957                       #              FloatValue
   42958                       #                  .newBuilder()
   42959                       #                  .setValue(((float) alpha) / denominator)
   42960                       #                  .build());
   42961                       #        }
   42962                       #        return resultBuilder.build();
   42963                       #      }
   42964                       #      // ...
   42965                       #
   42966                       # Example (iOS / Obj-C):
   42967                       #
   42968                       #      // ...
   42969                       #      static UIColor* fromProto(Color* protocolor) {
   42970                       #         float red = [protocolor red];
   42971                       #         float green = [protocolor green];
   42972                       #         float blue = [protocolor blue];
   42973                       #         FloatValue* alpha_wrapper = [protocolor alpha];
   42974                       #         float alpha = 1.0;
   42975                       #         if (alpha_wrapper != nil) {
   42976                       #           alpha = [alpha_wrapper value];
   42977                       #         }
   42978                       #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   42979                       #      }
   42980                       #
   42981                       #      static Color* toProto(UIColor* color) {
   42982                       #          CGFloat red, green, blue, alpha;
   42983                       #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   42984                       #            return nil;
   42985                       #          }
   42986                       #          Color* result = [Color alloc] init];
   42987                       #          [result setRed:red];
   42988                       #          [result setGreen:green];
   42989                       #          [result setBlue:blue];
   42990                       #          if (alpha <= 0.9999) {
   42991                       #            [result setAlpha:floatWrapperWithValue(alpha)];
   42992                       #          }
   42993                       #          [result autorelease];
   42994                       #          return result;
   42995                       #     }
   42996                       #     // ...
   42997                       #
   42998                       #  Example (JavaScript):
   42999                       #
   43000                       #     // ...
   43001                       #
   43002                       #     var protoToCssColor = function(rgb_color) {
   43003                       #        var redFrac = rgb_color.red || 0.0;
   43004                       #        var greenFrac = rgb_color.green || 0.0;
   43005                       #        var blueFrac = rgb_color.blue || 0.0;
   43006                       #        var red = Math.floor(redFrac * 255);
   43007                       #        var green = Math.floor(greenFrac * 255);
   43008                       #        var blue = Math.floor(blueFrac * 255);
   43009                       #
   43010                       #        if (!('alpha' in rgb_color)) {
   43011                       #           return rgbToCssColor_(red, green, blue);
   43012                       #        }
   43013                       #
   43014                       #        var alphaFrac = rgb_color.alpha.value || 0.0;
   43015                       #        var rgbParams = [red, green, blue].join(',');
   43016                       #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   43017                       #     };
   43018                       #
   43019                       #     var rgbToCssColor_ = function(red, green, blue) {
   43020                       #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   43021                       #       var hexString = rgbNumber.toString(16);
   43022                       #       var missingZeros = 6 - hexString.length;
   43023                       #       var resultBuilder = ['#'];
   43024                       #       for (var i = 0; i < missingZeros; i++) {
   43025                       #          resultBuilder.push('0');
   43026                       #       }
   43027                       #       resultBuilder.push(hexString);
   43028                       #       return resultBuilder.join('');
   43029                       #     };
   43030                       #
   43031                       #     // ...
   43032                     "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   43033                     "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   43034                         # the final pixel color is defined by the equation:
   43035                         #
   43036                         #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   43037                         #
   43038                         # This means that a value of 1.0 corresponds to a solid color, whereas
   43039                         # a value of 0.0 corresponds to a completely transparent color. This
   43040                         # uses a wrapper message rather than a simple float scalar so that it is
   43041                         # possible to distinguish between a default value and the value being unset.
   43042                         # If omitted, this color object is to be rendered as a solid color
   43043                         # (as if the alpha value had been explicitly given with a value of 1.0).
   43044                     "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   43045                     "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   43046                   },
   43047                   "bold": True or False, # True if the text is bold.
   43048                   "strikethrough": True or False, # True if the text has a strikethrough.
   43049                   "fontFamily": "A String", # The font family.
   43050                   "fontSize": 42, # The size of the font.
   43051                   "italic": True or False, # True if the text is italicized.
   43052                   "underline": True or False, # True if the text is underlined.
   43053                 },
   43054                 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   43055                   "angle": 42, # The angle between the standard orientation and the desired orientation.
   43056                       # Measured in degrees. Valid values are between -90 and 90. Positive
   43057                       # angles are angled upwards, negative are angled downwards.
   43058                       #
   43059                       # Note: For LTR text direction positive angles are in the counterclockwise
   43060                       # direction, whereas for RTL they are in the clockwise direction
   43061                   "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   43062                       # characters is unchanged.
   43063                       # For example:
   43064                       #
   43065                       #     | V |
   43066                       #     | e |
   43067                       #     | r |
   43068                       #     | t |
   43069                       #     | i |
   43070                       #     | c |
   43071                       #     | a |
   43072                       #     | l |
   43073                 },
   43074                 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   43075                 "borders": { # The borders of the cell. # The borders of the cell.
   43076                   "top": { # A border along a cell. # The top border of the cell.
   43077                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   43078                         # for simplicity of conversion to/from color representations in various
   43079                         # languages over compactness; for example, the fields of this representation
   43080                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   43081                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   43082                         # method in iOS; and, with just a little work, it can be easily formatted into
   43083                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   43084                         #
   43085                         # Example (Java):
   43086                         #
   43087                         #      import com.google.type.Color;
   43088                         #
   43089                         #      // ...
   43090                         #      public static java.awt.Color fromProto(Color protocolor) {
   43091                         #        float alpha = protocolor.hasAlpha()
   43092                         #            ? protocolor.getAlpha().getValue()
   43093                         #            : 1.0;
   43094                         #
   43095                         #        return new java.awt.Color(
   43096                         #            protocolor.getRed(),
   43097                         #            protocolor.getGreen(),
   43098                         #            protocolor.getBlue(),
   43099                         #            alpha);
   43100                         #      }
   43101                         #
   43102                         #      public static Color toProto(java.awt.Color color) {
   43103                         #        float red = (float) color.getRed();
   43104                         #        float green = (float) color.getGreen();
   43105                         #        float blue = (float) color.getBlue();
   43106                         #        float denominator = 255.0;
   43107                         #        Color.Builder resultBuilder =
   43108                         #            Color
   43109                         #                .newBuilder()
   43110                         #                .setRed(red / denominator)
   43111                         #                .setGreen(green / denominator)
   43112                         #                .setBlue(blue / denominator);
   43113                         #        int alpha = color.getAlpha();
   43114                         #        if (alpha != 255) {
   43115                         #          result.setAlpha(
   43116                         #              FloatValue
   43117                         #                  .newBuilder()
   43118                         #                  .setValue(((float) alpha) / denominator)
   43119                         #                  .build());
   43120                         #        }
   43121                         #        return resultBuilder.build();
   43122                         #      }
   43123                         #      // ...
   43124                         #
   43125                         # Example (iOS / Obj-C):
   43126                         #
   43127                         #      // ...
   43128                         #      static UIColor* fromProto(Color* protocolor) {
   43129                         #         float red = [protocolor red];
   43130                         #         float green = [protocolor green];
   43131                         #         float blue = [protocolor blue];
   43132                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   43133                         #         float alpha = 1.0;
   43134                         #         if (alpha_wrapper != nil) {
   43135                         #           alpha = [alpha_wrapper value];
   43136                         #         }
   43137                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   43138                         #      }
   43139                         #
   43140                         #      static Color* toProto(UIColor* color) {
   43141                         #          CGFloat red, green, blue, alpha;
   43142                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   43143                         #            return nil;
   43144                         #          }
   43145                         #          Color* result = [Color alloc] init];
   43146                         #          [result setRed:red];
   43147                         #          [result setGreen:green];
   43148                         #          [result setBlue:blue];
   43149                         #          if (alpha <= 0.9999) {
   43150                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   43151                         #          }
   43152                         #          [result autorelease];
   43153                         #          return result;
   43154                         #     }
   43155                         #     // ...
   43156                         #
   43157                         #  Example (JavaScript):
   43158                         #
   43159                         #     // ...
   43160                         #
   43161                         #     var protoToCssColor = function(rgb_color) {
   43162                         #        var redFrac = rgb_color.red || 0.0;
   43163                         #        var greenFrac = rgb_color.green || 0.0;
   43164                         #        var blueFrac = rgb_color.blue || 0.0;
   43165                         #        var red = Math.floor(redFrac * 255);
   43166                         #        var green = Math.floor(greenFrac * 255);
   43167                         #        var blue = Math.floor(blueFrac * 255);
   43168                         #
   43169                         #        if (!('alpha' in rgb_color)) {
   43170                         #           return rgbToCssColor_(red, green, blue);
   43171                         #        }
   43172                         #
   43173                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   43174                         #        var rgbParams = [red, green, blue].join(',');
   43175                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   43176                         #     };
   43177                         #
   43178                         #     var rgbToCssColor_ = function(red, green, blue) {
   43179                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   43180                         #       var hexString = rgbNumber.toString(16);
   43181                         #       var missingZeros = 6 - hexString.length;
   43182                         #       var resultBuilder = ['#'];
   43183                         #       for (var i = 0; i < missingZeros; i++) {
   43184                         #          resultBuilder.push('0');
   43185                         #       }
   43186                         #       resultBuilder.push(hexString);
   43187                         #       return resultBuilder.join('');
   43188                         #     };
   43189                         #
   43190                         #     // ...
   43191                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   43192                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   43193                           # the final pixel color is defined by the equation:
   43194                           #
   43195                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   43196                           #
   43197                           # This means that a value of 1.0 corresponds to a solid color, whereas
   43198                           # a value of 0.0 corresponds to a completely transparent color. This
   43199                           # uses a wrapper message rather than a simple float scalar so that it is
   43200                           # possible to distinguish between a default value and the value being unset.
   43201                           # If omitted, this color object is to be rendered as a solid color
   43202                           # (as if the alpha value had been explicitly given with a value of 1.0).
   43203                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   43204                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   43205                     },
   43206                     "width": 42, # The width of the border, in pixels.
   43207                         # Deprecated; the width is determined by the "style" field.
   43208                     "style": "A String", # The style of the border.
   43209                   },
   43210                   "right": { # A border along a cell. # The right border of the cell.
   43211                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   43212                         # for simplicity of conversion to/from color representations in various
   43213                         # languages over compactness; for example, the fields of this representation
   43214                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   43215                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   43216                         # method in iOS; and, with just a little work, it can be easily formatted into
   43217                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   43218                         #
   43219                         # Example (Java):
   43220                         #
   43221                         #      import com.google.type.Color;
   43222                         #
   43223                         #      // ...
   43224                         #      public static java.awt.Color fromProto(Color protocolor) {
   43225                         #        float alpha = protocolor.hasAlpha()
   43226                         #            ? protocolor.getAlpha().getValue()
   43227                         #            : 1.0;
   43228                         #
   43229                         #        return new java.awt.Color(
   43230                         #            protocolor.getRed(),
   43231                         #            protocolor.getGreen(),
   43232                         #            protocolor.getBlue(),
   43233                         #            alpha);
   43234                         #      }
   43235                         #
   43236                         #      public static Color toProto(java.awt.Color color) {
   43237                         #        float red = (float) color.getRed();
   43238                         #        float green = (float) color.getGreen();
   43239                         #        float blue = (float) color.getBlue();
   43240                         #        float denominator = 255.0;
   43241                         #        Color.Builder resultBuilder =
   43242                         #            Color
   43243                         #                .newBuilder()
   43244                         #                .setRed(red / denominator)
   43245                         #                .setGreen(green / denominator)
   43246                         #                .setBlue(blue / denominator);
   43247                         #        int alpha = color.getAlpha();
   43248                         #        if (alpha != 255) {
   43249                         #          result.setAlpha(
   43250                         #              FloatValue
   43251                         #                  .newBuilder()
   43252                         #                  .setValue(((float) alpha) / denominator)
   43253                         #                  .build());
   43254                         #        }
   43255                         #        return resultBuilder.build();
   43256                         #      }
   43257                         #      // ...
   43258                         #
   43259                         # Example (iOS / Obj-C):
   43260                         #
   43261                         #      // ...
   43262                         #      static UIColor* fromProto(Color* protocolor) {
   43263                         #         float red = [protocolor red];
   43264                         #         float green = [protocolor green];
   43265                         #         float blue = [protocolor blue];
   43266                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   43267                         #         float alpha = 1.0;
   43268                         #         if (alpha_wrapper != nil) {
   43269                         #           alpha = [alpha_wrapper value];
   43270                         #         }
   43271                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   43272                         #      }
   43273                         #
   43274                         #      static Color* toProto(UIColor* color) {
   43275                         #          CGFloat red, green, blue, alpha;
   43276                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   43277                         #            return nil;
   43278                         #          }
   43279                         #          Color* result = [Color alloc] init];
   43280                         #          [result setRed:red];
   43281                         #          [result setGreen:green];
   43282                         #          [result setBlue:blue];
   43283                         #          if (alpha <= 0.9999) {
   43284                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   43285                         #          }
   43286                         #          [result autorelease];
   43287                         #          return result;
   43288                         #     }
   43289                         #     // ...
   43290                         #
   43291                         #  Example (JavaScript):
   43292                         #
   43293                         #     // ...
   43294                         #
   43295                         #     var protoToCssColor = function(rgb_color) {
   43296                         #        var redFrac = rgb_color.red || 0.0;
   43297                         #        var greenFrac = rgb_color.green || 0.0;
   43298                         #        var blueFrac = rgb_color.blue || 0.0;
   43299                         #        var red = Math.floor(redFrac * 255);
   43300                         #        var green = Math.floor(greenFrac * 255);
   43301                         #        var blue = Math.floor(blueFrac * 255);
   43302                         #
   43303                         #        if (!('alpha' in rgb_color)) {
   43304                         #           return rgbToCssColor_(red, green, blue);
   43305                         #        }
   43306                         #
   43307                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   43308                         #        var rgbParams = [red, green, blue].join(',');
   43309                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   43310                         #     };
   43311                         #
   43312                         #     var rgbToCssColor_ = function(red, green, blue) {
   43313                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   43314                         #       var hexString = rgbNumber.toString(16);
   43315                         #       var missingZeros = 6 - hexString.length;
   43316                         #       var resultBuilder = ['#'];
   43317                         #       for (var i = 0; i < missingZeros; i++) {
   43318                         #          resultBuilder.push('0');
   43319                         #       }
   43320                         #       resultBuilder.push(hexString);
   43321                         #       return resultBuilder.join('');
   43322                         #     };
   43323                         #
   43324                         #     // ...
   43325                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   43326                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   43327                           # the final pixel color is defined by the equation:
   43328                           #
   43329                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   43330                           #
   43331                           # This means that a value of 1.0 corresponds to a solid color, whereas
   43332                           # a value of 0.0 corresponds to a completely transparent color. This
   43333                           # uses a wrapper message rather than a simple float scalar so that it is
   43334                           # possible to distinguish between a default value and the value being unset.
   43335                           # If omitted, this color object is to be rendered as a solid color
   43336                           # (as if the alpha value had been explicitly given with a value of 1.0).
   43337                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   43338                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   43339                     },
   43340                     "width": 42, # The width of the border, in pixels.
   43341                         # Deprecated; the width is determined by the "style" field.
   43342                     "style": "A String", # The style of the border.
   43343                   },
   43344                   "bottom": { # A border along a cell. # The bottom border of the cell.
   43345                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   43346                         # for simplicity of conversion to/from color representations in various
   43347                         # languages over compactness; for example, the fields of this representation
   43348                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   43349                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   43350                         # method in iOS; and, with just a little work, it can be easily formatted into
   43351                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   43352                         #
   43353                         # Example (Java):
   43354                         #
   43355                         #      import com.google.type.Color;
   43356                         #
   43357                         #      // ...
   43358                         #      public static java.awt.Color fromProto(Color protocolor) {
   43359                         #        float alpha = protocolor.hasAlpha()
   43360                         #            ? protocolor.getAlpha().getValue()
   43361                         #            : 1.0;
   43362                         #
   43363                         #        return new java.awt.Color(
   43364                         #            protocolor.getRed(),
   43365                         #            protocolor.getGreen(),
   43366                         #            protocolor.getBlue(),
   43367                         #            alpha);
   43368                         #      }
   43369                         #
   43370                         #      public static Color toProto(java.awt.Color color) {
   43371                         #        float red = (float) color.getRed();
   43372                         #        float green = (float) color.getGreen();
   43373                         #        float blue = (float) color.getBlue();
   43374                         #        float denominator = 255.0;
   43375                         #        Color.Builder resultBuilder =
   43376                         #            Color
   43377                         #                .newBuilder()
   43378                         #                .setRed(red / denominator)
   43379                         #                .setGreen(green / denominator)
   43380                         #                .setBlue(blue / denominator);
   43381                         #        int alpha = color.getAlpha();
   43382                         #        if (alpha != 255) {
   43383                         #          result.setAlpha(
   43384                         #              FloatValue
   43385                         #                  .newBuilder()
   43386                         #                  .setValue(((float) alpha) / denominator)
   43387                         #                  .build());
   43388                         #        }
   43389                         #        return resultBuilder.build();
   43390                         #      }
   43391                         #      // ...
   43392                         #
   43393                         # Example (iOS / Obj-C):
   43394                         #
   43395                         #      // ...
   43396                         #      static UIColor* fromProto(Color* protocolor) {
   43397                         #         float red = [protocolor red];
   43398                         #         float green = [protocolor green];
   43399                         #         float blue = [protocolor blue];
   43400                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   43401                         #         float alpha = 1.0;
   43402                         #         if (alpha_wrapper != nil) {
   43403                         #           alpha = [alpha_wrapper value];
   43404                         #         }
   43405                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   43406                         #      }
   43407                         #
   43408                         #      static Color* toProto(UIColor* color) {
   43409                         #          CGFloat red, green, blue, alpha;
   43410                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   43411                         #            return nil;
   43412                         #          }
   43413                         #          Color* result = [Color alloc] init];
   43414                         #          [result setRed:red];
   43415                         #          [result setGreen:green];
   43416                         #          [result setBlue:blue];
   43417                         #          if (alpha <= 0.9999) {
   43418                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   43419                         #          }
   43420                         #          [result autorelease];
   43421                         #          return result;
   43422                         #     }
   43423                         #     // ...
   43424                         #
   43425                         #  Example (JavaScript):
   43426                         #
   43427                         #     // ...
   43428                         #
   43429                         #     var protoToCssColor = function(rgb_color) {
   43430                         #        var redFrac = rgb_color.red || 0.0;
   43431                         #        var greenFrac = rgb_color.green || 0.0;
   43432                         #        var blueFrac = rgb_color.blue || 0.0;
   43433                         #        var red = Math.floor(redFrac * 255);
   43434                         #        var green = Math.floor(greenFrac * 255);
   43435                         #        var blue = Math.floor(blueFrac * 255);
   43436                         #
   43437                         #        if (!('alpha' in rgb_color)) {
   43438                         #           return rgbToCssColor_(red, green, blue);
   43439                         #        }
   43440                         #
   43441                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   43442                         #        var rgbParams = [red, green, blue].join(',');
   43443                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   43444                         #     };
   43445                         #
   43446                         #     var rgbToCssColor_ = function(red, green, blue) {
   43447                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   43448                         #       var hexString = rgbNumber.toString(16);
   43449                         #       var missingZeros = 6 - hexString.length;
   43450                         #       var resultBuilder = ['#'];
   43451                         #       for (var i = 0; i < missingZeros; i++) {
   43452                         #          resultBuilder.push('0');
   43453                         #       }
   43454                         #       resultBuilder.push(hexString);
   43455                         #       return resultBuilder.join('');
   43456                         #     };
   43457                         #
   43458                         #     // ...
   43459                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   43460                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   43461                           # the final pixel color is defined by the equation:
   43462                           #
   43463                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   43464                           #
   43465                           # This means that a value of 1.0 corresponds to a solid color, whereas
   43466                           # a value of 0.0 corresponds to a completely transparent color. This
   43467                           # uses a wrapper message rather than a simple float scalar so that it is
   43468                           # possible to distinguish between a default value and the value being unset.
   43469                           # If omitted, this color object is to be rendered as a solid color
   43470                           # (as if the alpha value had been explicitly given with a value of 1.0).
   43471                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   43472                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   43473                     },
   43474                     "width": 42, # The width of the border, in pixels.
   43475                         # Deprecated; the width is determined by the "style" field.
   43476                     "style": "A String", # The style of the border.
   43477                   },
   43478                   "left": { # A border along a cell. # The left border of the cell.
   43479                     "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   43480                         # for simplicity of conversion to/from color representations in various
   43481                         # languages over compactness; for example, the fields of this representation
   43482                         # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   43483                         # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   43484                         # method in iOS; and, with just a little work, it can be easily formatted into
   43485                         # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   43486                         #
   43487                         # Example (Java):
   43488                         #
   43489                         #      import com.google.type.Color;
   43490                         #
   43491                         #      // ...
   43492                         #      public static java.awt.Color fromProto(Color protocolor) {
   43493                         #        float alpha = protocolor.hasAlpha()
   43494                         #            ? protocolor.getAlpha().getValue()
   43495                         #            : 1.0;
   43496                         #
   43497                         #        return new java.awt.Color(
   43498                         #            protocolor.getRed(),
   43499                         #            protocolor.getGreen(),
   43500                         #            protocolor.getBlue(),
   43501                         #            alpha);
   43502                         #      }
   43503                         #
   43504                         #      public static Color toProto(java.awt.Color color) {
   43505                         #        float red = (float) color.getRed();
   43506                         #        float green = (float) color.getGreen();
   43507                         #        float blue = (float) color.getBlue();
   43508                         #        float denominator = 255.0;
   43509                         #        Color.Builder resultBuilder =
   43510                         #            Color
   43511                         #                .newBuilder()
   43512                         #                .setRed(red / denominator)
   43513                         #                .setGreen(green / denominator)
   43514                         #                .setBlue(blue / denominator);
   43515                         #        int alpha = color.getAlpha();
   43516                         #        if (alpha != 255) {
   43517                         #          result.setAlpha(
   43518                         #              FloatValue
   43519                         #                  .newBuilder()
   43520                         #                  .setValue(((float) alpha) / denominator)
   43521                         #                  .build());
   43522                         #        }
   43523                         #        return resultBuilder.build();
   43524                         #      }
   43525                         #      // ...
   43526                         #
   43527                         # Example (iOS / Obj-C):
   43528                         #
   43529                         #      // ...
   43530                         #      static UIColor* fromProto(Color* protocolor) {
   43531                         #         float red = [protocolor red];
   43532                         #         float green = [protocolor green];
   43533                         #         float blue = [protocolor blue];
   43534                         #         FloatValue* alpha_wrapper = [protocolor alpha];
   43535                         #         float alpha = 1.0;
   43536                         #         if (alpha_wrapper != nil) {
   43537                         #           alpha = [alpha_wrapper value];
   43538                         #         }
   43539                         #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   43540                         #      }
   43541                         #
   43542                         #      static Color* toProto(UIColor* color) {
   43543                         #          CGFloat red, green, blue, alpha;
   43544                         #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   43545                         #            return nil;
   43546                         #          }
   43547                         #          Color* result = [Color alloc] init];
   43548                         #          [result setRed:red];
   43549                         #          [result setGreen:green];
   43550                         #          [result setBlue:blue];
   43551                         #          if (alpha <= 0.9999) {
   43552                         #            [result setAlpha:floatWrapperWithValue(alpha)];
   43553                         #          }
   43554                         #          [result autorelease];
   43555                         #          return result;
   43556                         #     }
   43557                         #     // ...
   43558                         #
   43559                         #  Example (JavaScript):
   43560                         #
   43561                         #     // ...
   43562                         #
   43563                         #     var protoToCssColor = function(rgb_color) {
   43564                         #        var redFrac = rgb_color.red || 0.0;
   43565                         #        var greenFrac = rgb_color.green || 0.0;
   43566                         #        var blueFrac = rgb_color.blue || 0.0;
   43567                         #        var red = Math.floor(redFrac * 255);
   43568                         #        var green = Math.floor(greenFrac * 255);
   43569                         #        var blue = Math.floor(blueFrac * 255);
   43570                         #
   43571                         #        if (!('alpha' in rgb_color)) {
   43572                         #           return rgbToCssColor_(red, green, blue);
   43573                         #        }
   43574                         #
   43575                         #        var alphaFrac = rgb_color.alpha.value || 0.0;
   43576                         #        var rgbParams = [red, green, blue].join(',');
   43577                         #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   43578                         #     };
   43579                         #
   43580                         #     var rgbToCssColor_ = function(red, green, blue) {
   43581                         #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   43582                         #       var hexString = rgbNumber.toString(16);
   43583                         #       var missingZeros = 6 - hexString.length;
   43584                         #       var resultBuilder = ['#'];
   43585                         #       for (var i = 0; i < missingZeros; i++) {
   43586                         #          resultBuilder.push('0');
   43587                         #       }
   43588                         #       resultBuilder.push(hexString);
   43589                         #       return resultBuilder.join('');
   43590                         #     };
   43591                         #
   43592                         #     // ...
   43593                       "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   43594                       "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   43595                           # the final pixel color is defined by the equation:
   43596                           #
   43597                           #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   43598                           #
   43599                           # This means that a value of 1.0 corresponds to a solid color, whereas
   43600                           # a value of 0.0 corresponds to a completely transparent color. This
   43601                           # uses a wrapper message rather than a simple float scalar so that it is
   43602                           # possible to distinguish between a default value and the value being unset.
   43603                           # If omitted, this color object is to be rendered as a solid color
   43604                           # (as if the alpha value had been explicitly given with a value of 1.0).
   43605                       "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   43606                       "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   43607                     },
   43608                     "width": 42, # The width of the border, in pixels.
   43609                         # Deprecated; the width is determined by the "style" field.
   43610                     "style": "A String", # The style of the border.
   43611                   },
   43612                 },
   43613                 "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   43614               },
   43615             },
   43616             "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
   43617                 # the interpolation points listed. The format of a cell will vary
   43618                 # based on its contents as compared to the values of the interpolation
   43619                 # points.
   43620               "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point.
   43621                   # These pin the gradient color scale according to the color,
   43622                   # type and value chosen.
   43623                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   43624                     # for simplicity of conversion to/from color representations in various
   43625                     # languages over compactness; for example, the fields of this representation
   43626                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   43627                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   43628                     # method in iOS; and, with just a little work, it can be easily formatted into
   43629                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   43630                     #
   43631                     # Example (Java):
   43632                     #
   43633                     #      import com.google.type.Color;
   43634                     #
   43635                     #      // ...
   43636                     #      public static java.awt.Color fromProto(Color protocolor) {
   43637                     #        float alpha = protocolor.hasAlpha()
   43638                     #            ? protocolor.getAlpha().getValue()
   43639                     #            : 1.0;
   43640                     #
   43641                     #        return new java.awt.Color(
   43642                     #            protocolor.getRed(),
   43643                     #            protocolor.getGreen(),
   43644                     #            protocolor.getBlue(),
   43645                     #            alpha);
   43646                     #      }
   43647                     #
   43648                     #      public static Color toProto(java.awt.Color color) {
   43649                     #        float red = (float) color.getRed();
   43650                     #        float green = (float) color.getGreen();
   43651                     #        float blue = (float) color.getBlue();
   43652                     #        float denominator = 255.0;
   43653                     #        Color.Builder resultBuilder =
   43654                     #            Color
   43655                     #                .newBuilder()
   43656                     #                .setRed(red / denominator)
   43657                     #                .setGreen(green / denominator)
   43658                     #                .setBlue(blue / denominator);
   43659                     #        int alpha = color.getAlpha();
   43660                     #        if (alpha != 255) {
   43661                     #          result.setAlpha(
   43662                     #              FloatValue
   43663                     #                  .newBuilder()
   43664                     #                  .setValue(((float) alpha) / denominator)
   43665                     #                  .build());
   43666                     #        }
   43667                     #        return resultBuilder.build();
   43668                     #      }
   43669                     #      // ...
   43670                     #
   43671                     # Example (iOS / Obj-C):
   43672                     #
   43673                     #      // ...
   43674                     #      static UIColor* fromProto(Color* protocolor) {
   43675                     #         float red = [protocolor red];
   43676                     #         float green = [protocolor green];
   43677                     #         float blue = [protocolor blue];
   43678                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   43679                     #         float alpha = 1.0;
   43680                     #         if (alpha_wrapper != nil) {
   43681                     #           alpha = [alpha_wrapper value];
   43682                     #         }
   43683                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   43684                     #      }
   43685                     #
   43686                     #      static Color* toProto(UIColor* color) {
   43687                     #          CGFloat red, green, blue, alpha;
   43688                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   43689                     #            return nil;
   43690                     #          }
   43691                     #          Color* result = [Color alloc] init];
   43692                     #          [result setRed:red];
   43693                     #          [result setGreen:green];
   43694                     #          [result setBlue:blue];
   43695                     #          if (alpha <= 0.9999) {
   43696                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   43697                     #          }
   43698                     #          [result autorelease];
   43699                     #          return result;
   43700                     #     }
   43701                     #     // ...
   43702                     #
   43703                     #  Example (JavaScript):
   43704                     #
   43705                     #     // ...
   43706                     #
   43707                     #     var protoToCssColor = function(rgb_color) {
   43708                     #        var redFrac = rgb_color.red || 0.0;
   43709                     #        var greenFrac = rgb_color.green || 0.0;
   43710                     #        var blueFrac = rgb_color.blue || 0.0;
   43711                     #        var red = Math.floor(redFrac * 255);
   43712                     #        var green = Math.floor(greenFrac * 255);
   43713                     #        var blue = Math.floor(blueFrac * 255);
   43714                     #
   43715                     #        if (!('alpha' in rgb_color)) {
   43716                     #           return rgbToCssColor_(red, green, blue);
   43717                     #        }
   43718                     #
   43719                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   43720                     #        var rgbParams = [red, green, blue].join(',');
   43721                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   43722                     #     };
   43723                     #
   43724                     #     var rgbToCssColor_ = function(red, green, blue) {
   43725                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   43726                     #       var hexString = rgbNumber.toString(16);
   43727                     #       var missingZeros = 6 - hexString.length;
   43728                     #       var resultBuilder = ['#'];
   43729                     #       for (var i = 0; i < missingZeros; i++) {
   43730                     #          resultBuilder.push('0');
   43731                     #       }
   43732                     #       resultBuilder.push(hexString);
   43733                     #       return resultBuilder.join('');
   43734                     #     };
   43735                     #
   43736                     #     // ...
   43737                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   43738                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   43739                       # the final pixel color is defined by the equation:
   43740                       #
   43741                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   43742                       #
   43743                       # This means that a value of 1.0 corresponds to a solid color, whereas
   43744                       # a value of 0.0 corresponds to a completely transparent color. This
   43745                       # uses a wrapper message rather than a simple float scalar so that it is
   43746                       # possible to distinguish between a default value and the value being unset.
   43747                       # If omitted, this color object is to be rendered as a solid color
   43748                       # (as if the alpha value had been explicitly given with a value of 1.0).
   43749                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   43750                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   43751                 },
   43752                 "type": "A String", # How the value should be interpreted.
   43753                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   43754                     # Unused if type is MIN or
   43755                     # MAX.
   43756               },
   43757               "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point.
   43758                   # These pin the gradient color scale according to the color,
   43759                   # type and value chosen.
   43760                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   43761                     # for simplicity of conversion to/from color representations in various
   43762                     # languages over compactness; for example, the fields of this representation
   43763                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   43764                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   43765                     # method in iOS; and, with just a little work, it can be easily formatted into
   43766                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   43767                     #
   43768                     # Example (Java):
   43769                     #
   43770                     #      import com.google.type.Color;
   43771                     #
   43772                     #      // ...
   43773                     #      public static java.awt.Color fromProto(Color protocolor) {
   43774                     #        float alpha = protocolor.hasAlpha()
   43775                     #            ? protocolor.getAlpha().getValue()
   43776                     #            : 1.0;
   43777                     #
   43778                     #        return new java.awt.Color(
   43779                     #            protocolor.getRed(),
   43780                     #            protocolor.getGreen(),
   43781                     #            protocolor.getBlue(),
   43782                     #            alpha);
   43783                     #      }
   43784                     #
   43785                     #      public static Color toProto(java.awt.Color color) {
   43786                     #        float red = (float) color.getRed();
   43787                     #        float green = (float) color.getGreen();
   43788                     #        float blue = (float) color.getBlue();
   43789                     #        float denominator = 255.0;
   43790                     #        Color.Builder resultBuilder =
   43791                     #            Color
   43792                     #                .newBuilder()
   43793                     #                .setRed(red / denominator)
   43794                     #                .setGreen(green / denominator)
   43795                     #                .setBlue(blue / denominator);
   43796                     #        int alpha = color.getAlpha();
   43797                     #        if (alpha != 255) {
   43798                     #          result.setAlpha(
   43799                     #              FloatValue
   43800                     #                  .newBuilder()
   43801                     #                  .setValue(((float) alpha) / denominator)
   43802                     #                  .build());
   43803                     #        }
   43804                     #        return resultBuilder.build();
   43805                     #      }
   43806                     #      // ...
   43807                     #
   43808                     # Example (iOS / Obj-C):
   43809                     #
   43810                     #      // ...
   43811                     #      static UIColor* fromProto(Color* protocolor) {
   43812                     #         float red = [protocolor red];
   43813                     #         float green = [protocolor green];
   43814                     #         float blue = [protocolor blue];
   43815                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   43816                     #         float alpha = 1.0;
   43817                     #         if (alpha_wrapper != nil) {
   43818                     #           alpha = [alpha_wrapper value];
   43819                     #         }
   43820                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   43821                     #      }
   43822                     #
   43823                     #      static Color* toProto(UIColor* color) {
   43824                     #          CGFloat red, green, blue, alpha;
   43825                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   43826                     #            return nil;
   43827                     #          }
   43828                     #          Color* result = [Color alloc] init];
   43829                     #          [result setRed:red];
   43830                     #          [result setGreen:green];
   43831                     #          [result setBlue:blue];
   43832                     #          if (alpha <= 0.9999) {
   43833                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   43834                     #          }
   43835                     #          [result autorelease];
   43836                     #          return result;
   43837                     #     }
   43838                     #     // ...
   43839                     #
   43840                     #  Example (JavaScript):
   43841                     #
   43842                     #     // ...
   43843                     #
   43844                     #     var protoToCssColor = function(rgb_color) {
   43845                     #        var redFrac = rgb_color.red || 0.0;
   43846                     #        var greenFrac = rgb_color.green || 0.0;
   43847                     #        var blueFrac = rgb_color.blue || 0.0;
   43848                     #        var red = Math.floor(redFrac * 255);
   43849                     #        var green = Math.floor(greenFrac * 255);
   43850                     #        var blue = Math.floor(blueFrac * 255);
   43851                     #
   43852                     #        if (!('alpha' in rgb_color)) {
   43853                     #           return rgbToCssColor_(red, green, blue);
   43854                     #        }
   43855                     #
   43856                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   43857                     #        var rgbParams = [red, green, blue].join(',');
   43858                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   43859                     #     };
   43860                     #
   43861                     #     var rgbToCssColor_ = function(red, green, blue) {
   43862                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   43863                     #       var hexString = rgbNumber.toString(16);
   43864                     #       var missingZeros = 6 - hexString.length;
   43865                     #       var resultBuilder = ['#'];
   43866                     #       for (var i = 0; i < missingZeros; i++) {
   43867                     #          resultBuilder.push('0');
   43868                     #       }
   43869                     #       resultBuilder.push(hexString);
   43870                     #       return resultBuilder.join('');
   43871                     #     };
   43872                     #
   43873                     #     // ...
   43874                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   43875                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   43876                       # the final pixel color is defined by the equation:
   43877                       #
   43878                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   43879                       #
   43880                       # This means that a value of 1.0 corresponds to a solid color, whereas
   43881                       # a value of 0.0 corresponds to a completely transparent color. This
   43882                       # uses a wrapper message rather than a simple float scalar so that it is
   43883                       # possible to distinguish between a default value and the value being unset.
   43884                       # If omitted, this color object is to be rendered as a solid color
   43885                       # (as if the alpha value had been explicitly given with a value of 1.0).
   43886                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   43887                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   43888                 },
   43889                 "type": "A String", # How the value should be interpreted.
   43890                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   43891                     # Unused if type is MIN or
   43892                     # MAX.
   43893               },
   43894               "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point.
   43895                   # These pin the gradient color scale according to the color,
   43896                   # type and value chosen.
   43897                 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
   43898                     # for simplicity of conversion to/from color representations in various
   43899                     # languages over compactness; for example, the fields of this representation
   43900                     # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   43901                     # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   43902                     # method in iOS; and, with just a little work, it can be easily formatted into
   43903                     # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   43904                     #
   43905                     # Example (Java):
   43906                     #
   43907                     #      import com.google.type.Color;
   43908                     #
   43909                     #      // ...
   43910                     #      public static java.awt.Color fromProto(Color protocolor) {
   43911                     #        float alpha = protocolor.hasAlpha()
   43912                     #            ? protocolor.getAlpha().getValue()
   43913                     #            : 1.0;
   43914                     #
   43915                     #        return new java.awt.Color(
   43916                     #            protocolor.getRed(),
   43917                     #            protocolor.getGreen(),
   43918                     #            protocolor.getBlue(),
   43919                     #            alpha);
   43920                     #      }
   43921                     #
   43922                     #      public static Color toProto(java.awt.Color color) {
   43923                     #        float red = (float) color.getRed();
   43924                     #        float green = (float) color.getGreen();
   43925                     #        float blue = (float) color.getBlue();
   43926                     #        float denominator = 255.0;
   43927                     #        Color.Builder resultBuilder =
   43928                     #            Color
   43929                     #                .newBuilder()
   43930                     #                .setRed(red / denominator)
   43931                     #                .setGreen(green / denominator)
   43932                     #                .setBlue(blue / denominator);
   43933                     #        int alpha = color.getAlpha();
   43934                     #        if (alpha != 255) {
   43935                     #          result.setAlpha(
   43936                     #              FloatValue
   43937                     #                  .newBuilder()
   43938                     #                  .setValue(((float) alpha) / denominator)
   43939                     #                  .build());
   43940                     #        }
   43941                     #        return resultBuilder.build();
   43942                     #      }
   43943                     #      // ...
   43944                     #
   43945                     # Example (iOS / Obj-C):
   43946                     #
   43947                     #      // ...
   43948                     #      static UIColor* fromProto(Color* protocolor) {
   43949                     #         float red = [protocolor red];
   43950                     #         float green = [protocolor green];
   43951                     #         float blue = [protocolor blue];
   43952                     #         FloatValue* alpha_wrapper = [protocolor alpha];
   43953                     #         float alpha = 1.0;
   43954                     #         if (alpha_wrapper != nil) {
   43955                     #           alpha = [alpha_wrapper value];
   43956                     #         }
   43957                     #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   43958                     #      }
   43959                     #
   43960                     #      static Color* toProto(UIColor* color) {
   43961                     #          CGFloat red, green, blue, alpha;
   43962                     #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   43963                     #            return nil;
   43964                     #          }
   43965                     #          Color* result = [Color alloc] init];
   43966                     #          [result setRed:red];
   43967                     #          [result setGreen:green];
   43968                     #          [result setBlue:blue];
   43969                     #          if (alpha <= 0.9999) {
   43970                     #            [result setAlpha:floatWrapperWithValue(alpha)];
   43971                     #          }
   43972                     #          [result autorelease];
   43973                     #          return result;
   43974                     #     }
   43975                     #     // ...
   43976                     #
   43977                     #  Example (JavaScript):
   43978                     #
   43979                     #     // ...
   43980                     #
   43981                     #     var protoToCssColor = function(rgb_color) {
   43982                     #        var redFrac = rgb_color.red || 0.0;
   43983                     #        var greenFrac = rgb_color.green || 0.0;
   43984                     #        var blueFrac = rgb_color.blue || 0.0;
   43985                     #        var red = Math.floor(redFrac * 255);
   43986                     #        var green = Math.floor(greenFrac * 255);
   43987                     #        var blue = Math.floor(blueFrac * 255);
   43988                     #
   43989                     #        if (!('alpha' in rgb_color)) {
   43990                     #           return rgbToCssColor_(red, green, blue);
   43991                     #        }
   43992                     #
   43993                     #        var alphaFrac = rgb_color.alpha.value || 0.0;
   43994                     #        var rgbParams = [red, green, blue].join(',');
   43995                     #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   43996                     #     };
   43997                     #
   43998                     #     var rgbToCssColor_ = function(red, green, blue) {
   43999                     #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   44000                     #       var hexString = rgbNumber.toString(16);
   44001                     #       var missingZeros = 6 - hexString.length;
   44002                     #       var resultBuilder = ['#'];
   44003                     #       for (var i = 0; i < missingZeros; i++) {
   44004                     #          resultBuilder.push('0');
   44005                     #       }
   44006                     #       resultBuilder.push(hexString);
   44007                     #       return resultBuilder.join('');
   44008                     #     };
   44009                     #
   44010                     #     // ...
   44011                   "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   44012                   "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   44013                       # the final pixel color is defined by the equation:
   44014                       #
   44015                       #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   44016                       #
   44017                       # This means that a value of 1.0 corresponds to a solid color, whereas
   44018                       # a value of 0.0 corresponds to a completely transparent color. This
   44019                       # uses a wrapper message rather than a simple float scalar so that it is
   44020                       # possible to distinguish between a default value and the value being unset.
   44021                       # If omitted, this color object is to be rendered as a solid color
   44022                       # (as if the alpha value had been explicitly given with a value of 1.0).
   44023                   "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   44024                   "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   44025                 },
   44026                 "type": "A String", # How the value should be interpreted.
   44027                 "value": "A String", # The value this interpolation point uses.  May be a formula.
   44028                     # Unused if type is MIN or
   44029                     # MAX.
   44030               },
   44031             },
   44032           },
   44033         ],
   44034         "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet.
   44035           { # A banded (alternating colors) range in a sheet.
   44036             "range": { # A range on a sheet. # The range over which these properties are applied.
   44037                 # All indexes are zero-based.
   44038                 # Indexes are half open, e.g the start index is inclusive
   44039                 # and the end index is exclusive -- [start_index, end_index).
   44040                 # Missing indexes indicate the range is unbounded on that side.
   44041                 #
   44042                 # For example, if `"Sheet1"` is sheet ID 0, then:
   44043                 #
   44044                 #   `Sheet1!A1:A1 == sheet_id: 0,
   44045                 #                   start_row_index: 0, end_row_index: 1,
   44046                 #                   start_column_index: 0, end_column_index: 1`
   44047                 #
   44048                 #   `Sheet1!A3:B4 == sheet_id: 0,
   44049                 #                   start_row_index: 2, end_row_index: 4,
   44050                 #                   start_column_index: 0, end_column_index: 2`
   44051                 #
   44052                 #   `Sheet1!A:B == sheet_id: 0,
   44053                 #                 start_column_index: 0, end_column_index: 2`
   44054                 #
   44055                 #   `Sheet1!A5:B == sheet_id: 0,
   44056                 #                  start_row_index: 4,
   44057                 #                  start_column_index: 0, end_column_index: 2`
   44058                 #
   44059                 #   `Sheet1 == sheet_id:0`
   44060                 #
   44061                 # The start index must always be less than or equal to the end index.
   44062                 # If the start index equals the end index, then the range is empty.
   44063                 # Empty ranges are typically not meaningful and are usually rendered in the
   44064                 # UI as `#REF!`.
   44065               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   44066               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   44067               "sheetId": 42, # The sheet this range is on.
   44068               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   44069               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   44070             },
   44071             "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column-
   44072                 # by-column basis throughout all the columns in the range. At least one of
   44073                 # row_properties or column_properties must be specified.
   44074                 # BandedRange.row_properties and BandedRange.column_properties are
   44075                 # set, the fill colors are applied to cells according to the following rules:
   44076                 #
   44077                 # * header_color and footer_color take priority over band colors.
   44078                 # * first_band_color takes priority over second_band_color.
   44079                 # * row_properties takes priority over column_properties.
   44080                 #
   44081                 # For example, the first row color takes priority over the first column
   44082                 # color, but the first column color takes priority over the second row color.
   44083                 # Similarly, the row header takes priority over the column header in the
   44084                 # top left cell, but the column header takes priority over the first row
   44085                 # color if the row header is not set.
   44086               "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   44087                   # for simplicity of conversion to/from color representations in various
   44088                   # languages over compactness; for example, the fields of this representation
   44089                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   44090                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   44091                   # method in iOS; and, with just a little work, it can be easily formatted into
   44092                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   44093                   #
   44094                   # Example (Java):
   44095                   #
   44096                   #      import com.google.type.Color;
   44097                   #
   44098                   #      // ...
   44099                   #      public static java.awt.Color fromProto(Color protocolor) {
   44100                   #        float alpha = protocolor.hasAlpha()
   44101                   #            ? protocolor.getAlpha().getValue()
   44102                   #            : 1.0;
   44103                   #
   44104                   #        return new java.awt.Color(
   44105                   #            protocolor.getRed(),
   44106                   #            protocolor.getGreen(),
   44107                   #            protocolor.getBlue(),
   44108                   #            alpha);
   44109                   #      }
   44110                   #
   44111                   #      public static Color toProto(java.awt.Color color) {
   44112                   #        float red = (float) color.getRed();
   44113                   #        float green = (float) color.getGreen();
   44114                   #        float blue = (float) color.getBlue();
   44115                   #        float denominator = 255.0;
   44116                   #        Color.Builder resultBuilder =
   44117                   #            Color
   44118                   #                .newBuilder()
   44119                   #                .setRed(red / denominator)
   44120                   #                .setGreen(green / denominator)
   44121                   #                .setBlue(blue / denominator);
   44122                   #        int alpha = color.getAlpha();
   44123                   #        if (alpha != 255) {
   44124                   #          result.setAlpha(
   44125                   #              FloatValue
   44126                   #                  .newBuilder()
   44127                   #                  .setValue(((float) alpha) / denominator)
   44128                   #                  .build());
   44129                   #        }
   44130                   #        return resultBuilder.build();
   44131                   #      }
   44132                   #      // ...
   44133                   #
   44134                   # Example (iOS / Obj-C):
   44135                   #
   44136                   #      // ...
   44137                   #      static UIColor* fromProto(Color* protocolor) {
   44138                   #         float red = [protocolor red];
   44139                   #         float green = [protocolor green];
   44140                   #         float blue = [protocolor blue];
   44141                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   44142                   #         float alpha = 1.0;
   44143                   #         if (alpha_wrapper != nil) {
   44144                   #           alpha = [alpha_wrapper value];
   44145                   #         }
   44146                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   44147                   #      }
   44148                   #
   44149                   #      static Color* toProto(UIColor* color) {
   44150                   #          CGFloat red, green, blue, alpha;
   44151                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   44152                   #            return nil;
   44153                   #          }
   44154                   #          Color* result = [Color alloc] init];
   44155                   #          [result setRed:red];
   44156                   #          [result setGreen:green];
   44157                   #          [result setBlue:blue];
   44158                   #          if (alpha <= 0.9999) {
   44159                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   44160                   #          }
   44161                   #          [result autorelease];
   44162                   #          return result;
   44163                   #     }
   44164                   #     // ...
   44165                   #
   44166                   #  Example (JavaScript):
   44167                   #
   44168                   #     // ...
   44169                   #
   44170                   #     var protoToCssColor = function(rgb_color) {
   44171                   #        var redFrac = rgb_color.red || 0.0;
   44172                   #        var greenFrac = rgb_color.green || 0.0;
   44173                   #        var blueFrac = rgb_color.blue || 0.0;
   44174                   #        var red = Math.floor(redFrac * 255);
   44175                   #        var green = Math.floor(greenFrac * 255);
   44176                   #        var blue = Math.floor(blueFrac * 255);
   44177                   #
   44178                   #        if (!('alpha' in rgb_color)) {
   44179                   #           return rgbToCssColor_(red, green, blue);
   44180                   #        }
   44181                   #
   44182                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   44183                   #        var rgbParams = [red, green, blue].join(',');
   44184                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   44185                   #     };
   44186                   #
   44187                   #     var rgbToCssColor_ = function(red, green, blue) {
   44188                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   44189                   #       var hexString = rgbNumber.toString(16);
   44190                   #       var missingZeros = 6 - hexString.length;
   44191                   #       var resultBuilder = ['#'];
   44192                   #       for (var i = 0; i < missingZeros; i++) {
   44193                   #          resultBuilder.push('0');
   44194                   #       }
   44195                   #       resultBuilder.push(hexString);
   44196                   #       return resultBuilder.join('');
   44197                   #     };
   44198                   #
   44199                   #     // ...
   44200                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   44201                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   44202                     # the final pixel color is defined by the equation:
   44203                     #
   44204                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   44205                     #
   44206                     # This means that a value of 1.0 corresponds to a solid color, whereas
   44207                     # a value of 0.0 corresponds to a completely transparent color. This
   44208                     # uses a wrapper message rather than a simple float scalar so that it is
   44209                     # possible to distinguish between a default value and the value being unset.
   44210                     # If omitted, this color object is to be rendered as a solid color
   44211                     # (as if the alpha value had been explicitly given with a value of 1.0).
   44212                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   44213                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   44214               },
   44215               "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   44216                   # row or column will be filled with this color and the colors will
   44217                   # alternate between first_band_color and second_band_color starting
   44218                   # from the second row or column. Otherwise, the first row or column will be
   44219                   # filled with first_band_color and the colors will proceed to alternate
   44220                   # as they normally would.
   44221                   # for simplicity of conversion to/from color representations in various
   44222                   # languages over compactness; for example, the fields of this representation
   44223                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   44224                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   44225                   # method in iOS; and, with just a little work, it can be easily formatted into
   44226                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   44227                   #
   44228                   # Example (Java):
   44229                   #
   44230                   #      import com.google.type.Color;
   44231                   #
   44232                   #      // ...
   44233                   #      public static java.awt.Color fromProto(Color protocolor) {
   44234                   #        float alpha = protocolor.hasAlpha()
   44235                   #            ? protocolor.getAlpha().getValue()
   44236                   #            : 1.0;
   44237                   #
   44238                   #        return new java.awt.Color(
   44239                   #            protocolor.getRed(),
   44240                   #            protocolor.getGreen(),
   44241                   #            protocolor.getBlue(),
   44242                   #            alpha);
   44243                   #      }
   44244                   #
   44245                   #      public static Color toProto(java.awt.Color color) {
   44246                   #        float red = (float) color.getRed();
   44247                   #        float green = (float) color.getGreen();
   44248                   #        float blue = (float) color.getBlue();
   44249                   #        float denominator = 255.0;
   44250                   #        Color.Builder resultBuilder =
   44251                   #            Color
   44252                   #                .newBuilder()
   44253                   #                .setRed(red / denominator)
   44254                   #                .setGreen(green / denominator)
   44255                   #                .setBlue(blue / denominator);
   44256                   #        int alpha = color.getAlpha();
   44257                   #        if (alpha != 255) {
   44258                   #          result.setAlpha(
   44259                   #              FloatValue
   44260                   #                  .newBuilder()
   44261                   #                  .setValue(((float) alpha) / denominator)
   44262                   #                  .build());
   44263                   #        }
   44264                   #        return resultBuilder.build();
   44265                   #      }
   44266                   #      // ...
   44267                   #
   44268                   # Example (iOS / Obj-C):
   44269                   #
   44270                   #      // ...
   44271                   #      static UIColor* fromProto(Color* protocolor) {
   44272                   #         float red = [protocolor red];
   44273                   #         float green = [protocolor green];
   44274                   #         float blue = [protocolor blue];
   44275                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   44276                   #         float alpha = 1.0;
   44277                   #         if (alpha_wrapper != nil) {
   44278                   #           alpha = [alpha_wrapper value];
   44279                   #         }
   44280                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   44281                   #      }
   44282                   #
   44283                   #      static Color* toProto(UIColor* color) {
   44284                   #          CGFloat red, green, blue, alpha;
   44285                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   44286                   #            return nil;
   44287                   #          }
   44288                   #          Color* result = [Color alloc] init];
   44289                   #          [result setRed:red];
   44290                   #          [result setGreen:green];
   44291                   #          [result setBlue:blue];
   44292                   #          if (alpha <= 0.9999) {
   44293                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   44294                   #          }
   44295                   #          [result autorelease];
   44296                   #          return result;
   44297                   #     }
   44298                   #     // ...
   44299                   #
   44300                   #  Example (JavaScript):
   44301                   #
   44302                   #     // ...
   44303                   #
   44304                   #     var protoToCssColor = function(rgb_color) {
   44305                   #        var redFrac = rgb_color.red || 0.0;
   44306                   #        var greenFrac = rgb_color.green || 0.0;
   44307                   #        var blueFrac = rgb_color.blue || 0.0;
   44308                   #        var red = Math.floor(redFrac * 255);
   44309                   #        var green = Math.floor(greenFrac * 255);
   44310                   #        var blue = Math.floor(blueFrac * 255);
   44311                   #
   44312                   #        if (!('alpha' in rgb_color)) {
   44313                   #           return rgbToCssColor_(red, green, blue);
   44314                   #        }
   44315                   #
   44316                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   44317                   #        var rgbParams = [red, green, blue].join(',');
   44318                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   44319                   #     };
   44320                   #
   44321                   #     var rgbToCssColor_ = function(red, green, blue) {
   44322                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   44323                   #       var hexString = rgbNumber.toString(16);
   44324                   #       var missingZeros = 6 - hexString.length;
   44325                   #       var resultBuilder = ['#'];
   44326                   #       for (var i = 0; i < missingZeros; i++) {
   44327                   #          resultBuilder.push('0');
   44328                   #       }
   44329                   #       resultBuilder.push(hexString);
   44330                   #       return resultBuilder.join('');
   44331                   #     };
   44332                   #
   44333                   #     // ...
   44334                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   44335                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   44336                     # the final pixel color is defined by the equation:
   44337                     #
   44338                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   44339                     #
   44340                     # This means that a value of 1.0 corresponds to a solid color, whereas
   44341                     # a value of 0.0 corresponds to a completely transparent color. This
   44342                     # uses a wrapper message rather than a simple float scalar so that it is
   44343                     # possible to distinguish between a default value and the value being unset.
   44344                     # If omitted, this color object is to be rendered as a solid color
   44345                     # (as if the alpha value had been explicitly given with a value of 1.0).
   44346                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   44347                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   44348               },
   44349               "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   44350                   # row or column will be filled with either first_band_color or
   44351                   # second_band_color, depending on the color of the previous row or
   44352                   # column.
   44353                   # for simplicity of conversion to/from color representations in various
   44354                   # languages over compactness; for example, the fields of this representation
   44355                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   44356                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   44357                   # method in iOS; and, with just a little work, it can be easily formatted into
   44358                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   44359                   #
   44360                   # Example (Java):
   44361                   #
   44362                   #      import com.google.type.Color;
   44363                   #
   44364                   #      // ...
   44365                   #      public static java.awt.Color fromProto(Color protocolor) {
   44366                   #        float alpha = protocolor.hasAlpha()
   44367                   #            ? protocolor.getAlpha().getValue()
   44368                   #            : 1.0;
   44369                   #
   44370                   #        return new java.awt.Color(
   44371                   #            protocolor.getRed(),
   44372                   #            protocolor.getGreen(),
   44373                   #            protocolor.getBlue(),
   44374                   #            alpha);
   44375                   #      }
   44376                   #
   44377                   #      public static Color toProto(java.awt.Color color) {
   44378                   #        float red = (float) color.getRed();
   44379                   #        float green = (float) color.getGreen();
   44380                   #        float blue = (float) color.getBlue();
   44381                   #        float denominator = 255.0;
   44382                   #        Color.Builder resultBuilder =
   44383                   #            Color
   44384                   #                .newBuilder()
   44385                   #                .setRed(red / denominator)
   44386                   #                .setGreen(green / denominator)
   44387                   #                .setBlue(blue / denominator);
   44388                   #        int alpha = color.getAlpha();
   44389                   #        if (alpha != 255) {
   44390                   #          result.setAlpha(
   44391                   #              FloatValue
   44392                   #                  .newBuilder()
   44393                   #                  .setValue(((float) alpha) / denominator)
   44394                   #                  .build());
   44395                   #        }
   44396                   #        return resultBuilder.build();
   44397                   #      }
   44398                   #      // ...
   44399                   #
   44400                   # Example (iOS / Obj-C):
   44401                   #
   44402                   #      // ...
   44403                   #      static UIColor* fromProto(Color* protocolor) {
   44404                   #         float red = [protocolor red];
   44405                   #         float green = [protocolor green];
   44406                   #         float blue = [protocolor blue];
   44407                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   44408                   #         float alpha = 1.0;
   44409                   #         if (alpha_wrapper != nil) {
   44410                   #           alpha = [alpha_wrapper value];
   44411                   #         }
   44412                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   44413                   #      }
   44414                   #
   44415                   #      static Color* toProto(UIColor* color) {
   44416                   #          CGFloat red, green, blue, alpha;
   44417                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   44418                   #            return nil;
   44419                   #          }
   44420                   #          Color* result = [Color alloc] init];
   44421                   #          [result setRed:red];
   44422                   #          [result setGreen:green];
   44423                   #          [result setBlue:blue];
   44424                   #          if (alpha <= 0.9999) {
   44425                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   44426                   #          }
   44427                   #          [result autorelease];
   44428                   #          return result;
   44429                   #     }
   44430                   #     // ...
   44431                   #
   44432                   #  Example (JavaScript):
   44433                   #
   44434                   #     // ...
   44435                   #
   44436                   #     var protoToCssColor = function(rgb_color) {
   44437                   #        var redFrac = rgb_color.red || 0.0;
   44438                   #        var greenFrac = rgb_color.green || 0.0;
   44439                   #        var blueFrac = rgb_color.blue || 0.0;
   44440                   #        var red = Math.floor(redFrac * 255);
   44441                   #        var green = Math.floor(greenFrac * 255);
   44442                   #        var blue = Math.floor(blueFrac * 255);
   44443                   #
   44444                   #        if (!('alpha' in rgb_color)) {
   44445                   #           return rgbToCssColor_(red, green, blue);
   44446                   #        }
   44447                   #
   44448                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   44449                   #        var rgbParams = [red, green, blue].join(',');
   44450                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   44451                   #     };
   44452                   #
   44453                   #     var rgbToCssColor_ = function(red, green, blue) {
   44454                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   44455                   #       var hexString = rgbNumber.toString(16);
   44456                   #       var missingZeros = 6 - hexString.length;
   44457                   #       var resultBuilder = ['#'];
   44458                   #       for (var i = 0; i < missingZeros; i++) {
   44459                   #          resultBuilder.push('0');
   44460                   #       }
   44461                   #       resultBuilder.push(hexString);
   44462                   #       return resultBuilder.join('');
   44463                   #     };
   44464                   #
   44465                   #     // ...
   44466                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   44467                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   44468                     # the final pixel color is defined by the equation:
   44469                     #
   44470                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   44471                     #
   44472                     # This means that a value of 1.0 corresponds to a solid color, whereas
   44473                     # a value of 0.0 corresponds to a completely transparent color. This
   44474                     # uses a wrapper message rather than a simple float scalar so that it is
   44475                     # possible to distinguish between a default value and the value being unset.
   44476                     # If omitted, this color object is to be rendered as a solid color
   44477                     # (as if the alpha value had been explicitly given with a value of 1.0).
   44478                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   44479                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   44480               },
   44481               "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   44482                   # for simplicity of conversion to/from color representations in various
   44483                   # languages over compactness; for example, the fields of this representation
   44484                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   44485                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   44486                   # method in iOS; and, with just a little work, it can be easily formatted into
   44487                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   44488                   #
   44489                   # Example (Java):
   44490                   #
   44491                   #      import com.google.type.Color;
   44492                   #
   44493                   #      // ...
   44494                   #      public static java.awt.Color fromProto(Color protocolor) {
   44495                   #        float alpha = protocolor.hasAlpha()
   44496                   #            ? protocolor.getAlpha().getValue()
   44497                   #            : 1.0;
   44498                   #
   44499                   #        return new java.awt.Color(
   44500                   #            protocolor.getRed(),
   44501                   #            protocolor.getGreen(),
   44502                   #            protocolor.getBlue(),
   44503                   #            alpha);
   44504                   #      }
   44505                   #
   44506                   #      public static Color toProto(java.awt.Color color) {
   44507                   #        float red = (float) color.getRed();
   44508                   #        float green = (float) color.getGreen();
   44509                   #        float blue = (float) color.getBlue();
   44510                   #        float denominator = 255.0;
   44511                   #        Color.Builder resultBuilder =
   44512                   #            Color
   44513                   #                .newBuilder()
   44514                   #                .setRed(red / denominator)
   44515                   #                .setGreen(green / denominator)
   44516                   #                .setBlue(blue / denominator);
   44517                   #        int alpha = color.getAlpha();
   44518                   #        if (alpha != 255) {
   44519                   #          result.setAlpha(
   44520                   #              FloatValue
   44521                   #                  .newBuilder()
   44522                   #                  .setValue(((float) alpha) / denominator)
   44523                   #                  .build());
   44524                   #        }
   44525                   #        return resultBuilder.build();
   44526                   #      }
   44527                   #      // ...
   44528                   #
   44529                   # Example (iOS / Obj-C):
   44530                   #
   44531                   #      // ...
   44532                   #      static UIColor* fromProto(Color* protocolor) {
   44533                   #         float red = [protocolor red];
   44534                   #         float green = [protocolor green];
   44535                   #         float blue = [protocolor blue];
   44536                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   44537                   #         float alpha = 1.0;
   44538                   #         if (alpha_wrapper != nil) {
   44539                   #           alpha = [alpha_wrapper value];
   44540                   #         }
   44541                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   44542                   #      }
   44543                   #
   44544                   #      static Color* toProto(UIColor* color) {
   44545                   #          CGFloat red, green, blue, alpha;
   44546                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   44547                   #            return nil;
   44548                   #          }
   44549                   #          Color* result = [Color alloc] init];
   44550                   #          [result setRed:red];
   44551                   #          [result setGreen:green];
   44552                   #          [result setBlue:blue];
   44553                   #          if (alpha <= 0.9999) {
   44554                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   44555                   #          }
   44556                   #          [result autorelease];
   44557                   #          return result;
   44558                   #     }
   44559                   #     // ...
   44560                   #
   44561                   #  Example (JavaScript):
   44562                   #
   44563                   #     // ...
   44564                   #
   44565                   #     var protoToCssColor = function(rgb_color) {
   44566                   #        var redFrac = rgb_color.red || 0.0;
   44567                   #        var greenFrac = rgb_color.green || 0.0;
   44568                   #        var blueFrac = rgb_color.blue || 0.0;
   44569                   #        var red = Math.floor(redFrac * 255);
   44570                   #        var green = Math.floor(greenFrac * 255);
   44571                   #        var blue = Math.floor(blueFrac * 255);
   44572                   #
   44573                   #        if (!('alpha' in rgb_color)) {
   44574                   #           return rgbToCssColor_(red, green, blue);
   44575                   #        }
   44576                   #
   44577                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   44578                   #        var rgbParams = [red, green, blue].join(',');
   44579                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   44580                   #     };
   44581                   #
   44582                   #     var rgbToCssColor_ = function(red, green, blue) {
   44583                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   44584                   #       var hexString = rgbNumber.toString(16);
   44585                   #       var missingZeros = 6 - hexString.length;
   44586                   #       var resultBuilder = ['#'];
   44587                   #       for (var i = 0; i < missingZeros; i++) {
   44588                   #          resultBuilder.push('0');
   44589                   #       }
   44590                   #       resultBuilder.push(hexString);
   44591                   #       return resultBuilder.join('');
   44592                   #     };
   44593                   #
   44594                   #     // ...
   44595                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   44596                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   44597                     # the final pixel color is defined by the equation:
   44598                     #
   44599                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   44600                     #
   44601                     # This means that a value of 1.0 corresponds to a solid color, whereas
   44602                     # a value of 0.0 corresponds to a completely transparent color. This
   44603                     # uses a wrapper message rather than a simple float scalar so that it is
   44604                     # possible to distinguish between a default value and the value being unset.
   44605                     # If omitted, this color object is to be rendered as a solid color
   44606                     # (as if the alpha value had been explicitly given with a value of 1.0).
   44607                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   44608                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   44609               },
   44610             },
   44611             "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row
   44612                 # basis throughout all the rows in the range. At least one of
   44613                 # row_properties or column_properties must be specified.
   44614                 # BandedRange.row_properties and BandedRange.column_properties are
   44615                 # set, the fill colors are applied to cells according to the following rules:
   44616                 #
   44617                 # * header_color and footer_color take priority over band colors.
   44618                 # * first_band_color takes priority over second_band_color.
   44619                 # * row_properties takes priority over column_properties.
   44620                 #
   44621                 # For example, the first row color takes priority over the first column
   44622                 # color, but the first column color takes priority over the second row color.
   44623                 # Similarly, the row header takes priority over the column header in the
   44624                 # top left cell, but the column header takes priority over the first row
   44625                 # color if the row header is not set.
   44626               "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required)
   44627                   # for simplicity of conversion to/from color representations in various
   44628                   # languages over compactness; for example, the fields of this representation
   44629                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   44630                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   44631                   # method in iOS; and, with just a little work, it can be easily formatted into
   44632                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   44633                   #
   44634                   # Example (Java):
   44635                   #
   44636                   #      import com.google.type.Color;
   44637                   #
   44638                   #      // ...
   44639                   #      public static java.awt.Color fromProto(Color protocolor) {
   44640                   #        float alpha = protocolor.hasAlpha()
   44641                   #            ? protocolor.getAlpha().getValue()
   44642                   #            : 1.0;
   44643                   #
   44644                   #        return new java.awt.Color(
   44645                   #            protocolor.getRed(),
   44646                   #            protocolor.getGreen(),
   44647                   #            protocolor.getBlue(),
   44648                   #            alpha);
   44649                   #      }
   44650                   #
   44651                   #      public static Color toProto(java.awt.Color color) {
   44652                   #        float red = (float) color.getRed();
   44653                   #        float green = (float) color.getGreen();
   44654                   #        float blue = (float) color.getBlue();
   44655                   #        float denominator = 255.0;
   44656                   #        Color.Builder resultBuilder =
   44657                   #            Color
   44658                   #                .newBuilder()
   44659                   #                .setRed(red / denominator)
   44660                   #                .setGreen(green / denominator)
   44661                   #                .setBlue(blue / denominator);
   44662                   #        int alpha = color.getAlpha();
   44663                   #        if (alpha != 255) {
   44664                   #          result.setAlpha(
   44665                   #              FloatValue
   44666                   #                  .newBuilder()
   44667                   #                  .setValue(((float) alpha) / denominator)
   44668                   #                  .build());
   44669                   #        }
   44670                   #        return resultBuilder.build();
   44671                   #      }
   44672                   #      // ...
   44673                   #
   44674                   # Example (iOS / Obj-C):
   44675                   #
   44676                   #      // ...
   44677                   #      static UIColor* fromProto(Color* protocolor) {
   44678                   #         float red = [protocolor red];
   44679                   #         float green = [protocolor green];
   44680                   #         float blue = [protocolor blue];
   44681                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   44682                   #         float alpha = 1.0;
   44683                   #         if (alpha_wrapper != nil) {
   44684                   #           alpha = [alpha_wrapper value];
   44685                   #         }
   44686                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   44687                   #      }
   44688                   #
   44689                   #      static Color* toProto(UIColor* color) {
   44690                   #          CGFloat red, green, blue, alpha;
   44691                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   44692                   #            return nil;
   44693                   #          }
   44694                   #          Color* result = [Color alloc] init];
   44695                   #          [result setRed:red];
   44696                   #          [result setGreen:green];
   44697                   #          [result setBlue:blue];
   44698                   #          if (alpha <= 0.9999) {
   44699                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   44700                   #          }
   44701                   #          [result autorelease];
   44702                   #          return result;
   44703                   #     }
   44704                   #     // ...
   44705                   #
   44706                   #  Example (JavaScript):
   44707                   #
   44708                   #     // ...
   44709                   #
   44710                   #     var protoToCssColor = function(rgb_color) {
   44711                   #        var redFrac = rgb_color.red || 0.0;
   44712                   #        var greenFrac = rgb_color.green || 0.0;
   44713                   #        var blueFrac = rgb_color.blue || 0.0;
   44714                   #        var red = Math.floor(redFrac * 255);
   44715                   #        var green = Math.floor(greenFrac * 255);
   44716                   #        var blue = Math.floor(blueFrac * 255);
   44717                   #
   44718                   #        if (!('alpha' in rgb_color)) {
   44719                   #           return rgbToCssColor_(red, green, blue);
   44720                   #        }
   44721                   #
   44722                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   44723                   #        var rgbParams = [red, green, blue].join(',');
   44724                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   44725                   #     };
   44726                   #
   44727                   #     var rgbToCssColor_ = function(red, green, blue) {
   44728                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   44729                   #       var hexString = rgbNumber.toString(16);
   44730                   #       var missingZeros = 6 - hexString.length;
   44731                   #       var resultBuilder = ['#'];
   44732                   #       for (var i = 0; i < missingZeros; i++) {
   44733                   #          resultBuilder.push('0');
   44734                   #       }
   44735                   #       resultBuilder.push(hexString);
   44736                   #       return resultBuilder.join('');
   44737                   #     };
   44738                   #
   44739                   #     // ...
   44740                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   44741                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   44742                     # the final pixel color is defined by the equation:
   44743                     #
   44744                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   44745                     #
   44746                     # This means that a value of 1.0 corresponds to a solid color, whereas
   44747                     # a value of 0.0 corresponds to a completely transparent color. This
   44748                     # uses a wrapper message rather than a simple float scalar so that it is
   44749                     # possible to distinguish between a default value and the value being unset.
   44750                     # If omitted, this color object is to be rendered as a solid color
   44751                     # (as if the alpha value had been explicitly given with a value of 1.0).
   44752                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   44753                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   44754               },
   44755               "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first
   44756                   # row or column will be filled with this color and the colors will
   44757                   # alternate between first_band_color and second_band_color starting
   44758                   # from the second row or column. Otherwise, the first row or column will be
   44759                   # filled with first_band_color and the colors will proceed to alternate
   44760                   # as they normally would.
   44761                   # for simplicity of conversion to/from color representations in various
   44762                   # languages over compactness; for example, the fields of this representation
   44763                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   44764                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   44765                   # method in iOS; and, with just a little work, it can be easily formatted into
   44766                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   44767                   #
   44768                   # Example (Java):
   44769                   #
   44770                   #      import com.google.type.Color;
   44771                   #
   44772                   #      // ...
   44773                   #      public static java.awt.Color fromProto(Color protocolor) {
   44774                   #        float alpha = protocolor.hasAlpha()
   44775                   #            ? protocolor.getAlpha().getValue()
   44776                   #            : 1.0;
   44777                   #
   44778                   #        return new java.awt.Color(
   44779                   #            protocolor.getRed(),
   44780                   #            protocolor.getGreen(),
   44781                   #            protocolor.getBlue(),
   44782                   #            alpha);
   44783                   #      }
   44784                   #
   44785                   #      public static Color toProto(java.awt.Color color) {
   44786                   #        float red = (float) color.getRed();
   44787                   #        float green = (float) color.getGreen();
   44788                   #        float blue = (float) color.getBlue();
   44789                   #        float denominator = 255.0;
   44790                   #        Color.Builder resultBuilder =
   44791                   #            Color
   44792                   #                .newBuilder()
   44793                   #                .setRed(red / denominator)
   44794                   #                .setGreen(green / denominator)
   44795                   #                .setBlue(blue / denominator);
   44796                   #        int alpha = color.getAlpha();
   44797                   #        if (alpha != 255) {
   44798                   #          result.setAlpha(
   44799                   #              FloatValue
   44800                   #                  .newBuilder()
   44801                   #                  .setValue(((float) alpha) / denominator)
   44802                   #                  .build());
   44803                   #        }
   44804                   #        return resultBuilder.build();
   44805                   #      }
   44806                   #      // ...
   44807                   #
   44808                   # Example (iOS / Obj-C):
   44809                   #
   44810                   #      // ...
   44811                   #      static UIColor* fromProto(Color* protocolor) {
   44812                   #         float red = [protocolor red];
   44813                   #         float green = [protocolor green];
   44814                   #         float blue = [protocolor blue];
   44815                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   44816                   #         float alpha = 1.0;
   44817                   #         if (alpha_wrapper != nil) {
   44818                   #           alpha = [alpha_wrapper value];
   44819                   #         }
   44820                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   44821                   #      }
   44822                   #
   44823                   #      static Color* toProto(UIColor* color) {
   44824                   #          CGFloat red, green, blue, alpha;
   44825                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   44826                   #            return nil;
   44827                   #          }
   44828                   #          Color* result = [Color alloc] init];
   44829                   #          [result setRed:red];
   44830                   #          [result setGreen:green];
   44831                   #          [result setBlue:blue];
   44832                   #          if (alpha <= 0.9999) {
   44833                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   44834                   #          }
   44835                   #          [result autorelease];
   44836                   #          return result;
   44837                   #     }
   44838                   #     // ...
   44839                   #
   44840                   #  Example (JavaScript):
   44841                   #
   44842                   #     // ...
   44843                   #
   44844                   #     var protoToCssColor = function(rgb_color) {
   44845                   #        var redFrac = rgb_color.red || 0.0;
   44846                   #        var greenFrac = rgb_color.green || 0.0;
   44847                   #        var blueFrac = rgb_color.blue || 0.0;
   44848                   #        var red = Math.floor(redFrac * 255);
   44849                   #        var green = Math.floor(greenFrac * 255);
   44850                   #        var blue = Math.floor(blueFrac * 255);
   44851                   #
   44852                   #        if (!('alpha' in rgb_color)) {
   44853                   #           return rgbToCssColor_(red, green, blue);
   44854                   #        }
   44855                   #
   44856                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   44857                   #        var rgbParams = [red, green, blue].join(',');
   44858                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   44859                   #     };
   44860                   #
   44861                   #     var rgbToCssColor_ = function(red, green, blue) {
   44862                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   44863                   #       var hexString = rgbNumber.toString(16);
   44864                   #       var missingZeros = 6 - hexString.length;
   44865                   #       var resultBuilder = ['#'];
   44866                   #       for (var i = 0; i < missingZeros; i++) {
   44867                   #          resultBuilder.push('0');
   44868                   #       }
   44869                   #       resultBuilder.push(hexString);
   44870                   #       return resultBuilder.join('');
   44871                   #     };
   44872                   #
   44873                   #     // ...
   44874                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   44875                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   44876                     # the final pixel color is defined by the equation:
   44877                     #
   44878                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   44879                     #
   44880                     # This means that a value of 1.0 corresponds to a solid color, whereas
   44881                     # a value of 0.0 corresponds to a completely transparent color. This
   44882                     # uses a wrapper message rather than a simple float scalar so that it is
   44883                     # possible to distinguish between a default value and the value being unset.
   44884                     # If omitted, this color object is to be rendered as a solid color
   44885                     # (as if the alpha value had been explicitly given with a value of 1.0).
   44886                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   44887                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   44888               },
   44889               "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last
   44890                   # row or column will be filled with either first_band_color or
   44891                   # second_band_color, depending on the color of the previous row or
   44892                   # column.
   44893                   # for simplicity of conversion to/from color representations in various
   44894                   # languages over compactness; for example, the fields of this representation
   44895                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   44896                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   44897                   # method in iOS; and, with just a little work, it can be easily formatted into
   44898                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   44899                   #
   44900                   # Example (Java):
   44901                   #
   44902                   #      import com.google.type.Color;
   44903                   #
   44904                   #      // ...
   44905                   #      public static java.awt.Color fromProto(Color protocolor) {
   44906                   #        float alpha = protocolor.hasAlpha()
   44907                   #            ? protocolor.getAlpha().getValue()
   44908                   #            : 1.0;
   44909                   #
   44910                   #        return new java.awt.Color(
   44911                   #            protocolor.getRed(),
   44912                   #            protocolor.getGreen(),
   44913                   #            protocolor.getBlue(),
   44914                   #            alpha);
   44915                   #      }
   44916                   #
   44917                   #      public static Color toProto(java.awt.Color color) {
   44918                   #        float red = (float) color.getRed();
   44919                   #        float green = (float) color.getGreen();
   44920                   #        float blue = (float) color.getBlue();
   44921                   #        float denominator = 255.0;
   44922                   #        Color.Builder resultBuilder =
   44923                   #            Color
   44924                   #                .newBuilder()
   44925                   #                .setRed(red / denominator)
   44926                   #                .setGreen(green / denominator)
   44927                   #                .setBlue(blue / denominator);
   44928                   #        int alpha = color.getAlpha();
   44929                   #        if (alpha != 255) {
   44930                   #          result.setAlpha(
   44931                   #              FloatValue
   44932                   #                  .newBuilder()
   44933                   #                  .setValue(((float) alpha) / denominator)
   44934                   #                  .build());
   44935                   #        }
   44936                   #        return resultBuilder.build();
   44937                   #      }
   44938                   #      // ...
   44939                   #
   44940                   # Example (iOS / Obj-C):
   44941                   #
   44942                   #      // ...
   44943                   #      static UIColor* fromProto(Color* protocolor) {
   44944                   #         float red = [protocolor red];
   44945                   #         float green = [protocolor green];
   44946                   #         float blue = [protocolor blue];
   44947                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   44948                   #         float alpha = 1.0;
   44949                   #         if (alpha_wrapper != nil) {
   44950                   #           alpha = [alpha_wrapper value];
   44951                   #         }
   44952                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   44953                   #      }
   44954                   #
   44955                   #      static Color* toProto(UIColor* color) {
   44956                   #          CGFloat red, green, blue, alpha;
   44957                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   44958                   #            return nil;
   44959                   #          }
   44960                   #          Color* result = [Color alloc] init];
   44961                   #          [result setRed:red];
   44962                   #          [result setGreen:green];
   44963                   #          [result setBlue:blue];
   44964                   #          if (alpha <= 0.9999) {
   44965                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   44966                   #          }
   44967                   #          [result autorelease];
   44968                   #          return result;
   44969                   #     }
   44970                   #     // ...
   44971                   #
   44972                   #  Example (JavaScript):
   44973                   #
   44974                   #     // ...
   44975                   #
   44976                   #     var protoToCssColor = function(rgb_color) {
   44977                   #        var redFrac = rgb_color.red || 0.0;
   44978                   #        var greenFrac = rgb_color.green || 0.0;
   44979                   #        var blueFrac = rgb_color.blue || 0.0;
   44980                   #        var red = Math.floor(redFrac * 255);
   44981                   #        var green = Math.floor(greenFrac * 255);
   44982                   #        var blue = Math.floor(blueFrac * 255);
   44983                   #
   44984                   #        if (!('alpha' in rgb_color)) {
   44985                   #           return rgbToCssColor_(red, green, blue);
   44986                   #        }
   44987                   #
   44988                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   44989                   #        var rgbParams = [red, green, blue].join(',');
   44990                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   44991                   #     };
   44992                   #
   44993                   #     var rgbToCssColor_ = function(red, green, blue) {
   44994                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   44995                   #       var hexString = rgbNumber.toString(16);
   44996                   #       var missingZeros = 6 - hexString.length;
   44997                   #       var resultBuilder = ['#'];
   44998                   #       for (var i = 0; i < missingZeros; i++) {
   44999                   #          resultBuilder.push('0');
   45000                   #       }
   45001                   #       resultBuilder.push(hexString);
   45002                   #       return resultBuilder.join('');
   45003                   #     };
   45004                   #
   45005                   #     // ...
   45006                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   45007                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   45008                     # the final pixel color is defined by the equation:
   45009                     #
   45010                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   45011                     #
   45012                     # This means that a value of 1.0 corresponds to a solid color, whereas
   45013                     # a value of 0.0 corresponds to a completely transparent color. This
   45014                     # uses a wrapper message rather than a simple float scalar so that it is
   45015                     # possible to distinguish between a default value and the value being unset.
   45016                     # If omitted, this color object is to be rendered as a solid color
   45017                     # (as if the alpha value had been explicitly given with a value of 1.0).
   45018                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   45019                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   45020               },
   45021               "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required)
   45022                   # for simplicity of conversion to/from color representations in various
   45023                   # languages over compactness; for example, the fields of this representation
   45024                   # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   45025                   # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   45026                   # method in iOS; and, with just a little work, it can be easily formatted into
   45027                   # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   45028                   #
   45029                   # Example (Java):
   45030                   #
   45031                   #      import com.google.type.Color;
   45032                   #
   45033                   #      // ...
   45034                   #      public static java.awt.Color fromProto(Color protocolor) {
   45035                   #        float alpha = protocolor.hasAlpha()
   45036                   #            ? protocolor.getAlpha().getValue()
   45037                   #            : 1.0;
   45038                   #
   45039                   #        return new java.awt.Color(
   45040                   #            protocolor.getRed(),
   45041                   #            protocolor.getGreen(),
   45042                   #            protocolor.getBlue(),
   45043                   #            alpha);
   45044                   #      }
   45045                   #
   45046                   #      public static Color toProto(java.awt.Color color) {
   45047                   #        float red = (float) color.getRed();
   45048                   #        float green = (float) color.getGreen();
   45049                   #        float blue = (float) color.getBlue();
   45050                   #        float denominator = 255.0;
   45051                   #        Color.Builder resultBuilder =
   45052                   #            Color
   45053                   #                .newBuilder()
   45054                   #                .setRed(red / denominator)
   45055                   #                .setGreen(green / denominator)
   45056                   #                .setBlue(blue / denominator);
   45057                   #        int alpha = color.getAlpha();
   45058                   #        if (alpha != 255) {
   45059                   #          result.setAlpha(
   45060                   #              FloatValue
   45061                   #                  .newBuilder()
   45062                   #                  .setValue(((float) alpha) / denominator)
   45063                   #                  .build());
   45064                   #        }
   45065                   #        return resultBuilder.build();
   45066                   #      }
   45067                   #      // ...
   45068                   #
   45069                   # Example (iOS / Obj-C):
   45070                   #
   45071                   #      // ...
   45072                   #      static UIColor* fromProto(Color* protocolor) {
   45073                   #         float red = [protocolor red];
   45074                   #         float green = [protocolor green];
   45075                   #         float blue = [protocolor blue];
   45076                   #         FloatValue* alpha_wrapper = [protocolor alpha];
   45077                   #         float alpha = 1.0;
   45078                   #         if (alpha_wrapper != nil) {
   45079                   #           alpha = [alpha_wrapper value];
   45080                   #         }
   45081                   #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   45082                   #      }
   45083                   #
   45084                   #      static Color* toProto(UIColor* color) {
   45085                   #          CGFloat red, green, blue, alpha;
   45086                   #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   45087                   #            return nil;
   45088                   #          }
   45089                   #          Color* result = [Color alloc] init];
   45090                   #          [result setRed:red];
   45091                   #          [result setGreen:green];
   45092                   #          [result setBlue:blue];
   45093                   #          if (alpha <= 0.9999) {
   45094                   #            [result setAlpha:floatWrapperWithValue(alpha)];
   45095                   #          }
   45096                   #          [result autorelease];
   45097                   #          return result;
   45098                   #     }
   45099                   #     // ...
   45100                   #
   45101                   #  Example (JavaScript):
   45102                   #
   45103                   #     // ...
   45104                   #
   45105                   #     var protoToCssColor = function(rgb_color) {
   45106                   #        var redFrac = rgb_color.red || 0.0;
   45107                   #        var greenFrac = rgb_color.green || 0.0;
   45108                   #        var blueFrac = rgb_color.blue || 0.0;
   45109                   #        var red = Math.floor(redFrac * 255);
   45110                   #        var green = Math.floor(greenFrac * 255);
   45111                   #        var blue = Math.floor(blueFrac * 255);
   45112                   #
   45113                   #        if (!('alpha' in rgb_color)) {
   45114                   #           return rgbToCssColor_(red, green, blue);
   45115                   #        }
   45116                   #
   45117                   #        var alphaFrac = rgb_color.alpha.value || 0.0;
   45118                   #        var rgbParams = [red, green, blue].join(',');
   45119                   #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   45120                   #     };
   45121                   #
   45122                   #     var rgbToCssColor_ = function(red, green, blue) {
   45123                   #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   45124                   #       var hexString = rgbNumber.toString(16);
   45125                   #       var missingZeros = 6 - hexString.length;
   45126                   #       var resultBuilder = ['#'];
   45127                   #       for (var i = 0; i < missingZeros; i++) {
   45128                   #          resultBuilder.push('0');
   45129                   #       }
   45130                   #       resultBuilder.push(hexString);
   45131                   #       return resultBuilder.join('');
   45132                   #     };
   45133                   #
   45134                   #     // ...
   45135                 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   45136                 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   45137                     # the final pixel color is defined by the equation:
   45138                     #
   45139                     #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   45140                     #
   45141                     # This means that a value of 1.0 corresponds to a solid color, whereas
   45142                     # a value of 0.0 corresponds to a completely transparent color. This
   45143                     # uses a wrapper message rather than a simple float scalar so that it is
   45144                     # possible to distinguish between a default value and the value being unset.
   45145                     # If omitted, this color object is to be rendered as a solid color
   45146                     # (as if the alpha value had been explicitly given with a value of 1.0).
   45147                 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   45148                 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   45149               },
   45150             },
   45151             "bandedRangeId": 42, # The id of the banded range.
   45152           },
   45153         ],
   45154         "merges": [ # The ranges that are merged together.
   45155           { # A range on a sheet.
   45156               # All indexes are zero-based.
   45157               # Indexes are half open, e.g the start index is inclusive
   45158               # and the end index is exclusive -- [start_index, end_index).
   45159               # Missing indexes indicate the range is unbounded on that side.
   45160               #
   45161               # For example, if `"Sheet1"` is sheet ID 0, then:
   45162               #
   45163               #   `Sheet1!A1:A1 == sheet_id: 0,
   45164               #                   start_row_index: 0, end_row_index: 1,
   45165               #                   start_column_index: 0, end_column_index: 1`
   45166               #
   45167               #   `Sheet1!A3:B4 == sheet_id: 0,
   45168               #                   start_row_index: 2, end_row_index: 4,
   45169               #                   start_column_index: 0, end_column_index: 2`
   45170               #
   45171               #   `Sheet1!A:B == sheet_id: 0,
   45172               #                 start_column_index: 0, end_column_index: 2`
   45173               #
   45174               #   `Sheet1!A5:B == sheet_id: 0,
   45175               #                  start_row_index: 4,
   45176               #                  start_column_index: 0, end_column_index: 2`
   45177               #
   45178               #   `Sheet1 == sheet_id:0`
   45179               #
   45180               # The start index must always be less than or equal to the end index.
   45181               # If the start index equals the end index, then the range is empty.
   45182               # Empty ranges are typically not meaningful and are usually rendered in the
   45183               # UI as `#REF!`.
   45184             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   45185             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   45186             "sheetId": 42, # The sheet this range is on.
   45187             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   45188             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   45189           },
   45190         ],
   45191         "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
   45192           "range": { # A range on a sheet. # The range the filter covers.
   45193               # All indexes are zero-based.
   45194               # Indexes are half open, e.g the start index is inclusive
   45195               # and the end index is exclusive -- [start_index, end_index).
   45196               # Missing indexes indicate the range is unbounded on that side.
   45197               #
   45198               # For example, if `"Sheet1"` is sheet ID 0, then:
   45199               #
   45200               #   `Sheet1!A1:A1 == sheet_id: 0,
   45201               #                   start_row_index: 0, end_row_index: 1,
   45202               #                   start_column_index: 0, end_column_index: 1`
   45203               #
   45204               #   `Sheet1!A3:B4 == sheet_id: 0,
   45205               #                   start_row_index: 2, end_row_index: 4,
   45206               #                   start_column_index: 0, end_column_index: 2`
   45207               #
   45208               #   `Sheet1!A:B == sheet_id: 0,
   45209               #                 start_column_index: 0, end_column_index: 2`
   45210               #
   45211               #   `Sheet1!A5:B == sheet_id: 0,
   45212               #                  start_row_index: 4,
   45213               #                  start_column_index: 0, end_column_index: 2`
   45214               #
   45215               #   `Sheet1 == sheet_id:0`
   45216               #
   45217               # The start index must always be less than or equal to the end index.
   45218               # If the start index equals the end index, then the range is empty.
   45219               # Empty ranges are typically not meaningful and are usually rendered in the
   45220               # UI as `#REF!`.
   45221             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   45222             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   45223             "sheetId": 42, # The sheet this range is on.
   45224             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   45225             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   45226           },
   45227           "sortSpecs": [ # The sort order per column. Later specifications are used when values
   45228               # are equal in the earlier specifications.
   45229             { # A sort order associated with a specific column or row.
   45230               "sortOrder": "A String", # The order data should be sorted.
   45231               "dimensionIndex": 42, # The dimension the sort should be applied to.
   45232             },
   45233           ],
   45234           "criteria": { # The criteria for showing/hiding values per column.
   45235               # The map's key is the column index, and the value is the criteria for
   45236               # that column.
   45237             "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   45238               "hiddenValues": [ # Values that should be hidden.
   45239                 "A String",
   45240               ],
   45241               "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   45242                   # (This does not override hiddenValues -- if a value is listed there,
   45243                   #  it will still be hidden.)
   45244                   # BooleanConditions are used by conditional formatting,
   45245                   # data validation, and the criteria in filters.
   45246                 "values": [ # The values of the condition. The number of supported values depends
   45247                     # on the condition type.  Some support zero values,
   45248                     # others one or two values,
   45249                     # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   45250                   { # The value of the condition.
   45251                     "relativeDate": "A String", # A relative date (based on the current date).
   45252                         # Valid only if the type is
   45253                         # DATE_BEFORE,
   45254                         # DATE_AFTER,
   45255                         # DATE_ON_OR_BEFORE or
   45256                         # DATE_ON_OR_AFTER.
   45257                         #
   45258                         # Relative dates are not supported in data validation.
   45259                         # They are supported only in conditional formatting and
   45260                         # conditional filters.
   45261                     "userEnteredValue": "A String", # A value the condition is based on.
   45262                         # The value will be parsed as if the user typed into a cell.
   45263                         # Formulas are supported (and must begin with an `=`).
   45264                   },
   45265                 ],
   45266                 "type": "A String", # The type of condition.
   45267               },
   45268             },
   45269           },
   45270         },
   45271         "charts": [ # The specifications of every chart on this sheet.
   45272           { # A chart embedded in a sheet.
   45273             "chartId": 42, # The ID of the chart.
   45274             "position": { # The position of an embedded object such as a chart. # The position of the chart.
   45275               "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
   45276                   # is chosen for you. Used only when writing.
   45277               "sheetId": 42, # The sheet this is on. Set only if the embedded object
   45278                   # is on its own sheet. Must be non-negative.
   45279               "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid.
   45280                 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
   45281                     # All indexes are zero-based.
   45282                   "rowIndex": 42, # The row index of the coordinate.
   45283                   "columnIndex": 42, # The column index of the coordinate.
   45284                   "sheetId": 42, # The sheet this coordinate is on.
   45285                 },
   45286                 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
   45287                     # from the anchor cell.
   45288                 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
   45289                 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
   45290                     # from the anchor cell.
   45291                 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
   45292               },
   45293             },
   45294             "spec": { # The specifications of a chart. # The specification of the chart.
   45295               "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
   45296               "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
   45297                 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
   45298                   "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   45299                     "sources": [ # The ranges of data for a series or domain.
   45300                         # Exactly one dimension must have a length of 1,
   45301                         # and all sources in the list must have the same dimension
   45302                         # with length 1.
   45303                         # The domain (if it exists) & all series must have the same number
   45304                         # of source ranges. If using more than one source range, then the source
   45305                         # range at a given offset must be contiguous across the domain and series.
   45306                         #
   45307                         # For example, these are valid configurations:
   45308                         #
   45309                         #     domain sources: A1:A5
   45310                         #     series1 sources: B1:B5
   45311                         #     series2 sources: D6:D10
   45312                         #
   45313                         #     domain sources: A1:A5, C10:C12
   45314                         #     series1 sources: B1:B5, D10:D12
   45315                         #     series2 sources: C1:C5, E10:E12
   45316                       { # A range on a sheet.
   45317                           # All indexes are zero-based.
   45318                           # Indexes are half open, e.g the start index is inclusive
   45319                           # and the end index is exclusive -- [start_index, end_index).
   45320                           # Missing indexes indicate the range is unbounded on that side.
   45321                           #
   45322                           # For example, if `"Sheet1"` is sheet ID 0, then:
   45323                           #
   45324                           #   `Sheet1!A1:A1 == sheet_id: 0,
   45325                           #                   start_row_index: 0, end_row_index: 1,
   45326                           #                   start_column_index: 0, end_column_index: 1`
   45327                           #
   45328                           #   `Sheet1!A3:B4 == sheet_id: 0,
   45329                           #                   start_row_index: 2, end_row_index: 4,
   45330                           #                   start_column_index: 0, end_column_index: 2`
   45331                           #
   45332                           #   `Sheet1!A:B == sheet_id: 0,
   45333                           #                 start_column_index: 0, end_column_index: 2`
   45334                           #
   45335                           #   `Sheet1!A5:B == sheet_id: 0,
   45336                           #                  start_row_index: 4,
   45337                           #                  start_column_index: 0, end_column_index: 2`
   45338                           #
   45339                           #   `Sheet1 == sheet_id:0`
   45340                           #
   45341                           # The start index must always be less than or equal to the end index.
   45342                           # If the start index equals the end index, then the range is empty.
   45343                           # Empty ranges are typically not meaningful and are usually rendered in the
   45344                           # UI as `#REF!`.
   45345                         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   45346                         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   45347                         "sheetId": 42, # The sheet this range is on.
   45348                         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   45349                         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   45350                       },
   45351                     ],
   45352                   },
   45353                 },
   45354                 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
   45355                   "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   45356                     "sources": [ # The ranges of data for a series or domain.
   45357                         # Exactly one dimension must have a length of 1,
   45358                         # and all sources in the list must have the same dimension
   45359                         # with length 1.
   45360                         # The domain (if it exists) & all series must have the same number
   45361                         # of source ranges. If using more than one source range, then the source
   45362                         # range at a given offset must be contiguous across the domain and series.
   45363                         #
   45364                         # For example, these are valid configurations:
   45365                         #
   45366                         #     domain sources: A1:A5
   45367                         #     series1 sources: B1:B5
   45368                         #     series2 sources: D6:D10
   45369                         #
   45370                         #     domain sources: A1:A5, C10:C12
   45371                         #     series1 sources: B1:B5, D10:D12
   45372                         #     series2 sources: C1:C5, E10:E12
   45373                       { # A range on a sheet.
   45374                           # All indexes are zero-based.
   45375                           # Indexes are half open, e.g the start index is inclusive
   45376                           # and the end index is exclusive -- [start_index, end_index).
   45377                           # Missing indexes indicate the range is unbounded on that side.
   45378                           #
   45379                           # For example, if `"Sheet1"` is sheet ID 0, then:
   45380                           #
   45381                           #   `Sheet1!A1:A1 == sheet_id: 0,
   45382                           #                   start_row_index: 0, end_row_index: 1,
   45383                           #                   start_column_index: 0, end_column_index: 1`
   45384                           #
   45385                           #   `Sheet1!A3:B4 == sheet_id: 0,
   45386                           #                   start_row_index: 2, end_row_index: 4,
   45387                           #                   start_column_index: 0, end_column_index: 2`
   45388                           #
   45389                           #   `Sheet1!A:B == sheet_id: 0,
   45390                           #                 start_column_index: 0, end_column_index: 2`
   45391                           #
   45392                           #   `Sheet1!A5:B == sheet_id: 0,
   45393                           #                  start_row_index: 4,
   45394                           #                  start_column_index: 0, end_column_index: 2`
   45395                           #
   45396                           #   `Sheet1 == sheet_id:0`
   45397                           #
   45398                           # The start index must always be less than or equal to the end index.
   45399                           # If the start index equals the end index, then the range is empty.
   45400                           # Empty ranges are typically not meaningful and are usually rendered in the
   45401                           # UI as `#REF!`.
   45402                         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   45403                         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   45404                         "sheetId": 42, # The sheet this range is on.
   45405                         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   45406                         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   45407                       },
   45408                     ],
   45409                   },
   45410                 },
   45411                 "threeDimensional": True or False, # True if the pie is three dimensional.
   45412                 "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
   45413                 "pieHole": 3.14, # The size of the hole in the pie chart.
   45414               },
   45415               "basicChart": { # The specification for a basic chart.  See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
   45416                   # See BasicChartType for the list of all
   45417                   # charts this supports.
   45418                   # of charts this supports.
   45419                 "headerCount": 42, # The number of rows or columns in the data that are "headers".
   45420                     # If not set, Google Sheets will guess how many rows are headers based
   45421                     # on the data.
   45422                     #
   45423                     # (Note that BasicChartAxis.title may override the axis title
   45424                     #  inferred from the header values.)
   45425                 "series": [ # The data this chart is visualizing.
   45426                   { # A single series of data in a chart.
   45427                       # For example, if charting stock prices over time, multiple series may exist,
   45428                       # one for the "Open Price", "High Price", "Low Price" and "Close Price".
   45429                     "series": { # The data included in a domain or series. # The data being visualized in this chart series.
   45430                       "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   45431                         "sources": [ # The ranges of data for a series or domain.
   45432                             # Exactly one dimension must have a length of 1,
   45433                             # and all sources in the list must have the same dimension
   45434                             # with length 1.
   45435                             # The domain (if it exists) & all series must have the same number
   45436                             # of source ranges. If using more than one source range, then the source
   45437                             # range at a given offset must be contiguous across the domain and series.
   45438                             #
   45439                             # For example, these are valid configurations:
   45440                             #
   45441                             #     domain sources: A1:A5
   45442                             #     series1 sources: B1:B5
   45443                             #     series2 sources: D6:D10
   45444                             #
   45445                             #     domain sources: A1:A5, C10:C12
   45446                             #     series1 sources: B1:B5, D10:D12
   45447                             #     series2 sources: C1:C5, E10:E12
   45448                           { # A range on a sheet.
   45449                               # All indexes are zero-based.
   45450                               # Indexes are half open, e.g the start index is inclusive
   45451                               # and the end index is exclusive -- [start_index, end_index).
   45452                               # Missing indexes indicate the range is unbounded on that side.
   45453                               #
   45454                               # For example, if `"Sheet1"` is sheet ID 0, then:
   45455                               #
   45456                               #   `Sheet1!A1:A1 == sheet_id: 0,
   45457                               #                   start_row_index: 0, end_row_index: 1,
   45458                               #                   start_column_index: 0, end_column_index: 1`
   45459                               #
   45460                               #   `Sheet1!A3:B4 == sheet_id: 0,
   45461                               #                   start_row_index: 2, end_row_index: 4,
   45462                               #                   start_column_index: 0, end_column_index: 2`
   45463                               #
   45464                               #   `Sheet1!A:B == sheet_id: 0,
   45465                               #                 start_column_index: 0, end_column_index: 2`
   45466                               #
   45467                               #   `Sheet1!A5:B == sheet_id: 0,
   45468                               #                  start_row_index: 4,
   45469                               #                  start_column_index: 0, end_column_index: 2`
   45470                               #
   45471                               #   `Sheet1 == sheet_id:0`
   45472                               #
   45473                               # The start index must always be less than or equal to the end index.
   45474                               # If the start index equals the end index, then the range is empty.
   45475                               # Empty ranges are typically not meaningful and are usually rendered in the
   45476                               # UI as `#REF!`.
   45477                             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   45478                             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   45479                             "sheetId": 42, # The sheet this range is on.
   45480                             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   45481                             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   45482                           },
   45483                         ],
   45484                       },
   45485                     },
   45486                     "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
   45487                         # For example, if charting stocks over time, the "Volume" series
   45488                         # may want to be pinned to the right with the prices pinned to the left,
   45489                         # because the scale of trading volume is different than the scale of
   45490                         # prices.
   45491                         # It is an error to specify an axis that isn't a valid minor axis
   45492                         # for the chart's type.
   45493                     "type": "A String", # The type of this series. Valid only if the
   45494                         # chartType is
   45495                         # COMBO.
   45496                         # Different types will change the way the series is visualized.
   45497                         # Only LINE, AREA,
   45498                         # and COLUMN are supported.
   45499                   },
   45500                 ],
   45501                 "legendPosition": "A String", # The position of the chart legend.
   45502                 "domains": [ # The domain of data this is charting.
   45503                     # Only a single domain is supported.
   45504                   { # The domain of a chart.
   45505                       # For example, if charting stock prices over time, this would be the date.
   45506                     "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
   45507                         # this is the data representing the dates.
   45508                       "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
   45509                         "sources": [ # The ranges of data for a series or domain.
   45510                             # Exactly one dimension must have a length of 1,
   45511                             # and all sources in the list must have the same dimension
   45512                             # with length 1.
   45513                             # The domain (if it exists) & all series must have the same number
   45514                             # of source ranges. If using more than one source range, then the source
   45515                             # range at a given offset must be contiguous across the domain and series.
   45516                             #
   45517                             # For example, these are valid configurations:
   45518                             #
   45519                             #     domain sources: A1:A5
   45520                             #     series1 sources: B1:B5
   45521                             #     series2 sources: D6:D10
   45522                             #
   45523                             #     domain sources: A1:A5, C10:C12
   45524                             #     series1 sources: B1:B5, D10:D12
   45525                             #     series2 sources: C1:C5, E10:E12
   45526                           { # A range on a sheet.
   45527                               # All indexes are zero-based.
   45528                               # Indexes are half open, e.g the start index is inclusive
   45529                               # and the end index is exclusive -- [start_index, end_index).
   45530                               # Missing indexes indicate the range is unbounded on that side.
   45531                               #
   45532                               # For example, if `"Sheet1"` is sheet ID 0, then:
   45533                               #
   45534                               #   `Sheet1!A1:A1 == sheet_id: 0,
   45535                               #                   start_row_index: 0, end_row_index: 1,
   45536                               #                   start_column_index: 0, end_column_index: 1`
   45537                               #
   45538                               #   `Sheet1!A3:B4 == sheet_id: 0,
   45539                               #                   start_row_index: 2, end_row_index: 4,
   45540                               #                   start_column_index: 0, end_column_index: 2`
   45541                               #
   45542                               #   `Sheet1!A:B == sheet_id: 0,
   45543                               #                 start_column_index: 0, end_column_index: 2`
   45544                               #
   45545                               #   `Sheet1!A5:B == sheet_id: 0,
   45546                               #                  start_row_index: 4,
   45547                               #                  start_column_index: 0, end_column_index: 2`
   45548                               #
   45549                               #   `Sheet1 == sheet_id:0`
   45550                               #
   45551                               # The start index must always be less than or equal to the end index.
   45552                               # If the start index equals the end index, then the range is empty.
   45553                               # Empty ranges are typically not meaningful and are usually rendered in the
   45554                               # UI as `#REF!`.
   45555                             "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   45556                             "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   45557                             "sheetId": 42, # The sheet this range is on.
   45558                             "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   45559                             "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   45560                           },
   45561                         ],
   45562                       },
   45563                     },
   45564                   },
   45565                 ],
   45566                 "chartType": "A String", # The type of the chart.
   45567                 "axis": [ # The axis on the chart.
   45568                   { # An axis of the chart.
   45569                       # A chart may not have more than one axis per
   45570                       # axis position.
   45571                     "position": "A String", # The position of this axis.
   45572                     "format": { # The format of a run of text in a cell. # The format of the title.
   45573                         # Only valid if the axis is not associated with the domain.
   45574                         # Absent values indicate that the field isn't specified.
   45575                       "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   45576                           # for simplicity of conversion to/from color representations in various
   45577                           # languages over compactness; for example, the fields of this representation
   45578                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   45579                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   45580                           # method in iOS; and, with just a little work, it can be easily formatted into
   45581                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   45582                           #
   45583                           # Example (Java):
   45584                           #
   45585                           #      import com.google.type.Color;
   45586                           #
   45587                           #      // ...
   45588                           #      public static java.awt.Color fromProto(Color protocolor) {
   45589                           #        float alpha = protocolor.hasAlpha()
   45590                           #            ? protocolor.getAlpha().getValue()
   45591                           #            : 1.0;
   45592                           #
   45593                           #        return new java.awt.Color(
   45594                           #            protocolor.getRed(),
   45595                           #            protocolor.getGreen(),
   45596                           #            protocolor.getBlue(),
   45597                           #            alpha);
   45598                           #      }
   45599                           #
   45600                           #      public static Color toProto(java.awt.Color color) {
   45601                           #        float red = (float) color.getRed();
   45602                           #        float green = (float) color.getGreen();
   45603                           #        float blue = (float) color.getBlue();
   45604                           #        float denominator = 255.0;
   45605                           #        Color.Builder resultBuilder =
   45606                           #            Color
   45607                           #                .newBuilder()
   45608                           #                .setRed(red / denominator)
   45609                           #                .setGreen(green / denominator)
   45610                           #                .setBlue(blue / denominator);
   45611                           #        int alpha = color.getAlpha();
   45612                           #        if (alpha != 255) {
   45613                           #          result.setAlpha(
   45614                           #              FloatValue
   45615                           #                  .newBuilder()
   45616                           #                  .setValue(((float) alpha) / denominator)
   45617                           #                  .build());
   45618                           #        }
   45619                           #        return resultBuilder.build();
   45620                           #      }
   45621                           #      // ...
   45622                           #
   45623                           # Example (iOS / Obj-C):
   45624                           #
   45625                           #      // ...
   45626                           #      static UIColor* fromProto(Color* protocolor) {
   45627                           #         float red = [protocolor red];
   45628                           #         float green = [protocolor green];
   45629                           #         float blue = [protocolor blue];
   45630                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   45631                           #         float alpha = 1.0;
   45632                           #         if (alpha_wrapper != nil) {
   45633                           #           alpha = [alpha_wrapper value];
   45634                           #         }
   45635                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   45636                           #      }
   45637                           #
   45638                           #      static Color* toProto(UIColor* color) {
   45639                           #          CGFloat red, green, blue, alpha;
   45640                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   45641                           #            return nil;
   45642                           #          }
   45643                           #          Color* result = [Color alloc] init];
   45644                           #          [result setRed:red];
   45645                           #          [result setGreen:green];
   45646                           #          [result setBlue:blue];
   45647                           #          if (alpha <= 0.9999) {
   45648                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   45649                           #          }
   45650                           #          [result autorelease];
   45651                           #          return result;
   45652                           #     }
   45653                           #     // ...
   45654                           #
   45655                           #  Example (JavaScript):
   45656                           #
   45657                           #     // ...
   45658                           #
   45659                           #     var protoToCssColor = function(rgb_color) {
   45660                           #        var redFrac = rgb_color.red || 0.0;
   45661                           #        var greenFrac = rgb_color.green || 0.0;
   45662                           #        var blueFrac = rgb_color.blue || 0.0;
   45663                           #        var red = Math.floor(redFrac * 255);
   45664                           #        var green = Math.floor(greenFrac * 255);
   45665                           #        var blue = Math.floor(blueFrac * 255);
   45666                           #
   45667                           #        if (!('alpha' in rgb_color)) {
   45668                           #           return rgbToCssColor_(red, green, blue);
   45669                           #        }
   45670                           #
   45671                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   45672                           #        var rgbParams = [red, green, blue].join(',');
   45673                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   45674                           #     };
   45675                           #
   45676                           #     var rgbToCssColor_ = function(red, green, blue) {
   45677                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   45678                           #       var hexString = rgbNumber.toString(16);
   45679                           #       var missingZeros = 6 - hexString.length;
   45680                           #       var resultBuilder = ['#'];
   45681                           #       for (var i = 0; i < missingZeros; i++) {
   45682                           #          resultBuilder.push('0');
   45683                           #       }
   45684                           #       resultBuilder.push(hexString);
   45685                           #       return resultBuilder.join('');
   45686                           #     };
   45687                           #
   45688                           #     // ...
   45689                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   45690                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   45691                             # the final pixel color is defined by the equation:
   45692                             #
   45693                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   45694                             #
   45695                             # This means that a value of 1.0 corresponds to a solid color, whereas
   45696                             # a value of 0.0 corresponds to a completely transparent color. This
   45697                             # uses a wrapper message rather than a simple float scalar so that it is
   45698                             # possible to distinguish between a default value and the value being unset.
   45699                             # If omitted, this color object is to be rendered as a solid color
   45700                             # (as if the alpha value had been explicitly given with a value of 1.0).
   45701                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   45702                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   45703                       },
   45704                       "bold": True or False, # True if the text is bold.
   45705                       "strikethrough": True or False, # True if the text has a strikethrough.
   45706                       "fontFamily": "A String", # The font family.
   45707                       "fontSize": 42, # The size of the font.
   45708                       "italic": True or False, # True if the text is italicized.
   45709                       "underline": True or False, # True if the text is underlined.
   45710                     },
   45711                     "title": "A String", # The title of this axis. If set, this overrides any title inferred
   45712                         # from headers of the data.
   45713                   },
   45714                 ],
   45715               },
   45716               "title": "A String", # The title of the chart.
   45717             },
   45718           },
   45719         ],
   45720         "filterViews": [ # The filter views in this sheet.
   45721           { # A filter view.
   45722             "title": "A String", # The name of the filter view.
   45723             "namedRangeId": "A String", # The named range this filter view is backed by, if any.
   45724                 #
   45725                 # When writing, only one of range or named_range_id
   45726                 # may be set.
   45727             "filterViewId": 42, # The ID of the filter view.
   45728             "range": { # A range on a sheet. # The range this filter view covers.
   45729                 #
   45730                 # When writing, only one of range or named_range_id
   45731                 # may be set.
   45732                 # All indexes are zero-based.
   45733                 # Indexes are half open, e.g the start index is inclusive
   45734                 # and the end index is exclusive -- [start_index, end_index).
   45735                 # Missing indexes indicate the range is unbounded on that side.
   45736                 #
   45737                 # For example, if `"Sheet1"` is sheet ID 0, then:
   45738                 #
   45739                 #   `Sheet1!A1:A1 == sheet_id: 0,
   45740                 #                   start_row_index: 0, end_row_index: 1,
   45741                 #                   start_column_index: 0, end_column_index: 1`
   45742                 #
   45743                 #   `Sheet1!A3:B4 == sheet_id: 0,
   45744                 #                   start_row_index: 2, end_row_index: 4,
   45745                 #                   start_column_index: 0, end_column_index: 2`
   45746                 #
   45747                 #   `Sheet1!A:B == sheet_id: 0,
   45748                 #                 start_column_index: 0, end_column_index: 2`
   45749                 #
   45750                 #   `Sheet1!A5:B == sheet_id: 0,
   45751                 #                  start_row_index: 4,
   45752                 #                  start_column_index: 0, end_column_index: 2`
   45753                 #
   45754                 #   `Sheet1 == sheet_id:0`
   45755                 #
   45756                 # The start index must always be less than or equal to the end index.
   45757                 # If the start index equals the end index, then the range is empty.
   45758                 # Empty ranges are typically not meaningful and are usually rendered in the
   45759                 # UI as `#REF!`.
   45760               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   45761               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   45762               "sheetId": 42, # The sheet this range is on.
   45763               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   45764               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   45765             },
   45766             "sortSpecs": [ # The sort order per column. Later specifications are used when values
   45767                 # are equal in the earlier specifications.
   45768               { # A sort order associated with a specific column or row.
   45769                 "sortOrder": "A String", # The order data should be sorted.
   45770                 "dimensionIndex": 42, # The dimension the sort should be applied to.
   45771               },
   45772             ],
   45773             "criteria": { # The criteria for showing/hiding values per column.
   45774                 # The map's key is the column index, and the value is the criteria for
   45775                 # that column.
   45776               "a_key": { # Criteria for showing/hiding rows in a filter or filter view.
   45777                 "hiddenValues": [ # Values that should be hidden.
   45778                   "A String",
   45779                 ],
   45780                 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
   45781                     # (This does not override hiddenValues -- if a value is listed there,
   45782                     #  it will still be hidden.)
   45783                     # BooleanConditions are used by conditional formatting,
   45784                     # data validation, and the criteria in filters.
   45785                   "values": [ # The values of the condition. The number of supported values depends
   45786                       # on the condition type.  Some support zero values,
   45787                       # others one or two values,
   45788                       # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   45789                     { # The value of the condition.
   45790                       "relativeDate": "A String", # A relative date (based on the current date).
   45791                           # Valid only if the type is
   45792                           # DATE_BEFORE,
   45793                           # DATE_AFTER,
   45794                           # DATE_ON_OR_BEFORE or
   45795                           # DATE_ON_OR_AFTER.
   45796                           #
   45797                           # Relative dates are not supported in data validation.
   45798                           # They are supported only in conditional formatting and
   45799                           # conditional filters.
   45800                       "userEnteredValue": "A String", # A value the condition is based on.
   45801                           # The value will be parsed as if the user typed into a cell.
   45802                           # Formulas are supported (and must begin with an `=`).
   45803                     },
   45804                   ],
   45805                   "type": "A String", # The type of condition.
   45806                 },
   45807               },
   45808             },
   45809           },
   45810         ],
   45811         "protectedRanges": [ # The protected ranges in this sheet.
   45812           { # A protected range.
   45813             "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
   45814                 # Unprotected ranges are only supported on protected sheets.
   45815               { # A range on a sheet.
   45816                   # All indexes are zero-based.
   45817                   # Indexes are half open, e.g the start index is inclusive
   45818                   # and the end index is exclusive -- [start_index, end_index).
   45819                   # Missing indexes indicate the range is unbounded on that side.
   45820                   #
   45821                   # For example, if `"Sheet1"` is sheet ID 0, then:
   45822                   #
   45823                   #   `Sheet1!A1:A1 == sheet_id: 0,
   45824                   #                   start_row_index: 0, end_row_index: 1,
   45825                   #                   start_column_index: 0, end_column_index: 1`
   45826                   #
   45827                   #   `Sheet1!A3:B4 == sheet_id: 0,
   45828                   #                   start_row_index: 2, end_row_index: 4,
   45829                   #                   start_column_index: 0, end_column_index: 2`
   45830                   #
   45831                   #   `Sheet1!A:B == sheet_id: 0,
   45832                   #                 start_column_index: 0, end_column_index: 2`
   45833                   #
   45834                   #   `Sheet1!A5:B == sheet_id: 0,
   45835                   #                  start_row_index: 4,
   45836                   #                  start_column_index: 0, end_column_index: 2`
   45837                   #
   45838                   #   `Sheet1 == sheet_id:0`
   45839                   #
   45840                   # The start index must always be less than or equal to the end index.
   45841                   # If the start index equals the end index, then the range is empty.
   45842                   # Empty ranges are typically not meaningful and are usually rendered in the
   45843                   # UI as `#REF!`.
   45844                 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   45845                 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   45846                 "sheetId": 42, # The sheet this range is on.
   45847                 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   45848                 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   45849               },
   45850             ],
   45851             "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
   45852                 # protected area.
   45853                 # This field is read-only.
   45854             "description": "A String", # The description of this protected range.
   45855             "namedRangeId": "A String", # The named range this protected range is backed by, if any.
   45856                 #
   45857                 # When writing, only one of range or named_range_id
   45858                 # may be set.
   45859             "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
   45860                 # This field is only visible to users with edit access to the protected
   45861                 # range and the document.
   45862                 # Editors are not supported with warning_only protection.
   45863               "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
   45864                   # range.  Domain protection is only supported on documents within a domain.
   45865               "users": [ # The email addresses of users with edit access to the protected range.
   45866                 "A String",
   45867               ],
   45868               "groups": [ # The email addresses of groups with edit access to the protected range.
   45869                 "A String",
   45870               ],
   45871             },
   45872             "protectedRangeId": 42, # The ID of the protected range.
   45873                 # This field is read-only.
   45874             "warningOnly": True or False, # True if this protected range will show a warning when editing.
   45875                 # Warning-based protection means that every user can edit data in the
   45876                 # protected range, except editing will prompt a warning asking the user
   45877                 # to confirm the edit.
   45878                 #
   45879                 # When writing: if this field is true, then editors is ignored.
   45880                 # Additionally, if this field is changed from true to false and the
   45881                 # `editors` field is not set (nor included in the field mask), then
   45882                 # the editors will be set to all the editors in the document.
   45883             "range": { # A range on a sheet. # The range that is being protected.
   45884                 # The range may be fully unbounded, in which case this is considered
   45885                 # a protected sheet.
   45886                 #
   45887                 # When writing, only one of range or named_range_id
   45888                 # may be set.
   45889                 # All indexes are zero-based.
   45890                 # Indexes are half open, e.g the start index is inclusive
   45891                 # and the end index is exclusive -- [start_index, end_index).
   45892                 # Missing indexes indicate the range is unbounded on that side.
   45893                 #
   45894                 # For example, if `"Sheet1"` is sheet ID 0, then:
   45895                 #
   45896                 #   `Sheet1!A1:A1 == sheet_id: 0,
   45897                 #                   start_row_index: 0, end_row_index: 1,
   45898                 #                   start_column_index: 0, end_column_index: 1`
   45899                 #
   45900                 #   `Sheet1!A3:B4 == sheet_id: 0,
   45901                 #                   start_row_index: 2, end_row_index: 4,
   45902                 #                   start_column_index: 0, end_column_index: 2`
   45903                 #
   45904                 #   `Sheet1!A:B == sheet_id: 0,
   45905                 #                 start_column_index: 0, end_column_index: 2`
   45906                 #
   45907                 #   `Sheet1!A5:B == sheet_id: 0,
   45908                 #                  start_row_index: 4,
   45909                 #                  start_column_index: 0, end_column_index: 2`
   45910                 #
   45911                 #   `Sheet1 == sheet_id:0`
   45912                 #
   45913                 # The start index must always be less than or equal to the end index.
   45914                 # If the start index equals the end index, then the range is empty.
   45915                 # Empty ranges are typically not meaningful and are usually rendered in the
   45916                 # UI as `#REF!`.
   45917               "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   45918               "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   45919               "sheetId": 42, # The sheet this range is on.
   45920               "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   45921               "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   45922             },
   45923           },
   45924         ],
   45925         "data": [ # Data in the grid, if this is a grid sheet.
   45926             # The number of GridData objects returned is dependent on the number of
   45927             # ranges requested on this sheet. For example, if this is representing
   45928             # `Sheet1`, and the spreadsheet was requested with ranges
   45929             # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
   45930             # startRow/startColumn of `0`,
   45931             # while the second one will have `startRow 14` (zero-based row 15),
   45932             # and `startColumn 3` (zero-based column D).
   45933           { # Data in the grid, as well as metadata about the dimensions.
   45934             "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
   45935                 # in start_row.
   45936               { # Properties about a dimension.
   45937                 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
   45938                 "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
   45939                 "hiddenByFilter": True or False, # True if this dimension is being filtered.
   45940                     # This field is read-only.
   45941               },
   45942             ],
   45943             "startColumn": 42, # The first column this GridData refers to, zero-based.
   45944             "rowData": [ # The data in the grid, one entry per row,
   45945                 # starting with the row in startRow.
   45946                 # The values in RowData will correspond to columns starting
   45947                 # at start_column.
   45948               { # Data about each cell in a row.
   45949                 "values": [ # The values in the row, one per column.
   45950                   { # Data about a specific cell.
   45951                     "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
   45952                         # is computed dynamically based on its data, grouping, filters, values,
   45953                         # etc. Only the top-left cell of the pivot table contains the pivot table
   45954                         # definition. The other cells will contain the calculated values of the
   45955                         # results of the pivot in their effective_value fields.
   45956                       "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
   45957                           # or vertically (as rows).
   45958                       "rows": [ # Each row grouping in the pivot table.
   45959                         { # A single grouping (either row or column) in a pivot table.
   45960                           "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   45961                           "valueMetadata": [ # Metadata about values in the grouping.
   45962                             { # Metadata about a value in a pivot grouping.
   45963                               "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   45964                               "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   45965                                   # (Note that formulaValue is not valid,
   45966                                   #  because the values will be calculated.)
   45967                                 "stringValue": "A String", # Represents a string value.
   45968                                     # Leading single quotes are not included. For example, if the user typed
   45969                                     # `'123` into the UI, this would be represented as a `stringValue` of
   45970                                     # `"123"`.
   45971                                 "boolValue": True or False, # Represents a boolean value.
   45972                                 "errorValue": { # An error in a cell. # Represents an error.
   45973                                     # This field is read-only.
   45974                                   "message": "A String", # A message with more information about the error
   45975                                       # (in the spreadsheet's locale).
   45976                                   "type": "A String", # The type of error.
   45977                                 },
   45978                                 "formulaValue": "A String", # Represents a formula.
   45979                                 "numberValue": 3.14, # Represents a double value.
   45980                                     # Note: Dates, Times and DateTimes are represented as doubles in
   45981                                     # "serial number" format.
   45982                               },
   45983                             },
   45984                           ],
   45985                           "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   45986                               # If not specified, sorting is alphabetical by this group's values.
   45987                             "buckets": [ # Determines the bucket from which values are chosen to sort.
   45988                                 #
   45989                                 # For example, in a pivot table with one row group & two column groups,
   45990                                 # the row group can list up to two values. The first value corresponds
   45991                                 # to a value within the first column group, and the second value
   45992                                 # corresponds to a value in the second column group.  If no values
   45993                                 # are listed, this would indicate that the row should be sorted according
   45994                                 # to the "Grand Total" over the column groups. If a single value is listed,
   45995                                 # this would correspond to using the "Total" of that bucket.
   45996                               { # The kinds of value that a cell in a spreadsheet can have.
   45997                                 "stringValue": "A String", # Represents a string value.
   45998                                     # Leading single quotes are not included. For example, if the user typed
   45999                                     # `'123` into the UI, this would be represented as a `stringValue` of
   46000                                     # `"123"`.
   46001                                 "boolValue": True or False, # Represents a boolean value.
   46002                                 "errorValue": { # An error in a cell. # Represents an error.
   46003                                     # This field is read-only.
   46004                                   "message": "A String", # A message with more information about the error
   46005                                       # (in the spreadsheet's locale).
   46006                                   "type": "A String", # The type of error.
   46007                                 },
   46008                                 "formulaValue": "A String", # Represents a formula.
   46009                                 "numberValue": 3.14, # Represents a double value.
   46010                                     # Note: Dates, Times and DateTimes are represented as doubles in
   46011                                     # "serial number" format.
   46012                               },
   46013                             ],
   46014                             "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   46015                                 # grouping should be sorted by.
   46016                           },
   46017                           "sortOrder": "A String", # The order the values in this group should be sorted.
   46018                           "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   46019                               #
   46020                               # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   46021                               # means this group refers to column `C`, whereas the offset `1` would refer
   46022                               # to column `D`.
   46023                         },
   46024                       ],
   46025                       "source": { # A range on a sheet. # The range the pivot table is reading data from.
   46026                           # All indexes are zero-based.
   46027                           # Indexes are half open, e.g the start index is inclusive
   46028                           # and the end index is exclusive -- [start_index, end_index).
   46029                           # Missing indexes indicate the range is unbounded on that side.
   46030                           #
   46031                           # For example, if `"Sheet1"` is sheet ID 0, then:
   46032                           #
   46033                           #   `Sheet1!A1:A1 == sheet_id: 0,
   46034                           #                   start_row_index: 0, end_row_index: 1,
   46035                           #                   start_column_index: 0, end_column_index: 1`
   46036                           #
   46037                           #   `Sheet1!A3:B4 == sheet_id: 0,
   46038                           #                   start_row_index: 2, end_row_index: 4,
   46039                           #                   start_column_index: 0, end_column_index: 2`
   46040                           #
   46041                           #   `Sheet1!A:B == sheet_id: 0,
   46042                           #                 start_column_index: 0, end_column_index: 2`
   46043                           #
   46044                           #   `Sheet1!A5:B == sheet_id: 0,
   46045                           #                  start_row_index: 4,
   46046                           #                  start_column_index: 0, end_column_index: 2`
   46047                           #
   46048                           #   `Sheet1 == sheet_id:0`
   46049                           #
   46050                           # The start index must always be less than or equal to the end index.
   46051                           # If the start index equals the end index, then the range is empty.
   46052                           # Empty ranges are typically not meaningful and are usually rendered in the
   46053                           # UI as `#REF!`.
   46054                         "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
   46055                         "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
   46056                         "sheetId": 42, # The sheet this range is on.
   46057                         "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
   46058                         "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
   46059                       },
   46060                       "values": [ # A list of values to include in the pivot table.
   46061                         { # The definition of how a value in a pivot table should be calculated.
   46062                           "formula": "A String", # A custom formula to calculate the value.  The formula must start
   46063                               # with an `=` character.
   46064                           "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
   46065                               #
   46066                               # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   46067                               # means this value refers to column `C`, whereas the offset `1` would
   46068                               # refer to column `D`.
   46069                           "summarizeFunction": "A String", # A function to summarize the value.
   46070                               # If formula is set, the only supported values are
   46071                               # SUM and
   46072                               # CUSTOM.
   46073                               # If sourceColumnOffset is set, then `CUSTOM`
   46074                               # is not supported.
   46075                           "name": "A String", # A name to use for the value. This is only used if formula was set.
   46076                               # Otherwise, the column name is used.
   46077                         },
   46078                       ],
   46079                       "criteria": { # An optional mapping of filters per source column offset.
   46080                           #
   46081                           # The filters will be applied before aggregating data into the pivot table.
   46082                           # The map's key is the column offset of the source range that you want to
   46083                           # filter, and the value is the criteria for that column.
   46084                           #
   46085                           # For example, if the source was `C10:E15`, a key of `0` will have the filter
   46086                           # for column `C`, whereas the key `1` is for column `D`.
   46087                         "a_key": { # Criteria for showing/hiding rows in a pivot table.
   46088                           "visibleValues": [ # Values that should be included.  Values not listed here are excluded.
   46089                             "A String",
   46090                           ],
   46091                         },
   46092                       },
   46093                       "columns": [ # Each column grouping in the pivot table.
   46094                         { # A single grouping (either row or column) in a pivot table.
   46095                           "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
   46096                           "valueMetadata": [ # Metadata about values in the grouping.
   46097                             { # Metadata about a value in a pivot grouping.
   46098                               "collapsed": True or False, # True if the data corresponding to the value is collapsed.
   46099                               "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
   46100                                   # (Note that formulaValue is not valid,
   46101                                   #  because the values will be calculated.)
   46102                                 "stringValue": "A String", # Represents a string value.
   46103                                     # Leading single quotes are not included. For example, if the user typed
   46104                                     # `'123` into the UI, this would be represented as a `stringValue` of
   46105                                     # `"123"`.
   46106                                 "boolValue": True or False, # Represents a boolean value.
   46107                                 "errorValue": { # An error in a cell. # Represents an error.
   46108                                     # This field is read-only.
   46109                                   "message": "A String", # A message with more information about the error
   46110                                       # (in the spreadsheet's locale).
   46111                                   "type": "A String", # The type of error.
   46112                                 },
   46113                                 "formulaValue": "A String", # Represents a formula.
   46114                                 "numberValue": 3.14, # Represents a double value.
   46115                                     # Note: Dates, Times and DateTimes are represented as doubles in
   46116                                     # "serial number" format.
   46117                               },
   46118                             },
   46119                           ],
   46120                           "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
   46121                               # If not specified, sorting is alphabetical by this group's values.
   46122                             "buckets": [ # Determines the bucket from which values are chosen to sort.
   46123                                 #
   46124                                 # For example, in a pivot table with one row group & two column groups,
   46125                                 # the row group can list up to two values. The first value corresponds
   46126                                 # to a value within the first column group, and the second value
   46127                                 # corresponds to a value in the second column group.  If no values
   46128                                 # are listed, this would indicate that the row should be sorted according
   46129                                 # to the "Grand Total" over the column groups. If a single value is listed,
   46130                                 # this would correspond to using the "Total" of that bucket.
   46131                               { # The kinds of value that a cell in a spreadsheet can have.
   46132                                 "stringValue": "A String", # Represents a string value.
   46133                                     # Leading single quotes are not included. For example, if the user typed
   46134                                     # `'123` into the UI, this would be represented as a `stringValue` of
   46135                                     # `"123"`.
   46136                                 "boolValue": True or False, # Represents a boolean value.
   46137                                 "errorValue": { # An error in a cell. # Represents an error.
   46138                                     # This field is read-only.
   46139                                   "message": "A String", # A message with more information about the error
   46140                                       # (in the spreadsheet's locale).
   46141                                   "type": "A String", # The type of error.
   46142                                 },
   46143                                 "formulaValue": "A String", # Represents a formula.
   46144                                 "numberValue": 3.14, # Represents a double value.
   46145                                     # Note: Dates, Times and DateTimes are represented as doubles in
   46146                                     # "serial number" format.
   46147                               },
   46148                             ],
   46149                             "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this
   46150                                 # grouping should be sorted by.
   46151                           },
   46152                           "sortOrder": "A String", # The order the values in this group should be sorted.
   46153                           "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
   46154                               #
   46155                               # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`
   46156                               # means this group refers to column `C`, whereas the offset `1` would refer
   46157                               # to column `D`.
   46158                         },
   46159                       ],
   46160                     },
   46161                     "hyperlink": "A String", # A hyperlink this cell points to, if any.
   46162                         # This field is read-only.  (To set it, use a `=HYPERLINK` formula
   46163                         # in the userEnteredValue.formulaValue
   46164                         # field.)
   46165                     "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be
   46166                         # the calculated value.  For cells with literals, this will be
   46167                         # the same as the user_entered_value.
   46168                         # This field is read-only.
   46169                       "stringValue": "A String", # Represents a string value.
   46170                           # Leading single quotes are not included. For example, if the user typed
   46171                           # `'123` into the UI, this would be represented as a `stringValue` of
   46172                           # `"123"`.
   46173                       "boolValue": True or False, # Represents a boolean value.
   46174                       "errorValue": { # An error in a cell. # Represents an error.
   46175                           # This field is read-only.
   46176                         "message": "A String", # A message with more information about the error
   46177                             # (in the spreadsheet's locale).
   46178                         "type": "A String", # The type of error.
   46179                       },
   46180                       "formulaValue": "A String", # Represents a formula.
   46181                       "numberValue": 3.14, # Represents a double value.
   46182                           # Note: Dates, Times and DateTimes are represented as doubles in
   46183                           # "serial number" format.
   46184                     },
   46185                     "formattedValue": "A String", # The formatted value of the cell.
   46186                         # This is the value as it's shown to the user.
   46187                         # This field is read-only.
   46188                     "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`
   46189                         # Note: Dates, Times and DateTimes are represented as doubles in
   46190                         # serial number format.
   46191                       "stringValue": "A String", # Represents a string value.
   46192                           # Leading single quotes are not included. For example, if the user typed
   46193                           # `'123` into the UI, this would be represented as a `stringValue` of
   46194                           # `"123"`.
   46195                       "boolValue": True or False, # Represents a boolean value.
   46196                       "errorValue": { # An error in a cell. # Represents an error.
   46197                           # This field is read-only.
   46198                         "message": "A String", # A message with more information about the error
   46199                             # (in the spreadsheet's locale).
   46200                         "type": "A String", # The type of error.
   46201                       },
   46202                       "formulaValue": "A String", # Represents a formula.
   46203                       "numberValue": 3.14, # Represents a double value.
   46204                           # Note: Dates, Times and DateTimes are represented as doubles in
   46205                           # "serial number" format.
   46206                     },
   46207                     "note": "A String", # Any note on the cell.
   46208                     "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
   46209                         # This includes the results of applying any conditional formatting and,
   46210                         # if the cell contains a formula, the computed number format.
   46211                         # If the effective format is the default format, effective format will
   46212                         # not be written.
   46213                         # This field is read-only.
   46214                       "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   46215                         "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   46216                             # the user's locale will be used if necessary for the given type.
   46217                             # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   46218                             # information about the supported patterns.
   46219                         "type": "A String", # The type of the number format.
   46220                             # When writing, this field must be set.
   46221                       },
   46222                       "textDirection": "A String", # The direction of the text in the cell.
   46223                       "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   46224                           # When updating padding, every field must be specified.
   46225                         "top": 42, # The top padding of the cell.
   46226                         "right": 42, # The right padding of the cell.
   46227                         "bottom": 42, # The bottom padding of the cell.
   46228                         "left": 42, # The left padding of the cell.
   46229                       },
   46230                       "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   46231                       "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   46232                           # for simplicity of conversion to/from color representations in various
   46233                           # languages over compactness; for example, the fields of this representation
   46234                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   46235                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   46236                           # method in iOS; and, with just a little work, it can be easily formatted into
   46237                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   46238                           #
   46239                           # Example (Java):
   46240                           #
   46241                           #      import com.google.type.Color;
   46242                           #
   46243                           #      // ...
   46244                           #      public static java.awt.Color fromProto(Color protocolor) {
   46245                           #        float alpha = protocolor.hasAlpha()
   46246                           #            ? protocolor.getAlpha().getValue()
   46247                           #            : 1.0;
   46248                           #
   46249                           #        return new java.awt.Color(
   46250                           #            protocolor.getRed(),
   46251                           #            protocolor.getGreen(),
   46252                           #            protocolor.getBlue(),
   46253                           #            alpha);
   46254                           #      }
   46255                           #
   46256                           #      public static Color toProto(java.awt.Color color) {
   46257                           #        float red = (float) color.getRed();
   46258                           #        float green = (float) color.getGreen();
   46259                           #        float blue = (float) color.getBlue();
   46260                           #        float denominator = 255.0;
   46261                           #        Color.Builder resultBuilder =
   46262                           #            Color
   46263                           #                .newBuilder()
   46264                           #                .setRed(red / denominator)
   46265                           #                .setGreen(green / denominator)
   46266                           #                .setBlue(blue / denominator);
   46267                           #        int alpha = color.getAlpha();
   46268                           #        if (alpha != 255) {
   46269                           #          result.setAlpha(
   46270                           #              FloatValue
   46271                           #                  .newBuilder()
   46272                           #                  .setValue(((float) alpha) / denominator)
   46273                           #                  .build());
   46274                           #        }
   46275                           #        return resultBuilder.build();
   46276                           #      }
   46277                           #      // ...
   46278                           #
   46279                           # Example (iOS / Obj-C):
   46280                           #
   46281                           #      // ...
   46282                           #      static UIColor* fromProto(Color* protocolor) {
   46283                           #         float red = [protocolor red];
   46284                           #         float green = [protocolor green];
   46285                           #         float blue = [protocolor blue];
   46286                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   46287                           #         float alpha = 1.0;
   46288                           #         if (alpha_wrapper != nil) {
   46289                           #           alpha = [alpha_wrapper value];
   46290                           #         }
   46291                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   46292                           #      }
   46293                           #
   46294                           #      static Color* toProto(UIColor* color) {
   46295                           #          CGFloat red, green, blue, alpha;
   46296                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   46297                           #            return nil;
   46298                           #          }
   46299                           #          Color* result = [Color alloc] init];
   46300                           #          [result setRed:red];
   46301                           #          [result setGreen:green];
   46302                           #          [result setBlue:blue];
   46303                           #          if (alpha <= 0.9999) {
   46304                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   46305                           #          }
   46306                           #          [result autorelease];
   46307                           #          return result;
   46308                           #     }
   46309                           #     // ...
   46310                           #
   46311                           #  Example (JavaScript):
   46312                           #
   46313                           #     // ...
   46314                           #
   46315                           #     var protoToCssColor = function(rgb_color) {
   46316                           #        var redFrac = rgb_color.red || 0.0;
   46317                           #        var greenFrac = rgb_color.green || 0.0;
   46318                           #        var blueFrac = rgb_color.blue || 0.0;
   46319                           #        var red = Math.floor(redFrac * 255);
   46320                           #        var green = Math.floor(greenFrac * 255);
   46321                           #        var blue = Math.floor(blueFrac * 255);
   46322                           #
   46323                           #        if (!('alpha' in rgb_color)) {
   46324                           #           return rgbToCssColor_(red, green, blue);
   46325                           #        }
   46326                           #
   46327                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   46328                           #        var rgbParams = [red, green, blue].join(',');
   46329                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   46330                           #     };
   46331                           #
   46332                           #     var rgbToCssColor_ = function(red, green, blue) {
   46333                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   46334                           #       var hexString = rgbNumber.toString(16);
   46335                           #       var missingZeros = 6 - hexString.length;
   46336                           #       var resultBuilder = ['#'];
   46337                           #       for (var i = 0; i < missingZeros; i++) {
   46338                           #          resultBuilder.push('0');
   46339                           #       }
   46340                           #       resultBuilder.push(hexString);
   46341                           #       return resultBuilder.join('');
   46342                           #     };
   46343                           #
   46344                           #     // ...
   46345                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   46346                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   46347                             # the final pixel color is defined by the equation:
   46348                             #
   46349                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   46350                             #
   46351                             # This means that a value of 1.0 corresponds to a solid color, whereas
   46352                             # a value of 0.0 corresponds to a completely transparent color. This
   46353                             # uses a wrapper message rather than a simple float scalar so that it is
   46354                             # possible to distinguish between a default value and the value being unset.
   46355                             # If omitted, this color object is to be rendered as a solid color
   46356                             # (as if the alpha value had been explicitly given with a value of 1.0).
   46357                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   46358                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   46359                       },
   46360                       "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   46361                       "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   46362                           # Absent values indicate that the field isn't specified.
   46363                         "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   46364                             # for simplicity of conversion to/from color representations in various
   46365                             # languages over compactness; for example, the fields of this representation
   46366                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   46367                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   46368                             # method in iOS; and, with just a little work, it can be easily formatted into
   46369                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   46370                             #
   46371                             # Example (Java):
   46372                             #
   46373                             #      import com.google.type.Color;
   46374                             #
   46375                             #      // ...
   46376                             #      public static java.awt.Color fromProto(Color protocolor) {
   46377                             #        float alpha = protocolor.hasAlpha()
   46378                             #            ? protocolor.getAlpha().getValue()
   46379                             #            : 1.0;
   46380                             #
   46381                             #        return new java.awt.Color(
   46382                             #            protocolor.getRed(),
   46383                             #            protocolor.getGreen(),
   46384                             #            protocolor.getBlue(),
   46385                             #            alpha);
   46386                             #      }
   46387                             #
   46388                             #      public static Color toProto(java.awt.Color color) {
   46389                             #        float red = (float) color.getRed();
   46390                             #        float green = (float) color.getGreen();
   46391                             #        float blue = (float) color.getBlue();
   46392                             #        float denominator = 255.0;
   46393                             #        Color.Builder resultBuilder =
   46394                             #            Color
   46395                             #                .newBuilder()
   46396                             #                .setRed(red / denominator)
   46397                             #                .setGreen(green / denominator)
   46398                             #                .setBlue(blue / denominator);
   46399                             #        int alpha = color.getAlpha();
   46400                             #        if (alpha != 255) {
   46401                             #          result.setAlpha(
   46402                             #              FloatValue
   46403                             #                  .newBuilder()
   46404                             #                  .setValue(((float) alpha) / denominator)
   46405                             #                  .build());
   46406                             #        }
   46407                             #        return resultBuilder.build();
   46408                             #      }
   46409                             #      // ...
   46410                             #
   46411                             # Example (iOS / Obj-C):
   46412                             #
   46413                             #      // ...
   46414                             #      static UIColor* fromProto(Color* protocolor) {
   46415                             #         float red = [protocolor red];
   46416                             #         float green = [protocolor green];
   46417                             #         float blue = [protocolor blue];
   46418                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   46419                             #         float alpha = 1.0;
   46420                             #         if (alpha_wrapper != nil) {
   46421                             #           alpha = [alpha_wrapper value];
   46422                             #         }
   46423                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   46424                             #      }
   46425                             #
   46426                             #      static Color* toProto(UIColor* color) {
   46427                             #          CGFloat red, green, blue, alpha;
   46428                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   46429                             #            return nil;
   46430                             #          }
   46431                             #          Color* result = [Color alloc] init];
   46432                             #          [result setRed:red];
   46433                             #          [result setGreen:green];
   46434                             #          [result setBlue:blue];
   46435                             #          if (alpha <= 0.9999) {
   46436                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   46437                             #          }
   46438                             #          [result autorelease];
   46439                             #          return result;
   46440                             #     }
   46441                             #     // ...
   46442                             #
   46443                             #  Example (JavaScript):
   46444                             #
   46445                             #     // ...
   46446                             #
   46447                             #     var protoToCssColor = function(rgb_color) {
   46448                             #        var redFrac = rgb_color.red || 0.0;
   46449                             #        var greenFrac = rgb_color.green || 0.0;
   46450                             #        var blueFrac = rgb_color.blue || 0.0;
   46451                             #        var red = Math.floor(redFrac * 255);
   46452                             #        var green = Math.floor(greenFrac * 255);
   46453                             #        var blue = Math.floor(blueFrac * 255);
   46454                             #
   46455                             #        if (!('alpha' in rgb_color)) {
   46456                             #           return rgbToCssColor_(red, green, blue);
   46457                             #        }
   46458                             #
   46459                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   46460                             #        var rgbParams = [red, green, blue].join(',');
   46461                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   46462                             #     };
   46463                             #
   46464                             #     var rgbToCssColor_ = function(red, green, blue) {
   46465                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   46466                             #       var hexString = rgbNumber.toString(16);
   46467                             #       var missingZeros = 6 - hexString.length;
   46468                             #       var resultBuilder = ['#'];
   46469                             #       for (var i = 0; i < missingZeros; i++) {
   46470                             #          resultBuilder.push('0');
   46471                             #       }
   46472                             #       resultBuilder.push(hexString);
   46473                             #       return resultBuilder.join('');
   46474                             #     };
   46475                             #
   46476                             #     // ...
   46477                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   46478                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   46479                               # the final pixel color is defined by the equation:
   46480                               #
   46481                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   46482                               #
   46483                               # This means that a value of 1.0 corresponds to a solid color, whereas
   46484                               # a value of 0.0 corresponds to a completely transparent color. This
   46485                               # uses a wrapper message rather than a simple float scalar so that it is
   46486                               # possible to distinguish between a default value and the value being unset.
   46487                               # If omitted, this color object is to be rendered as a solid color
   46488                               # (as if the alpha value had been explicitly given with a value of 1.0).
   46489                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   46490                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   46491                         },
   46492                         "bold": True or False, # True if the text is bold.
   46493                         "strikethrough": True or False, # True if the text has a strikethrough.
   46494                         "fontFamily": "A String", # The font family.
   46495                         "fontSize": 42, # The size of the font.
   46496                         "italic": True or False, # True if the text is italicized.
   46497                         "underline": True or False, # True if the text is underlined.
   46498                       },
   46499                       "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   46500                         "angle": 42, # The angle between the standard orientation and the desired orientation.
   46501                             # Measured in degrees. Valid values are between -90 and 90. Positive
   46502                             # angles are angled upwards, negative are angled downwards.
   46503                             #
   46504                             # Note: For LTR text direction positive angles are in the counterclockwise
   46505                             # direction, whereas for RTL they are in the clockwise direction
   46506                         "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   46507                             # characters is unchanged.
   46508                             # For example:
   46509                             #
   46510                             #     | V |
   46511                             #     | e |
   46512                             #     | r |
   46513                             #     | t |
   46514                             #     | i |
   46515                             #     | c |
   46516                             #     | a |
   46517                             #     | l |
   46518                       },
   46519                       "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   46520                       "borders": { # The borders of the cell. # The borders of the cell.
   46521                         "top": { # A border along a cell. # The top border of the cell.
   46522                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   46523                               # for simplicity of conversion to/from color representations in various
   46524                               # languages over compactness; for example, the fields of this representation
   46525                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   46526                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   46527                               # method in iOS; and, with just a little work, it can be easily formatted into
   46528                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   46529                               #
   46530                               # Example (Java):
   46531                               #
   46532                               #      import com.google.type.Color;
   46533                               #
   46534                               #      // ...
   46535                               #      public static java.awt.Color fromProto(Color protocolor) {
   46536                               #        float alpha = protocolor.hasAlpha()
   46537                               #            ? protocolor.getAlpha().getValue()
   46538                               #            : 1.0;
   46539                               #
   46540                               #        return new java.awt.Color(
   46541                               #            protocolor.getRed(),
   46542                               #            protocolor.getGreen(),
   46543                               #            protocolor.getBlue(),
   46544                               #            alpha);
   46545                               #      }
   46546                               #
   46547                               #      public static Color toProto(java.awt.Color color) {
   46548                               #        float red = (float) color.getRed();
   46549                               #        float green = (float) color.getGreen();
   46550                               #        float blue = (float) color.getBlue();
   46551                               #        float denominator = 255.0;
   46552                               #        Color.Builder resultBuilder =
   46553                               #            Color
   46554                               #                .newBuilder()
   46555                               #                .setRed(red / denominator)
   46556                               #                .setGreen(green / denominator)
   46557                               #                .setBlue(blue / denominator);
   46558                               #        int alpha = color.getAlpha();
   46559                               #        if (alpha != 255) {
   46560                               #          result.setAlpha(
   46561                               #              FloatValue
   46562                               #                  .newBuilder()
   46563                               #                  .setValue(((float) alpha) / denominator)
   46564                               #                  .build());
   46565                               #        }
   46566                               #        return resultBuilder.build();
   46567                               #      }
   46568                               #      // ...
   46569                               #
   46570                               # Example (iOS / Obj-C):
   46571                               #
   46572                               #      // ...
   46573                               #      static UIColor* fromProto(Color* protocolor) {
   46574                               #         float red = [protocolor red];
   46575                               #         float green = [protocolor green];
   46576                               #         float blue = [protocolor blue];
   46577                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   46578                               #         float alpha = 1.0;
   46579                               #         if (alpha_wrapper != nil) {
   46580                               #           alpha = [alpha_wrapper value];
   46581                               #         }
   46582                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   46583                               #      }
   46584                               #
   46585                               #      static Color* toProto(UIColor* color) {
   46586                               #          CGFloat red, green, blue, alpha;
   46587                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   46588                               #            return nil;
   46589                               #          }
   46590                               #          Color* result = [Color alloc] init];
   46591                               #          [result setRed:red];
   46592                               #          [result setGreen:green];
   46593                               #          [result setBlue:blue];
   46594                               #          if (alpha <= 0.9999) {
   46595                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   46596                               #          }
   46597                               #          [result autorelease];
   46598                               #          return result;
   46599                               #     }
   46600                               #     // ...
   46601                               #
   46602                               #  Example (JavaScript):
   46603                               #
   46604                               #     // ...
   46605                               #
   46606                               #     var protoToCssColor = function(rgb_color) {
   46607                               #        var redFrac = rgb_color.red || 0.0;
   46608                               #        var greenFrac = rgb_color.green || 0.0;
   46609                               #        var blueFrac = rgb_color.blue || 0.0;
   46610                               #        var red = Math.floor(redFrac * 255);
   46611                               #        var green = Math.floor(greenFrac * 255);
   46612                               #        var blue = Math.floor(blueFrac * 255);
   46613                               #
   46614                               #        if (!('alpha' in rgb_color)) {
   46615                               #           return rgbToCssColor_(red, green, blue);
   46616                               #        }
   46617                               #
   46618                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   46619                               #        var rgbParams = [red, green, blue].join(',');
   46620                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   46621                               #     };
   46622                               #
   46623                               #     var rgbToCssColor_ = function(red, green, blue) {
   46624                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   46625                               #       var hexString = rgbNumber.toString(16);
   46626                               #       var missingZeros = 6 - hexString.length;
   46627                               #       var resultBuilder = ['#'];
   46628                               #       for (var i = 0; i < missingZeros; i++) {
   46629                               #          resultBuilder.push('0');
   46630                               #       }
   46631                               #       resultBuilder.push(hexString);
   46632                               #       return resultBuilder.join('');
   46633                               #     };
   46634                               #
   46635                               #     // ...
   46636                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   46637                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   46638                                 # the final pixel color is defined by the equation:
   46639                                 #
   46640                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   46641                                 #
   46642                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   46643                                 # a value of 0.0 corresponds to a completely transparent color. This
   46644                                 # uses a wrapper message rather than a simple float scalar so that it is
   46645                                 # possible to distinguish between a default value and the value being unset.
   46646                                 # If omitted, this color object is to be rendered as a solid color
   46647                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   46648                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   46649                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   46650                           },
   46651                           "width": 42, # The width of the border, in pixels.
   46652                               # Deprecated; the width is determined by the "style" field.
   46653                           "style": "A String", # The style of the border.
   46654                         },
   46655                         "right": { # A border along a cell. # The right border of the cell.
   46656                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   46657                               # for simplicity of conversion to/from color representations in various
   46658                               # languages over compactness; for example, the fields of this representation
   46659                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   46660                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   46661                               # method in iOS; and, with just a little work, it can be easily formatted into
   46662                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   46663                               #
   46664                               # Example (Java):
   46665                               #
   46666                               #      import com.google.type.Color;
   46667                               #
   46668                               #      // ...
   46669                               #      public static java.awt.Color fromProto(Color protocolor) {
   46670                               #        float alpha = protocolor.hasAlpha()
   46671                               #            ? protocolor.getAlpha().getValue()
   46672                               #            : 1.0;
   46673                               #
   46674                               #        return new java.awt.Color(
   46675                               #            protocolor.getRed(),
   46676                               #            protocolor.getGreen(),
   46677                               #            protocolor.getBlue(),
   46678                               #            alpha);
   46679                               #      }
   46680                               #
   46681                               #      public static Color toProto(java.awt.Color color) {
   46682                               #        float red = (float) color.getRed();
   46683                               #        float green = (float) color.getGreen();
   46684                               #        float blue = (float) color.getBlue();
   46685                               #        float denominator = 255.0;
   46686                               #        Color.Builder resultBuilder =
   46687                               #            Color
   46688                               #                .newBuilder()
   46689                               #                .setRed(red / denominator)
   46690                               #                .setGreen(green / denominator)
   46691                               #                .setBlue(blue / denominator);
   46692                               #        int alpha = color.getAlpha();
   46693                               #        if (alpha != 255) {
   46694                               #          result.setAlpha(
   46695                               #              FloatValue
   46696                               #                  .newBuilder()
   46697                               #                  .setValue(((float) alpha) / denominator)
   46698                               #                  .build());
   46699                               #        }
   46700                               #        return resultBuilder.build();
   46701                               #      }
   46702                               #      // ...
   46703                               #
   46704                               # Example (iOS / Obj-C):
   46705                               #
   46706                               #      // ...
   46707                               #      static UIColor* fromProto(Color* protocolor) {
   46708                               #         float red = [protocolor red];
   46709                               #         float green = [protocolor green];
   46710                               #         float blue = [protocolor blue];
   46711                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   46712                               #         float alpha = 1.0;
   46713                               #         if (alpha_wrapper != nil) {
   46714                               #           alpha = [alpha_wrapper value];
   46715                               #         }
   46716                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   46717                               #      }
   46718                               #
   46719                               #      static Color* toProto(UIColor* color) {
   46720                               #          CGFloat red, green, blue, alpha;
   46721                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   46722                               #            return nil;
   46723                               #          }
   46724                               #          Color* result = [Color alloc] init];
   46725                               #          [result setRed:red];
   46726                               #          [result setGreen:green];
   46727                               #          [result setBlue:blue];
   46728                               #          if (alpha <= 0.9999) {
   46729                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   46730                               #          }
   46731                               #          [result autorelease];
   46732                               #          return result;
   46733                               #     }
   46734                               #     // ...
   46735                               #
   46736                               #  Example (JavaScript):
   46737                               #
   46738                               #     // ...
   46739                               #
   46740                               #     var protoToCssColor = function(rgb_color) {
   46741                               #        var redFrac = rgb_color.red || 0.0;
   46742                               #        var greenFrac = rgb_color.green || 0.0;
   46743                               #        var blueFrac = rgb_color.blue || 0.0;
   46744                               #        var red = Math.floor(redFrac * 255);
   46745                               #        var green = Math.floor(greenFrac * 255);
   46746                               #        var blue = Math.floor(blueFrac * 255);
   46747                               #
   46748                               #        if (!('alpha' in rgb_color)) {
   46749                               #           return rgbToCssColor_(red, green, blue);
   46750                               #        }
   46751                               #
   46752                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   46753                               #        var rgbParams = [red, green, blue].join(',');
   46754                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   46755                               #     };
   46756                               #
   46757                               #     var rgbToCssColor_ = function(red, green, blue) {
   46758                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   46759                               #       var hexString = rgbNumber.toString(16);
   46760                               #       var missingZeros = 6 - hexString.length;
   46761                               #       var resultBuilder = ['#'];
   46762                               #       for (var i = 0; i < missingZeros; i++) {
   46763                               #          resultBuilder.push('0');
   46764                               #       }
   46765                               #       resultBuilder.push(hexString);
   46766                               #       return resultBuilder.join('');
   46767                               #     };
   46768                               #
   46769                               #     // ...
   46770                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   46771                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   46772                                 # the final pixel color is defined by the equation:
   46773                                 #
   46774                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   46775                                 #
   46776                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   46777                                 # a value of 0.0 corresponds to a completely transparent color. This
   46778                                 # uses a wrapper message rather than a simple float scalar so that it is
   46779                                 # possible to distinguish between a default value and the value being unset.
   46780                                 # If omitted, this color object is to be rendered as a solid color
   46781                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   46782                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   46783                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   46784                           },
   46785                           "width": 42, # The width of the border, in pixels.
   46786                               # Deprecated; the width is determined by the "style" field.
   46787                           "style": "A String", # The style of the border.
   46788                         },
   46789                         "bottom": { # A border along a cell. # The bottom border of the cell.
   46790                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   46791                               # for simplicity of conversion to/from color representations in various
   46792                               # languages over compactness; for example, the fields of this representation
   46793                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   46794                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   46795                               # method in iOS; and, with just a little work, it can be easily formatted into
   46796                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   46797                               #
   46798                               # Example (Java):
   46799                               #
   46800                               #      import com.google.type.Color;
   46801                               #
   46802                               #      // ...
   46803                               #      public static java.awt.Color fromProto(Color protocolor) {
   46804                               #        float alpha = protocolor.hasAlpha()
   46805                               #            ? protocolor.getAlpha().getValue()
   46806                               #            : 1.0;
   46807                               #
   46808                               #        return new java.awt.Color(
   46809                               #            protocolor.getRed(),
   46810                               #            protocolor.getGreen(),
   46811                               #            protocolor.getBlue(),
   46812                               #            alpha);
   46813                               #      }
   46814                               #
   46815                               #      public static Color toProto(java.awt.Color color) {
   46816                               #        float red = (float) color.getRed();
   46817                               #        float green = (float) color.getGreen();
   46818                               #        float blue = (float) color.getBlue();
   46819                               #        float denominator = 255.0;
   46820                               #        Color.Builder resultBuilder =
   46821                               #            Color
   46822                               #                .newBuilder()
   46823                               #                .setRed(red / denominator)
   46824                               #                .setGreen(green / denominator)
   46825                               #                .setBlue(blue / denominator);
   46826                               #        int alpha = color.getAlpha();
   46827                               #        if (alpha != 255) {
   46828                               #          result.setAlpha(
   46829                               #              FloatValue
   46830                               #                  .newBuilder()
   46831                               #                  .setValue(((float) alpha) / denominator)
   46832                               #                  .build());
   46833                               #        }
   46834                               #        return resultBuilder.build();
   46835                               #      }
   46836                               #      // ...
   46837                               #
   46838                               # Example (iOS / Obj-C):
   46839                               #
   46840                               #      // ...
   46841                               #      static UIColor* fromProto(Color* protocolor) {
   46842                               #         float red = [protocolor red];
   46843                               #         float green = [protocolor green];
   46844                               #         float blue = [protocolor blue];
   46845                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   46846                               #         float alpha = 1.0;
   46847                               #         if (alpha_wrapper != nil) {
   46848                               #           alpha = [alpha_wrapper value];
   46849                               #         }
   46850                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   46851                               #      }
   46852                               #
   46853                               #      static Color* toProto(UIColor* color) {
   46854                               #          CGFloat red, green, blue, alpha;
   46855                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   46856                               #            return nil;
   46857                               #          }
   46858                               #          Color* result = [Color alloc] init];
   46859                               #          [result setRed:red];
   46860                               #          [result setGreen:green];
   46861                               #          [result setBlue:blue];
   46862                               #          if (alpha <= 0.9999) {
   46863                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   46864                               #          }
   46865                               #          [result autorelease];
   46866                               #          return result;
   46867                               #     }
   46868                               #     // ...
   46869                               #
   46870                               #  Example (JavaScript):
   46871                               #
   46872                               #     // ...
   46873                               #
   46874                               #     var protoToCssColor = function(rgb_color) {
   46875                               #        var redFrac = rgb_color.red || 0.0;
   46876                               #        var greenFrac = rgb_color.green || 0.0;
   46877                               #        var blueFrac = rgb_color.blue || 0.0;
   46878                               #        var red = Math.floor(redFrac * 255);
   46879                               #        var green = Math.floor(greenFrac * 255);
   46880                               #        var blue = Math.floor(blueFrac * 255);
   46881                               #
   46882                               #        if (!('alpha' in rgb_color)) {
   46883                               #           return rgbToCssColor_(red, green, blue);
   46884                               #        }
   46885                               #
   46886                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   46887                               #        var rgbParams = [red, green, blue].join(',');
   46888                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   46889                               #     };
   46890                               #
   46891                               #     var rgbToCssColor_ = function(red, green, blue) {
   46892                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   46893                               #       var hexString = rgbNumber.toString(16);
   46894                               #       var missingZeros = 6 - hexString.length;
   46895                               #       var resultBuilder = ['#'];
   46896                               #       for (var i = 0; i < missingZeros; i++) {
   46897                               #          resultBuilder.push('0');
   46898                               #       }
   46899                               #       resultBuilder.push(hexString);
   46900                               #       return resultBuilder.join('');
   46901                               #     };
   46902                               #
   46903                               #     // ...
   46904                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   46905                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   46906                                 # the final pixel color is defined by the equation:
   46907                                 #
   46908                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   46909                                 #
   46910                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   46911                                 # a value of 0.0 corresponds to a completely transparent color. This
   46912                                 # uses a wrapper message rather than a simple float scalar so that it is
   46913                                 # possible to distinguish between a default value and the value being unset.
   46914                                 # If omitted, this color object is to be rendered as a solid color
   46915                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   46916                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   46917                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   46918                           },
   46919                           "width": 42, # The width of the border, in pixels.
   46920                               # Deprecated; the width is determined by the "style" field.
   46921                           "style": "A String", # The style of the border.
   46922                         },
   46923                         "left": { # A border along a cell. # The left border of the cell.
   46924                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   46925                               # for simplicity of conversion to/from color representations in various
   46926                               # languages over compactness; for example, the fields of this representation
   46927                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   46928                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   46929                               # method in iOS; and, with just a little work, it can be easily formatted into
   46930                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   46931                               #
   46932                               # Example (Java):
   46933                               #
   46934                               #      import com.google.type.Color;
   46935                               #
   46936                               #      // ...
   46937                               #      public static java.awt.Color fromProto(Color protocolor) {
   46938                               #        float alpha = protocolor.hasAlpha()
   46939                               #            ? protocolor.getAlpha().getValue()
   46940                               #            : 1.0;
   46941                               #
   46942                               #        return new java.awt.Color(
   46943                               #            protocolor.getRed(),
   46944                               #            protocolor.getGreen(),
   46945                               #            protocolor.getBlue(),
   46946                               #            alpha);
   46947                               #      }
   46948                               #
   46949                               #      public static Color toProto(java.awt.Color color) {
   46950                               #        float red = (float) color.getRed();
   46951                               #        float green = (float) color.getGreen();
   46952                               #        float blue = (float) color.getBlue();
   46953                               #        float denominator = 255.0;
   46954                               #        Color.Builder resultBuilder =
   46955                               #            Color
   46956                               #                .newBuilder()
   46957                               #                .setRed(red / denominator)
   46958                               #                .setGreen(green / denominator)
   46959                               #                .setBlue(blue / denominator);
   46960                               #        int alpha = color.getAlpha();
   46961                               #        if (alpha != 255) {
   46962                               #          result.setAlpha(
   46963                               #              FloatValue
   46964                               #                  .newBuilder()
   46965                               #                  .setValue(((float) alpha) / denominator)
   46966                               #                  .build());
   46967                               #        }
   46968                               #        return resultBuilder.build();
   46969                               #      }
   46970                               #      // ...
   46971                               #
   46972                               # Example (iOS / Obj-C):
   46973                               #
   46974                               #      // ...
   46975                               #      static UIColor* fromProto(Color* protocolor) {
   46976                               #         float red = [protocolor red];
   46977                               #         float green = [protocolor green];
   46978                               #         float blue = [protocolor blue];
   46979                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   46980                               #         float alpha = 1.0;
   46981                               #         if (alpha_wrapper != nil) {
   46982                               #           alpha = [alpha_wrapper value];
   46983                               #         }
   46984                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   46985                               #      }
   46986                               #
   46987                               #      static Color* toProto(UIColor* color) {
   46988                               #          CGFloat red, green, blue, alpha;
   46989                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   46990                               #            return nil;
   46991                               #          }
   46992                               #          Color* result = [Color alloc] init];
   46993                               #          [result setRed:red];
   46994                               #          [result setGreen:green];
   46995                               #          [result setBlue:blue];
   46996                               #          if (alpha <= 0.9999) {
   46997                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   46998                               #          }
   46999                               #          [result autorelease];
   47000                               #          return result;
   47001                               #     }
   47002                               #     // ...
   47003                               #
   47004                               #  Example (JavaScript):
   47005                               #
   47006                               #     // ...
   47007                               #
   47008                               #     var protoToCssColor = function(rgb_color) {
   47009                               #        var redFrac = rgb_color.red || 0.0;
   47010                               #        var greenFrac = rgb_color.green || 0.0;
   47011                               #        var blueFrac = rgb_color.blue || 0.0;
   47012                               #        var red = Math.floor(redFrac * 255);
   47013                               #        var green = Math.floor(greenFrac * 255);
   47014                               #        var blue = Math.floor(blueFrac * 255);
   47015                               #
   47016                               #        if (!('alpha' in rgb_color)) {
   47017                               #           return rgbToCssColor_(red, green, blue);
   47018                               #        }
   47019                               #
   47020                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   47021                               #        var rgbParams = [red, green, blue].join(',');
   47022                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   47023                               #     };
   47024                               #
   47025                               #     var rgbToCssColor_ = function(red, green, blue) {
   47026                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   47027                               #       var hexString = rgbNumber.toString(16);
   47028                               #       var missingZeros = 6 - hexString.length;
   47029                               #       var resultBuilder = ['#'];
   47030                               #       for (var i = 0; i < missingZeros; i++) {
   47031                               #          resultBuilder.push('0');
   47032                               #       }
   47033                               #       resultBuilder.push(hexString);
   47034                               #       return resultBuilder.join('');
   47035                               #     };
   47036                               #
   47037                               #     // ...
   47038                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   47039                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   47040                                 # the final pixel color is defined by the equation:
   47041                                 #
   47042                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   47043                                 #
   47044                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   47045                                 # a value of 0.0 corresponds to a completely transparent color. This
   47046                                 # uses a wrapper message rather than a simple float scalar so that it is
   47047                                 # possible to distinguish between a default value and the value being unset.
   47048                                 # If omitted, this color object is to be rendered as a solid color
   47049                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   47050                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   47051                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   47052                           },
   47053                           "width": 42, # The width of the border, in pixels.
   47054                               # Deprecated; the width is determined by the "style" field.
   47055                           "style": "A String", # The style of the border.
   47056                         },
   47057                       },
   47058                       "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   47059                     },
   47060                     "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
   47061                         #
   47062                         # When writing, the new format will be merged with the existing format.
   47063                       "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
   47064                         "pattern": "A String", # Pattern string used for formatting.  If not set, a default pattern based on
   47065                             # the user's locale will be used if necessary for the given type.
   47066                             # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more
   47067                             # information about the supported patterns.
   47068                         "type": "A String", # The type of the number format.
   47069                             # When writing, this field must be set.
   47070                       },
   47071                       "textDirection": "A String", # The direction of the text in the cell.
   47072                       "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
   47073                           # When updating padding, every field must be specified.
   47074                         "top": 42, # The top padding of the cell.
   47075                         "right": 42, # The right padding of the cell.
   47076                         "bottom": 42, # The bottom padding of the cell.
   47077                         "left": 42, # The left padding of the cell.
   47078                       },
   47079                       "verticalAlignment": "A String", # The vertical alignment of the value in the cell.
   47080                       "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
   47081                           # for simplicity of conversion to/from color representations in various
   47082                           # languages over compactness; for example, the fields of this representation
   47083                           # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   47084                           # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   47085                           # method in iOS; and, with just a little work, it can be easily formatted into
   47086                           # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   47087                           #
   47088                           # Example (Java):
   47089                           #
   47090                           #      import com.google.type.Color;
   47091                           #
   47092                           #      // ...
   47093                           #      public static java.awt.Color fromProto(Color protocolor) {
   47094                           #        float alpha = protocolor.hasAlpha()
   47095                           #            ? protocolor.getAlpha().getValue()
   47096                           #            : 1.0;
   47097                           #
   47098                           #        return new java.awt.Color(
   47099                           #            protocolor.getRed(),
   47100                           #            protocolor.getGreen(),
   47101                           #            protocolor.getBlue(),
   47102                           #            alpha);
   47103                           #      }
   47104                           #
   47105                           #      public static Color toProto(java.awt.Color color) {
   47106                           #        float red = (float) color.getRed();
   47107                           #        float green = (float) color.getGreen();
   47108                           #        float blue = (float) color.getBlue();
   47109                           #        float denominator = 255.0;
   47110                           #        Color.Builder resultBuilder =
   47111                           #            Color
   47112                           #                .newBuilder()
   47113                           #                .setRed(red / denominator)
   47114                           #                .setGreen(green / denominator)
   47115                           #                .setBlue(blue / denominator);
   47116                           #        int alpha = color.getAlpha();
   47117                           #        if (alpha != 255) {
   47118                           #          result.setAlpha(
   47119                           #              FloatValue
   47120                           #                  .newBuilder()
   47121                           #                  .setValue(((float) alpha) / denominator)
   47122                           #                  .build());
   47123                           #        }
   47124                           #        return resultBuilder.build();
   47125                           #      }
   47126                           #      // ...
   47127                           #
   47128                           # Example (iOS / Obj-C):
   47129                           #
   47130                           #      // ...
   47131                           #      static UIColor* fromProto(Color* protocolor) {
   47132                           #         float red = [protocolor red];
   47133                           #         float green = [protocolor green];
   47134                           #         float blue = [protocolor blue];
   47135                           #         FloatValue* alpha_wrapper = [protocolor alpha];
   47136                           #         float alpha = 1.0;
   47137                           #         if (alpha_wrapper != nil) {
   47138                           #           alpha = [alpha_wrapper value];
   47139                           #         }
   47140                           #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   47141                           #      }
   47142                           #
   47143                           #      static Color* toProto(UIColor* color) {
   47144                           #          CGFloat red, green, blue, alpha;
   47145                           #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   47146                           #            return nil;
   47147                           #          }
   47148                           #          Color* result = [Color alloc] init];
   47149                           #          [result setRed:red];
   47150                           #          [result setGreen:green];
   47151                           #          [result setBlue:blue];
   47152                           #          if (alpha <= 0.9999) {
   47153                           #            [result setAlpha:floatWrapperWithValue(alpha)];
   47154                           #          }
   47155                           #          [result autorelease];
   47156                           #          return result;
   47157                           #     }
   47158                           #     // ...
   47159                           #
   47160                           #  Example (JavaScript):
   47161                           #
   47162                           #     // ...
   47163                           #
   47164                           #     var protoToCssColor = function(rgb_color) {
   47165                           #        var redFrac = rgb_color.red || 0.0;
   47166                           #        var greenFrac = rgb_color.green || 0.0;
   47167                           #        var blueFrac = rgb_color.blue || 0.0;
   47168                           #        var red = Math.floor(redFrac * 255);
   47169                           #        var green = Math.floor(greenFrac * 255);
   47170                           #        var blue = Math.floor(blueFrac * 255);
   47171                           #
   47172                           #        if (!('alpha' in rgb_color)) {
   47173                           #           return rgbToCssColor_(red, green, blue);
   47174                           #        }
   47175                           #
   47176                           #        var alphaFrac = rgb_color.alpha.value || 0.0;
   47177                           #        var rgbParams = [red, green, blue].join(',');
   47178                           #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   47179                           #     };
   47180                           #
   47181                           #     var rgbToCssColor_ = function(red, green, blue) {
   47182                           #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   47183                           #       var hexString = rgbNumber.toString(16);
   47184                           #       var missingZeros = 6 - hexString.length;
   47185                           #       var resultBuilder = ['#'];
   47186                           #       for (var i = 0; i < missingZeros; i++) {
   47187                           #          resultBuilder.push('0');
   47188                           #       }
   47189                           #       resultBuilder.push(hexString);
   47190                           #       return resultBuilder.join('');
   47191                           #     };
   47192                           #
   47193                           #     // ...
   47194                         "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   47195                         "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   47196                             # the final pixel color is defined by the equation:
   47197                             #
   47198                             #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   47199                             #
   47200                             # This means that a value of 1.0 corresponds to a solid color, whereas
   47201                             # a value of 0.0 corresponds to a completely transparent color. This
   47202                             # uses a wrapper message rather than a simple float scalar so that it is
   47203                             # possible to distinguish between a default value and the value being unset.
   47204                             # If omitted, this color object is to be rendered as a solid color
   47205                             # (as if the alpha value had been explicitly given with a value of 1.0).
   47206                         "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   47207                         "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   47208                       },
   47209                       "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell.
   47210                       "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run).
   47211                           # Absent values indicate that the field isn't specified.
   47212                         "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   47213                             # for simplicity of conversion to/from color representations in various
   47214                             # languages over compactness; for example, the fields of this representation
   47215                             # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   47216                             # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   47217                             # method in iOS; and, with just a little work, it can be easily formatted into
   47218                             # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   47219                             #
   47220                             # Example (Java):
   47221                             #
   47222                             #      import com.google.type.Color;
   47223                             #
   47224                             #      // ...
   47225                             #      public static java.awt.Color fromProto(Color protocolor) {
   47226                             #        float alpha = protocolor.hasAlpha()
   47227                             #            ? protocolor.getAlpha().getValue()
   47228                             #            : 1.0;
   47229                             #
   47230                             #        return new java.awt.Color(
   47231                             #            protocolor.getRed(),
   47232                             #            protocolor.getGreen(),
   47233                             #            protocolor.getBlue(),
   47234                             #            alpha);
   47235                             #      }
   47236                             #
   47237                             #      public static Color toProto(java.awt.Color color) {
   47238                             #        float red = (float) color.getRed();
   47239                             #        float green = (float) color.getGreen();
   47240                             #        float blue = (float) color.getBlue();
   47241                             #        float denominator = 255.0;
   47242                             #        Color.Builder resultBuilder =
   47243                             #            Color
   47244                             #                .newBuilder()
   47245                             #                .setRed(red / denominator)
   47246                             #                .setGreen(green / denominator)
   47247                             #                .setBlue(blue / denominator);
   47248                             #        int alpha = color.getAlpha();
   47249                             #        if (alpha != 255) {
   47250                             #          result.setAlpha(
   47251                             #              FloatValue
   47252                             #                  .newBuilder()
   47253                             #                  .setValue(((float) alpha) / denominator)
   47254                             #                  .build());
   47255                             #        }
   47256                             #        return resultBuilder.build();
   47257                             #      }
   47258                             #      // ...
   47259                             #
   47260                             # Example (iOS / Obj-C):
   47261                             #
   47262                             #      // ...
   47263                             #      static UIColor* fromProto(Color* protocolor) {
   47264                             #         float red = [protocolor red];
   47265                             #         float green = [protocolor green];
   47266                             #         float blue = [protocolor blue];
   47267                             #         FloatValue* alpha_wrapper = [protocolor alpha];
   47268                             #         float alpha = 1.0;
   47269                             #         if (alpha_wrapper != nil) {
   47270                             #           alpha = [alpha_wrapper value];
   47271                             #         }
   47272                             #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   47273                             #      }
   47274                             #
   47275                             #      static Color* toProto(UIColor* color) {
   47276                             #          CGFloat red, green, blue, alpha;
   47277                             #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   47278                             #            return nil;
   47279                             #          }
   47280                             #          Color* result = [Color alloc] init];
   47281                             #          [result setRed:red];
   47282                             #          [result setGreen:green];
   47283                             #          [result setBlue:blue];
   47284                             #          if (alpha <= 0.9999) {
   47285                             #            [result setAlpha:floatWrapperWithValue(alpha)];
   47286                             #          }
   47287                             #          [result autorelease];
   47288                             #          return result;
   47289                             #     }
   47290                             #     // ...
   47291                             #
   47292                             #  Example (JavaScript):
   47293                             #
   47294                             #     // ...
   47295                             #
   47296                             #     var protoToCssColor = function(rgb_color) {
   47297                             #        var redFrac = rgb_color.red || 0.0;
   47298                             #        var greenFrac = rgb_color.green || 0.0;
   47299                             #        var blueFrac = rgb_color.blue || 0.0;
   47300                             #        var red = Math.floor(redFrac * 255);
   47301                             #        var green = Math.floor(greenFrac * 255);
   47302                             #        var blue = Math.floor(blueFrac * 255);
   47303                             #
   47304                             #        if (!('alpha' in rgb_color)) {
   47305                             #           return rgbToCssColor_(red, green, blue);
   47306                             #        }
   47307                             #
   47308                             #        var alphaFrac = rgb_color.alpha.value || 0.0;
   47309                             #        var rgbParams = [red, green, blue].join(',');
   47310                             #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   47311                             #     };
   47312                             #
   47313                             #     var rgbToCssColor_ = function(red, green, blue) {
   47314                             #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   47315                             #       var hexString = rgbNumber.toString(16);
   47316                             #       var missingZeros = 6 - hexString.length;
   47317                             #       var resultBuilder = ['#'];
   47318                             #       for (var i = 0; i < missingZeros; i++) {
   47319                             #          resultBuilder.push('0');
   47320                             #       }
   47321                             #       resultBuilder.push(hexString);
   47322                             #       return resultBuilder.join('');
   47323                             #     };
   47324                             #
   47325                             #     // ...
   47326                           "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   47327                           "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   47328                               # the final pixel color is defined by the equation:
   47329                               #
   47330                               #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   47331                               #
   47332                               # This means that a value of 1.0 corresponds to a solid color, whereas
   47333                               # a value of 0.0 corresponds to a completely transparent color. This
   47334                               # uses a wrapper message rather than a simple float scalar so that it is
   47335                               # possible to distinguish between a default value and the value being unset.
   47336                               # If omitted, this color object is to be rendered as a solid color
   47337                               # (as if the alpha value had been explicitly given with a value of 1.0).
   47338                           "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   47339                           "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   47340                         },
   47341                         "bold": True or False, # True if the text is bold.
   47342                         "strikethrough": True or False, # True if the text has a strikethrough.
   47343                         "fontFamily": "A String", # The font family.
   47344                         "fontSize": 42, # The size of the font.
   47345                         "italic": True or False, # True if the text is italicized.
   47346                         "underline": True or False, # True if the text is underlined.
   47347                       },
   47348                       "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell
   47349                         "angle": 42, # The angle between the standard orientation and the desired orientation.
   47350                             # Measured in degrees. Valid values are between -90 and 90. Positive
   47351                             # angles are angled upwards, negative are angled downwards.
   47352                             #
   47353                             # Note: For LTR text direction positive angles are in the counterclockwise
   47354                             # direction, whereas for RTL they are in the clockwise direction
   47355                         "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual
   47356                             # characters is unchanged.
   47357                             # For example:
   47358                             #
   47359                             #     | V |
   47360                             #     | e |
   47361                             #     | r |
   47362                             #     | t |
   47363                             #     | i |
   47364                             #     | c |
   47365                             #     | a |
   47366                             #     | l |
   47367                       },
   47368                       "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
   47369                       "borders": { # The borders of the cell. # The borders of the cell.
   47370                         "top": { # A border along a cell. # The top border of the cell.
   47371                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   47372                               # for simplicity of conversion to/from color representations in various
   47373                               # languages over compactness; for example, the fields of this representation
   47374                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   47375                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   47376                               # method in iOS; and, with just a little work, it can be easily formatted into
   47377                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   47378                               #
   47379                               # Example (Java):
   47380                               #
   47381                               #      import com.google.type.Color;
   47382                               #
   47383                               #      // ...
   47384                               #      public static java.awt.Color fromProto(Color protocolor) {
   47385                               #        float alpha = protocolor.hasAlpha()
   47386                               #            ? protocolor.getAlpha().getValue()
   47387                               #            : 1.0;
   47388                               #
   47389                               #        return new java.awt.Color(
   47390                               #            protocolor.getRed(),
   47391                               #            protocolor.getGreen(),
   47392                               #            protocolor.getBlue(),
   47393                               #            alpha);
   47394                               #      }
   47395                               #
   47396                               #      public static Color toProto(java.awt.Color color) {
   47397                               #        float red = (float) color.getRed();
   47398                               #        float green = (float) color.getGreen();
   47399                               #        float blue = (float) color.getBlue();
   47400                               #        float denominator = 255.0;
   47401                               #        Color.Builder resultBuilder =
   47402                               #            Color
   47403                               #                .newBuilder()
   47404                               #                .setRed(red / denominator)
   47405                               #                .setGreen(green / denominator)
   47406                               #                .setBlue(blue / denominator);
   47407                               #        int alpha = color.getAlpha();
   47408                               #        if (alpha != 255) {
   47409                               #          result.setAlpha(
   47410                               #              FloatValue
   47411                               #                  .newBuilder()
   47412                               #                  .setValue(((float) alpha) / denominator)
   47413                               #                  .build());
   47414                               #        }
   47415                               #        return resultBuilder.build();
   47416                               #      }
   47417                               #      // ...
   47418                               #
   47419                               # Example (iOS / Obj-C):
   47420                               #
   47421                               #      // ...
   47422                               #      static UIColor* fromProto(Color* protocolor) {
   47423                               #         float red = [protocolor red];
   47424                               #         float green = [protocolor green];
   47425                               #         float blue = [protocolor blue];
   47426                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   47427                               #         float alpha = 1.0;
   47428                               #         if (alpha_wrapper != nil) {
   47429                               #           alpha = [alpha_wrapper value];
   47430                               #         }
   47431                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   47432                               #      }
   47433                               #
   47434                               #      static Color* toProto(UIColor* color) {
   47435                               #          CGFloat red, green, blue, alpha;
   47436                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   47437                               #            return nil;
   47438                               #          }
   47439                               #          Color* result = [Color alloc] init];
   47440                               #          [result setRed:red];
   47441                               #          [result setGreen:green];
   47442                               #          [result setBlue:blue];
   47443                               #          if (alpha <= 0.9999) {
   47444                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   47445                               #          }
   47446                               #          [result autorelease];
   47447                               #          return result;
   47448                               #     }
   47449                               #     // ...
   47450                               #
   47451                               #  Example (JavaScript):
   47452                               #
   47453                               #     // ...
   47454                               #
   47455                               #     var protoToCssColor = function(rgb_color) {
   47456                               #        var redFrac = rgb_color.red || 0.0;
   47457                               #        var greenFrac = rgb_color.green || 0.0;
   47458                               #        var blueFrac = rgb_color.blue || 0.0;
   47459                               #        var red = Math.floor(redFrac * 255);
   47460                               #        var green = Math.floor(greenFrac * 255);
   47461                               #        var blue = Math.floor(blueFrac * 255);
   47462                               #
   47463                               #        if (!('alpha' in rgb_color)) {
   47464                               #           return rgbToCssColor_(red, green, blue);
   47465                               #        }
   47466                               #
   47467                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   47468                               #        var rgbParams = [red, green, blue].join(',');
   47469                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   47470                               #     };
   47471                               #
   47472                               #     var rgbToCssColor_ = function(red, green, blue) {
   47473                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   47474                               #       var hexString = rgbNumber.toString(16);
   47475                               #       var missingZeros = 6 - hexString.length;
   47476                               #       var resultBuilder = ['#'];
   47477                               #       for (var i = 0; i < missingZeros; i++) {
   47478                               #          resultBuilder.push('0');
   47479                               #       }
   47480                               #       resultBuilder.push(hexString);
   47481                               #       return resultBuilder.join('');
   47482                               #     };
   47483                               #
   47484                               #     // ...
   47485                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   47486                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   47487                                 # the final pixel color is defined by the equation:
   47488                                 #
   47489                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   47490                                 #
   47491                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   47492                                 # a value of 0.0 corresponds to a completely transparent color. This
   47493                                 # uses a wrapper message rather than a simple float scalar so that it is
   47494                                 # possible to distinguish between a default value and the value being unset.
   47495                                 # If omitted, this color object is to be rendered as a solid color
   47496                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   47497                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   47498                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   47499                           },
   47500                           "width": 42, # The width of the border, in pixels.
   47501                               # Deprecated; the width is determined by the "style" field.
   47502                           "style": "A String", # The style of the border.
   47503                         },
   47504                         "right": { # A border along a cell. # The right border of the cell.
   47505                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   47506                               # for simplicity of conversion to/from color representations in various
   47507                               # languages over compactness; for example, the fields of this representation
   47508                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   47509                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   47510                               # method in iOS; and, with just a little work, it can be easily formatted into
   47511                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   47512                               #
   47513                               # Example (Java):
   47514                               #
   47515                               #      import com.google.type.Color;
   47516                               #
   47517                               #      // ...
   47518                               #      public static java.awt.Color fromProto(Color protocolor) {
   47519                               #        float alpha = protocolor.hasAlpha()
   47520                               #            ? protocolor.getAlpha().getValue()
   47521                               #            : 1.0;
   47522                               #
   47523                               #        return new java.awt.Color(
   47524                               #            protocolor.getRed(),
   47525                               #            protocolor.getGreen(),
   47526                               #            protocolor.getBlue(),
   47527                               #            alpha);
   47528                               #      }
   47529                               #
   47530                               #      public static Color toProto(java.awt.Color color) {
   47531                               #        float red = (float) color.getRed();
   47532                               #        float green = (float) color.getGreen();
   47533                               #        float blue = (float) color.getBlue();
   47534                               #        float denominator = 255.0;
   47535                               #        Color.Builder resultBuilder =
   47536                               #            Color
   47537                               #                .newBuilder()
   47538                               #                .setRed(red / denominator)
   47539                               #                .setGreen(green / denominator)
   47540                               #                .setBlue(blue / denominator);
   47541                               #        int alpha = color.getAlpha();
   47542                               #        if (alpha != 255) {
   47543                               #          result.setAlpha(
   47544                               #              FloatValue
   47545                               #                  .newBuilder()
   47546                               #                  .setValue(((float) alpha) / denominator)
   47547                               #                  .build());
   47548                               #        }
   47549                               #        return resultBuilder.build();
   47550                               #      }
   47551                               #      // ...
   47552                               #
   47553                               # Example (iOS / Obj-C):
   47554                               #
   47555                               #      // ...
   47556                               #      static UIColor* fromProto(Color* protocolor) {
   47557                               #         float red = [protocolor red];
   47558                               #         float green = [protocolor green];
   47559                               #         float blue = [protocolor blue];
   47560                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   47561                               #         float alpha = 1.0;
   47562                               #         if (alpha_wrapper != nil) {
   47563                               #           alpha = [alpha_wrapper value];
   47564                               #         }
   47565                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   47566                               #      }
   47567                               #
   47568                               #      static Color* toProto(UIColor* color) {
   47569                               #          CGFloat red, green, blue, alpha;
   47570                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   47571                               #            return nil;
   47572                               #          }
   47573                               #          Color* result = [Color alloc] init];
   47574                               #          [result setRed:red];
   47575                               #          [result setGreen:green];
   47576                               #          [result setBlue:blue];
   47577                               #          if (alpha <= 0.9999) {
   47578                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   47579                               #          }
   47580                               #          [result autorelease];
   47581                               #          return result;
   47582                               #     }
   47583                               #     // ...
   47584                               #
   47585                               #  Example (JavaScript):
   47586                               #
   47587                               #     // ...
   47588                               #
   47589                               #     var protoToCssColor = function(rgb_color) {
   47590                               #        var redFrac = rgb_color.red || 0.0;
   47591                               #        var greenFrac = rgb_color.green || 0.0;
   47592                               #        var blueFrac = rgb_color.blue || 0.0;
   47593                               #        var red = Math.floor(redFrac * 255);
   47594                               #        var green = Math.floor(greenFrac * 255);
   47595                               #        var blue = Math.floor(blueFrac * 255);
   47596                               #
   47597                               #        if (!('alpha' in rgb_color)) {
   47598                               #           return rgbToCssColor_(red, green, blue);
   47599                               #        }
   47600                               #
   47601                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   47602                               #        var rgbParams = [red, green, blue].join(',');
   47603                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   47604                               #     };
   47605                               #
   47606                               #     var rgbToCssColor_ = function(red, green, blue) {
   47607                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   47608                               #       var hexString = rgbNumber.toString(16);
   47609                               #       var missingZeros = 6 - hexString.length;
   47610                               #       var resultBuilder = ['#'];
   47611                               #       for (var i = 0; i < missingZeros; i++) {
   47612                               #          resultBuilder.push('0');
   47613                               #       }
   47614                               #       resultBuilder.push(hexString);
   47615                               #       return resultBuilder.join('');
   47616                               #     };
   47617                               #
   47618                               #     // ...
   47619                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   47620                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   47621                                 # the final pixel color is defined by the equation:
   47622                                 #
   47623                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   47624                                 #
   47625                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   47626                                 # a value of 0.0 corresponds to a completely transparent color. This
   47627                                 # uses a wrapper message rather than a simple float scalar so that it is
   47628                                 # possible to distinguish between a default value and the value being unset.
   47629                                 # If omitted, this color object is to be rendered as a solid color
   47630                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   47631                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   47632                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   47633                           },
   47634                           "width": 42, # The width of the border, in pixels.
   47635                               # Deprecated; the width is determined by the "style" field.
   47636                           "style": "A String", # The style of the border.
   47637                         },
   47638                         "bottom": { # A border along a cell. # The bottom border of the cell.
   47639                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   47640                               # for simplicity of conversion to/from color representations in various
   47641                               # languages over compactness; for example, the fields of this representation
   47642                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   47643                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   47644                               # method in iOS; and, with just a little work, it can be easily formatted into
   47645                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   47646                               #
   47647                               # Example (Java):
   47648                               #
   47649                               #      import com.google.type.Color;
   47650                               #
   47651                               #      // ...
   47652                               #      public static java.awt.Color fromProto(Color protocolor) {
   47653                               #        float alpha = protocolor.hasAlpha()
   47654                               #            ? protocolor.getAlpha().getValue()
   47655                               #            : 1.0;
   47656                               #
   47657                               #        return new java.awt.Color(
   47658                               #            protocolor.getRed(),
   47659                               #            protocolor.getGreen(),
   47660                               #            protocolor.getBlue(),
   47661                               #            alpha);
   47662                               #      }
   47663                               #
   47664                               #      public static Color toProto(java.awt.Color color) {
   47665                               #        float red = (float) color.getRed();
   47666                               #        float green = (float) color.getGreen();
   47667                               #        float blue = (float) color.getBlue();
   47668                               #        float denominator = 255.0;
   47669                               #        Color.Builder resultBuilder =
   47670                               #            Color
   47671                               #                .newBuilder()
   47672                               #                .setRed(red / denominator)
   47673                               #                .setGreen(green / denominator)
   47674                               #                .setBlue(blue / denominator);
   47675                               #        int alpha = color.getAlpha();
   47676                               #        if (alpha != 255) {
   47677                               #          result.setAlpha(
   47678                               #              FloatValue
   47679                               #                  .newBuilder()
   47680                               #                  .setValue(((float) alpha) / denominator)
   47681                               #                  .build());
   47682                               #        }
   47683                               #        return resultBuilder.build();
   47684                               #      }
   47685                               #      // ...
   47686                               #
   47687                               # Example (iOS / Obj-C):
   47688                               #
   47689                               #      // ...
   47690                               #      static UIColor* fromProto(Color* protocolor) {
   47691                               #         float red = [protocolor red];
   47692                               #         float green = [protocolor green];
   47693                               #         float blue = [protocolor blue];
   47694                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   47695                               #         float alpha = 1.0;
   47696                               #         if (alpha_wrapper != nil) {
   47697                               #           alpha = [alpha_wrapper value];
   47698                               #         }
   47699                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   47700                               #      }
   47701                               #
   47702                               #      static Color* toProto(UIColor* color) {
   47703                               #          CGFloat red, green, blue, alpha;
   47704                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   47705                               #            return nil;
   47706                               #          }
   47707                               #          Color* result = [Color alloc] init];
   47708                               #          [result setRed:red];
   47709                               #          [result setGreen:green];
   47710                               #          [result setBlue:blue];
   47711                               #          if (alpha <= 0.9999) {
   47712                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   47713                               #          }
   47714                               #          [result autorelease];
   47715                               #          return result;
   47716                               #     }
   47717                               #     // ...
   47718                               #
   47719                               #  Example (JavaScript):
   47720                               #
   47721                               #     // ...
   47722                               #
   47723                               #     var protoToCssColor = function(rgb_color) {
   47724                               #        var redFrac = rgb_color.red || 0.0;
   47725                               #        var greenFrac = rgb_color.green || 0.0;
   47726                               #        var blueFrac = rgb_color.blue || 0.0;
   47727                               #        var red = Math.floor(redFrac * 255);
   47728                               #        var green = Math.floor(greenFrac * 255);
   47729                               #        var blue = Math.floor(blueFrac * 255);
   47730                               #
   47731                               #        if (!('alpha' in rgb_color)) {
   47732                               #           return rgbToCssColor_(red, green, blue);
   47733                               #        }
   47734                               #
   47735                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   47736                               #        var rgbParams = [red, green, blue].join(',');
   47737                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   47738                               #     };
   47739                               #
   47740                               #     var rgbToCssColor_ = function(red, green, blue) {
   47741                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   47742                               #       var hexString = rgbNumber.toString(16);
   47743                               #       var missingZeros = 6 - hexString.length;
   47744                               #       var resultBuilder = ['#'];
   47745                               #       for (var i = 0; i < missingZeros; i++) {
   47746                               #          resultBuilder.push('0');
   47747                               #       }
   47748                               #       resultBuilder.push(hexString);
   47749                               #       return resultBuilder.join('');
   47750                               #     };
   47751                               #
   47752                               #     // ...
   47753                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   47754                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   47755                                 # the final pixel color is defined by the equation:
   47756                                 #
   47757                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   47758                                 #
   47759                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   47760                                 # a value of 0.0 corresponds to a completely transparent color. This
   47761                                 # uses a wrapper message rather than a simple float scalar so that it is
   47762                                 # possible to distinguish between a default value and the value being unset.
   47763                                 # If omitted, this color object is to be rendered as a solid color
   47764                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   47765                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   47766                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   47767                           },
   47768                           "width": 42, # The width of the border, in pixels.
   47769                               # Deprecated; the width is determined by the "style" field.
   47770                           "style": "A String", # The style of the border.
   47771                         },
   47772                         "left": { # A border along a cell. # The left border of the cell.
   47773                           "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
   47774                               # for simplicity of conversion to/from color representations in various
   47775                               # languages over compactness; for example, the fields of this representation
   47776                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   47777                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   47778                               # method in iOS; and, with just a little work, it can be easily formatted into
   47779                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   47780                               #
   47781                               # Example (Java):
   47782                               #
   47783                               #      import com.google.type.Color;
   47784                               #
   47785                               #      // ...
   47786                               #      public static java.awt.Color fromProto(Color protocolor) {
   47787                               #        float alpha = protocolor.hasAlpha()
   47788                               #            ? protocolor.getAlpha().getValue()
   47789                               #            : 1.0;
   47790                               #
   47791                               #        return new java.awt.Color(
   47792                               #            protocolor.getRed(),
   47793                               #            protocolor.getGreen(),
   47794                               #            protocolor.getBlue(),
   47795                               #            alpha);
   47796                               #      }
   47797                               #
   47798                               #      public static Color toProto(java.awt.Color color) {
   47799                               #        float red = (float) color.getRed();
   47800                               #        float green = (float) color.getGreen();
   47801                               #        float blue = (float) color.getBlue();
   47802                               #        float denominator = 255.0;
   47803                               #        Color.Builder resultBuilder =
   47804                               #            Color
   47805                               #                .newBuilder()
   47806                               #                .setRed(red / denominator)
   47807                               #                .setGreen(green / denominator)
   47808                               #                .setBlue(blue / denominator);
   47809                               #        int alpha = color.getAlpha();
   47810                               #        if (alpha != 255) {
   47811                               #          result.setAlpha(
   47812                               #              FloatValue
   47813                               #                  .newBuilder()
   47814                               #                  .setValue(((float) alpha) / denominator)
   47815                               #                  .build());
   47816                               #        }
   47817                               #        return resultBuilder.build();
   47818                               #      }
   47819                               #      // ...
   47820                               #
   47821                               # Example (iOS / Obj-C):
   47822                               #
   47823                               #      // ...
   47824                               #      static UIColor* fromProto(Color* protocolor) {
   47825                               #         float red = [protocolor red];
   47826                               #         float green = [protocolor green];
   47827                               #         float blue = [protocolor blue];
   47828                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   47829                               #         float alpha = 1.0;
   47830                               #         if (alpha_wrapper != nil) {
   47831                               #           alpha = [alpha_wrapper value];
   47832                               #         }
   47833                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   47834                               #      }
   47835                               #
   47836                               #      static Color* toProto(UIColor* color) {
   47837                               #          CGFloat red, green, blue, alpha;
   47838                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   47839                               #            return nil;
   47840                               #          }
   47841                               #          Color* result = [Color alloc] init];
   47842                               #          [result setRed:red];
   47843                               #          [result setGreen:green];
   47844                               #          [result setBlue:blue];
   47845                               #          if (alpha <= 0.9999) {
   47846                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   47847                               #          }
   47848                               #          [result autorelease];
   47849                               #          return result;
   47850                               #     }
   47851                               #     // ...
   47852                               #
   47853                               #  Example (JavaScript):
   47854                               #
   47855                               #     // ...
   47856                               #
   47857                               #     var protoToCssColor = function(rgb_color) {
   47858                               #        var redFrac = rgb_color.red || 0.0;
   47859                               #        var greenFrac = rgb_color.green || 0.0;
   47860                               #        var blueFrac = rgb_color.blue || 0.0;
   47861                               #        var red = Math.floor(redFrac * 255);
   47862                               #        var green = Math.floor(greenFrac * 255);
   47863                               #        var blue = Math.floor(blueFrac * 255);
   47864                               #
   47865                               #        if (!('alpha' in rgb_color)) {
   47866                               #           return rgbToCssColor_(red, green, blue);
   47867                               #        }
   47868                               #
   47869                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   47870                               #        var rgbParams = [red, green, blue].join(',');
   47871                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   47872                               #     };
   47873                               #
   47874                               #     var rgbToCssColor_ = function(red, green, blue) {
   47875                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   47876                               #       var hexString = rgbNumber.toString(16);
   47877                               #       var missingZeros = 6 - hexString.length;
   47878                               #       var resultBuilder = ['#'];
   47879                               #       for (var i = 0; i < missingZeros; i++) {
   47880                               #          resultBuilder.push('0');
   47881                               #       }
   47882                               #       resultBuilder.push(hexString);
   47883                               #       return resultBuilder.join('');
   47884                               #     };
   47885                               #
   47886                               #     // ...
   47887                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   47888                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   47889                                 # the final pixel color is defined by the equation:
   47890                                 #
   47891                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   47892                                 #
   47893                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   47894                                 # a value of 0.0 corresponds to a completely transparent color. This
   47895                                 # uses a wrapper message rather than a simple float scalar so that it is
   47896                                 # possible to distinguish between a default value and the value being unset.
   47897                                 # If omitted, this color object is to be rendered as a solid color
   47898                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   47899                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   47900                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   47901                           },
   47902                           "width": 42, # The width of the border, in pixels.
   47903                               # Deprecated; the width is determined by the "style" field.
   47904                           "style": "A String", # The style of the border.
   47905                         },
   47906                       },
   47907                       "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
   47908                     },
   47909                     "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
   47910                         #
   47911                         # When writing, the new data validation rule will overwrite any prior rule.
   47912                       "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
   47913                           # If true, "List" conditions will show a dropdown.
   47914                       "strict": True or False, # True if invalid data should be rejected.
   47915                       "inputMessage": "A String", # A message to show the user when adding data to the cell.
   47916                       "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
   47917                           # BooleanConditions are used by conditional formatting,
   47918                           # data validation, and the criteria in filters.
   47919                         "values": [ # The values of the condition. The number of supported values depends
   47920                             # on the condition type.  Some support zero values,
   47921                             # others one or two values,
   47922                             # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
   47923                           { # The value of the condition.
   47924                             "relativeDate": "A String", # A relative date (based on the current date).
   47925                                 # Valid only if the type is
   47926                                 # DATE_BEFORE,
   47927                                 # DATE_AFTER,
   47928                                 # DATE_ON_OR_BEFORE or
   47929                                 # DATE_ON_OR_AFTER.
   47930                                 #
   47931                                 # Relative dates are not supported in data validation.
   47932                                 # They are supported only in conditional formatting and
   47933                                 # conditional filters.
   47934                             "userEnteredValue": "A String", # A value the condition is based on.
   47935                                 # The value will be parsed as if the user typed into a cell.
   47936                                 # Formulas are supported (and must begin with an `=`).
   47937                           },
   47938                         ],
   47939                         "type": "A String", # The type of condition.
   47940                       },
   47941                     },
   47942                     "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.  Runs are only valid
   47943                         # on user entered strings, not formulas, bools, or numbers.
   47944                         # Runs start at specific indexes in the text and continue until the next
   47945                         # run. Properties of a run will continue unless explicitly changed
   47946                         # in a subsequent run (and properties of the first run will continue
   47947                         # the properties of the cell unless explicitly changed).
   47948                         #
   47949                         # When writing, the new runs will overwrite any prior runs.  When writing a
   47950                         # new user_entered_value, previous runs will be erased.
   47951                       { # A run of a text format. The format of this run continues until the start
   47952                           # index of the next run.
   47953                           # When updating, all fields must be set.
   47954                         "startIndex": 42, # The character index where this run starts.
   47955                         "format": { # The format of a run of text in a cell. # The format of this run.  Absent values inherit the cell's format.
   47956                             # Absent values indicate that the field isn't specified.
   47957                           "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
   47958                               # for simplicity of conversion to/from color representations in various
   47959                               # languages over compactness; for example, the fields of this representation
   47960                               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   47961                               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   47962                               # method in iOS; and, with just a little work, it can be easily formatted into
   47963                               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   47964                               #
   47965                               # Example (Java):
   47966                               #
   47967                               #      import com.google.type.Color;
   47968                               #
   47969                               #      // ...
   47970                               #      public static java.awt.Color fromProto(Color protocolor) {
   47971                               #        float alpha = protocolor.hasAlpha()
   47972                               #            ? protocolor.getAlpha().getValue()
   47973                               #            : 1.0;
   47974                               #
   47975                               #        return new java.awt.Color(
   47976                               #            protocolor.getRed(),
   47977                               #            protocolor.getGreen(),
   47978                               #            protocolor.getBlue(),
   47979                               #            alpha);
   47980                               #      }
   47981                               #
   47982                               #      public static Color toProto(java.awt.Color color) {
   47983                               #        float red = (float) color.getRed();
   47984                               #        float green = (float) color.getGreen();
   47985                               #        float blue = (float) color.getBlue();
   47986                               #        float denominator = 255.0;
   47987                               #        Color.Builder resultBuilder =
   47988                               #            Color
   47989                               #                .newBuilder()
   47990                               #                .setRed(red / denominator)
   47991                               #                .setGreen(green / denominator)
   47992                               #                .setBlue(blue / denominator);
   47993                               #        int alpha = color.getAlpha();
   47994                               #        if (alpha != 255) {
   47995                               #          result.setAlpha(
   47996                               #              FloatValue
   47997                               #                  .newBuilder()
   47998                               #                  .setValue(((float) alpha) / denominator)
   47999                               #                  .build());
   48000                               #        }
   48001                               #        return resultBuilder.build();
   48002                               #      }
   48003                               #      // ...
   48004                               #
   48005                               # Example (iOS / Obj-C):
   48006                               #
   48007                               #      // ...
   48008                               #      static UIColor* fromProto(Color* protocolor) {
   48009                               #         float red = [protocolor red];
   48010                               #         float green = [protocolor green];
   48011                               #         float blue = [protocolor blue];
   48012                               #         FloatValue* alpha_wrapper = [protocolor alpha];
   48013                               #         float alpha = 1.0;
   48014                               #         if (alpha_wrapper != nil) {
   48015                               #           alpha = [alpha_wrapper value];
   48016                               #         }
   48017                               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   48018                               #      }
   48019                               #
   48020                               #      static Color* toProto(UIColor* color) {
   48021                               #          CGFloat red, green, blue, alpha;
   48022                               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   48023                               #            return nil;
   48024                               #          }
   48025                               #          Color* result = [Color alloc] init];
   48026                               #          [result setRed:red];
   48027                               #          [result setGreen:green];
   48028                               #          [result setBlue:blue];
   48029                               #          if (alpha <= 0.9999) {
   48030                               #            [result setAlpha:floatWrapperWithValue(alpha)];
   48031                               #          }
   48032                               #          [result autorelease];
   48033                               #          return result;
   48034                               #     }
   48035                               #     // ...
   48036                               #
   48037                               #  Example (JavaScript):
   48038                               #
   48039                               #     // ...
   48040                               #
   48041                               #     var protoToCssColor = function(rgb_color) {
   48042                               #        var redFrac = rgb_color.red || 0.0;
   48043                               #        var greenFrac = rgb_color.green || 0.0;
   48044                               #        var blueFrac = rgb_color.blue || 0.0;
   48045                               #        var red = Math.floor(redFrac * 255);
   48046                               #        var green = Math.floor(greenFrac * 255);
   48047                               #        var blue = Math.floor(blueFrac * 255);
   48048                               #
   48049                               #        if (!('alpha' in rgb_color)) {
   48050                               #           return rgbToCssColor_(red, green, blue);
   48051                               #        }
   48052                               #
   48053                               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   48054                               #        var rgbParams = [red, green, blue].join(',');
   48055                               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   48056                               #     };
   48057                               #
   48058                               #     var rgbToCssColor_ = function(red, green, blue) {
   48059                               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   48060                               #       var hexString = rgbNumber.toString(16);
   48061                               #       var missingZeros = 6 - hexString.length;
   48062                               #       var resultBuilder = ['#'];
   48063                               #       for (var i = 0; i < missingZeros; i++) {
   48064                               #          resultBuilder.push('0');
   48065                               #       }
   48066                               #       resultBuilder.push(hexString);
   48067                               #       return resultBuilder.join('');
   48068                               #     };
   48069                               #
   48070                               #     // ...
   48071                             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   48072                             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   48073                                 # the final pixel color is defined by the equation:
   48074                                 #
   48075                                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   48076                                 #
   48077                                 # This means that a value of 1.0 corresponds to a solid color, whereas
   48078                                 # a value of 0.0 corresponds to a completely transparent color. This
   48079                                 # uses a wrapper message rather than a simple float scalar so that it is
   48080                                 # possible to distinguish between a default value and the value being unset.
   48081                                 # If omitted, this color object is to be rendered as a solid color
   48082                                 # (as if the alpha value had been explicitly given with a value of 1.0).
   48083                             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   48084                             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   48085                           },
   48086                           "bold": True or False, # True if the text is bold.
   48087                           "strikethrough": True or False, # True if the text has a strikethrough.
   48088                           "fontFamily": "A String", # The font family.
   48089                           "fontSize": 42, # The size of the font.
   48090                           "italic": True or False, # True if the text is italicized.
   48091                           "underline": True or False, # True if the text is underlined.
   48092                         },
   48093                       },
   48094                     ],
   48095                   },
   48096                 ],
   48097               },
   48098             ],
   48099             "startRow": 42, # The first row this GridData refers to, zero-based.
   48100             "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
   48101                 # in start_column.
   48102               { # Properties about a dimension.
   48103                 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
   48104                 "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
   48105                 "hiddenByFilter": True or False, # True if this dimension is being filtered.
   48106                     # This field is read-only.
   48107               },
   48108             ],
   48109           },
   48110         ],
   48111         "properties": { # Properties of a sheet. # The properties of the sheet.
   48112           "sheetType": "A String", # The type of sheet. Defaults to GRID.
   48113               # This field cannot be changed once set.
   48114           "index": 42, # The index of the sheet within the spreadsheet.
   48115               # When adding or updating sheet properties, if this field
   48116               # is excluded then the sheet will be added or moved to the end
   48117               # of the sheet list. When updating sheet indices or inserting
   48118               # sheets, movement is considered in "before the move" indexes.
   48119               # For example, if there were 3 sheets (S1, S2, S3) in order to
   48120               # move S1 ahead of S2 the index would have to be set to 2. A sheet
   48121               # index update request will be ignored if the requested index is
   48122               # identical to the sheets current index or if the requested new
   48123               # index is equal to the current sheet index + 1.
   48124           "title": "A String", # The name of the sheet.
   48125           "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
   48126               # (If the sheet is an object sheet, containing a chart or image, then
   48127               # this field will be absent.)
   48128               # When writing it is an error to set any grid properties on non-grid sheets.
   48129             "columnCount": 42, # The number of columns in the grid.
   48130             "frozenRowCount": 42, # The number of rows that are frozen in the grid.
   48131             "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
   48132             "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
   48133             "rowCount": 42, # The number of rows in the grid.
   48134           },
   48135           "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
   48136           "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
   48137               # for simplicity of conversion to/from color representations in various
   48138               # languages over compactness; for example, the fields of this representation
   48139               # can be trivially provided to the constructor of "java.awt.Color" in Java; it
   48140               # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
   48141               # method in iOS; and, with just a little work, it can be easily formatted into
   48142               # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
   48143               #
   48144               # Example (Java):
   48145               #
   48146               #      import com.google.type.Color;
   48147               #
   48148               #      // ...
   48149               #      public static java.awt.Color fromProto(Color protocolor) {
   48150               #        float alpha = protocolor.hasAlpha()
   48151               #            ? protocolor.getAlpha().getValue()
   48152               #            : 1.0;
   48153               #
   48154               #        return new java.awt.Color(
   48155               #            protocolor.getRed(),
   48156               #            protocolor.getGreen(),
   48157               #            protocolor.getBlue(),
   48158               #            alpha);
   48159               #      }
   48160               #
   48161               #      public static Color toProto(java.awt.Color color) {
   48162               #        float red = (float) color.getRed();
   48163               #        float green = (float) color.getGreen();
   48164               #        float blue = (float) color.getBlue();
   48165               #        float denominator = 255.0;
   48166               #        Color.Builder resultBuilder =
   48167               #            Color
   48168               #                .newBuilder()
   48169               #                .setRed(red / denominator)
   48170               #                .setGreen(green / denominator)
   48171               #                .setBlue(blue / denominator);
   48172               #        int alpha = color.getAlpha();
   48173               #        if (alpha != 255) {
   48174               #          result.setAlpha(
   48175               #              FloatValue
   48176               #                  .newBuilder()
   48177               #                  .setValue(((float) alpha) / denominator)
   48178               #                  .build());
   48179               #        }
   48180               #        return resultBuilder.build();
   48181               #      }
   48182               #      // ...
   48183               #
   48184               # Example (iOS / Obj-C):
   48185               #
   48186               #      // ...
   48187               #      static UIColor* fromProto(Color* protocolor) {
   48188               #         float red = [protocolor red];
   48189               #         float green = [protocolor green];
   48190               #         float blue = [protocolor blue];
   48191               #         FloatValue* alpha_wrapper = [protocolor alpha];
   48192               #         float alpha = 1.0;
   48193               #         if (alpha_wrapper != nil) {
   48194               #           alpha = [alpha_wrapper value];
   48195               #         }
   48196               #         return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
   48197               #      }
   48198               #
   48199               #      static Color* toProto(UIColor* color) {
   48200               #          CGFloat red, green, blue, alpha;
   48201               #          if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
   48202               #            return nil;
   48203               #          }
   48204               #          Color* result = [Color alloc] init];
   48205               #          [result setRed:red];
   48206               #          [result setGreen:green];
   48207               #          [result setBlue:blue];
   48208               #          if (alpha <= 0.9999) {
   48209               #            [result setAlpha:floatWrapperWithValue(alpha)];
   48210               #          }
   48211               #          [result autorelease];
   48212               #          return result;
   48213               #     }
   48214               #     // ...
   48215               #
   48216               #  Example (JavaScript):
   48217               #
   48218               #     // ...
   48219               #
   48220               #     var protoToCssColor = function(rgb_color) {
   48221               #        var redFrac = rgb_color.red || 0.0;
   48222               #        var greenFrac = rgb_color.green || 0.0;
   48223               #        var blueFrac = rgb_color.blue || 0.0;
   48224               #        var red = Math.floor(redFrac * 255);
   48225               #        var green = Math.floor(greenFrac * 255);
   48226               #        var blue = Math.floor(blueFrac * 255);
   48227               #
   48228               #        if (!('alpha' in rgb_color)) {
   48229               #           return rgbToCssColor_(red, green, blue);
   48230               #        }
   48231               #
   48232               #        var alphaFrac = rgb_color.alpha.value || 0.0;
   48233               #        var rgbParams = [red, green, blue].join(',');
   48234               #        return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
   48235               #     };
   48236               #
   48237               #     var rgbToCssColor_ = function(red, green, blue) {
   48238               #       var rgbNumber = new Number((red << 16) | (green << 8) | blue);
   48239               #       var hexString = rgbNumber.toString(16);
   48240               #       var missingZeros = 6 - hexString.length;
   48241               #       var resultBuilder = ['#'];
   48242               #       for (var i = 0; i < missingZeros; i++) {
   48243               #          resultBuilder.push('0');
   48244               #       }
   48245               #       resultBuilder.push(hexString);
   48246               #       return resultBuilder.join('');
   48247               #     };
   48248               #
   48249               #     // ...
   48250             "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
   48251             "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
   48252                 # the final pixel color is defined by the equation:
   48253                 #
   48254                 #   pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
   48255                 #
   48256                 # This means that a value of 1.0 corresponds to a solid color, whereas
   48257                 # a value of 0.0 corresponds to a completely transparent color. This
   48258                 # uses a wrapper message rather than a simple float scalar so that it is
   48259                 # possible to distinguish between a default value and the value being unset.
   48260                 # If omitted, this color object is to be rendered as a solid color
   48261                 # (as if the alpha value had been explicitly given with a value of 1.0).
   48262             "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
   48263             "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
   48264           },
   48265           "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
   48266           "sheetId": 42, # The ID of the sheet. Must be non-negative.
   48267               # This field cannot be changed once set.
   48268         },
   48269       },
   48270     ],
   48271     "spreadsheetUrl": "A String", # The url of the spreadsheet.
   48272         # This field is read-only.
   48273   }</pre>
   48274 </div>
   48275 
   48276 </body></html>