• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<html><body>
2<style>
3
4body, 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
15body {
16  font-size: 13px;
17  padding: 1em;
18}
19
20h1 {
21  font-size: 26px;
22  margin-bottom: 1em;
23}
24
25h2 {
26  font-size: 24px;
27  margin-bottom: 1em;
28}
29
30h3 {
31  font-size: 20px;
32  margin-bottom: 1em;
33  margin-top: 1em;
34}
35
36pre, code {
37  line-height: 1.5;
38  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
39}
40
41pre {
42  margin-top: 0.5em;
43}
44
45h1, h2, h3, p {
46  font-family: Arial, sans serif;
47}
48
49h1, 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
101Each request is validated before
102being applied. If any request is not valid then the entire request will
103fail and nothing will be applied.
104
105Some requests have replies to
106give you some information about how
107they are applied. The replies will mirror the requests.  For example,
108if you applied 4 updates and the 3rd one had a reply, then the
109response will have 2 empty replies, the actual reply, and another empty
110reply, in that order.
111
112Due to the collaborative nature of spreadsheets, it is not guaranteed that
113the spreadsheet will reflect exactly your changes after this completes,
114however it is guaranteed that the updates in the request will be
115applied together atomically. Your changes may be altered with respect to
116collaborator changes. If there are no collaborators, the spreadsheet
117should reflect your changes.
118
119Args:
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
15934Returns:
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
28725Args:
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
35234Returns:
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.
41741The caller must specify the spreadsheet ID.
41742
41743By default, data within grids will not be returned.
41744You can include grid data one of two ways:
41745
41746* Specify a field mask listing your desired fields using the `fields` URL
41747parameter in HTTP
41748
41749* Set the includeGridData
41750URL parameter to true.  If a field mask is set, the `includeGridData`
41751parameter is ignored
41752
41753For large spreadsheets, it is recommended to retrieve only the specific
41754fields of the spreadsheet that you want.
41755
41756To retrieve only subsets of the spreadsheet, use the
41757ranges URL parameter.
41758Multiple ranges can be specified.  Limiting the range will
41759return only the portions of the spreadsheet that intersect the requested
41760ranges. Ranges are specified using A1 notation.
41761
41762Args:
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.
41770This parameter is ignored if a field mask was set in the request.
41771
41772Returns:
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>