Update docs
diff --git a/docs/dyn/sheets_v4.spreadsheets.html b/docs/dyn/sheets_v4.spreadsheets.html
new file mode 100644
index 0000000..9aee20a
--- /dev/null
+++ b/docs/dyn/sheets_v4.spreadsheets.html
@@ -0,0 +1,34290 @@
+<html><body>
+<style>
+
+body, h1, h2, h3, div, span, p, pre, a {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-weight: inherit;
+ font-style: inherit;
+ font-size: 100%;
+ font-family: inherit;
+ vertical-align: baseline;
+}
+
+body {
+ font-size: 13px;
+ padding: 1em;
+}
+
+h1 {
+ font-size: 26px;
+ margin-bottom: 1em;
+}
+
+h2 {
+ font-size: 24px;
+ margin-bottom: 1em;
+}
+
+h3 {
+ font-size: 20px;
+ margin-bottom: 1em;
+ margin-top: 1em;
+}
+
+pre, code {
+ line-height: 1.5;
+ font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
+}
+
+pre {
+ margin-top: 0.5em;
+}
+
+h1, h2, h3, p {
+ font-family: Arial, sans serif;
+}
+
+h1, h2, h3 {
+ border-bottom: solid #CCC 1px;
+}
+
+.toc_element {
+ margin-top: 0.5em;
+}
+
+.firstline {
+ margin-left: 2 em;
+}
+
+.method {
+ margin-top: 1em;
+ border: solid 1px #CCC;
+ padding: 1em;
+ background: #EEE;
+}
+
+.details {
+ font-weight: bold;
+ font-size: 14px;
+}
+
+</style>
+
+<h1><a href="sheets_v4.html">Google Sheets API</a> . <a href="sheets_v4.spreadsheets.html">spreadsheets</a></h1>
+<h2>Instance Methods</h2>
+<p class="toc_element">
+ <code><a href="sheets_v4.spreadsheets.sheets.html">sheets()</a></code>
+</p>
+<p class="firstline">Returns the sheets Resource.</p>
+
+<p class="toc_element">
+ <code><a href="sheets_v4.spreadsheets.values.html">values()</a></code>
+</p>
+<p class="firstline">Returns the values Resource.</p>
+
+<p class="toc_element">
+ <code><a href="#batchUpdate">batchUpdate(spreadsheetId, body, x__xgafv=None)</a></code></p>
+<p class="firstline">Applies one or more updates to the spreadsheet.</p>
+<p class="toc_element">
+ <code><a href="#create">create(body, x__xgafv=None)</a></code></p>
+<p class="firstline">Creates a spreadsheet, returning the newly created spreadsheet.</p>
+<p class="toc_element">
+ <code><a href="#get">get(spreadsheetId, ranges=None, x__xgafv=None, includeGridData=None)</a></code></p>
+<p class="firstline">Returns the spreadsheet at the given id.</p>
+<h3>Method Details</h3>
+<div class="method">
+ <code class="details" id="batchUpdate">batchUpdate(spreadsheetId, body, x__xgafv=None)</code>
+ <pre>Applies one or more updates to the spreadsheet.
+
+Each request is validated before
+being applied. If any request is not valid then the entire request will
+fail and nothing will be applied.
+
+Some requests have replies to
+give you some information about how
+they applied. The replies will mirror the requests. For example,
+if you applied 4 updates and the 3rd one had a reply, then the
+response will have 2 empty replies, the actual reply, and another empty
+reply, in that order.
+
+Due to the collaborative nature of spreadsheets, it is not guaranteed that
+the spreadsheet will reflect exactly your changes after this completes,
+however it is guaranteed that all the updates in the request will be
+applied atomically. Your changes may be altered with respect to
+collaborator changes. If there are no collaborators, the spreadsheet
+should reflect your changes.
+
+Args:
+ spreadsheetId: string, The spreadsheet to apply the updates to. (required)
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # The request for updating any aspect of a spreadsheet.
+ "requests": [ # A list of updates to apply to the spreadsheet.
+ { # A single kind of update to apply to a spreadsheet.
+ "duplicateFilterView": { # Duplicates a particular filter view. # Duplicates a filter view.
+ "filterId": 42, # The ID of the filter being duplicated.
+ },
+ "sortRange": { # Sorts data in rows based on a sort order per column. # Sorts data in a range.
+ "range": { # A range on a sheet. # The range to sort.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ },
+ "updateEmbeddedObjectPosition": { # Update an embedded object's position (such as a moving or resizing a # Updates an embedded object's (e.g. chart, image) position.
+ # chart or image).
+ "newPosition": { # The position of an embedded object such as a chart. # An explicit position to move the embedded object to.
+ # If newPosition.sheetId is set,
+ # a new sheet with that ID will be created.
+ # If newPosition.newSheet is set to true,
+ # a new sheet will be created with an ID that will be chosen for you.
+ "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
+ # is chosen for you. Used only when writing.
+ "sheetId": 42, # The sheet this is on. Set only if the embedded object
+ # is on its own sheet. Must be non-negative.
+ "overlayPosition": { # The location an object is overlaid on top of a grid. # The position the object is overlaid on top of a grid.
+ "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
+ # All indexes are zero-based.
+ "rowIndex": 42, # The row index of the coordinate.
+ "columnIndex": 42, # The column index of the coordinate.
+ "sheetId": 42, # The sheet this coordinate is on.
+ },
+ "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
+ "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
+ },
+ },
+ "fields": "A String", # The fields of OverlayPosition that should be updated when
+ # setting a new position. Used only if
+ # newPosition.overlayPosition
+ # is set, in which case at least one field must
+ # be specified. The root `newPosition.overlayPosition` is implied and
+ # should not be specified.
+ # A single `"*"` can be used as short-hand for listing every field.
+ "objectId": 42, # The id of the object to moved.
+ },
+ "updateConditionalFormatRule": { # Updates a conditional format rule at the given index, # Updates an existing conditional format rule.
+ # or moves a conditional format rule to another index.
+ "index": 42, # The zero-based index of the rule that should be replaced or moved.
+ "newIndex": 42, # The zero-based new index the rule should end up at.
+ "sheetId": 42, # The sheet of the rule to move. Required if newIndex is set,
+ # unused otherwise.
+ "rule": { # A rule describing a conditional format. # The rule that should replace the rule at the given index.
+ "ranges": [ # The ranges that will be formatted if the condition is true.
+ # All the ranges must be on the same grid.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+ "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+ # the format will be applied.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ "format": { # The format of a cell. # The format to apply.
+ # Conditional formatting can only apply a subset of formatting:
+ # bold, italic,
+ # strikethrough,
+ # foreground color &
+ # background color.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ },
+ "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+ # the interpolation points listed. The format of a cell will vary
+ # based on its contents as compared to the values of the interpolation
+ # points.
+ "maxpoint": { # A single interpolation point a gradient conditional format. # The final interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "midpoint": { # A single interpolation point a gradient conditional format. # An optional midway interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "minpoint": { # A single interpolation point a gradient conditional format. # The starting interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ },
+ },
+ },
+ "updateProtectedRange": { # Updates an existing protected range with the specified # Updates a protected range.
+ # protectedRangeId.
+ "fields": "A String", # The fields that should be updated. At least one field must be specified.
+ # The root `protectedRange` is implied and should not be specified.
+ # A single `"*"` can be used as short-hand for listing every field.
+ "protectedRange": { # A protected range. # The protected range to update with the new properties. If a nonzero
+ # protectedRangeId is
+ # specified, the protected range will use that ID. (It is an error to
+ # specify the ID of a protected range that already exists.)
+ "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
+ # Unprotected ranges are only supported on protected sheets.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
+ # protected area.
+ # This field is read-only.
+ "description": "A String", # The description of this protected range.
+ "namedRangeId": "A String", # The named range this protected range is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
+ # This field is only visible to users with edit access to the protected
+ # range and the document.
+ # Editors are not supported with warningOnly protection.
+ "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
+ # range. Domain protection is only supported on documents within a domain.
+ "users": [ # The email addresses of users with edit access to the protected range.
+ "A String",
+ ],
+ "groups": [ # The email addresses of groups with edit access to the protected range.
+ "A String",
+ ],
+ },
+ "protectedRangeId": 42, # The ID of the protected range.
+ # This field is read-only.
+ "warningOnly": True or False, # True if this this protected range will show a warning when editing.
+ # Warning-based protection means that every user can edit data in the
+ # protected range, except editing will prompt a warning asking the user
+ # to confirm the edit.
+ #
+ # When warning: if this field is true, then editors is ignored.
+ # Additionally, if this field is changed from true to false and the
+ # `editors` field is not set (nor included in the field mask), then
+ # the editors will be set to all the editors in the document.
+ "range": { # A range on a sheet. # The range that is being protected.
+ # The range may be fully unbounded, in which case this is considered
+ # a protected sheet.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ },
+ },
+ "deleteDimension": { # Deletes the dimensions from the sheet. # Deletes rows or columns in a sheet.
+ "range": { # A range along a single dimension on a sheet. # The dimensions to delete from the sheet.
+ # All indexes are zero-based.
+ # Indexes are half open: the start index is inclusive
+ # and the end index is exclusive.
+ # Missing indexes indicate the range is unbounded on that side.
+ "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
+ "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
+ "sheetId": 42, # The sheet this span is on.
+ "dimension": "A String", # The dimension of the span.
+ },
+ },
+ "addProtectedRange": { # Adds a new protected range. # Adds a protected range.
+ "protectedRange": { # A protected range. # The protected range to be added.
+ "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
+ # Unprotected ranges are only supported on protected sheets.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
+ # protected area.
+ # This field is read-only.
+ "description": "A String", # The description of this protected range.
+ "namedRangeId": "A String", # The named range this protected range is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
+ # This field is only visible to users with edit access to the protected
+ # range and the document.
+ # Editors are not supported with warningOnly protection.
+ "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
+ # range. Domain protection is only supported on documents within a domain.
+ "users": [ # The email addresses of users with edit access to the protected range.
+ "A String",
+ ],
+ "groups": [ # The email addresses of groups with edit access to the protected range.
+ "A String",
+ ],
+ },
+ "protectedRangeId": 42, # The ID of the protected range.
+ # This field is read-only.
+ "warningOnly": True or False, # True if this this protected range will show a warning when editing.
+ # Warning-based protection means that every user can edit data in the
+ # protected range, except editing will prompt a warning asking the user
+ # to confirm the edit.
+ #
+ # When warning: if this field is true, then editors is ignored.
+ # Additionally, if this field is changed from true to false and the
+ # `editors` field is not set (nor included in the field mask), then
+ # the editors will be set to all the editors in the document.
+ "range": { # A range on a sheet. # The range that is being protected.
+ # The range may be fully unbounded, in which case this is considered
+ # a protected sheet.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ },
+ },
+ "deleteEmbeddedObject": { # Deletes the embedded object with the given ID. # Deletes an embedded object (e.g, chart, image) in a sheet.
+ "objectId": 42, # The ID of the embedded object to delete.
+ },
+ "pasteData": { # Inserts data into the spreadsheet starting at the specified coordinate. # Pastes data (HTML or delimited) into a sheet.
+ "coordinate": { # A coordinate in a sheet. # The coordinate at which the data should start being inserted.
+ # All indexes are zero-based.
+ "rowIndex": 42, # The row index of the coordinate.
+ "columnIndex": 42, # The column index of the coordinate.
+ "sheetId": 42, # The sheet this coordinate is on.
+ },
+ "type": "A String", # How the data should be pasted.
+ "delimiter": "A String", # The delimiter in the data.
+ "html": True or False, # True if the data is HTML.
+ "data": "A String", # The data to insert.
+ },
+ "appendCells": { # Adds new cells to the last row with data in a sheet, # Appends cells to the last row with data in a sheet.
+ # inserting new rows into the sheet if necessary.
+ "fields": "A String", # The fields of CellData that should be updated.
+ # At least one field must be specified.
+ # The root is the CellData; 'row.values.' should not be specified.
+ # A single `"*"` can be used as short-hand for listing every field.
+ "rows": [ # The data to append.
+ { # Data about each cell in a row.
+ "values": [ # The values in the row, one per column.
+ { # Data about a specific cell.
+ "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
+ # is computed dynamically based on its data, grouping, filters, values,
+ # etc... Only the top-left cell of the pivot table contains the pivot table
+ # definition. The other cells will contain the calculated values of the
+ # results of the pivot in their effectiveValue fields.
+ "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
+ # or vertically (as rows).
+ "rows": [ # Each row grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ "source": { # A range on a sheet. # The range the pivot table is reading data from.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "values": [ # A list of values to include in the pivot table.
+ { # The definition of how a value in a pivot table should be calculated.
+ "formula": "A String", # A custom formula to calculate the value. The formula must start
+ # with an `=` character.
+ "summarizeFunction": "A String", # A function to summarize the value.
+ # If formula is set, the only supported values are
+ # SUM and
+ # CUSTOM.
+ # If sourceColumnOffset is set, then `CUSTOM`
+ # is not supported.
+ "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this value refers to column `C`, whereas the offset `1` would
+ # refer to column `D`.
+ "name": "A String", # A name to use for the value. This is only used if formula was set.
+ # Otherwise, the column name is used.
+ },
+ ],
+ "criteria": { # An optional mapping of filters per source column offset.
+ #
+ # The filters will be applied before aggregating data into the pivot table.
+ # The map's key is the column offset of the source range that you want to
+ # filter, and the value is the criteria for that column.
+ #
+ # For example, if the source was `C10:E15', a key of `0` will have the filter
+ # for column `C`, whereas the key `1` is for column `D`.
+ "a_key": { # Criteria for showing/hiding rows in a pivot table.
+ "visibleValues": [ # Values that should be included. Values not listed here are excluded.
+ "A String",
+ ],
+ },
+ },
+ "columns": [ # Each column grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ },
+ "hyperlink": "A String", # A hyperlink this cell points to, if any.
+ # This field is read-only. (To set it, use a `=HYPERLINK` formula.)
+ "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
+ # the calculated value. For cells with literals, this will be
+ # the same as the user_entered_value.
+ # This field is read-only.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "formattedValue": "A String", # The formatted value of the cell.
+ # This is the value as it's shown to the user.
+ # This field is read-only.
+ "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()`
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # serial number format.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "note": "A String", # Any note on the cell.
+ "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
+ # This includes the results of applying any conditional formatting and,
+ # if the cell contains a formula, the computed number format.
+ # If the effective format is the default format, effective format will
+ # not be written.
+ # This field is read-only.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
+ #
+ # When writing, the new format will be merged with the existing format.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
+ #
+ # When writing, the new data validation rule will overwrite any prior rule.
+ "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
+ # If true, "List" conditions will show a dropdown.
+ "strict": True or False, # True if invalid data should be rejected.
+ "inputMessage": "A String", # A message to show the user when adding data to the cell.
+ "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.
+ # Runs start at specific indexes in the text and continue until the next
+ # run. Properties of a run will continue unless explicitly changed
+ # in a subsequent run (and properties of the first run will continue
+ # the properties of the cell unless explicitly changed).
+ #
+ # When writing, the new runs will overwrite any prior runs.
+ { # A run of a text format. The format of this run continues until explicitly
+ # overridden in the next run.
+ # When updating, all fields must be set.
+ "startIndex": 42, # The character index where this run starts.
+ "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ "sheetId": 42, # The sheet ID to append the data to.
+ },
+ "duplicateSheet": { # Duplicates the contents of a sheet. # Duplicates a sheet.
+ "sourceSheetId": 42, # The sheet to duplicate.
+ "insertSheetIndex": 42, # The zero-based index where the new sheet should be inserted.
+ # The index of all sheets after this are incremented.
+ "newSheetName": "A String", # The name of the new sheet. If empty, a new name is chosen for you.
+ "newSheetId": 42, # If set, the ID of the new sheet. If not set, an ID is chosen.
+ # If set, the ID must not conflict with any existing sheet ID.
+ # If set, it must be non-negative.
+ },
+ "updateSheetProperties": { # Updates properties of the sheet with the specified # Updates a sheet's properties.
+ # sheetId.
+ # It is an error to specify read only fields in the field mask.
+ "fields": "A String", # The fields that should be updated. At least one field must be specified.
+ # The root `properties` is implied and should not be specified.
+ # A single `"*"` can be used as short-hand for listing every field.
+ "properties": { # Properties of a sheet. # The properties to update.
+ "sheetType": "A String", # The type of sheet. Defaults to GRID.
+ # This field cannot be changed once set.
+ "index": 42, # The index of the sheet within the spreadsheet.
+ # When adding or updating sheet properties, if this field
+ # is excluded then the sheet will be added or moved to the end
+ # of the sheet list.
+ "title": "A String", # The name of the sheet.
+ "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
+ # (If the sheet is an object sheet, containing a chart or image, then
+ # this field will be absent.)
+ # When writing it is an error to set any grid properties on non-grid sheets.
+ "columnCount": 42, # The number of columns in the grid.
+ "rowCount": 42, # The number of rows in the grid.
+ "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
+ "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
+ "frozenRowCount": 42, # The number of rows that are frozen in the grid.
+ },
+ "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
+ "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
+ "sheetId": 42, # The ID of the sheet. Must be non-negative.
+ # This field cannot be changed once set.
+ },
+ },
+ "addChart": { # Adds a chart to a sheet in the spreadsheet. # Adds a chart.
+ "chart": { # A chart embedded in a sheet. # The chart that should be added to the spreadsheet, including the position
+ # where it should be placed.
+ "chartId": 42, # The ID of the chart.
+ "position": { # The position of an embedded object such as a chart. # The position of the chart.
+ "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
+ # is chosen for you. Used only when writing.
+ "sheetId": 42, # The sheet this is on. Set only if the embedded object
+ # is on its own sheet. Must be non-negative.
+ "overlayPosition": { # The location an object is overlaid on top of a grid. # The position the object is overlaid on top of a grid.
+ "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
+ # All indexes are zero-based.
+ "rowIndex": 42, # The row index of the coordinate.
+ "columnIndex": 42, # The column index of the coordinate.
+ "sheetId": 42, # The sheet this coordinate is on.
+ },
+ "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
+ "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
+ },
+ },
+ "spec": { # The specifications of a chart. # The specification of the chart.
+ "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
+ # This value is only meaningful if the
+ # ChartData.sourceRange
+ # is used for a domain or series.
+ "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
+ "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "threeDimensional": True or False, # True if the pie is three dimensional.
+ "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
+ "pieHole": 3.14, # The size of the hole in the pie chart.
+ },
+ "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
+ # See BasicChartType for the list of all charts this supports.
+ # of charts this supports.
+ "headerCount": 42, # The number of rows or columns in the data that are "headers".
+ # If not set, Google Sheets will guess how many rows are headers based
+ # on the data.
+ #
+ # (Note that BasicChartAxis.title may override the axis title
+ # inferred from the header values.)
+ "series": [ # The data this chart is visualizing.
+ { # A single series of data in a chart.
+ # For example, if charting stock prices over time, multiple series may exist,
+ # one for the "Open Price", "High Price", "Low Price" and "Close Price".
+ "series": { # The data included in a domain or series. # The data being visualized in this chart series.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
+ # For example, if charting stocks over time, the "Volume" series
+ # may want to be pinned to the right with the prices pinned to the left,
+ # because the scale of trading volume is different than the scale of
+ # prices.
+ # It is an error to specify an axis that isn't a valid minor axis
+ # for the chart's type.
+ "type": "A String", # The type of this series. Valid only if the
+ # chartType is
+ # COMBO.
+ # Different types will change the way the series is visualized.
+ # Only LINE, AREA,
+ # and COLUMN are supported.
+ },
+ ],
+ "legendPosition": "A String", # The position of the chart legend.
+ "domains": [ # The domain of data this is charting.
+ # Only a single domain is currently supported.
+ { # The domain of a chart.
+ # For example, if charting stock prices over time, this would be the date.
+ "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
+ # this be the data representing the dates.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ },
+ ],
+ "chartType": "A String", # The type of the chart.
+ "axis": [ # The axis on the chart.
+ { # An axis of the chart.
+ # A chart may not have more than one axis per
+ # axis position.
+ "position": "A String", # The position of this axis.
+ "format": { # The format of a run of text in a cell. # The format of the title.
+ # Only valid if the axis is not associated with the domain.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "title": "A String", # The title of this axis. If set, this overrides any title inferred
+ # from headers of the data.
+ },
+ ],
+ },
+ "title": "A String", # The title of the chart.
+ },
+ },
+ },
+ "addConditionalFormatRule": { # Adds a new conditional format rule at the given index. # Adds a new conditional format rule.
+ # All subsequent rules' indexes are incremented.
+ "index": 42, # The zero-based index where the rule should be inserted.
+ "rule": { # A rule describing a conditional format. # The rule to add.
+ "ranges": [ # The ranges that will be formatted if the condition is true.
+ # All the ranges must be on the same grid.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+ "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+ # the format will be applied.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ "format": { # The format of a cell. # The format to apply.
+ # Conditional formatting can only apply a subset of formatting:
+ # bold, italic,
+ # strikethrough,
+ # foreground color &
+ # background color.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ },
+ "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+ # the interpolation points listed. The format of a cell will vary
+ # based on its contents as compared to the values of the interpolation
+ # points.
+ "maxpoint": { # A single interpolation point a gradient conditional format. # The final interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "midpoint": { # A single interpolation point a gradient conditional format. # An optional midway interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "minpoint": { # A single interpolation point a gradient conditional format. # The starting interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ },
+ },
+ },
+ "repeatCell": { # Updates all cells in the range to the values in the given Cell object. # Repeats a single cell across a range.
+ # Only the fields listed in the fields field are updated; others are
+ # unchanged.
+ #
+ # If writing a cell with a formula, the formula's ranges will automatically
+ # increment for each field in the range.
+ # For example, if writing a cell with formula `=A1` into range B2:C4,
+ # B2 would be `=A1`, B3 would be `=A2`, B4 would be `=A3`,
+ # C2 would be `=B1`, C3 would be `=B2`, C4 would be `=B3`.
+ #
+ # To keep the formula's ranges static, use the `$` indicator.
+ # For example, using the formula was `=$A$1`, neither
+ # the row nor column would increment.
+ "cell": { # Data about a specific cell. # The data to write.
+ "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
+ # is computed dynamically based on its data, grouping, filters, values,
+ # etc... Only the top-left cell of the pivot table contains the pivot table
+ # definition. The other cells will contain the calculated values of the
+ # results of the pivot in their effectiveValue fields.
+ "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
+ # or vertically (as rows).
+ "rows": [ # Each row grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ "source": { # A range on a sheet. # The range the pivot table is reading data from.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "values": [ # A list of values to include in the pivot table.
+ { # The definition of how a value in a pivot table should be calculated.
+ "formula": "A String", # A custom formula to calculate the value. The formula must start
+ # with an `=` character.
+ "summarizeFunction": "A String", # A function to summarize the value.
+ # If formula is set, the only supported values are
+ # SUM and
+ # CUSTOM.
+ # If sourceColumnOffset is set, then `CUSTOM`
+ # is not supported.
+ "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this value refers to column `C`, whereas the offset `1` would
+ # refer to column `D`.
+ "name": "A String", # A name to use for the value. This is only used if formula was set.
+ # Otherwise, the column name is used.
+ },
+ ],
+ "criteria": { # An optional mapping of filters per source column offset.
+ #
+ # The filters will be applied before aggregating data into the pivot table.
+ # The map's key is the column offset of the source range that you want to
+ # filter, and the value is the criteria for that column.
+ #
+ # For example, if the source was `C10:E15', a key of `0` will have the filter
+ # for column `C`, whereas the key `1` is for column `D`.
+ "a_key": { # Criteria for showing/hiding rows in a pivot table.
+ "visibleValues": [ # Values that should be included. Values not listed here are excluded.
+ "A String",
+ ],
+ },
+ },
+ "columns": [ # Each column grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ },
+ "hyperlink": "A String", # A hyperlink this cell points to, if any.
+ # This field is read-only. (To set it, use a `=HYPERLINK` formula.)
+ "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
+ # the calculated value. For cells with literals, this will be
+ # the same as the user_entered_value.
+ # This field is read-only.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "formattedValue": "A String", # The formatted value of the cell.
+ # This is the value as it's shown to the user.
+ # This field is read-only.
+ "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()`
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # serial number format.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "note": "A String", # Any note on the cell.
+ "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
+ # This includes the results of applying any conditional formatting and,
+ # if the cell contains a formula, the computed number format.
+ # If the effective format is the default format, effective format will
+ # not be written.
+ # This field is read-only.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
+ #
+ # When writing, the new format will be merged with the existing format.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
+ #
+ # When writing, the new data validation rule will overwrite any prior rule.
+ "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
+ # If true, "List" conditions will show a dropdown.
+ "strict": True or False, # True if invalid data should be rejected.
+ "inputMessage": "A String", # A message to show the user when adding data to the cell.
+ "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.
+ # Runs start at specific indexes in the text and continue until the next
+ # run. Properties of a run will continue unless explicitly changed
+ # in a subsequent run (and properties of the first run will continue
+ # the properties of the cell unless explicitly changed).
+ #
+ # When writing, the new runs will overwrite any prior runs.
+ { # A run of a text format. The format of this run continues until explicitly
+ # overridden in the next run.
+ # When updating, all fields must be set.
+ "startIndex": 42, # The character index where this run starts.
+ "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ },
+ ],
+ },
+ "fields": "A String", # The fields that should be updated. At least one field must be specified.
+ # The root `cell` is implied and should not be specified.
+ # A single `"*"` can be used as short-hand for listing every field.
+ "range": { # A range on a sheet. # The range to repeat the cell in.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ },
+ "findReplace": { # Finds and replaces data in cells over a range, sheet, or all sheets. # Finds and replace occurrences of some text with other text.
+ "includeFormulas": True or False, # True if the search should include cells with formulas.
+ # False to skip cells with formulas.
+ "matchEntireCell": True or False, # True if the find value should match the entire cell.
+ "allSheets": True or False, # True to find/replace over all sheets.
+ "matchCase": True or False, # True if the search is case sensitive.
+ "sheetId": 42, # The sheet to find/replace over.
+ "range": { # A range on a sheet. # The range to find/replace over.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "searchByRegex": True or False, # True if the find value is a regex.
+ # The regular expression and replacement should follow Java regex rules
+ # at https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html.
+ # The replacement string is allowed to refer to capturing groups.
+ # For example, if one cell has the contents "`Google Sheets`" and another
+ # has "`Google Docs`", then searching for `"o.* (.*)"` with a replacement of
+ # `"$1 Rocks`"` would change the contents of the cells to
+ # "`GSheets Rocks`" and "`GDocs Rocks`" respectively.
+ "find": "A String", # The value to search.
+ "replacement": "A String", # The value to use as the replacement.
+ },
+ "setBasicFilter": { # Sets the basic filter associated with a sheet. # Sets the basic filter on a sheet.
+ "filter": { # The default filter associated with a sheet. # The filter to set.
+ "range": { # A range on a sheet. # The range the filter covers.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ "updateSpreadsheetProperties": { # Updates properties of a spreadsheet. # Updates the spreadsheet's properties.
+ # It is an error to specify read only fields in the field mask.
+ "fields": "A String", # The fields that should be updated. At least one field must be specified.
+ # The root 'properties' is implied and should not be specified.
+ # A single `"*"` can be used as short-hand for listing every field.
+ "properties": { # Properties of a spreadsheet. # The properties to update.
+ "locale": "A String", # The locale of the spreadsheet in one of the following formats:
+ # * an ISO 639-1 language code such as `en`
+ # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
+ # * a combination of the ISO language code and country code, such as `en_US`
+ # Note: when updating this field, not all locales/languages are supported.
+ "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
+ # `America/New_York`. If the time zone isn't recognized, this may
+ # be a custom time zone such as `GMT-07:00`.
+ "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
+ "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
+ # CellData.effectiveFormat will not be set if the cell's format is equal
+ # to this default format.
+ # This field is read-only.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "title": "A String", # The title of the spreadsheet.
+ },
+ },
+ "updateCells": { # Updates all cells in a range with new data. # Updates many cells at once.
+ "fields": "A String", # The fields of CellData that should be updated.
+ # At least one field must be specified.
+ # The root is the CellData; 'row.values.' should not be specified.
+ # A single `"*"` can be used as short-hand for listing every field.
+ "range": { # A range on a sheet. # The range to write data to.
+ #
+ # If the data in rows does not cover the entire requested range,
+ # the fields matching those set in fields will be cleared.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "rows": [ # The data to write.
+ { # Data about each cell in a row.
+ "values": [ # The values in the row, one per column.
+ { # Data about a specific cell.
+ "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
+ # is computed dynamically based on its data, grouping, filters, values,
+ # etc... Only the top-left cell of the pivot table contains the pivot table
+ # definition. The other cells will contain the calculated values of the
+ # results of the pivot in their effectiveValue fields.
+ "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
+ # or vertically (as rows).
+ "rows": [ # Each row grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ "source": { # A range on a sheet. # The range the pivot table is reading data from.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "values": [ # A list of values to include in the pivot table.
+ { # The definition of how a value in a pivot table should be calculated.
+ "formula": "A String", # A custom formula to calculate the value. The formula must start
+ # with an `=` character.
+ "summarizeFunction": "A String", # A function to summarize the value.
+ # If formula is set, the only supported values are
+ # SUM and
+ # CUSTOM.
+ # If sourceColumnOffset is set, then `CUSTOM`
+ # is not supported.
+ "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this value refers to column `C`, whereas the offset `1` would
+ # refer to column `D`.
+ "name": "A String", # A name to use for the value. This is only used if formula was set.
+ # Otherwise, the column name is used.
+ },
+ ],
+ "criteria": { # An optional mapping of filters per source column offset.
+ #
+ # The filters will be applied before aggregating data into the pivot table.
+ # The map's key is the column offset of the source range that you want to
+ # filter, and the value is the criteria for that column.
+ #
+ # For example, if the source was `C10:E15', a key of `0` will have the filter
+ # for column `C`, whereas the key `1` is for column `D`.
+ "a_key": { # Criteria for showing/hiding rows in a pivot table.
+ "visibleValues": [ # Values that should be included. Values not listed here are excluded.
+ "A String",
+ ],
+ },
+ },
+ "columns": [ # Each column grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ },
+ "hyperlink": "A String", # A hyperlink this cell points to, if any.
+ # This field is read-only. (To set it, use a `=HYPERLINK` formula.)
+ "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
+ # the calculated value. For cells with literals, this will be
+ # the same as the user_entered_value.
+ # This field is read-only.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "formattedValue": "A String", # The formatted value of the cell.
+ # This is the value as it's shown to the user.
+ # This field is read-only.
+ "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()`
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # serial number format.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "note": "A String", # Any note on the cell.
+ "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
+ # This includes the results of applying any conditional formatting and,
+ # if the cell contains a formula, the computed number format.
+ # If the effective format is the default format, effective format will
+ # not be written.
+ # This field is read-only.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
+ #
+ # When writing, the new format will be merged with the existing format.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
+ #
+ # When writing, the new data validation rule will overwrite any prior rule.
+ "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
+ # If true, "List" conditions will show a dropdown.
+ "strict": True or False, # True if invalid data should be rejected.
+ "inputMessage": "A String", # A message to show the user when adding data to the cell.
+ "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.
+ # Runs start at specific indexes in the text and continue until the next
+ # run. Properties of a run will continue unless explicitly changed
+ # in a subsequent run (and properties of the first run will continue
+ # the properties of the cell unless explicitly changed).
+ #
+ # When writing, the new runs will overwrite any prior runs.
+ { # A run of a text format. The format of this run continues until explicitly
+ # overridden in the next run.
+ # When updating, all fields must be set.
+ "startIndex": 42, # The character index where this run starts.
+ "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ "start": { # A coordinate in a sheet. # The coordinate to start writing data at.
+ # Any number of rows and columns (including a different number of
+ # columns per row) may be written.
+ # All indexes are zero-based.
+ "rowIndex": 42, # The row index of the coordinate.
+ "columnIndex": 42, # The column index of the coordinate.
+ "sheetId": 42, # The sheet this coordinate is on.
+ },
+ },
+ "autoFill": { # Fills in more data based on existing data. # Automatically fills in more data based on existing data.
+ "useAlternateSeries": True or False, # True if we should generate data with the "alternate" series.
+ # This differs based on the type and amount of source data.
+ "range": { # A range on a sheet. # The range to autofill. This will examine the range and detect
+ # the location that has data and automatically fill that data
+ # in to the rest of the range.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sourceAndDestination": { # A combination of a source range and how to extend that source. # The source and destination areas to autofill.
+ # This explicitly lists the source of the autofill and where to
+ # extend that data.
+ "source": { # A range on a sheet. # The location of the data to use as the source of the autofill.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "dimension": "A String", # The dimension that data should be filled into.
+ "fillLength": 42, # The number of rows or columns that data should be filled into.
+ # Positive numbers expand beyond the last row or last column
+ # of the source. Negative numbers expand before the first row
+ # or first column of the source.
+ },
+ },
+ "appendDimension": { # Appends rows or columns to the end of a sheet. # Appends dimensions to the end of a sheet.
+ "length": 42, # The number of rows or columns to append.
+ "sheetId": 42, # The sheet to append rows or columns to.
+ "dimension": "A String", # Whether rows or columns should be appended.
+ },
+ "autoResizeDimensions": { # Automatically resizes one or more dimensions based on the contents # Automatically resizes one or more dimensions based on the contents
+ # of the cells in that dimension.
+ # of the cells in that dimension.
+ "dimensions": { # A range along a single dimension on a sheet. # The dimensions to automatically resize.
+ # Only COLUMNS are supported.
+ # All indexes are zero-based.
+ # Indexes are half open: the start index is inclusive
+ # and the end index is exclusive.
+ # Missing indexes indicate the range is unbounded on that side.
+ "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
+ "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
+ "sheetId": 42, # The sheet this span is on.
+ "dimension": "A String", # The dimension of the span.
+ },
+ },
+ "updateDimensionProperties": { # Updates properties of dimensions within the specified range. # Updates dimensions' properties.
+ # It is an error to specify read only fields in the field mask.
+ "fields": "A String", # The fields that should be updated. At least one field must be specified.
+ # The root `properties` is implied and should not be specified.
+ # A single `"*"` can be used as short-hand for listing every field.
+ "range": { # A range along a single dimension on a sheet. # The rows or columns to update.
+ # All indexes are zero-based.
+ # Indexes are half open: the start index is inclusive
+ # and the end index is exclusive.
+ # Missing indexes indicate the range is unbounded on that side.
+ "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
+ "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
+ "sheetId": 42, # The sheet this span is on.
+ "dimension": "A String", # The dimension of the span.
+ },
+ "properties": { # Properties about a dimension. # Properties to update.
+ "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+ "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+ "hiddenByFilter": True or False, # True if this dimension is being filtered.
+ # This field is read-only.
+ },
+ },
+ "unmergeCells": { # Unmerges cells in the given range. # Unmerges merged cells.
+ "range": { # A range on a sheet. # The range within which all cells should be unmerged.
+ # If the range spans multiple merges, all will be unmerged.
+ # The range must not partially span any merge.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ },
+ "setDataValidation": { # Sets a data validation rule to every cell in the range. # Sets data validation for one or more cells.
+ # To clear validation in a range, call this with no rule specified.
+ "range": { # A range on a sheet. # The range the data validation rule should apply to.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "rule": { # A data validation rule. # The data validation rule to set on each cell in the range,
+ # or empty to clear the data validation in the range.
+ "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
+ # If true, "List" conditions will show a dropdown.
+ "strict": True or False, # True if invalid data should be rejected.
+ "inputMessage": "A String", # A message to show the user when adding data to the cell.
+ "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ "clearBasicFilter": { # Clears the basic filter, if any exists on the sheet. # Clears the basic filter on a sheet.
+ "sheetId": 42, # The sheet ID on which the basic filter should be cleared.
+ },
+ "addNamedRange": { # Adds a named range to the spreadsheet. # Adds a named range.
+ "namedRange": { # A named range. # The named range to add. If a non-empty
+ # namedRangeId is specified, the named range
+ # will use that ID. (It is an error to specify the ID of a named
+ # range that already exists.)
+ "namedRangeId": "A String", # The ID of the named range.
+ "range": { # A range on a sheet. # The range this represents.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "name": "A String", # The name of the named range.
+ },
+ },
+ "updateChartSpec": { # Updates a chart's specifications. # Updates a chart's specifications.
+ # (This does not move or resize a chart. To move or resize a chart, use
+ # UpdateEmbeddedObjectPositionRequest.)
+ "chartId": 42, # The ID of the chart to update.
+ "spec": { # The specifications of a chart. # The specification to apply to the chart.
+ "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
+ # This value is only meaningful if the
+ # ChartData.sourceRange
+ # is used for a domain or series.
+ "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
+ "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "threeDimensional": True or False, # True if the pie is three dimensional.
+ "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
+ "pieHole": 3.14, # The size of the hole in the pie chart.
+ },
+ "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
+ # See BasicChartType for the list of all charts this supports.
+ # of charts this supports.
+ "headerCount": 42, # The number of rows or columns in the data that are "headers".
+ # If not set, Google Sheets will guess how many rows are headers based
+ # on the data.
+ #
+ # (Note that BasicChartAxis.title may override the axis title
+ # inferred from the header values.)
+ "series": [ # The data this chart is visualizing.
+ { # A single series of data in a chart.
+ # For example, if charting stock prices over time, multiple series may exist,
+ # one for the "Open Price", "High Price", "Low Price" and "Close Price".
+ "series": { # The data included in a domain or series. # The data being visualized in this chart series.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
+ # For example, if charting stocks over time, the "Volume" series
+ # may want to be pinned to the right with the prices pinned to the left,
+ # because the scale of trading volume is different than the scale of
+ # prices.
+ # It is an error to specify an axis that isn't a valid minor axis
+ # for the chart's type.
+ "type": "A String", # The type of this series. Valid only if the
+ # chartType is
+ # COMBO.
+ # Different types will change the way the series is visualized.
+ # Only LINE, AREA,
+ # and COLUMN are supported.
+ },
+ ],
+ "legendPosition": "A String", # The position of the chart legend.
+ "domains": [ # The domain of data this is charting.
+ # Only a single domain is currently supported.
+ { # The domain of a chart.
+ # For example, if charting stock prices over time, this would be the date.
+ "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
+ # this be the data representing the dates.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ },
+ ],
+ "chartType": "A String", # The type of the chart.
+ "axis": [ # The axis on the chart.
+ { # An axis of the chart.
+ # A chart may not have more than one axis per
+ # axis position.
+ "position": "A String", # The position of this axis.
+ "format": { # The format of a run of text in a cell. # The format of the title.
+ # Only valid if the axis is not associated with the domain.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "title": "A String", # The title of this axis. If set, this overrides any title inferred
+ # from headers of the data.
+ },
+ ],
+ },
+ "title": "A String", # The title of the chart.
+ },
+ },
+ "moveDimension": { # Moves one or more rows or columns. # Moves rows or columns to another location in a sheet.
+ "source": { # A range along a single dimension on a sheet. # The source dimensions to move.
+ # All indexes are zero-based.
+ # Indexes are half open: the start index is inclusive
+ # and the end index is exclusive.
+ # Missing indexes indicate the range is unbounded on that side.
+ "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
+ "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
+ "sheetId": 42, # The sheet this span is on.
+ "dimension": "A String", # The dimension of the span.
+ },
+ "destinationIndex": 42, # The zero-based start index of where to move the source data to,
+ # based on the coordinates *before* the source data is removed
+ # from the grid. Existing data will be shifted down or right
+ # (depending on the dimension) to make room for the moved dimensions.
+ # The source dimensions are removed from the grid, so the
+ # the data may end up in a different index than specified.
+ #
+ # For example, given `A1..A5` of `0, 1, 2, 3, 4` and wanting to move
+ # "`1`" and "`2`" to between "`3`" and "`4`", the source would be
+ # `ROWS [1..3)`,and the destination index would be "`4`"
+ # (the zero-based index of row 5).
+ # The end result would be `A1..A5` of `0, 3, 1, 2, 4`.
+ },
+ "textToColumns": { # Splits a column of text into multiple columns, # Converts a column of text into many columns of text.
+ # based on a delimiter in each cell.
+ "source": { # A range on a sheet. # The source data range. This must span exactly one column.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "delimiter": "A String", # The delimiter to use. Used only if delimiterType is
+ # CUSTOM.
+ "delimiterType": "A String", # The delimiter type to use.
+ },
+ "deleteFilterView": { # Deletes a particular filter view. # Deletes a filter view from a sheet.
+ "filterId": 42, # The ID of the filter to delete.
+ },
+ "mergeCells": { # Merges all cells in the range. # Merges cells together.
+ "range": { # A range on a sheet. # The range of cells to merge.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "mergeType": "A String", # How the cells should be merged.
+ },
+ "deleteProtectedRange": { # Deletes the protected range with the given id. # Deletes a protected range.
+ "protectedRangeId": 42, # The ID of the protected range to delete.
+ },
+ "addFilterView": { # Adds a filter view. # Adds a filter view.
+ "filter": { # A filter view. # The filter to add.
+ "title": "A String", # The name of the filter view.
+ "namedRangeId": "A String", # The named range this filter view is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "filterViewId": 42, # The ID of the filter view.
+ "range": { # A range on a sheet. # The range this filter view covers.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ "deleteSheet": { # Deletes the requested sheet. # Deletes a sheet.
+ "sheetId": 42, # The ID of the sheet to delete.
+ },
+ "updateBorders": { # Updates the borders of a range. # Updates the borders in a range of cells.
+ # If a field is not set in the request, that means the border remains as-is.
+ # For example, with two subsequent UpdateBordersRequest:
+ #
+ # 1. range: A1:A5 `{ top: RED, bottom: WHITE }`
+ # 2. range: A1:A5 `{ left: BLUE }`
+ #
+ # That would result in A1:A5 having a borders of
+ # `{ top: RED, bottom: WHITE, left: BLUE }`.
+ # If you want to clear a border, explicitly set the style to
+ # NONE.
+ "right": { # A border along a cell. # The border to put at the right of the range.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The border to put at the bottom of the range.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "top": { # A border along a cell. # The border to put at the top of the range.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "innerHorizontal": { # A border along a cell. # The horizontal border to put within the range.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "range": { # A range on a sheet. # The range whose borders should be updated.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "innerVertical": { # A border along a cell. # The vertical border to put within the range.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The border to put at the left of the range.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "cutPaste": { # Moves data from the source to the destination. # Cuts data from one area and pastes it to another.
+ "pasteType": "A String", # What kind of data to paste. All the source data will be cut, regardless
+ # of what is pasted.
+ "source": { # A range on a sheet. # The source data to cut.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "destination": { # A coordinate in a sheet. # The top-left coordinate where the data should be pasted.
+ # All indexes are zero-based.
+ "rowIndex": 42, # The row index of the coordinate.
+ "columnIndex": 42, # The column index of the coordinate.
+ "sheetId": 42, # The sheet this coordinate is on.
+ },
+ },
+ "copyPaste": { # Copies data from the source to the destination. # Copies data from one area and pastes it to another.
+ "pasteType": "A String", # What kind of data to paste.
+ "source": { # A range on a sheet. # The source range to copy.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "destination": { # A range on a sheet. # The location to paste to. If the range covers a span that's
+ # a multiple of the source's height or width, then the
+ # data will be repeated to fill in the destination range.
+ # If the range is smaller than the source range, the entire
+ # source data will still be copied (beyond the end of the destination range).
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "pasteOrientation": "A String", # How that data should be oriented when pasting.
+ },
+ "addSheet": { # Adds a new sheet. # Adds a sheet.
+ # When a sheet is added at a given index,
+ # all subsequent sheets' indexes are incremented.
+ # To add an object sheet, use AddChartRequest instead.
+ "properties": { # Properties of a sheet. # The properties the new sheet should have.
+ # All properties are optional.
+ # If a sheetId
+ # is specified, the sheet will use that ID.
+ # (It is an error to specify the ID of a sheet that already exists.)
+ "sheetType": "A String", # The type of sheet. Defaults to GRID.
+ # This field cannot be changed once set.
+ "index": 42, # The index of the sheet within the spreadsheet.
+ # When adding or updating sheet properties, if this field
+ # is excluded then the sheet will be added or moved to the end
+ # of the sheet list.
+ "title": "A String", # The name of the sheet.
+ "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
+ # (If the sheet is an object sheet, containing a chart or image, then
+ # this field will be absent.)
+ # When writing it is an error to set any grid properties on non-grid sheets.
+ "columnCount": 42, # The number of columns in the grid.
+ "rowCount": 42, # The number of rows in the grid.
+ "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
+ "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
+ "frozenRowCount": 42, # The number of rows that are frozen in the grid.
+ },
+ "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
+ "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
+ "sheetId": 42, # The ID of the sheet. Must be non-negative.
+ # This field cannot be changed once set.
+ },
+ },
+ "deleteNamedRange": { # Removes the named range with the given ID from the spreadsheet. # Deletes a named range.
+ "namedRangeId": "A String", # The ID of the named range to delete.
+ },
+ "updateNamedRange": { # Updates properties of the named range with the specified # Updates a named range.
+ # namedRangeId.
+ # It is an error to specify read only fields in the field mask.
+ "fields": "A String", # The fields that should be updated. At least one field must be specified.
+ # The root `namedRange` is implied and should not be specified.
+ # A single `"*"` can be used as short-hand for listing every field.
+ "namedRange": { # A named range. # The named range to update with the new properties.
+ "namedRangeId": "A String", # The ID of the named range.
+ "range": { # A range on a sheet. # The range this represents.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "name": "A String", # The name of the named range.
+ },
+ },
+ "insertDimension": { # Inserts rows or columns in a sheet at a particular index. # Inserts new rows or columns in a sheet.
+ "inheritFromBefore": True or False, # Whether dimension properties should be extended from the dimensions
+ # before or after the newly inserted dimensions.
+ # True to inherit from the dimensions before (in which case the start
+ # index must be greater than 0), and false to inherit from the dimensions
+ # after.
+ #
+ # For example, if row index 0 has red background and row index 1
+ # has a green background, then inserting 2 rows at index 1 can inherit
+ # either the green or red background. If `inheritFromBefore` is true,
+ # the two new rows will be red (because the row before the insertion point
+ # was red), whereas if `inheritFromBefore` is false, the two new rows will
+ # be green (because the rows after the insertion point were green).
+ "range": { # A range along a single dimension on a sheet. # The dimensions to insert. Both the start and end indexes must be bounded.
+ # All indexes are zero-based.
+ # Indexes are half open: the start index is inclusive
+ # and the end index is exclusive.
+ # Missing indexes indicate the range is unbounded on that side.
+ "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded.
+ "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded.
+ "sheetId": 42, # The sheet this span is on.
+ "dimension": "A String", # The dimension of the span.
+ },
+ },
+ "updateFilterView": { # Updates properties of the filter view. # Updates the properties of a filter view.
+ "filter": { # A filter view. # The new properties of the filter view.
+ "title": "A String", # The name of the filter view.
+ "namedRangeId": "A String", # The named range this filter view is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "filterViewId": 42, # The ID of the filter view.
+ "range": { # A range on a sheet. # The range this filter view covers.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ "fields": "A String", # The fields that should be updated. At least one field must be specified.
+ # The root `filter` is implied and should not be specified.
+ # A single `"*"` can be used as short-hand for listing every field.
+ },
+ "deleteConditionalFormatRule": { # Deletes a conditional format rule at the given index. # Deletes an existing conditional format rule.
+ # All subsequent rules' indexes are decremented.
+ "index": 42, # The zero-based index of the rule to be deleted.
+ "sheetId": 42, # The sheet the rule is being deleted from.
+ },
+ },
+ ],
+ }
+
+ x__xgafv: string, V1 error format.
+ Allowed values
+ 1 - v1 error format
+ 2 - v2 error format
+
+Returns:
+ An object of the form:
+
+ { # The reply for batch updating a spreadsheet.
+ "spreadsheetId": "A String", # The spreadsheet the updates were applied to.
+ "replies": [ # The reply of the updates. This maps 1:1 with the updates, although
+ # replies to some requests may be empty.
+ { # A single response from an update.
+ "duplicateFilterView": { # The result of a filter view being duplicated. # A reply from duplicating a filter view.
+ "filter": { # A filter view. # The newly created filter.
+ "title": "A String", # The name of the filter view.
+ "namedRangeId": "A String", # The named range this filter view is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "filterViewId": 42, # The ID of the filter view.
+ "range": { # A range on a sheet. # The range this filter view covers.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ "duplicateSheet": { # The result of duplicating a sheet. # A reply from duplicating a sheet.
+ "properties": { # Properties of a sheet. # The properties of the duplicate sheet.
+ "sheetType": "A String", # The type of sheet. Defaults to GRID.
+ # This field cannot be changed once set.
+ "index": 42, # The index of the sheet within the spreadsheet.
+ # When adding or updating sheet properties, if this field
+ # is excluded then the sheet will be added or moved to the end
+ # of the sheet list.
+ "title": "A String", # The name of the sheet.
+ "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
+ # (If the sheet is an object sheet, containing a chart or image, then
+ # this field will be absent.)
+ # When writing it is an error to set any grid properties on non-grid sheets.
+ "columnCount": 42, # The number of columns in the grid.
+ "rowCount": 42, # The number of rows in the grid.
+ "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
+ "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
+ "frozenRowCount": 42, # The number of rows that are frozen in the grid.
+ },
+ "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
+ "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
+ "sheetId": 42, # The ID of the sheet. Must be non-negative.
+ # This field cannot be changed once set.
+ },
+ },
+ "updateEmbeddedObjectPosition": { # The result of updating an embedded object's position. # A reply from updating an embedded object's position.
+ "position": { # The position of an embedded object such as a chart. # The new position of the embedded object.
+ "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
+ # is chosen for you. Used only when writing.
+ "sheetId": 42, # The sheet this is on. Set only if the embedded object
+ # is on its own sheet. Must be non-negative.
+ "overlayPosition": { # The location an object is overlaid on top of a grid. # The position the object is overlaid on top of a grid.
+ "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
+ # All indexes are zero-based.
+ "rowIndex": 42, # The row index of the coordinate.
+ "columnIndex": 42, # The column index of the coordinate.
+ "sheetId": 42, # The sheet this coordinate is on.
+ },
+ "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
+ "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
+ },
+ },
+ },
+ "addChart": { # The result of adding a chart to a spreadsheet. # A reply from adding a chart.
+ "chart": { # A chart embedded in a sheet. # The newly added chart.
+ "chartId": 42, # The ID of the chart.
+ "position": { # The position of an embedded object such as a chart. # The position of the chart.
+ "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
+ # is chosen for you. Used only when writing.
+ "sheetId": 42, # The sheet this is on. Set only if the embedded object
+ # is on its own sheet. Must be non-negative.
+ "overlayPosition": { # The location an object is overlaid on top of a grid. # The position the object is overlaid on top of a grid.
+ "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
+ # All indexes are zero-based.
+ "rowIndex": 42, # The row index of the coordinate.
+ "columnIndex": 42, # The column index of the coordinate.
+ "sheetId": 42, # The sheet this coordinate is on.
+ },
+ "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
+ "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
+ },
+ },
+ "spec": { # The specifications of a chart. # The specification of the chart.
+ "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
+ # This value is only meaningful if the
+ # ChartData.sourceRange
+ # is used for a domain or series.
+ "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
+ "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "threeDimensional": True or False, # True if the pie is three dimensional.
+ "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
+ "pieHole": 3.14, # The size of the hole in the pie chart.
+ },
+ "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
+ # See BasicChartType for the list of all charts this supports.
+ # of charts this supports.
+ "headerCount": 42, # The number of rows or columns in the data that are "headers".
+ # If not set, Google Sheets will guess how many rows are headers based
+ # on the data.
+ #
+ # (Note that BasicChartAxis.title may override the axis title
+ # inferred from the header values.)
+ "series": [ # The data this chart is visualizing.
+ { # A single series of data in a chart.
+ # For example, if charting stock prices over time, multiple series may exist,
+ # one for the "Open Price", "High Price", "Low Price" and "Close Price".
+ "series": { # The data included in a domain or series. # The data being visualized in this chart series.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
+ # For example, if charting stocks over time, the "Volume" series
+ # may want to be pinned to the right with the prices pinned to the left,
+ # because the scale of trading volume is different than the scale of
+ # prices.
+ # It is an error to specify an axis that isn't a valid minor axis
+ # for the chart's type.
+ "type": "A String", # The type of this series. Valid only if the
+ # chartType is
+ # COMBO.
+ # Different types will change the way the series is visualized.
+ # Only LINE, AREA,
+ # and COLUMN are supported.
+ },
+ ],
+ "legendPosition": "A String", # The position of the chart legend.
+ "domains": [ # The domain of data this is charting.
+ # Only a single domain is currently supported.
+ { # The domain of a chart.
+ # For example, if charting stock prices over time, this would be the date.
+ "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
+ # this be the data representing the dates.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ },
+ ],
+ "chartType": "A String", # The type of the chart.
+ "axis": [ # The axis on the chart.
+ { # An axis of the chart.
+ # A chart may not have more than one axis per
+ # axis position.
+ "position": "A String", # The position of this axis.
+ "format": { # The format of a run of text in a cell. # The format of the title.
+ # Only valid if the axis is not associated with the domain.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "title": "A String", # The title of this axis. If set, this overrides any title inferred
+ # from headers of the data.
+ },
+ ],
+ },
+ "title": "A String", # The title of the chart.
+ },
+ },
+ },
+ "updateConditionalFormatRule": { # The result of updating a conditional format rule. # A reply from updating a conditional format rule.
+ "oldIndex": 42, # The old index of the rule. Not set if a rule was replaced
+ # (because it is the same as newIndex).
+ "newIndex": 42, # The index of the new rule.
+ "oldRule": { # A rule describing a conditional format. # The old (deleted) rule. Not set if a rule was moved
+ # (because it is the same as newRule).
+ "ranges": [ # The ranges that will be formatted if the condition is true.
+ # All the ranges must be on the same grid.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+ "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+ # the format will be applied.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ "format": { # The format of a cell. # The format to apply.
+ # Conditional formatting can only apply a subset of formatting:
+ # bold, italic,
+ # strikethrough,
+ # foreground color &
+ # background color.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ },
+ "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+ # the interpolation points listed. The format of a cell will vary
+ # based on its contents as compared to the values of the interpolation
+ # points.
+ "maxpoint": { # A single interpolation point a gradient conditional format. # The final interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "midpoint": { # A single interpolation point a gradient conditional format. # An optional midway interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "minpoint": { # A single interpolation point a gradient conditional format. # The starting interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ },
+ },
+ "newRule": { # A rule describing a conditional format. # The new rule that replaced the old rule (if replacing),
+ # or the rule that was moved (if moved)
+ "ranges": [ # The ranges that will be formatted if the condition is true.
+ # All the ranges must be on the same grid.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+ "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+ # the format will be applied.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ "format": { # The format of a cell. # The format to apply.
+ # Conditional formatting can only apply a subset of formatting:
+ # bold, italic,
+ # strikethrough,
+ # foreground color &
+ # background color.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ },
+ "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+ # the interpolation points listed. The format of a cell will vary
+ # based on its contents as compared to the values of the interpolation
+ # points.
+ "maxpoint": { # A single interpolation point a gradient conditional format. # The final interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "midpoint": { # A single interpolation point a gradient conditional format. # An optional midway interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "minpoint": { # A single interpolation point a gradient conditional format. # The starting interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ },
+ },
+ },
+ "addSheet": { # The result of adding a sheet. # A reply from adding a sheet.
+ "properties": { # Properties of a sheet. # The properties of the newly added sheet.
+ "sheetType": "A String", # The type of sheet. Defaults to GRID.
+ # This field cannot be changed once set.
+ "index": 42, # The index of the sheet within the spreadsheet.
+ # When adding or updating sheet properties, if this field
+ # is excluded then the sheet will be added or moved to the end
+ # of the sheet list.
+ "title": "A String", # The name of the sheet.
+ "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
+ # (If the sheet is an object sheet, containing a chart or image, then
+ # this field will be absent.)
+ # When writing it is an error to set any grid properties on non-grid sheets.
+ "columnCount": 42, # The number of columns in the grid.
+ "rowCount": 42, # The number of rows in the grid.
+ "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
+ "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
+ "frozenRowCount": 42, # The number of rows that are frozen in the grid.
+ },
+ "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
+ "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
+ "sheetId": 42, # The ID of the sheet. Must be non-negative.
+ # This field cannot be changed once set.
+ },
+ },
+ "findReplace": { # The result of the find/replace. # A reply from doing a find/replace.
+ "occurrencesChanged": 42, # The number of occurrences (possibly multiple within a cell) changed.
+ # For example, if replacing "`e`" with "`o`" in "`Google Sheets`", this would
+ # be "`3`" because "`Google Sheets`" -> "`Googlo Shoots`".
+ "sheetsChanged": 42, # The number of sheets changed.
+ "rowsChanged": 42, # The number of rows changed.
+ "valuesChanged": 42, # The number of non-formula cells changed.
+ "formulasChanged": 42, # The number of formula cells changed.
+ },
+ "addNamedRange": { # The result of adding a named range. # A reply from adding a named range.
+ "namedRange": { # A named range. # The named range to add.
+ "namedRangeId": "A String", # The ID of the named range.
+ "range": { # A range on a sheet. # The range this represents.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "name": "A String", # The name of the named range.
+ },
+ },
+ "addProtectedRange": { # The result of adding a new protected range. # A reply from adding a protected range.
+ "protectedRange": { # A protected range. # The newly added protected range.
+ "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
+ # Unprotected ranges are only supported on protected sheets.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
+ # protected area.
+ # This field is read-only.
+ "description": "A String", # The description of this protected range.
+ "namedRangeId": "A String", # The named range this protected range is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
+ # This field is only visible to users with edit access to the protected
+ # range and the document.
+ # Editors are not supported with warningOnly protection.
+ "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
+ # range. Domain protection is only supported on documents within a domain.
+ "users": [ # The email addresses of users with edit access to the protected range.
+ "A String",
+ ],
+ "groups": [ # The email addresses of groups with edit access to the protected range.
+ "A String",
+ ],
+ },
+ "protectedRangeId": 42, # The ID of the protected range.
+ # This field is read-only.
+ "warningOnly": True or False, # True if this this protected range will show a warning when editing.
+ # Warning-based protection means that every user can edit data in the
+ # protected range, except editing will prompt a warning asking the user
+ # to confirm the edit.
+ #
+ # When warning: if this field is true, then editors is ignored.
+ # Additionally, if this field is changed from true to false and the
+ # `editors` field is not set (nor included in the field mask), then
+ # the editors will be set to all the editors in the document.
+ "range": { # A range on a sheet. # The range that is being protected.
+ # The range may be fully unbounded, in which case this is considered
+ # a protected sheet.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ },
+ },
+ "deleteConditionalFormatRule": { # The result of deleting a conditional format rule. # A reply from deleting a conditional format rule.
+ "rule": { # A rule describing a conditional format. # The rule that was deleted.
+ "ranges": [ # The ranges that will be formatted if the condition is true.
+ # All the ranges must be on the same grid.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+ "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+ # the format will be applied.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ "format": { # The format of a cell. # The format to apply.
+ # Conditional formatting can only apply a subset of formatting:
+ # bold, italic,
+ # strikethrough,
+ # foreground color &
+ # background color.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ },
+ "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+ # the interpolation points listed. The format of a cell will vary
+ # based on its contents as compared to the values of the interpolation
+ # points.
+ "maxpoint": { # A single interpolation point a gradient conditional format. # The final interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "midpoint": { # A single interpolation point a gradient conditional format. # An optional midway interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "minpoint": { # A single interpolation point a gradient conditional format. # The starting interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ },
+ },
+ },
+ "addFilterView": { # The result of adding a filter view. # A reply from adding a filter view.
+ "filter": { # A filter view. # The newly added filter view.
+ "title": "A String", # The name of the filter view.
+ "namedRangeId": "A String", # The named range this filter view is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "filterViewId": 42, # The ID of the filter view.
+ "range": { # A range on a sheet. # The range this filter view covers.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ },
+ },
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="create">create(body, x__xgafv=None)</code>
+ <pre>Creates a spreadsheet, returning the newly created spreadsheet.
+
+Args:
+ body: object, The request body. (required)
+ The object takes the form of:
+
+{ # Resource that represents a spreadsheet.
+ "spreadsheetId": "A String", # The ID of the spreadsheet.
+ # This field is read-only.
+ "namedRanges": [ # The named ranges defined in a spreadsheet.
+ { # A named range.
+ "namedRangeId": "A String", # The ID of the named range.
+ "range": { # A range on a sheet. # The range this represents.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "name": "A String", # The name of the named range.
+ },
+ ],
+ "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
+ "locale": "A String", # The locale of the spreadsheet in one of the following formats:
+ # * an ISO 639-1 language code such as `en`
+ # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
+ # * a combination of the ISO language code and country code, such as `en_US`
+ # Note: when updating this field, not all locales/languages are supported.
+ "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
+ # `America/New_York`. If the time zone isn't recognized, this may
+ # be a custom time zone such as `GMT-07:00`.
+ "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
+ "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
+ # CellData.effectiveFormat will not be set if the cell's format is equal
+ # to this default format.
+ # This field is read-only.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "title": "A String", # The title of the spreadsheet.
+ },
+ "sheets": [ # The sheets that are part of a spreadsheet.
+ { # A sheet in a spreadsheet.
+ "conditionalFormats": [ # The conditional format rules in this sheet.
+ { # A rule describing a conditional format.
+ "ranges": [ # The ranges that will be formatted if the condition is true.
+ # All the ranges must be on the same grid.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+ "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+ # the format will be applied.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ "format": { # The format of a cell. # The format to apply.
+ # Conditional formatting can only apply a subset of formatting:
+ # bold, italic,
+ # strikethrough,
+ # foreground color &
+ # background color.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ },
+ "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+ # the interpolation points listed. The format of a cell will vary
+ # based on its contents as compared to the values of the interpolation
+ # points.
+ "maxpoint": { # A single interpolation point a gradient conditional format. # The final interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "midpoint": { # A single interpolation point a gradient conditional format. # An optional midway interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "minpoint": { # A single interpolation point a gradient conditional format. # The starting interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ },
+ },
+ ],
+ "merges": [ # The ranges that are merged together.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
+ "range": { # A range on a sheet. # The range the filter covers.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ "charts": [ # The specifications of every chart on this sheet.
+ { # A chart embedded in a sheet.
+ "chartId": 42, # The ID of the chart.
+ "position": { # The position of an embedded object such as a chart. # The position of the chart.
+ "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
+ # is chosen for you. Used only when writing.
+ "sheetId": 42, # The sheet this is on. Set only if the embedded object
+ # is on its own sheet. Must be non-negative.
+ "overlayPosition": { # The location an object is overlaid on top of a grid. # The position the object is overlaid on top of a grid.
+ "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
+ # All indexes are zero-based.
+ "rowIndex": 42, # The row index of the coordinate.
+ "columnIndex": 42, # The column index of the coordinate.
+ "sheetId": 42, # The sheet this coordinate is on.
+ },
+ "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
+ "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
+ },
+ },
+ "spec": { # The specifications of a chart. # The specification of the chart.
+ "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
+ # This value is only meaningful if the
+ # ChartData.sourceRange
+ # is used for a domain or series.
+ "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
+ "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "threeDimensional": True or False, # True if the pie is three dimensional.
+ "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
+ "pieHole": 3.14, # The size of the hole in the pie chart.
+ },
+ "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
+ # See BasicChartType for the list of all charts this supports.
+ # of charts this supports.
+ "headerCount": 42, # The number of rows or columns in the data that are "headers".
+ # If not set, Google Sheets will guess how many rows are headers based
+ # on the data.
+ #
+ # (Note that BasicChartAxis.title may override the axis title
+ # inferred from the header values.)
+ "series": [ # The data this chart is visualizing.
+ { # A single series of data in a chart.
+ # For example, if charting stock prices over time, multiple series may exist,
+ # one for the "Open Price", "High Price", "Low Price" and "Close Price".
+ "series": { # The data included in a domain or series. # The data being visualized in this chart series.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
+ # For example, if charting stocks over time, the "Volume" series
+ # may want to be pinned to the right with the prices pinned to the left,
+ # because the scale of trading volume is different than the scale of
+ # prices.
+ # It is an error to specify an axis that isn't a valid minor axis
+ # for the chart's type.
+ "type": "A String", # The type of this series. Valid only if the
+ # chartType is
+ # COMBO.
+ # Different types will change the way the series is visualized.
+ # Only LINE, AREA,
+ # and COLUMN are supported.
+ },
+ ],
+ "legendPosition": "A String", # The position of the chart legend.
+ "domains": [ # The domain of data this is charting.
+ # Only a single domain is currently supported.
+ { # The domain of a chart.
+ # For example, if charting stock prices over time, this would be the date.
+ "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
+ # this be the data representing the dates.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ },
+ ],
+ "chartType": "A String", # The type of the chart.
+ "axis": [ # The axis on the chart.
+ { # An axis of the chart.
+ # A chart may not have more than one axis per
+ # axis position.
+ "position": "A String", # The position of this axis.
+ "format": { # The format of a run of text in a cell. # The format of the title.
+ # Only valid if the axis is not associated with the domain.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "title": "A String", # The title of this axis. If set, this overrides any title inferred
+ # from headers of the data.
+ },
+ ],
+ },
+ "title": "A String", # The title of the chart.
+ },
+ },
+ ],
+ "filterViews": [ # The filter views in this sheet.
+ { # A filter view.
+ "title": "A String", # The name of the filter view.
+ "namedRangeId": "A String", # The named range this filter view is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "filterViewId": 42, # The ID of the filter view.
+ "range": { # A range on a sheet. # The range this filter view covers.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ ],
+ "protectedRanges": [ # The protected ranges in this sheet.
+ { # A protected range.
+ "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
+ # Unprotected ranges are only supported on protected sheets.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
+ # protected area.
+ # This field is read-only.
+ "description": "A String", # The description of this protected range.
+ "namedRangeId": "A String", # The named range this protected range is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
+ # This field is only visible to users with edit access to the protected
+ # range and the document.
+ # Editors are not supported with warningOnly protection.
+ "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
+ # range. Domain protection is only supported on documents within a domain.
+ "users": [ # The email addresses of users with edit access to the protected range.
+ "A String",
+ ],
+ "groups": [ # The email addresses of groups with edit access to the protected range.
+ "A String",
+ ],
+ },
+ "protectedRangeId": 42, # The ID of the protected range.
+ # This field is read-only.
+ "warningOnly": True or False, # True if this this protected range will show a warning when editing.
+ # Warning-based protection means that every user can edit data in the
+ # protected range, except editing will prompt a warning asking the user
+ # to confirm the edit.
+ #
+ # When warning: if this field is true, then editors is ignored.
+ # Additionally, if this field is changed from true to false and the
+ # `editors` field is not set (nor included in the field mask), then
+ # the editors will be set to all the editors in the document.
+ "range": { # A range on a sheet. # The range that is being protected.
+ # The range may be fully unbounded, in which case this is considered
+ # a protected sheet.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ },
+ ],
+ "data": [ # Data in the grid, if this is a grid sheet.
+ # The number of GridData objects returned is dependent on the number of
+ # ranges requested on this sheet. For example, if this is representing
+ # `Sheet1`, and the spreadsheet was requested with ranges
+ # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
+ # startRow/startColumn of `0`,
+ # while the second one will have `startRow 14` (zero-based row 15),
+ # and `startColumn 3` (zero-based column D).
+ { # Data in the grid, as well as metadata about the dimensions.
+ "startRow": 42, # The first row this GridData refers to, zero-based.
+ "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
+ # in startRow.
+ { # Properties about a dimension.
+ "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+ "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+ "hiddenByFilter": True or False, # True if this dimension is being filtered.
+ # This field is read-only.
+ },
+ ],
+ "startColumn": 42, # The first column this GridData refers to, zero-based.
+ "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
+ # in startColumn.
+ { # Properties about a dimension.
+ "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+ "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+ "hiddenByFilter": True or False, # True if this dimension is being filtered.
+ # This field is read-only.
+ },
+ ],
+ "rowData": [ # The data in the grid, one entry per row,
+ # starting with the row in startRow.
+ # The values in RowData will correspond to columns starting
+ # at startColumn.
+ { # Data about each cell in a row.
+ "values": [ # The values in the row, one per column.
+ { # Data about a specific cell.
+ "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
+ # is computed dynamically based on its data, grouping, filters, values,
+ # etc... Only the top-left cell of the pivot table contains the pivot table
+ # definition. The other cells will contain the calculated values of the
+ # results of the pivot in their effectiveValue fields.
+ "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
+ # or vertically (as rows).
+ "rows": [ # Each row grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ "source": { # A range on a sheet. # The range the pivot table is reading data from.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "values": [ # A list of values to include in the pivot table.
+ { # The definition of how a value in a pivot table should be calculated.
+ "formula": "A String", # A custom formula to calculate the value. The formula must start
+ # with an `=` character.
+ "summarizeFunction": "A String", # A function to summarize the value.
+ # If formula is set, the only supported values are
+ # SUM and
+ # CUSTOM.
+ # If sourceColumnOffset is set, then `CUSTOM`
+ # is not supported.
+ "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this value refers to column `C`, whereas the offset `1` would
+ # refer to column `D`.
+ "name": "A String", # A name to use for the value. This is only used if formula was set.
+ # Otherwise, the column name is used.
+ },
+ ],
+ "criteria": { # An optional mapping of filters per source column offset.
+ #
+ # The filters will be applied before aggregating data into the pivot table.
+ # The map's key is the column offset of the source range that you want to
+ # filter, and the value is the criteria for that column.
+ #
+ # For example, if the source was `C10:E15', a key of `0` will have the filter
+ # for column `C`, whereas the key `1` is for column `D`.
+ "a_key": { # Criteria for showing/hiding rows in a pivot table.
+ "visibleValues": [ # Values that should be included. Values not listed here are excluded.
+ "A String",
+ ],
+ },
+ },
+ "columns": [ # Each column grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ },
+ "hyperlink": "A String", # A hyperlink this cell points to, if any.
+ # This field is read-only. (To set it, use a `=HYPERLINK` formula.)
+ "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
+ # the calculated value. For cells with literals, this will be
+ # the same as the user_entered_value.
+ # This field is read-only.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "formattedValue": "A String", # The formatted value of the cell.
+ # This is the value as it's shown to the user.
+ # This field is read-only.
+ "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()`
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # serial number format.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "note": "A String", # Any note on the cell.
+ "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
+ # This includes the results of applying any conditional formatting and,
+ # if the cell contains a formula, the computed number format.
+ # If the effective format is the default format, effective format will
+ # not be written.
+ # This field is read-only.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
+ #
+ # When writing, the new format will be merged with the existing format.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
+ #
+ # When writing, the new data validation rule will overwrite any prior rule.
+ "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
+ # If true, "List" conditions will show a dropdown.
+ "strict": True or False, # True if invalid data should be rejected.
+ "inputMessage": "A String", # A message to show the user when adding data to the cell.
+ "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.
+ # Runs start at specific indexes in the text and continue until the next
+ # run. Properties of a run will continue unless explicitly changed
+ # in a subsequent run (and properties of the first run will continue
+ # the properties of the cell unless explicitly changed).
+ #
+ # When writing, the new runs will overwrite any prior runs.
+ { # A run of a text format. The format of this run continues until explicitly
+ # overridden in the next run.
+ # When updating, all fields must be set.
+ "startIndex": 42, # The character index where this run starts.
+ "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ "properties": { # Properties of a sheet. # The properties of the sheet.
+ "sheetType": "A String", # The type of sheet. Defaults to GRID.
+ # This field cannot be changed once set.
+ "index": 42, # The index of the sheet within the spreadsheet.
+ # When adding or updating sheet properties, if this field
+ # is excluded then the sheet will be added or moved to the end
+ # of the sheet list.
+ "title": "A String", # The name of the sheet.
+ "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
+ # (If the sheet is an object sheet, containing a chart or image, then
+ # this field will be absent.)
+ # When writing it is an error to set any grid properties on non-grid sheets.
+ "columnCount": 42, # The number of columns in the grid.
+ "rowCount": 42, # The number of rows in the grid.
+ "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
+ "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
+ "frozenRowCount": 42, # The number of rows that are frozen in the grid.
+ },
+ "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
+ "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
+ "sheetId": 42, # The ID of the sheet. Must be non-negative.
+ # This field cannot be changed once set.
+ },
+ },
+ ],
+ }
+
+ x__xgafv: string, V1 error format.
+ Allowed values
+ 1 - v1 error format
+ 2 - v2 error format
+
+Returns:
+ An object of the form:
+
+ { # Resource that represents a spreadsheet.
+ "spreadsheetId": "A String", # The ID of the spreadsheet.
+ # This field is read-only.
+ "namedRanges": [ # The named ranges defined in a spreadsheet.
+ { # A named range.
+ "namedRangeId": "A String", # The ID of the named range.
+ "range": { # A range on a sheet. # The range this represents.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "name": "A String", # The name of the named range.
+ },
+ ],
+ "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
+ "locale": "A String", # The locale of the spreadsheet in one of the following formats:
+ # * an ISO 639-1 language code such as `en`
+ # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
+ # * a combination of the ISO language code and country code, such as `en_US`
+ # Note: when updating this field, not all locales/languages are supported.
+ "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
+ # `America/New_York`. If the time zone isn't recognized, this may
+ # be a custom time zone such as `GMT-07:00`.
+ "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
+ "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
+ # CellData.effectiveFormat will not be set if the cell's format is equal
+ # to this default format.
+ # This field is read-only.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "title": "A String", # The title of the spreadsheet.
+ },
+ "sheets": [ # The sheets that are part of a spreadsheet.
+ { # A sheet in a spreadsheet.
+ "conditionalFormats": [ # The conditional format rules in this sheet.
+ { # A rule describing a conditional format.
+ "ranges": [ # The ranges that will be formatted if the condition is true.
+ # All the ranges must be on the same grid.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+ "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+ # the format will be applied.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ "format": { # The format of a cell. # The format to apply.
+ # Conditional formatting can only apply a subset of formatting:
+ # bold, italic,
+ # strikethrough,
+ # foreground color &
+ # background color.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ },
+ "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+ # the interpolation points listed. The format of a cell will vary
+ # based on its contents as compared to the values of the interpolation
+ # points.
+ "maxpoint": { # A single interpolation point a gradient conditional format. # The final interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "midpoint": { # A single interpolation point a gradient conditional format. # An optional midway interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "minpoint": { # A single interpolation point a gradient conditional format. # The starting interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ },
+ },
+ ],
+ "merges": [ # The ranges that are merged together.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
+ "range": { # A range on a sheet. # The range the filter covers.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ "charts": [ # The specifications of every chart on this sheet.
+ { # A chart embedded in a sheet.
+ "chartId": 42, # The ID of the chart.
+ "position": { # The position of an embedded object such as a chart. # The position of the chart.
+ "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
+ # is chosen for you. Used only when writing.
+ "sheetId": 42, # The sheet this is on. Set only if the embedded object
+ # is on its own sheet. Must be non-negative.
+ "overlayPosition": { # The location an object is overlaid on top of a grid. # The position the object is overlaid on top of a grid.
+ "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
+ # All indexes are zero-based.
+ "rowIndex": 42, # The row index of the coordinate.
+ "columnIndex": 42, # The column index of the coordinate.
+ "sheetId": 42, # The sheet this coordinate is on.
+ },
+ "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
+ "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
+ },
+ },
+ "spec": { # The specifications of a chart. # The specification of the chart.
+ "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
+ # This value is only meaningful if the
+ # ChartData.sourceRange
+ # is used for a domain or series.
+ "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
+ "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "threeDimensional": True or False, # True if the pie is three dimensional.
+ "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
+ "pieHole": 3.14, # The size of the hole in the pie chart.
+ },
+ "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
+ # See BasicChartType for the list of all charts this supports.
+ # of charts this supports.
+ "headerCount": 42, # The number of rows or columns in the data that are "headers".
+ # If not set, Google Sheets will guess how many rows are headers based
+ # on the data.
+ #
+ # (Note that BasicChartAxis.title may override the axis title
+ # inferred from the header values.)
+ "series": [ # The data this chart is visualizing.
+ { # A single series of data in a chart.
+ # For example, if charting stock prices over time, multiple series may exist,
+ # one for the "Open Price", "High Price", "Low Price" and "Close Price".
+ "series": { # The data included in a domain or series. # The data being visualized in this chart series.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
+ # For example, if charting stocks over time, the "Volume" series
+ # may want to be pinned to the right with the prices pinned to the left,
+ # because the scale of trading volume is different than the scale of
+ # prices.
+ # It is an error to specify an axis that isn't a valid minor axis
+ # for the chart's type.
+ "type": "A String", # The type of this series. Valid only if the
+ # chartType is
+ # COMBO.
+ # Different types will change the way the series is visualized.
+ # Only LINE, AREA,
+ # and COLUMN are supported.
+ },
+ ],
+ "legendPosition": "A String", # The position of the chart legend.
+ "domains": [ # The domain of data this is charting.
+ # Only a single domain is currently supported.
+ { # The domain of a chart.
+ # For example, if charting stock prices over time, this would be the date.
+ "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
+ # this be the data representing the dates.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ },
+ ],
+ "chartType": "A String", # The type of the chart.
+ "axis": [ # The axis on the chart.
+ { # An axis of the chart.
+ # A chart may not have more than one axis per
+ # axis position.
+ "position": "A String", # The position of this axis.
+ "format": { # The format of a run of text in a cell. # The format of the title.
+ # Only valid if the axis is not associated with the domain.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "title": "A String", # The title of this axis. If set, this overrides any title inferred
+ # from headers of the data.
+ },
+ ],
+ },
+ "title": "A String", # The title of the chart.
+ },
+ },
+ ],
+ "filterViews": [ # The filter views in this sheet.
+ { # A filter view.
+ "title": "A String", # The name of the filter view.
+ "namedRangeId": "A String", # The named range this filter view is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "filterViewId": 42, # The ID of the filter view.
+ "range": { # A range on a sheet. # The range this filter view covers.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ ],
+ "protectedRanges": [ # The protected ranges in this sheet.
+ { # A protected range.
+ "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
+ # Unprotected ranges are only supported on protected sheets.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
+ # protected area.
+ # This field is read-only.
+ "description": "A String", # The description of this protected range.
+ "namedRangeId": "A String", # The named range this protected range is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
+ # This field is only visible to users with edit access to the protected
+ # range and the document.
+ # Editors are not supported with warningOnly protection.
+ "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
+ # range. Domain protection is only supported on documents within a domain.
+ "users": [ # The email addresses of users with edit access to the protected range.
+ "A String",
+ ],
+ "groups": [ # The email addresses of groups with edit access to the protected range.
+ "A String",
+ ],
+ },
+ "protectedRangeId": 42, # The ID of the protected range.
+ # This field is read-only.
+ "warningOnly": True or False, # True if this this protected range will show a warning when editing.
+ # Warning-based protection means that every user can edit data in the
+ # protected range, except editing will prompt a warning asking the user
+ # to confirm the edit.
+ #
+ # When warning: if this field is true, then editors is ignored.
+ # Additionally, if this field is changed from true to false and the
+ # `editors` field is not set (nor included in the field mask), then
+ # the editors will be set to all the editors in the document.
+ "range": { # A range on a sheet. # The range that is being protected.
+ # The range may be fully unbounded, in which case this is considered
+ # a protected sheet.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ },
+ ],
+ "data": [ # Data in the grid, if this is a grid sheet.
+ # The number of GridData objects returned is dependent on the number of
+ # ranges requested on this sheet. For example, if this is representing
+ # `Sheet1`, and the spreadsheet was requested with ranges
+ # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
+ # startRow/startColumn of `0`,
+ # while the second one will have `startRow 14` (zero-based row 15),
+ # and `startColumn 3` (zero-based column D).
+ { # Data in the grid, as well as metadata about the dimensions.
+ "startRow": 42, # The first row this GridData refers to, zero-based.
+ "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
+ # in startRow.
+ { # Properties about a dimension.
+ "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+ "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+ "hiddenByFilter": True or False, # True if this dimension is being filtered.
+ # This field is read-only.
+ },
+ ],
+ "startColumn": 42, # The first column this GridData refers to, zero-based.
+ "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
+ # in startColumn.
+ { # Properties about a dimension.
+ "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+ "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+ "hiddenByFilter": True or False, # True if this dimension is being filtered.
+ # This field is read-only.
+ },
+ ],
+ "rowData": [ # The data in the grid, one entry per row,
+ # starting with the row in startRow.
+ # The values in RowData will correspond to columns starting
+ # at startColumn.
+ { # Data about each cell in a row.
+ "values": [ # The values in the row, one per column.
+ { # Data about a specific cell.
+ "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
+ # is computed dynamically based on its data, grouping, filters, values,
+ # etc... Only the top-left cell of the pivot table contains the pivot table
+ # definition. The other cells will contain the calculated values of the
+ # results of the pivot in their effectiveValue fields.
+ "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
+ # or vertically (as rows).
+ "rows": [ # Each row grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ "source": { # A range on a sheet. # The range the pivot table is reading data from.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "values": [ # A list of values to include in the pivot table.
+ { # The definition of how a value in a pivot table should be calculated.
+ "formula": "A String", # A custom formula to calculate the value. The formula must start
+ # with an `=` character.
+ "summarizeFunction": "A String", # A function to summarize the value.
+ # If formula is set, the only supported values are
+ # SUM and
+ # CUSTOM.
+ # If sourceColumnOffset is set, then `CUSTOM`
+ # is not supported.
+ "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this value refers to column `C`, whereas the offset `1` would
+ # refer to column `D`.
+ "name": "A String", # A name to use for the value. This is only used if formula was set.
+ # Otherwise, the column name is used.
+ },
+ ],
+ "criteria": { # An optional mapping of filters per source column offset.
+ #
+ # The filters will be applied before aggregating data into the pivot table.
+ # The map's key is the column offset of the source range that you want to
+ # filter, and the value is the criteria for that column.
+ #
+ # For example, if the source was `C10:E15', a key of `0` will have the filter
+ # for column `C`, whereas the key `1` is for column `D`.
+ "a_key": { # Criteria for showing/hiding rows in a pivot table.
+ "visibleValues": [ # Values that should be included. Values not listed here are excluded.
+ "A String",
+ ],
+ },
+ },
+ "columns": [ # Each column grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ },
+ "hyperlink": "A String", # A hyperlink this cell points to, if any.
+ # This field is read-only. (To set it, use a `=HYPERLINK` formula.)
+ "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
+ # the calculated value. For cells with literals, this will be
+ # the same as the user_entered_value.
+ # This field is read-only.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "formattedValue": "A String", # The formatted value of the cell.
+ # This is the value as it's shown to the user.
+ # This field is read-only.
+ "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()`
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # serial number format.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "note": "A String", # Any note on the cell.
+ "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
+ # This includes the results of applying any conditional formatting and,
+ # if the cell contains a formula, the computed number format.
+ # If the effective format is the default format, effective format will
+ # not be written.
+ # This field is read-only.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
+ #
+ # When writing, the new format will be merged with the existing format.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
+ #
+ # When writing, the new data validation rule will overwrite any prior rule.
+ "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
+ # If true, "List" conditions will show a dropdown.
+ "strict": True or False, # True if invalid data should be rejected.
+ "inputMessage": "A String", # A message to show the user when adding data to the cell.
+ "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.
+ # Runs start at specific indexes in the text and continue until the next
+ # run. Properties of a run will continue unless explicitly changed
+ # in a subsequent run (and properties of the first run will continue
+ # the properties of the cell unless explicitly changed).
+ #
+ # When writing, the new runs will overwrite any prior runs.
+ { # A run of a text format. The format of this run continues until explicitly
+ # overridden in the next run.
+ # When updating, all fields must be set.
+ "startIndex": 42, # The character index where this run starts.
+ "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ "properties": { # Properties of a sheet. # The properties of the sheet.
+ "sheetType": "A String", # The type of sheet. Defaults to GRID.
+ # This field cannot be changed once set.
+ "index": 42, # The index of the sheet within the spreadsheet.
+ # When adding or updating sheet properties, if this field
+ # is excluded then the sheet will be added or moved to the end
+ # of the sheet list.
+ "title": "A String", # The name of the sheet.
+ "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
+ # (If the sheet is an object sheet, containing a chart or image, then
+ # this field will be absent.)
+ # When writing it is an error to set any grid properties on non-grid sheets.
+ "columnCount": 42, # The number of columns in the grid.
+ "rowCount": 42, # The number of rows in the grid.
+ "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
+ "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
+ "frozenRowCount": 42, # The number of rows that are frozen in the grid.
+ },
+ "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
+ "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
+ "sheetId": 42, # The ID of the sheet. Must be non-negative.
+ # This field cannot be changed once set.
+ },
+ },
+ ],
+ }</pre>
+</div>
+
+<div class="method">
+ <code class="details" id="get">get(spreadsheetId, ranges=None, x__xgafv=None, includeGridData=None)</code>
+ <pre>Returns the spreadsheet at the given id.
+The caller must specify the spreadsheet ID.
+
+By default, data within grids will not be returned.
+You can include grid data one of two ways: specify a field mask listing
+your desired fields (using the `fields` URL parameter in HTTP,
+or `FieldMaskContext.response_mask` in the request extensions in an RPC),
+or by setting the
+includeGridData URL parameter
+to true. If a field mask is set, the `includeGridData` parameter is
+ignored.
+
+For large spreadsheets, it is recommended to retrieve only the specific
+fields of the spreadsheet that you want.
+
+To retrieve only subsets of the spreadsheet, use the
+ranges URL parameter.
+Multiple ranges can be specified. Limiting the range will
+return only the portions of the spreadsheet that intersect the requested
+ranges. Ranges are specified using A1 notation.
+
+Args:
+ spreadsheetId: string, The spreadsheet to request. (required)
+ ranges: string, The ranges to retrieve from the spreadsheet. (repeated)
+ x__xgafv: string, V1 error format.
+ Allowed values
+ 1 - v1 error format
+ 2 - v2 error format
+ includeGridData: boolean, True if grid data should be returned.
+This parameter is ignored if a field mask was set in the request.
+
+Returns:
+ An object of the form:
+
+ { # Resource that represents a spreadsheet.
+ "spreadsheetId": "A String", # The ID of the spreadsheet.
+ # This field is read-only.
+ "namedRanges": [ # The named ranges defined in a spreadsheet.
+ { # A named range.
+ "namedRangeId": "A String", # The ID of the named range.
+ "range": { # A range on a sheet. # The range this represents.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "name": "A String", # The name of the named range.
+ },
+ ],
+ "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet.
+ "locale": "A String", # The locale of the spreadsheet in one of the following formats:
+ # * an ISO 639-1 language code such as `en`
+ # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists
+ # * a combination of the ISO language code and country code, such as `en_US`
+ # Note: when updating this field, not all locales/languages are supported.
+ "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as
+ # `America/New_York`. If the time zone isn't recognized, this may
+ # be a custom time zone such as `GMT-07:00`.
+ "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated.
+ "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet.
+ # CellData.effectiveFormat will not be set if the cell's format is equal
+ # to this default format.
+ # This field is read-only.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "title": "A String", # The title of the spreadsheet.
+ },
+ "sheets": [ # The sheets that are part of a spreadsheet.
+ { # A sheet in a spreadsheet.
+ "conditionalFormats": [ # The conditional format rules in this sheet.
+ { # A rule describing a conditional format.
+ "ranges": [ # The ranges that will be formatted if the condition is true.
+ # All the ranges must be on the same grid.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule.
+ "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true,
+ # the format will be applied.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ "format": { # The format of a cell. # The format to apply.
+ # Conditional formatting can only apply a subset of formatting:
+ # bold, italic,
+ # strikethrough,
+ # foreground color &
+ # background color.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ },
+ "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule.
+ # the interpolation points listed. The format of a cell will vary
+ # based on its contents as compared to the values of the interpolation
+ # points.
+ "maxpoint": { # A single interpolation point a gradient conditional format. # The final interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "midpoint": { # A single interpolation point a gradient conditional format. # An optional midway interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ "minpoint": { # A single interpolation point a gradient conditional format. # The starting interpolation point.
+ # These pin the gradient color scale according to the color,
+ # type and value chosen.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "type": "A String", # How the value should be interpreted.
+ "value": "A String", # The value this interpolation point uses. May be a formula.
+ # Unused if type is MIN or
+ # MAX.
+ },
+ },
+ },
+ ],
+ "merges": [ # The ranges that are merged together.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any.
+ "range": { # A range on a sheet. # The range the filter covers.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ "charts": [ # The specifications of every chart on this sheet.
+ { # A chart embedded in a sheet.
+ "chartId": 42, # The ID of the chart.
+ "position": { # The position of an embedded object such as a chart. # The position of the chart.
+ "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID
+ # is chosen for you. Used only when writing.
+ "sheetId": 42, # The sheet this is on. Set only if the embedded object
+ # is on its own sheet. Must be non-negative.
+ "overlayPosition": { # The location an object is overlaid on top of a grid. # The position the object is overlaid on top of a grid.
+ "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to.
+ # All indexes are zero-based.
+ "rowIndex": 42, # The row index of the coordinate.
+ "columnIndex": 42, # The column index of the coordinate.
+ "sheetId": 42, # The sheet this coordinate is on.
+ },
+ "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "widthPixels": 42, # The width of the object, in pixels. Defaults to 600.
+ "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset
+ # from the anchor cell.
+ "heightPixels": 42, # The height of the object, in pixels. Defaults to 371.
+ },
+ },
+ "spec": { # The specifications of a chart. # The specification of the chart.
+ "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns.
+ # This value is only meaningful if the
+ # ChartData.sourceRange
+ # is used for a domain or series.
+ "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification.
+ "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "threeDimensional": True or False, # True if the pie is three dimensional.
+ "legendPosition": "A String", # Where the legend of the pie chart should be drawn.
+ "pieHole": 3.14, # The size of the hole in the pie chart.
+ },
+ "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts.
+ # See BasicChartType for the list of all charts this supports.
+ # of charts this supports.
+ "headerCount": 42, # The number of rows or columns in the data that are "headers".
+ # If not set, Google Sheets will guess how many rows are headers based
+ # on the data.
+ #
+ # (Note that BasicChartAxis.title may override the axis title
+ # inferred from the header values.)
+ "series": [ # The data this chart is visualizing.
+ { # A single series of data in a chart.
+ # For example, if charting stock prices over time, multiple series may exist,
+ # one for the "Open Price", "High Price", "Low Price" and "Close Price".
+ "series": { # The data included in a domain or series. # The data being visualized in this chart series.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ "targetAxis": "A String", # The minor axis that will specify the range of values for this series.
+ # For example, if charting stocks over time, the "Volume" series
+ # may want to be pinned to the right with the prices pinned to the left,
+ # because the scale of trading volume is different than the scale of
+ # prices.
+ # It is an error to specify an axis that isn't a valid minor axis
+ # for the chart's type.
+ "type": "A String", # The type of this series. Valid only if the
+ # chartType is
+ # COMBO.
+ # Different types will change the way the series is visualized.
+ # Only LINE, AREA,
+ # and COLUMN are supported.
+ },
+ ],
+ "legendPosition": "A String", # The position of the chart legend.
+ "domains": [ # The domain of data this is charting.
+ # Only a single domain is currently supported.
+ { # The domain of a chart.
+ # For example, if charting stock prices over time, this would be the date.
+ "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time,
+ # this be the data representing the dates.
+ "sourceRange": { # Source ranges for a chart. # The source ranges of the data.
+ "sources": [ # The ranges of data for a series or domain.
+ # Exactly one dimension must have a length of 1,
+ # and all sources in the list must have the same dimension
+ # with length 1.
+ # The domain (if it exists) & all series must have the same number
+ # of source ranges. If using more than one source range, then the source
+ # range at a given offset must be contiguous across the domain and series.
+ #
+ # For example, these are valid configurations:
+ #
+ # domain sources: A1:A5
+ # series1 sources: B1:B5
+ # series2 sources: D6:D10
+ #
+ # domain sources: A1:A5, C10:C12
+ # series1 sources: B1:B5, D10:D12
+ # series2 sources: C1:C5, E10:E12
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ },
+ },
+ },
+ ],
+ "chartType": "A String", # The type of the chart.
+ "axis": [ # The axis on the chart.
+ { # An axis of the chart.
+ # A chart may not have more than one axis per
+ # axis position.
+ "position": "A String", # The position of this axis.
+ "format": { # The format of a run of text in a cell. # The format of the title.
+ # Only valid if the axis is not associated with the domain.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "title": "A String", # The title of this axis. If set, this overrides any title inferred
+ # from headers of the data.
+ },
+ ],
+ },
+ "title": "A String", # The title of the chart.
+ },
+ },
+ ],
+ "filterViews": [ # The filter views in this sheet.
+ { # A filter view.
+ "title": "A String", # The name of the filter view.
+ "namedRangeId": "A String", # The named range this filter view is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "filterViewId": 42, # The ID of the filter view.
+ "range": { # A range on a sheet. # The range this filter view covers.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "sortSpecs": [ # The sort order per column. Later specifications are used when values
+ # are equal in the earlier specifications.
+ { # A sort order associated with a specific column or row.
+ "sortOrder": "A String", # The order data should be sorted.
+ "dimensionIndex": 42, # The dimension the sort should be applied to.
+ },
+ ],
+ "criteria": { # The criteria for showing/hiding values per column.
+ # The map's key is the column index, and the value is the criteria for
+ # that column.
+ "a_key": { # Criteria for showing/hiding rows in a filter, filter view.
+ "hiddenValues": [ # Values that should be hidden.
+ "A String",
+ ],
+ "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown.
+ # (This does not override hiddenValues -- if a value is listed there,
+ # it will still be hidden.)
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ },
+ },
+ ],
+ "protectedRanges": [ # The protected ranges in this sheet.
+ { # A protected range.
+ "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet.
+ # Unprotected ranges are only supported on protected sheets.
+ { # A range on a sheet.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ ],
+ "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the
+ # protected area.
+ # This field is read-only.
+ "description": "A String", # The description of this protected range.
+ "namedRangeId": "A String", # The named range this protected range is backed by, if any.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range.
+ # This field is only visible to users with edit access to the protected
+ # range and the document.
+ # Editors are not supported with warningOnly protection.
+ "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected
+ # range. Domain protection is only supported on documents within a domain.
+ "users": [ # The email addresses of users with edit access to the protected range.
+ "A String",
+ ],
+ "groups": [ # The email addresses of groups with edit access to the protected range.
+ "A String",
+ ],
+ },
+ "protectedRangeId": 42, # The ID of the protected range.
+ # This field is read-only.
+ "warningOnly": True or False, # True if this this protected range will show a warning when editing.
+ # Warning-based protection means that every user can edit data in the
+ # protected range, except editing will prompt a warning asking the user
+ # to confirm the edit.
+ #
+ # When warning: if this field is true, then editors is ignored.
+ # Additionally, if this field is changed from true to false and the
+ # `editors` field is not set (nor included in the field mask), then
+ # the editors will be set to all the editors in the document.
+ "range": { # A range on a sheet. # The range that is being protected.
+ # The range may be fully unbounded, in which case this is considered
+ # a protected sheet.
+ #
+ # When writing, only one of range or namedRangeId
+ # may be set.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ },
+ ],
+ "data": [ # Data in the grid, if this is a grid sheet.
+ # The number of GridData objects returned is dependent on the number of
+ # ranges requested on this sheet. For example, if this is representing
+ # `Sheet1`, and the spreadsheet was requested with ranges
+ # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a
+ # startRow/startColumn of `0`,
+ # while the second one will have `startRow 14` (zero-based row 15),
+ # and `startColumn 3` (zero-based column D).
+ { # Data in the grid, as well as metadata about the dimensions.
+ "startRow": 42, # The first row this GridData refers to, zero-based.
+ "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row
+ # in startRow.
+ { # Properties about a dimension.
+ "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+ "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+ "hiddenByFilter": True or False, # True if this dimension is being filtered.
+ # This field is read-only.
+ },
+ ],
+ "startColumn": 42, # The first column this GridData refers to, zero-based.
+ "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column
+ # in startColumn.
+ { # Properties about a dimension.
+ "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels.
+ "hiddenByUser": True or False, # True if this dimension is explicitly hidden.
+ "hiddenByFilter": True or False, # True if this dimension is being filtered.
+ # This field is read-only.
+ },
+ ],
+ "rowData": [ # The data in the grid, one entry per row,
+ # starting with the row in startRow.
+ # The values in RowData will correspond to columns starting
+ # at startColumn.
+ { # Data about each cell in a row.
+ "values": [ # The values in the row, one per column.
+ { # Data about a specific cell.
+ "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself
+ # is computed dynamically based on its data, grouping, filters, values,
+ # etc... Only the top-left cell of the pivot table contains the pivot table
+ # definition. The other cells will contain the calculated values of the
+ # results of the pivot in their effectiveValue fields.
+ "valueLayout": "A String", # Whether values should be listed horizontally (as columns)
+ # or vertically (as rows).
+ "rows": [ # Each row grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ "source": { # A range on a sheet. # The range the pivot table is reading data from.
+ # All indexes are zero-based.
+ # Indexes are half open, e.g the start index is inclusive
+ # and the end index is exclusive -- [start_index, end_index).
+ # Missing indexes indicate the range is unbounded on that side.
+ #
+ # For example, if "Sheet1" is grid ID 0, then:
+ #
+ # Sheet1!A1:A1 == sheet_id: 0,
+ # start_row_index: 0, end_row_index: 1,
+ # start_column_index: 0, end_column_index: 1
+ #
+ # Sheet1!A3:B4 == sheet_id: 0,
+ # start_row_index: 2, end_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A:B == sheet_id: 0,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1!A5:B == sheet_id: 0,
+ # start_row_index: 4,
+ # start_column_index: 0, end_column_index: 2
+ #
+ # Sheet1 == sheet_id:0
+ #
+ # The start index must always be less than or equal to the end index.
+ # If the start index equals the end index, then the range is empty.
+ # Empty ranges are typically not meaningful and are usually rendered in the
+ # UI as `#REF!`.
+ "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded.
+ "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded.
+ "sheetId": 42, # The sheet this range is on.
+ "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded.
+ "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded.
+ },
+ "values": [ # A list of values to include in the pivot table.
+ { # The definition of how a value in a pivot table should be calculated.
+ "formula": "A String", # A custom formula to calculate the value. The formula must start
+ # with an `=` character.
+ "summarizeFunction": "A String", # A function to summarize the value.
+ # If formula is set, the only supported values are
+ # SUM and
+ # CUSTOM.
+ # If sourceColumnOffset is set, then `CUSTOM`
+ # is not supported.
+ "sourceColumnOffset": 42, # The column offset of the source range that this value reads from.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this value refers to column `C`, whereas the offset `1` would
+ # refer to column `D`.
+ "name": "A String", # A name to use for the value. This is only used if formula was set.
+ # Otherwise, the column name is used.
+ },
+ ],
+ "criteria": { # An optional mapping of filters per source column offset.
+ #
+ # The filters will be applied before aggregating data into the pivot table.
+ # The map's key is the column offset of the source range that you want to
+ # filter, and the value is the criteria for that column.
+ #
+ # For example, if the source was `C10:E15', a key of `0` will have the filter
+ # for column `C`, whereas the key `1` is for column `D`.
+ "a_key": { # Criteria for showing/hiding rows in a pivot table.
+ "visibleValues": [ # Values that should be included. Values not listed here are excluded.
+ "A String",
+ ],
+ },
+ },
+ "columns": [ # Each column grouping in the pivot table.
+ { # A single grouping (either row or column) in a pivot table.
+ "showTotals": True or False, # True if the pivot table should include the totals for this grouping.
+ "valueMetadata": [ # Metadata about values in the grouping.
+ { # Metadata about a value in a pivot grouping.
+ "collapsed": True or False, # True if the data corresponding to the value is collapsed.
+ "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to.
+ # (Note that formulaValue is not valid,
+ # because the values will be calculated.)
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ },
+ ],
+ "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by.
+ # If not specified, sorting is alphabetical by this group's values.
+ "buckets": [ # Determines the bucket from which values are chosen to sort.
+ #
+ # For example, in a pivot table with one row group & two column groups,
+ # the row group can list up to two values. The first value corresponds
+ # to a value within the first column group, and the second value
+ # corresponds to a value in the second column group. If no values
+ # are listed, this would indicate that the row should be sorted according
+ # to the "Grand Total" over the column groups. If a single value is listed,
+ # this would correspond to using the "Total" of that bucket.
+ { # The kinds of value that a cell in a spreadsheet can have.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ ],
+ "valuesIndex": 42, # The offset in the [PivotTable.values] list which the values in this
+ # grouping should be sorted by.
+ },
+ "sortOrder": "A String", # The order the values in this group should be sorted.
+ "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on.
+ #
+ # For example, if the source was `C10:E15', a `sourceColumnOffset` of `0`
+ # means this group refers to column `C`, whereas the offset `1` would refer
+ # to column `D`.
+ },
+ ],
+ },
+ "hyperlink": "A String", # A hyperlink this cell points to, if any.
+ # This field is read-only. (To set it, use a `=HYPERLINK` formula.)
+ "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
+ # the calculated value. For cells with literals, this will be
+ # the same as the user_entered_value.
+ # This field is read-only.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "formattedValue": "A String", # The formatted value of the cell.
+ # This is the value as it's shown to the user.
+ # This field is read-only.
+ "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()`
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # serial number format.
+ "numberValue": 3.14, # Represents a double value.
+ # Note: Dates, Times and DateTimes are represented as doubles in
+ # "serial number" format.
+ "boolValue": True or False, # Represents a boolean value.
+ "formulaValue": "A String", # Represents a formula.
+ "stringValue": "A String", # Represents a string value.
+ # Leading single quotes are not included. For example, if the user typed
+ # `'123` into the UI, this would be represented as a `stringValue` of
+ # `"123"`.
+ "errorValue": { # An error in a cell. # Represents an error.
+ # This field is read-only.
+ "message": "A String", # A message with more information about the error
+ # (in the spreadsheet's locale).
+ "type": "A String", # The type of error.
+ },
+ },
+ "note": "A String", # Any note on the cell.
+ "effectiveFormat": { # The format of a cell. # The effective format being used by the cell.
+ # This includes the results of applying any conditional formatting and,
+ # if the cell contains a formula, the computed number format.
+ # If the effective format is the default format, effective format will
+ # not be written.
+ # This field is read-only.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell.
+ #
+ # When writing, the new format will be merged with the existing format.
+ "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user.
+ # When updating, all fields must be set.
+ "pattern": "A String", # Pattern string used for formatting.
+ "type": "A String", # The type of the number format.
+ },
+ "textDirection": "A String", # The direction of the text in the cell.
+ "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell.
+ # When updating padding, every field must be specified.
+ "top": 42, # The top padding of the cell.
+ "right": 42, # The right padding of the cell.
+ "bottom": 42, # The bottom padding of the cell.
+ "left": 42, # The left padding of the cell.
+ },
+ "horizontalAlignment": "A String", # The horizontal alignment of the value in cell.
+ "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "verticalAlignment": "A String", # The vertical alignment of the value in cell.
+ "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).
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell.
+ "borders": { # The borders of the cell. # The borders of the cell.
+ "top": { # A border along a cell. # The top border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "right": { # A border along a cell. # The right border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "bottom": { # A border along a cell. # The bottom border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ "left": { # A border along a cell. # The left border of the cell.
+ "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "width": 42, # The width of the border, in pixels.
+ # Border widths must be between 0 and 3 pixels.
+ "style": "A String", # The style of the border.
+ },
+ },
+ "wrapStrategy": "A String", # The wrap strategy for the value in the cell.
+ },
+ "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any.
+ #
+ # When writing, the new data validation rule will overwrite any prior rule.
+ "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition.
+ # If true, "List" conditions will show a dropdown.
+ "strict": True or False, # True if invalid data should be rejected.
+ "inputMessage": "A String", # A message to show the user when adding data to the cell.
+ "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match.
+ # BooleanConditions are used by conditional formatting,
+ # data validation, and the criteria in filters.
+ "type": "A String", # The type of condition.
+ "values": [ # The values of the condition. The number of supported values depends
+ # on the condition type. Some support zero values,
+ # others one or two values,
+ # and ConditionType.ONE_OF_LIST supports an arbitrary number of values.
+ { # The value of the condition.
+ "relativeDate": "A String", # A relative date (based on the current date).
+ # Valid only if the type is
+ # DATE_BEFORE,
+ # DATE_AFTER,
+ # DATE_ON_OR_BEFORE or
+ # DATE_ON_OR_AFTER.
+ #
+ # Relative dates are not supported in data validation.
+ # They are supported only in conditional formatting and
+ # conditional filters.
+ "userEnteredValue": "A String", # A value the condition is based on.
+ # The value will be parsed as if the user typed into a cell.
+ # Formulas are supported (and must begin with an `=`).
+ },
+ ],
+ },
+ },
+ "textFormatRuns": [ # Runs of rich text applied to subsections of the cell.
+ # Runs start at specific indexes in the text and continue until the next
+ # run. Properties of a run will continue unless explicitly changed
+ # in a subsequent run (and properties of the first run will continue
+ # the properties of the cell unless explicitly changed).
+ #
+ # When writing, the new runs will overwrite any prior runs.
+ { # A run of a text format. The format of this run continues until explicitly
+ # overridden in the next run.
+ # When updating, all fields must be set.
+ "startIndex": 42, # The character index where this run starts.
+ "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format.
+ # Absent values indicate that the field isn't specified.
+ "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "bold": True or False, # True if the text is bold.
+ "strikethrough": True or False, # True if the text has a strikethrough.
+ "fontFamily": "A String", # The font family.
+ "fontSize": 42, # The size of the font.
+ "italic": True or False, # True if the text is italicized.
+ "underline": True or False, # True if the text is underlined.
+ },
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ "properties": { # Properties of a sheet. # The properties of the sheet.
+ "sheetType": "A String", # The type of sheet. Defaults to GRID.
+ # This field cannot be changed once set.
+ "index": 42, # The index of the sheet within the spreadsheet.
+ # When adding or updating sheet properties, if this field
+ # is excluded then the sheet will be added or moved to the end
+ # of the sheet list.
+ "title": "A String", # The name of the sheet.
+ "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid.
+ # (If the sheet is an object sheet, containing a chart or image, then
+ # this field will be absent.)
+ # When writing it is an error to set any grid properties on non-grid sheets.
+ "columnCount": 42, # The number of columns in the grid.
+ "rowCount": 42, # The number of rows in the grid.
+ "frozenColumnCount": 42, # The number of columns that are frozen in the grid.
+ "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI.
+ "frozenRowCount": 42, # The number of rows that are frozen in the grid.
+ },
+ "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet.
+ "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI.
+ # for simplicity of conversion to/from color representations in various
+ # languages over compactness; for example, the fields of this representation
+ # can be trivially provided to the constructor of "java.awt.Color" in Java; it
+ # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha"
+ # method in iOS; and, with just a little work, it can be easily formatted into
+ # a CSS "rgba()" string in JavaScript, as well. Here are some examples:
+ #
+ # Example (Java):
+ #
+ # import com.google.type.Color;
+ #
+ # // ...
+ # public static java.awt.Color fromProto(Color protocolor) {
+ # float alpha = protocolor.hasAlpha()
+ # ? protocolor.getAlpha().getValue()
+ # : 1.0;
+ #
+ # return new java.awt.Color(
+ # protocolor.getRed(),
+ # protocolor.getGreen(),
+ # protocolor.getBlue(),
+ # alpha);
+ # }
+ #
+ # public static Color toProto(java.awt.Color color) {
+ # float red = (float) color.getRed();
+ # float green = (float) color.getGreen();
+ # float blue = (float) color.getBlue();
+ # float denominator = 255.0;
+ # Color.Builder resultBuilder =
+ # Color
+ # .newBuilder()
+ # .setRed(red / denominator)
+ # .setGreen(green / denominator)
+ # .setBlue(blue / denominator);
+ # int alpha = color.getAlpha();
+ # if (alpha != 255) {
+ # result.setAlpha(
+ # FloatValue
+ # .newBuilder()
+ # .setValue(((float) alpha) / denominator)
+ # .build());
+ # }
+ # return resultBuilder.build();
+ # }
+ # // ...
+ #
+ # Example (iOS / Obj-C):
+ #
+ # // ...
+ # static UIColor* fromProto(Color* protocolor) {
+ # float red = [protocolor red];
+ # float green = [protocolor green];
+ # float blue = [protocolor blue];
+ # FloatValue* alpha_wrapper = [protocolor alpha];
+ # float alpha = 1.0;
+ # if (alpha_wrapper != nil) {
+ # alpha = [alpha_wrapper value];
+ # }
+ # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
+ # }
+ #
+ # static Color* toProto(UIColor* color) {
+ # CGFloat red, green, blue, alpha;
+ # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {
+ # return nil;
+ # }
+ # Color* result = [Color alloc] init];
+ # [result setRed:red];
+ # [result setGreen:green];
+ # [result setBlue:blue];
+ # if (alpha <= 0.9999) {
+ # [result setAlpha:floatWrapperWithValue(alpha)];
+ # }
+ # [result autorelease];
+ # return result;
+ # }
+ # // ...
+ #
+ # Example (JavaScript):
+ #
+ # // ...
+ #
+ # var protoToCssColor = function(rgb_color) {
+ # var redFrac = rgb_color.red || 0.0;
+ # var greenFrac = rgb_color.green || 0.0;
+ # var blueFrac = rgb_color.blue || 0.0;
+ # var red = Math.floor(redFrac * 255);
+ # var green = Math.floor(greenFrac * 255);
+ # var blue = Math.floor(blueFrac * 255);
+ #
+ # if (!('alpha' in rgb_color)) {
+ # return rgbToCssColor_(red, green, blue);
+ # }
+ #
+ # var alphaFrac = rgb_color.alpha.value || 0.0;
+ # var rgbParams = [red, green, blue].join(',');
+ # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');
+ # };
+ #
+ # var rgbToCssColor_ = function(red, green, blue) {
+ # var rgbNumber = new Number((red << 16) | (green << 8) | blue);
+ # var hexString = rgbNumber.toString(16);
+ # var missingZeros = 6 - hexString.length;
+ # var resultBuilder = ['#'];
+ # for (var i = 0; i < missingZeros; i++) {
+ # resultBuilder.push('0');
+ # }
+ # resultBuilder.push(hexString);
+ # return resultBuilder.join('');
+ # };
+ #
+ # // ...
+ "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1].
+ "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is,
+ # the final pixel color is defined by the equation:
+ #
+ # pixel color = alpha * (this color) + (1.0 - alpha) * (background color)
+ #
+ # This means that a value of 1.0 corresponds to a solid color, whereas
+ # a value of 0.0 corresponds to a completely transparent color. This
+ # uses a wrapper message rather than a simple float scalar so that it is
+ # possible to distinguish between a default value and the value being unset.
+ # If omitted, this color object is to be rendered as a solid color
+ # (as if the alpha value had been explicitly given with a value of 1.0).
+ "green": 3.14, # The amount of green in the color as a value in the interval [0, 1].
+ "red": 3.14, # The amount of red in the color as a value in the interval [0, 1].
+ },
+ "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible.
+ "sheetId": 42, # The ID of the sheet. Must be non-negative.
+ # This field cannot be changed once set.
+ },
+ },
+ ],
+ }</pre>
+</div>
+
+</body></html>
\ No newline at end of file